1---------------------------------------- 214 December 2017. Summary of changes for version 20171214: 3 4 51) ACPICA kernel-resident subsystem: 6 7Fixed a regression in the external (public) AcpiEvaluateObjectTyped 8interface where the optional "pathname" argument had inadvertently become 9a required argument returning an error if omitted (NULL pointer 10argument). 11 12Fixed two possible memory leaks related to the recently developed "late 13resolution" of reference objects within ASL Package Object definitions. 14 15Added two recently defined _OSI strings: "Windows 2016" and "Windows 162017". Mario Limonciello. 17 18Implemented and deployed a safer version of the C library function 19strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 20creation of unterminated strings as a possible result of a standard 21strncpy. 22 23Cleaned up and restructured the global variable file (acglobal.h). There 24are many changes, but no functional changes. 25 26 272) iASL Compiler/Disassembler and Tools: 28 29iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 30optional OemData field at the end of the table was incorrectly required 31for proper compilation. It is now correctly an optional field. 32 33ASLTS: The entire suite was converted from standard ASL to the ASL+ 34language, using the ASL-to-ASL+ converter which is integrated into the 35iASL compiler. A binary compare of all output files has verified the 36correctness of the conversion. 37 38iASL: Fixed the source code build for platforms where "char" is unsigned. 39This affected the iASL lexer only. Jung-uk Kim. 40 41---------------------------------------- 4210 November 2017. Summary of changes for version 20171110: 43 44 451) ACPICA kernel-resident subsystem: 46 47This release implements full support for ACPI 6.2A: 48 NFIT - Added a new subtable, "Platform Capabilities Structure" 49No other changes to ACPICA were required, since ACPI 6.2A is primarily an 50errata release of the specification. 51 52Other ACPI table changes: 53 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 54 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 55Linton 56 57Utilities: Modified the string/integer conversion functions to use 58internal 64-bit divide support instead of a native divide. On 32-bit 59platforms, a 64-bit divide typically requires a library function which 60may not be present in the build (kernel or otherwise). 61 62Implemented a targeted error message for timeouts returned from the 63Embedded Controller device driver. This is seen frequently enough to 64special-case an AE_TIME returned from an EC operation region access: 65 "Timeout from EC hardware or EC device driver" 66 67Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 68runtime error messages have the identical prefix. 69 70 712) iASL Compiler/Disassembler and Tools: 72 73AcpiXtract: Fixed a problem with table header detection within the 74acpidump file. Processing a table could be ended early if a 0x40 (@) 75appears in the original binary table, resulting in the @ symbol appearing 76in the decoded ASCII field at the end of the acpidump text line. The 77symbol caused acpixtract to incorrectly think it had reached the end of 78the current table and the beginning of a new table. 79 80AcpiXtract: Added an option (-f) to ignore some errors during table 81extraction. This initial implementation ignores non-ASCII and non- 82printable characters found in the acpidump text file. 83 84TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 85for ASLTS. This feature is used to track memory allocations from 86different memory caches within the ACPICA code. At the end of an ASLTS 87run, these memory statistics are recorded and stored in a log file. 88 89Debugger (user-space version): Implemented a simple "Background" command. 90Creates a new thread to execute a control method in the background, while 91control returns to the debugger prompt to allow additional commands. 92 Syntax: Background <Namepath> [Arguments] 93 94---------------------------------------- 9529 September 2017. Summary of changes for version 20170929: 96 97 981) ACPICA kernel-resident subsystem: 99 100Redesigned and implemented an improved ASL While() loop timeout 101mechanism. This mechanism is used to prevent infinite loops in the kernel 102AML interpreter caused by either non-responsive hardware or incorrect AML 103code. The new implementation uses AcpiOsGetTimer instead of a simple 104maximum loop count, and is thus more accurate and constant across 105different machines. The default timeout is currently 30 seconds, but this 106may be adjusted later. 107 108Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 109better reflect the new implementation of the loop timeout mechanism. 110 111Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 112and to fix an off-by-one error. Jung-uk Kim. 113 114Fixed an EFI build problem by updating the makefiles to for a new file 115that was added, utstrsuppt.c 116 117 1182) iASL Compiler/Disassembler and Tools: 119 120Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 121includes support in the table disassembler, compiler, and template 122generator. 123 124iASL: Added an exception for an illegal type of recursive method 125invocation. If a method creates named objects, the first recursive call 126will fail at runtime. This change adds an error detection at compile time 127to catch the problem up front. Note: Marking such a method as 128"serialized" will not help with this problem, because the same thread can 129acquire the method mutex more than once. Example compiler and runtime 130output: 131 132 Method (MTH1) 133 { 134 Name (INT1, 1) 135 MTH1 () 136 } 137 138 dsdt.asl 22: MTH1 () 139 Error 6152 - ^ Illegal recursive call to method 140 that creates named objects (MTH1) 141 142Previous runtime exception: 143 ACPI Error: [INT1] Namespace lookup failure, 144 AE_ALREADY_EXISTS (20170831/dswload2-465) 145 146iASL: Updated support for External() opcodes to improve namespace 147management and error detection. These changes are related to issues seen 148with multiple-segment namespace pathnames within External declarations, 149such as below: 150 151 External(\_SB.PCI0.GFX0, DeviceObj) 152 External(\_SB.PCI0.GFX0.ALSI) 153 154iASL: Implemented support for multi-line error/warning messages. This 155enables more detailed and helpful error messages as below, from the 156initial deployment for the duplicate names error: 157 158 DSDT.iiii 1692: Device(PEG2) { 159 Error 6074 - ^ Name already exists in scope 160(PEG2) 161 162 Original name creation/declaration below: 163 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 164 165AcpiXtract: Added additional flexibility to support differing input hex 166dump formats. Specifically, hex dumps that contain partial disassembly 167and/or comments within the ACPI table data definition. There exist some 168dump utilities seen in the field that create this type of hex dump (such 169as Simics). For example: 170 171 DSDT @ 0xdfffd0c0 (10999 bytes) 172 Signature DSDT 173 Length 10999 174 Revision 1 175 Checksum 0xf3 (Ok) 176 OEM_ID BXPC 177 OEM_table_id BXDSDT 178 OEM_revision 1 179 Creator_id 1280593481 180 Creator_revision 537399345 181 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 182 ... 183 2af0: 5f 4c 30 46 00 a4 01 184 185Test suite: Miscellaneous changes/fixes: 186 More cleanup and simplification of makefiles 187 Continue compilation of test cases after a compile failure 188 Do not perform binary compare unless both files actually exist 189 190iASL: Performed some code/module restructuring. Moved all memory 191allocation functions to new modules. Two new files, aslallocate.c and 192aslcache.c 193 194---------------------------------------- 19531 August 2017. Summary of changes for version 20170831: 196 197 1981) ACPICA kernel-resident subsystem: 199 200Implemented internal support for full 64-bit addresses that appear in all 201Generic Address Structure (GAS) structures. Previously, only the lower 32 202bits were used. Affects the use of GAS structures in the FADT and other 203tables, as well as the GAS structures passed to the AcpiRead and 204AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 205 206Added header support for the PDTT ACPI table (Processor Debug Trigger 207Table). Full support in the iASL Data Table Compiler and disassembler is 208forthcoming. 209 210 2112) iASL Compiler/Disassembler and Tools: 212 213iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 214Properties Topology Table) where a flag bit was specified in the wrong 215bit position ("Line Size Valid", bit 6). 216 217iASL: Implemented support for Octal integer constants as defined by the 218ASL language grammar, per the ACPI specification. Any integer constant 219that starts with a zero is an octal constant. For example, 220 Store (037777, Local0) /* Octal constant */ 221 Store (0x3FFF, Local0) /* Hex equivalent */ 222 Store (16383, Local0) /* Decimal equivalent */ 223 224iASL: Improved overflow detection for 64-bit string conversions during 225compilation of integer constants. "Overflow" in this case means a string 226that represents an integer that is too large to fit into a 64-bit value. 227Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 228the low-order 32 bits with a warning, as previously implemented. Several 229new exceptions are defined that indicate a 64-bit overflow, as well as 230the base (radix) that was used during the attempted conversion. Examples: 231 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 232 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 233 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 234 235iASL: Added a warning for the case where a ResourceTemplate is declared 236with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 237this case, the resulting template is created with a single END_TAG 238descriptor, which is essentially useless. 239 240iASL: Expanded the -vw option (ignore specific warnings/remarks) to 241include compilation error codes as well. 242 243---------------------------------------- 24428 July 2017. Summary of changes for version 20170728: 245 246 2471) ACPICA kernel-resident subsystem: 248 249Fixed a regression seen with small resource descriptors that could cause 250an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 251 252AML interpreter: Implemented a new feature that allows forward references 253from individual named references within package objects that are 254contained within blocks of "module-level code". This provides 255compatibility with other ACPI implementations and supports existing 256firmware that depends on this feature. Example: 257 258 Name (ABCD, 1) 259 If (ABCD) /* An If() at module-level */ 260 { 261 Name (PKG1, Package() 262 { 263 INT1 /* Forward reference to object INT1 264*/ 265 }) 266 Name (INT1, 0x1234) 267 } 268 269AML Interpreter: Fixed a problem with the Alias() operator where aliases 270to some ASL objects were not handled properly. Objects affected are: 271Mutex, Event, and OperationRegion. 272 273AML Debugger: Enhanced to properly handle AML Alias objects. These 274objects have one level of indirection which was not fully supported by 275the debugger. 276 277Table Manager: Added support to detect and ignore duplicate SSDTs within 278the XSDT/RSDT. This error in the XSDT has been seen in the field. 279 280EFI and EDK2 support: 281 Enabled /WX flag for MSVC builds 282 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 283 Added local support for 64-bit multiply and shift operations 284 Added support to compile acpidump.efi on Windows 285 Added OSL function stubs for interfaces not used under EFI 286 287Added additional support for the _DMA predefined name. _DMA returns a 288buffer containing a resource template. This change add support within the 289resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 290resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 291 292 2932) iASL Compiler/Disassembler and Tools: 294 295iASL: Fixed a problem where the internal input line buffer(s) could 296overflow if there are very long lines in the input ASL source code file. 297Implemented buffer management that automatically increases the size of 298the buffers as necessary. 299 300iASL: Added an option (-vx) to "expect" particular remarks, warnings and 301errors. If the specified exception is not raised during compilation, the 302compiler emits an error. This is intended to support the ASL test suite, 303but may be useful in other contexts. 304 305iASL: Implemented a new predefined macro, __METHOD__, which returns a 306string containing the name of the current control method that is being 307compiled. 308 309iASL: Implemented debugger and table compiler support for the SDEI ACPI 310table (Software Delegated Exception Interface). James Morse 311<james.morse@arm.com> 312 313Unix/Linux makefiles: Added an option to disable compile optimizations. 314The disable occurs when the NOOPT flag is set to TRUE. 315theracermaster@gmail.com 316 317Acpidump: Added support for multiple DSDT and FACS tables. This can occur 318when there are different tables for 32-bit versus 64-bit. 319 320Enhanced error reporting for the ASL test suite (ASLTS) by removing 321unnecessary/verbose text, and emit the actual line number where an error 322has occurred. These changes are intended to improve the usefulness of the 323test suite. 324 325---------------------------------------- 32629 June 2017. Summary of changes for version 20170629: 327 328 3291) ACPICA kernel-resident subsystem: 330 331Tables: Implemented a deferred ACPI table verification. This is useful 332for operating systems where the tables cannot be verified in the early 333initialization stage due to early memory mapping limitations on some 334architectures. Lv Zheng. 335 336Tables: Removed the signature validation for dynamically loaded tables. 337Provides compatibility with other ACPI implementations. Previously, only 338SSDT tables were allowed, as per the ACPI specification. Now, any table 339signature can be used via the Load() operator. Lv Zheng. 340 341Tables: Fixed several mutex issues that could cause errors during table 342acquisition. Lv Zheng. 343 344Tables: Fixed a problem where an ACPI warning could be generated if a 345null pointer was passed to the AcpiPutTable interface. Lv Zheng. 346 347Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 348AcpiPutTable interfaces. This applies to the "late stage" table loading 349when the use of AcpiPutTable is no longer required (since the system 350memory manager is fully running and available). Lv Zheng. 351 352Fixed/Reverted a regression during processing of resource descriptors 353that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 354exception in this case. 355 356Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 357I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 358 359Interpreter: Fixed a possible fault if an Alias operator with an invalid 360or duplicate target is encountered during Alias creation in 361AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 362 363Added an option to use designated initializers for function pointers. 364Kees Cook <keescook@google.com> 365 366 3672) iASL Compiler/Disassembler and Tools: 368 369iASL: Allow compilation of External declarations with target pathnames 370that refer to existing named objects within the table. Erik Schmauss. 371 372iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 373FieldUnit name also is declared via External in the same table. Erik 374Schmauss. 375 376iASL: Allow existing scope names within pathnames used in External 377statements. For example: 378 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 379 Device (ABCD) 380 381iASL: IORT ACPI table: Implemented changes required to decode the new 382Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 383compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 384 385Disassembler: Don't abort disassembly on errors from External() 386statements. Erik Schmauss. 387 388Disassembler: fixed a possible fault when one of the Create*Field 389operators references a Resource Template. ACPICA Bugzilla 1396. 390 391iASL: In the source code, resolved some naming inconsistences across the 392parsing support. Fixes confusion between "Parse Op" and "Parse Node". 393Adds a new file, aslparseop.c 394 395---------------------------------------- 39631 May 2017. Summary of changes for version 20170531: 397 398 3990) ACPI 6.2 support: 400 401The ACPI specification version 6.2 has been released and is available at 402http://uefi.org/specifications 403 404This version of ACPICA fully supports the ACPI 6.2 specification. Changes 405are summarized below. 406 407New ACPI tables (Table Compiler/Disassembler/Templates): 408 HMAT (Heterogeneous Memory Attributes Table) 409 WSMT (Windows SMM Security Mitigation Table) 410 PPTT (Processor Properties Topology Table) 411 412New subtables for existing ACPI tables: 413 HEST (New subtable, Arch-deferred machine check) 414 SRAT (New subtable, Arch-specific affinity structure) 415 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 416 417Simple updates for existing ACPI tables: 418 BGRT (two new flag bits) 419 HEST (New bit defined for several subtables, GHES_ASSIST) 420 421New Resource Descriptors and Resource macros (Compiler/Disassembler): 422 PinConfig() 423 PinFunction() 424 PinGroup() 425 PinGroupConfig() 426 PinGroupFunction() 427 New type for hardware error notification (section 18.3.2.9) 428 429New predefined names/methods (Compiler/Interpreter): 430 _HMA (Heterogeneous Memory Attributes) 431 _LSI (Label Storage Information) 432 _LSR (Label Storage Read) 433 _LSW (Label Storage Write) 434 435ASL grammar/macro changes (Compiler): 436 For() ASL macro, implemented with the AML while operator 437 Extensions to Concatenate operator 438 Support for multiple definition blocks in same ASL file 439 Clarification for Buffer operator 440 Allow executable AML code underneath all scopes (Devices, etc.) 441 Clarification/change for the _OSI return value 442 ASL grammar update for reference operators 443 Allow a zero-length string for AML filename in DefinitionBlock 444 445Miscellaneous: 446 New device object notification value 447 Remove a notify value (0x0C) for graceful shutdown 448 New UUIDs for processor/cache properties and 449 physical package property 450 New _HID, ACPI0014 (Wireless Power Calibration Device) 451 452 4531) ACPICA kernel-resident subsystem: 454 455Added support to disable ACPI events on hardware-reduced platforms. 456Eliminates error messages of the form "Could not enable fixed event". Lv 457Zheng 458 459Fixed a problem using Device/Thermal objects with the ObjectType and 460DerefOf ASL operators. This support had not been fully/properly 461implemented. 462 463Fixed a problem where if a Buffer object containing a resource template 464was longer than the actual resource template, an error was generated -- 465even though the AML is legal. This case has been seen in the field. 466 467Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 468The values for DUAL_PIC and MULTIPLE_APIC were reversed. 469 470Added header file changes for the TPM2 ACPI table. Update to new version 471of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 472 473Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 474These interfaces are intended to be used only in conjunction with the 475predefined _DLM method (Device Lock Method). "This object appears in a 476device scope when AML access to the device must be synchronized with the 477OS environment". 478 479Example Code and Data Size: These are the sizes for the OS-independent 480acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 481debug version of the code includes the debug output trace mechanism and 482has a much larger code and data size. 483 484 Current Release: 485 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 486 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 487 Previous Release: 488 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 489 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 490 491 4922) iASL Compiler/Disassembler and Tools: 493 494iASL: Fixed a problem where an External() declaration could not refer to 495a Field Unit. Erik Schmauss. 496 497Disassembler: Improved support for the Switch/Case operators. This 498feature will disassemble AML code back to the original Switch operators 499when possible, instead of an If..Else sequence. David Box 500 501iASL and disassembler: Improved the handling of multiple extraneous 502parentheses for both ASL input and disassembled ASL output. 503 504Improved the behavior of the iASL compiler and disassembler to detect 505improper use of external declarations 506 507Disassembler: Now aborts immediately upon detection of an unknown AML 508opcode. The AML parser has no real way to recover from this, and can 509result in the creation of an ill-formed parse tree that causes errors 510later during the disassembly. 511 512All tools: Fixed a problem where the Unix application OSL did not handle 513control-c correctly. For example, a control-c could incorrectly wake the 514debugger. 515 516AcpiExec: Improved the Control-C handling and added a handler for 517segmentation faults (SIGSEGV). Supports both Windows and Unix-like 518environments. 519 520Reduced the verbosity of the generic unix makefiles. Previously, each 521compilation displayed the full set of compiler options. This has been 522eliminated as the options are easily inspected within the makefiles. Each 523compilation now results in a single line of output. 524 525---------------------------------------- 52603 March 2017. Summary of changes for version 20170303: 527 528 5290) ACPICA licensing: 530 531The licensing information at the start of each source code module has 532been updated. In addition to the Intel license, the dual GPLv2/BSD 533license has been added for completeness. Now, a single version of the 534source code should be suitable for all ACPICA customers. This is the 535major change for this release since it affects all source code modules. 536 537 5381) ACPICA kernel-resident subsystem: 539 540Fixed two issues with the common asltypes.h header that could cause 541problems in some environments: (Kim Jung-uk) 542 Removed typedef for YY_BUFFER_STATE ? 543 Fixes an error with earlier versions of Flex. 544 Removed use of FILE typedef (which is only defined in stdio.h) 545 546 5472) iASL Compiler/Disassembler and Tools: 548 549Disassembler: fixed a regression introduced in 20170224. A fix for a 550memory leak related to resource descriptor tags (names) could fault when 551the disassembler was generated with 64-bit compilers. 552 553The ASLTS test suite has been updated to implement a new testing 554architecture. During generation of the suite from ASL source, both the 555ASL and ASL+ compilers are now validated, as well as the disassembler 556itself (Erik Schmauss). The architecture executes as follows: 557 558 For every ASL source module: 559 Compile (legacy ASL compilation) 560 Disassemble the resulting AML to ASL+ source code 561 Compile the new ASL+ module 562 Perform a binary compare on the legacy AML and the new ASL+ AML 563 The ASLTS suite then executes normally using the AML binaries. 564 565---------------------------------------- 56624 February 2017. Summary of changes for version 20170224: 567 568 5691) ACPICA kernel-resident subsystem: 570 571Interpreter: Fixed two issues with the control method return value auto- 572repair feature, where an attempt to double-delete an internal object 573could result in an ACPICA warning (for _CID repair and others). No fault 574occurs, however, because the attempted deletion (actually a release to an 575internal cache) is detected and ignored via object poisoning. 576 577Debugger: Fixed an AML interpreter mutex issue during the single stepping 578of control methods. If certain debugger commands are executed during 579stepping, a mutex aquire/release error could occur. Lv Zheng. 580 581Fixed some issues generating ACPICA with the Intel C compiler by 582restoring the original behavior and compiler-specific include file in 583acenv.h. Lv Zheng. 584 585Example Code and Data Size: These are the sizes for the OS-independent 586acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 587debug version of the code includes the debug output trace mechanism and 588has a much larger code and data size. 589 590 Current Release: 591 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 592 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 593 Previous Release: 594 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 595 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 596 597 5982) iASL Compiler/Disassembler and Tools: 599 600iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 601tool has been designed, implemented, and included in this release. The 602key feature of this utility is that the original comments within the 603input ASL file are preserved during the conversion process, and included 604within the converted ASL+ file -- thus creating a transparent conversion 605of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 606 607 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 608converted code 609 610iASL/Disassembler: Improved the detection and correct disassembly of 611Switch/Case operators. This feature detects sequences of if/elseif/else 612operators that originated from ASL Switch/Case/Default operators and 613emits the original operators. David Box. 614 615iASL: Improved the IORT ACPI table support in the following areas. Lv 616Zheng: 617 Clear MappingOffset if the MappingCount is zero. 618 Fix the disassembly of the SMMU GSU interrupt offset. 619 Update the template file for the IORT table. 620 621Disassembler: Enhanced the detection and disassembly of resource 622template/descriptor within a Buffer object. An EndTag descriptor is now 623required to have a zero second byte, since all known ASL compilers emit 624this. This helps eliminate incorrect decisions when a buffer is 625disassembled (false positives on resource templates). 626 627---------------------------------------- 62819 January 2017. Summary of changes for version 20170119: 629 630 6311) General ACPICA software: 632 633Entire source code base: Added the 2017 copyright to all source code 634legal/licensing module headers and utility/tool signons. This includes 635the standard Linux dual-license header. This affects virtually every file 636in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 637the ACPICA test suite. 638 639 6402) iASL Compiler/Disassembler and Tools: 641 642iASL: Removed/fixed an inadvertent remark when a method argument 643containing a reference is used as a target operand within the method (and 644never used as a simple argument), as in the example below. Jeffrey Hugo. 645 646 dsdt.asl 1507: Store(0x1, Arg0) 647 Remark 2146 - ^ Method Argument is never used (Arg0) 648 649All tools: Removed the bit width of the compiler that generated the tool 650from the common signon for all user space tools. This proved to be 651confusing and unnecessary. This includes similar removal of HARDWARE_NAME 652from the generic makefiles (Thomas Petazzoni). Example below. 653 654 Old: 655 ASL+ Optimizing Compiler version 20170119-32 656 ASL+ Optimizing Compiler version 20170119-64 657 658 New: 659 ASL+ Optimizing Compiler version 20170119 660 661---------------------------------------- 66222 December 2016. Summary of changes for version 20161222: 663 664 6651) ACPICA kernel-resident subsystem: 666 667AML Debugger: Implemented a new mechanism to simplify and enhance 668debugger integration into all environments, including kernel debuggers 669and user-space utilities, as well as remote debug services. This 670mechanism essentially consists of new OSL interfaces to support debugger 671initialization/termination, as well as wait/notify interfaces to perform 672the debugger handshake with the host. Lv Zheng. 673 674 New OSL interfaces: 675 AcpiOsInitializeDebugger (void) 676 AcpiOsTerminateDebugger (void) 677 AcpiOsWaitCommandReady (void) 678 AcpiOsNotifyCommandComplete (void) 679 680 New OS services layer: 681 osgendbg.c -- Example implementation, and used for AcpiExec 682 683Update for Generic Address Space (GAS) support: Although the AccessWidth 684and/or BitOffset fields of the GAS are not often used, this change now 685fully supports these fields. This affects the internal support for FADT 686registers, registers in other ACPI data tables, and the AcpiRead and 687AcpiWrite public interfaces. Lv Zheng. 688 689Sleep support: In order to simplify integration of ACPI sleep for the 690various host operating systems, a new OSL interface has been introduced. 691AcpiOsEnterSleep allows the host to perform any required operations 692before the final write to the sleep control register(s) is performed by 693ACPICA. Lv Zheng. 694 695 New OSL interface: 696 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 697 698 Called from these internal interfaces: 699 AcpiHwLegacySleep 700 AcpiHwExtendedSleep 701 702EFI support: Added a very small EFI/ACPICA example application. Provides 703a simple demo for EFI integration, as well as assisting with resolution 704of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 705 706 source/tools/efihello/efihello.c 707 708Local C library: Implemented several new functions to enhance ACPICA 709portability, for environments where these clib functions are not 710available (such as EFI). Lv Zheng: 711 putchar 712 getchar 713 strpbrk 714 strtok 715 memmove 716 717Fixed a regression where occasionally a valid resource descriptor was 718incorrectly detected as invalid at runtime, and a 719AE_AML_NO_RESOURCE_END_TAG was returned. 720 721Fixed a problem with the recently implemented support that enables 722control method invocations as Target operands to many ASL operators. 723Warnings of this form: "Needed type [Reference], found [Processor]" were 724seen at runtime for some method invocations. 725 726Example Code and Data Size: These are the sizes for the OS-independent 727acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 728debug version of the code includes the debug output trace mechanism and 729has a much larger code and data size. 730 731 Current Release: 732 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 733 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 734 Previous Release: 735 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 736 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 737 738 7392) iASL Compiler/Disassembler and Tools: 740 741Disassembler: Enhanced output by adding the capability to detect and 742disassemble ASL Switch/Case statements back to the original ASL source 743code instead of if/else blocks. David Box. 744 745AcpiHelp: Split a large file into separate files based upon 746functionality/purpose. New files are: 747 ahaml.c 748 ahasl.c 749 750---------------------------------------- 75117 November 2016. Summary of changes for version 20161117: 752 753 7541) ACPICA kernel-resident subsystem: 755 756Table Manager: Fixed a regression introduced in 20160729, "FADT support 757cleanup". This was an attempt to remove all references in the source to 758the FADT version 2, which never was a legal version number. It was 759skipped because it was an early version of 64-bit support that was 760eventually abandoned for the current 64-bit support. 761 762Interpreter: Fixed a problem where runtime implicit conversion was 763incorrectly disabled for the ASL operators below. This brings the 764behavior into compliance with the ACPI specification: 765 FromBCD 766 ToBCD 767 ToDecimalString 768 ToHexString 769 ToInteger 770 ToBuffer 771 772Table Manager: Added a new public interface, AcpiPutTable, used to 773release and free an ACPI table returned by AcpiGetTable and related 774interfaces. Lv Zheng. 775 776Example Code and Data Size: These are the sizes for the OS-independent 777acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 778debug version of the code includes the debug output trace mechanism and 779has a much larger code and data size. 780 781 Current Release: 782 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 783 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 784 Previous Release: 785 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 786 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 787 788 7892) iASL Compiler/Disassembler and Tools: 790 791Disassembler: Fixed a regression for disassembly of Resource Template. 792Detection of templates in the AML stream missed some types of templates. 793 794iASL: Fixed a problem where an Access Size error was returned for the PCC 795address space when the AccessSize of the GAS register is greater than a 796DWORD. Hoan Tran. 797 798iASL: Implemented several grammar changes for the operators below. These 799changes are slated for the next version of the ACPI specification: 800 RefOf - Disallow method invocation as an operand 801 CondRefOf - Disallow method invocation as an operand 802 DerefOf - Disallow operands that use the result from operators 803that 804 do not return a reference (Changed TermArg to 805SuperName). 806 807iASL: Control method invocations are now allowed for Target operands, as 808per the ACPI specification. Removed error for using a control method 809invocation as a Target operand. 810 811Disassembler: Improved detection of Resource Templates, Unicode, and 812Strings within Buffer objects. These subtypes do not contain a specific 813opcode to indicate the originating ASL code, and they must be detected by 814other means within the disassembler. 815 816iASL: Implemented an optimization improvement for 32-bit ACPI tables 817(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 818only after 64-bit to 32-bit truncation. A truncation warning message is 819still emitted, however. 820 821AcpiXtract: Implemented handling for both types of line terminators (LF 822or CR/LF) so that it can accept AcpiDump output files from any system. 823Peter Wu. 824 825AcpiBin: Added two new options for comparing AML files: 826 -a: compare and display ALL mismatches 827 -o: start compare at this offset into the second file 828 829---------------------------------------- 83030 September 2016. Summary of changes for version 20160930: 831 832 8331) ACPICA kernel-resident subsystem: 834 835Fixed a regression in the internal AcpiTbFindTable function where a non 836AE_OK exception could inadvertently be returned even if the function did 837not fail. This problem affects the following operators: 838 DataTableRegion 839 LoadTable 840 841Fixed a regression in the LoadTable operator where a load to any 842namespace location other than the root no longer worked properly. 843 844Increased the maximum loop count value that will result in the 845AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 846prevent infinite loops within the AML interpreter and thus the host OS 847kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 8481,048,575). 849 850Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 851acpixf.h file. This allows hosts to easily configure the maximum loop 852count at runtime. 853 854Removed an illegal character in the strtoul64.c file. This character 855caused errors with some C compilers. 856 857Example Code and Data Size: These are the sizes for the OS-independent 858acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 859debug version of the code includes the debug output trace mechanism and 860has a much larger code and data size. 861 862 Current Release: 863 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 864 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 865 Previous Release: 866 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 867 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 868 869 8702) iASL Compiler/Disassembler and Tools: 871 872Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 873the simpler ASL ElseIf keyword. During the conversion, a trailing If 874block could be lost and missing from the disassembled output. 875 876iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 877the missing rule caused a parse error when using the Index operator as an 878operand to ObjectType. This construct now compiles properly. Example: 879 ObjectType(PKG1[4]). 880 881iASL: Correctly handle unresolved symbols in the hardware map file (-lm 882option). Previously, unresolved symbols could cause a protection fault. 883Such symbols are now marked as unresolved in the map file. 884 885iASL: Implemented support to allow control method invocations as an 886operand to the ASL DeRefOf operator. Example: 887 DeRefOf(MTH1(Local0)) 888 889Disassembler: Improved support for the ToPLD ASL macro. Detection of a 890possible _PLD buffer now includes examination of both the normal buffer 891length (16 or 20) as well as the surrounding AML package length. 892 893Disassembler: Fixed a problem with the decoding of complex expressions 894within the Divide operator for ASL+. For the case where both the quotient 895and remainder targets are specified, the entire statement cannot be 896disassembled. Previously, the output incorrectly contained a mix of ASL- 897and ASL+ operators. This mixed statement causes a syntax error when 898compiled. Example: 899 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 900disassembled to: 901 Divide (INT1 + 6, 128, RSLT, QUOT) 902 903iASL/Tools: Added support to process AML and non-AML ACPI tables 904consistently. For the disassembler and AcpiExec, allow all types of ACPI 905tables (AML and data tables). For the iASL -e option, allow only AML 906tables (DSDT/SSDT). 907 908---------------------------------------- 90931 August 2016. Summary of changes for version 20160831: 910 911 9121) ACPICA kernel-resident subsystem: 913 914Improve support for the so-called "module-level code", which is defined 915to be math, logical and control AML opcodes that appear outside of any 916control method. This change improves the support by adding more opcodes 917that can be executed in the manner. Some other issues have been solved, 918and the ASL grammar changes to support such code under all scope 919operators (Device, etc.) are complete. Lv Zheng. 920 921UEFI support: these OSL functions have been implemented. This is an 922additional step toward supporting the AcpiExec utility natively (with 923full hardware access) under UEFI. Marcelo Ferreira. 924 AcpiOsReadPciConfiguration 925 AcpiOsWritePciConfiguration 926 927Fixed a possible mutex error during control method auto-serialization. Lv 928Zheng. 929 930Updated support for the Generic Address Structure by fully implementing 931all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 932Zheng. 933 934Updated the return value for the internal _OSI method. Instead of 9350xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 936for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 937implementations, and will be reflected and clarified in the next version 938of the ACPI specification. 939 940Implemented two new table events that can be passed to an ACPICA table 941handler. These events are used to indicate a table installation or 942uninstallation. These events are used in addition to existed table load 943and unload events. Lv Zheng. 944 945Implemented a cleanup for all internal string-to-integer conversions. 946Consolidate multiple versions of this functionality and limit possible 947bases to either 10 or 16 to simplify the code. Adds a new file, 948utstrtoul64. 949 950Cleanup the inclusion order of the various compiler-specific headers. 951This simplifies build configuration management. The compiler-specific 952headers are now split out from the host-specific headers. Lv Zheng. 953 954Example Code and Data Size: These are the sizes for the OS-independent 955acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 956debug version of the code includes the debug output trace mechanism and 957has a much larger code and data size. 958 959 Current Release: 960 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 961 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 962 963 9642) iASL Compiler/Disassembler and Tools: 965 966iASL/AcpiExec: Added a command line option to display the build date/time 967of the tool (-vd). This can be useful to verify that the correct version 968of the tools are being used. 969 970AML Debugger: Implemented a new subcommand ("execute predef") to execute 971all predefined control methods and names within the current namespace. 972This can be useful for debugging problems with ACPI tables and the ACPI 973namespace. 974 975---------------------------------------- 97629 July 2016. Summary of changes for version 20160729: 977 978 9791) ACPICA kernel-resident subsystem: 980 981Implemented basic UEFI support for the various ACPICA tools. This 982includes: 9831) An OSL to implement the various AcpiOs* interfaces on UEFI. 9842) Support to obtain the ACPI tables on UEFI. 9853) Local implementation of required C library functions not available on 986UEFI. 9874) A front-end (main) function for the tools for UEFI-related 988initialization. 989 990The initial deployment of this support is the AcpiDump utility executing 991as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 992Current environments supported are Linux/Unix. MSVC generation is not 993supported at this time. See the generate/efi/README file for build 994instructions. Lv Zheng. 995 996Future plans include porting the AcpiExec utility to execute natively on 997the platform with I/O and memory access. This will allow viewing/dump of 998the platform namespace and native execution of ACPI control methods that 999access the actual hardware. To fully implement this support, the OSL 1000functions below must be implemented with UEFI interfaces. Any community 1001help in the implementation of these functions would be appreciated: 1002 AcpiOsReadPort 1003 AcpiOsWritePort 1004 AcpiOsReadMemory 1005 AcpiOsWriteMemory 1006 AcpiOsReadPciConfiguration 1007 AcpiOsWritePciConfiguration 1008 1009Restructured and standardized the C library configuration for ACPICA, 1010resulting in the various configuration options below. This includes a 1011global restructuring of the compiler-dependent and platform-dependent 1012include files. These changes may affect the existing platform-dependent 1013configuration files on some hosts. Lv Zheng. 1014 1015The current C library configuration options appear below. For any issues, 1016it may be helpful to examine the existing compiler-dependent and 1017platform-dependent files as examples. Lv Zheng. 1018 10191) Linux kernel: 1020 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1021library. 1022 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 10232) Unix/Windows/BSD applications: 1024 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1025library. 1026 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 10273) UEFI applications: 1028 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1029library. 1030 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 10314) UEFI applications (EDK2/StdLib): 1032 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1033 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1034 1035 1036AML interpreter: "module-level code" support. Allows for execution of so- 1037called "executable" AML code (math/logical operations, etc.) outside of 1038control methods not just at the module level (top level) but also within 1039any scope declared outside of a control method - Scope{}, Device{}, 1040Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1041 1042Simplified the configuration of the "maximum AML loops" global option by 1043adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1044modified at runtime. 1045 1046 1047Example Code and Data Size: These are the sizes for the OS-independent 1048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1049debug version of the code includes the debug output trace mechanism and 1050has a much larger code and data size. 1051 1052 Current Release: 1053 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1054 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1055 1056 10572) iASL Compiler/Disassembler and Tools: 1058 1059iASL: Add full support for the RASF ACPI table (RAS Features Table). 1060Includes disassembler, data table compiler, and header support. 1061 1062iASL Expand "module-level code" support. Allows for 1063compilation/disassembly of so-called "executable" AML code (math/logical 1064operations, etc.) outside of control methods not just at the module level 1065(top level) but also within any scope declared outside of a control 1066method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1067ThermalZone{}. 1068 1069AcpiDump: Added support for dumping all SSDTs on newer versions of 1070Windows. These tables are now easily available -- SSDTs are not available 1071through the registry on older versions. 1072 1073---------------------------------------- 107427 May 2016. Summary of changes for version 20160527: 1075 1076 10771) ACPICA kernel-resident subsystem: 1078 1079Temporarily reverted the new arbitrary bit length/alignment support in 1080AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1081a number of regressions with the new code that need to be fully resolved 1082and tested before this support can be finally integrated into ACPICA. 1083Apologies for any inconveniences these issues may have caused. 1084 1085The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1086ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1087and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1088 1089Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1090option. Adds a new return macro, return_STR. Junk-uk Kim. 1091 1092Example Code and Data Size: These are the sizes for the OS-independent 1093acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1094debug version of the code includes the debug output trace mechanism and 1095has a much larger code and data size. 1096 1097 Current Release: 1098 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1099 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1100 Previous Release: 1101 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1102 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1103 1104---------------------------------------- 110522 April 2016. Summary of changes for version 20160422: 1106 11071) ACPICA kernel-resident subsystem: 1108 1109Fixed a regression in the GAS (generic address structure) arbitrary bit 1110support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1111and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1112 1113ACPI 6.0: Added support for new/renamed resource macros. One new argument 1114was added to each of these macros, and the original name has been 1115deprecated. The AML disassembler will always disassemble to the new 1116names. Support for the new macros was added to iASL, disassembler, 1117resource manager, and the acpihelp utility. ACPICA BZ 1274. 1118 1119 I2cSerialBus -> I2cSerialBusV2 1120 SpiSerialBus -> SpiSerialBusV2 1121 UartSerialBus -> UartSerialBusV2 1122 1123ACPI 6.0: Added support for a new integer field that was appended to the 1124package object returned by the _BIX method. This adds iASL compile-time 1125and AML runtime error checking. ACPICA BZ 1273. 1126 1127ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1128Subspace Type2" (Headers, Disassembler, and data table compiler). 1129 1130Example Code and Data Size: These are the sizes for the OS-independent 1131acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1132debug version of the code includes the debug output trace mechanism and 1133has a much larger code and data size. 1134 1135 Current Release: 1136 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1137 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1138 Previous Release: 1139 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1140 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1141 1142 11432) iASL Compiler/Disassembler and Tools: 1144 1145iASL: Implemented an ASL grammar extension to allow/enable executable 1146"module-level code" to be created and executed under the various 1147operators that create new scopes. This type of AML code is already 1148supported in all known AML interpreters, and the grammar change will 1149appear in the next version of the ACPI specification. Simplifies the 1150conditional runtime creation of named objects under these object types: 1151 1152 Device 1153 PowerResource 1154 Processor 1155 Scope 1156 ThermalZone 1157 1158iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1159ease-of-use to the ASL language. The syntax is similar to the 1160corresponding C operator, and is implemented with the existing AML While 1161opcode -- thus requiring no changes to existing AML interpreters. 1162 1163 For (Initialize, Predicate, Update) {TermList} 1164 1165Grammar: 1166 ForTerm := 1167 For ( 1168 Initializer // Nothing | TermArg => ComputationalData 1169 Predicate // Nothing | TermArg => ComputationalData 1170 Update // Nothing | TermArg => ComputationalData 1171 ) {TermList} 1172 1173 1174iASL: The _HID/_ADR detection and validation has been enhanced to search 1175under conditionals in order to allow these objects to be conditionally 1176created at runtime. 1177 1178iASL: Fixed several issues with the constant folding feature. The 1179improvement allows better detection and resolution of statements that can 1180be folded at compile time. ACPICA BZ 1266. 1181 1182iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1183conversion to the ASL ElseIf operator where incorrect ASL code could be 1184generated. 1185 1186iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1187sometimes an extra (and extraneous) set of parentheses were emitted for 1188some combinations of operators. Although this did not cause any problems 1189with recompilation of the disassembled code, it made the code more 1190difficult to read. David Box. ACPICA BZ 1231. 1191 1192iASL: Changed to ignore the unreferenced detection for predefined names 1193of resource descriptor elements, when the resource descriptor is 1194created/defined within a control method. 1195 1196iASL: Disassembler: Fix a possible fault with externally declared Buffer 1197objects. 1198 1199---------------------------------------- 120018 March 2016. Summary of changes for version 20160318: 1201 12021) ACPICA kernel-resident subsystem: 1203 1204Added support for arbitrary bit lengths and bit offsets for registers 1205defined by the Generic Address Structure. Previously, only aligned bit 1206lengths of 8/16/32/64 were supported. This was sufficient for many years, 1207but recently some machines have been seen that require arbitrary bit- 1208level support. ACPICA BZ 1240. Lv Zheng. 1209 1210Fixed an issue where the \_SB._INI method sometimes must be evaluated 1211before any _REG methods are evaluated. Lv Zheng. 1212 1213Implemented several changes related to ACPI table support 1214(Headers/Disassembler/TableCompiler): 1215NFIT: For ACPI 6.1, updated to add some additional new fields and 1216constants. 1217FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 12186). 1219DMAR: Added new constants per the 10/2014 DMAR spec. 1220IORT: Added new subtable per the 10/2015 IORT spec. 1221HEST: For ACPI 6.1, added new constants and new subtable. 1222DBG2: Added new constants per the 12/2015 DBG2 spec. 1223FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1224ACPICA BZ 1249. 1225ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1226 1227Updated header support for the DMAR table to match the current version of 1228the related spec. 1229 1230Added extensions to the ASL Concatenate operator to allow any ACPI object 1231to be passed as an operand. Any object other than Integer/String/Buffer 1232simply returns a string containing the object type. This extends the 1233usefulness of the Printf macros. Previously, Concatenate would abort the 1234control method if a non-data object was encountered. 1235 1236ACPICA source code: Deployed the C "const" keyword across the source code 1237where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1238 1239Example Code and Data Size: These are the sizes for the OS-independent 1240acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1241debug version of the code includes the debug output trace mechanism and 1242has a much larger code and data size. 1243 1244 Current Release: 1245 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1246 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1247 Previous Release: 1248 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1249 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1250 1251 12522) iASL Compiler/Disassembler and Tools: 1253 1254iASL/Disassembler: Improved the heuristic used to determine the number of 1255arguments for an externally defined control method (a method in another 1256table). Although this is an improvement, there is no deterministic way to 1257"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1258will completely solve this problem as it is deployed (automatically) in 1259newer BIOS code. 1260 1261iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1262statements that could cause errors when the disassembled file is 1263compiled. ACPICA BZ 1243. David Box. 1264 1265iASL: Fixed a regression caused by the merger of the two versions of the 1266local strtoul64. Because of a dependency on a global variable, strtoul64 1267could return an error for integers greater than a 32-bit value. ACPICA BZ 12681260. 1269 1270iASL: Fixed a regression where a fault could occur for an ASL Return 1271statement if it invokes a control method that is not resolved. ACPICA BZ 12721264. 1273 1274AcpiXtract: Improved input file validation: detection of binary files and 1275non-acpidump text files. 1276 1277---------------------------------------- 127812 February 2016. Summary of changes for version 20160212: 1279 12801) ACPICA kernel-resident subsystem: 1281 1282Implemented full support for the ACPI 6.1 specification (released in 1283January). This version of the specification is available at: 1284http://www.uefi.org/specifications 1285 1286Only a relatively small number of changes were required in ACPICA to 1287support ACPI 6.1, in these areas: 1288- New predefined names 1289- New _HID values 1290- A new subtable for HEST 1291- A few other header changes for new values 1292 1293Ensure \_SB_._INI is executed before any _REG methods are executed. There 1294appears to be existing BIOS code that relies on this behavior. Lv Zheng. 1295 1296Reverted a change made in version 20151218 which enabled method 1297invocations to be targets of various ASL operators (SuperName and Target 1298grammar elements). While the new behavior is supported by the ACPI 1299specification, other AML interpreters do not support this behavior and 1300never will. The ACPI specification will be updated for ACPI 6.2 to remove 1301this support. Therefore, the change was reverted to the original ACPICA 1302behavior. 1303 1304ACPICA now supports the GCC 6 compiler. 1305 1306Current Release: (Note: build changes increased sizes) 1307 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1308 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1309Previous Release: 1310 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1311 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 1312 1313 13142) iASL Compiler/Disassembler and Tools: 1315 1316Completed full support for the ACPI 6.0 External() AML opcode. The 1317compiler emits an external AML opcode for each ASL External statement. 1318This opcode is used by the disassembler to assist with the disassembly of 1319external control methods by specifying the required number of arguments 1320for the method. AML interpreters do not use this opcode. To ensure that 1321interpreters do not even see the opcode, a block of one or more external 1322opcodes is surrounded by an "If(0)" construct. As this feature becomes 1323commonly deployed in BIOS code, the ability of disassemblers to correctly 1324disassemble AML code will be greatly improved. David Box. 1325 1326iASL: Implemented support for an optional cross-reference output file. 1327The -lx option will create a the cross-reference file with the suffix 1328"xrf". Three different types of cross-reference are created in this file: 1329- List of object references made from within each control method 1330- Invocation (caller) list for each user-defined control method 1331- List of references to each non-method object in the namespace 1332 1333iASL: Method invocations as ASL Target operands are now disallowed and 1334flagged as errors in preparation for ACPI 6.2 (see the description of the 1335problem above). 1336 1337---------------------------------------- 13388 January 2016. Summary of changes for version 20160108: 1339 13401) ACPICA kernel-resident subsystem: 1341 1342Updated all ACPICA copyrights and signons to 2016: Added the 2016 1343copyright to all source code module headers and utility/tool signons. 1344This includes the standard Linux dual-license header. This affects 1345virtually every file in the ACPICA core subsystem, iASL compiler, all 1346ACPICA utilities, and the ACPICA test suite. 1347 1348Fixed a regression introduced in version 20151218 concerning the 1349execution of so-called module-level ASL/AML code. Namespace objects 1350created under a module-level If() construct were not properly/fully 1351entered into the namespace and could cause an interpreter fault when 1352accessed. 1353 1354Example Code and Data Size: These are the sizes for the OS-independent 1355acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1356debug version of the code includes the debug output trace mechanism and 1357has a much larger code and data size. 1358 1359Current Release: 1360 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1361 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 1362 Previous Release: 1363 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1364 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1365 1366 13672) iASL Compiler/Disassembler and Tools: 1368 1369Fixed a problem with the compilation of the GpioIo and GpioInt resource 1370descriptors. The _PIN field name was incorrectly defined to be an array 1371of 32-bit values, but the _PIN values are in fact 16 bits each. This 1372would cause incorrect bit width warnings when using Word (16-bit) fields 1373to access the descriptors. 1374 1375 1376---------------------------------------- 137718 December 2015. Summary of changes for version 20151218: 1378 13791) ACPICA kernel-resident subsystem: 1380 1381Implemented per-AML-table execution of "module-level code" as individual 1382ACPI tables are loaded into the namespace during ACPICA initialization. 1383In other words, any module-level code within an AML table is executed 1384immediately after the table is loaded, instead of batched and executed 1385after all of the tables have been loaded. This provides compatibility 1386with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 1387David Box. 1388 1389To fully support the feature above, the default operation region handlers 1390for the SystemMemory, SystemIO, and PCI_Config address spaces are now 1391installed before any ACPI tables are loaded. This enables module-level 1392code to access these address spaces during the table load and module- 1393level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1394Box. 1395 1396Implemented several changes to the internal _REG support in conjunction 1397with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1398utilities for the changes above. Although these tools were changed, host 1399operating systems that simply use the default handlers for SystemMemory, 1400SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1401 1402For example, in the code below, DEV1 is conditionally added to the 1403namespace by the DSDT via module-level code that accesses an operation 1404region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1405created immediately after the DSDT is loaded in order for the SSDT to 1406successfully reference DEV1. Previously, this code would cause an 1407AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1408fully supported by ACPICA. 1409 1410 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1411 { 1412 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1413 Field (OPR1, AnyAcc, NoLock, Preserve) 1414 { 1415 FLD1, 1 1416 } 1417 If (FLD1) 1418 { 1419 Device (\DEV1) 1420 { 1421 } 1422 } 1423 } 1424 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1425 { 1426 External (\DEV1, DeviceObj) 1427 Scope (\DEV1) 1428 { 1429 } 1430 } 1431 1432Fixed an AML interpreter problem where control method invocations were 1433not handled correctly when the invocation was itself a SuperName argument 1434to another ASL operator. In these cases, the method was not invoked. 1435ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1436argument: 1437 Store 1438 Acquire, Wait 1439 CondRefOf, RefOf 1440 Decrement, Increment 1441 Load, Unload 1442 Notify 1443 Signal, Release, Reset 1444 SizeOf 1445 1446Implemented automatic String-to-ObjectReference conversion support for 1447packages returned by predefined names (such as _DEP). A common BIOS error 1448is to add double quotes around an ObjectReference namepath, which turns 1449the reference into an unexpected string object. This support detects the 1450problem and corrects it before the package is returned to the caller that 1451invoked the method. Lv Zheng. 1452 1453Implemented extensions to the Concatenate operator. Concatenate now 1454accepts any type of object, it is not restricted to simply 1455Integer/String/Buffer. For objects other than these 3 basic data types, 1456the argument is treated as a string containing the name of the object 1457type. This expands the utility of Concatenate and the Printf/Fprintf 1458macros. ACPICA BZ 1222. 1459 1460Cleaned up the output of the ASL Debug object. The timer() value is now 1461optional and no longer emitted by default. Also, the basic data types of 1462Integer/String/Buffer are simply emitted as their values, without a data 1463type string -- since the data type is obvious from the output. ACPICA BZ 14641221. 1465 1466Example Code and Data Size: These are the sizes for the OS-independent 1467acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1468debug version of the code includes the debug output trace mechanism and 1469has a much larger code and data size. 1470 1471 Current Release: 1472 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1473 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1474 Previous Release: 1475 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1476 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1477 1478 14792) iASL Compiler/Disassembler and Tools: 1480 1481iASL: Fixed some issues with the ASL Include() operator. This operator 1482was incorrectly defined in the iASL parser rules, causing a new scope to 1483be opened for the code within the include file. This could lead to 1484several issues, including allowing ASL code that is technically illegal 1485and not supported by AML interpreters. Note, this does not affect the 1486related #include preprocessor operator. ACPICA BZ 1212. 1487 1488iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1489operator is essentially an ASL macro since there is no AML opcode 1490associated with it. The code emitted by the iASL compiler for ElseIf is 1491an Else opcode followed immediately by an If opcode. The disassembler 1492will now emit an ElseIf if it finds an Else immediately followed by an 1493If. This simplifies the decoded ASL, especially for deeply nested 1494If..Else and large Switch constructs. Thus, the disassembled code more 1495closely follows the original source ASL. ACPICA BZ 1211. Example: 1496 1497 Old disassembly: 1498 Else 1499 { 1500 If (Arg0 == 0x02) 1501 { 1502 Local0 = 0x05 1503 } 1504 } 1505 1506 New disassembly: 1507 ElseIf (Arg0 == 0x02) 1508 { 1509 Local0 = 0x05 1510 } 1511 1512AcpiExec: Added support for the new module level code behavior and the 1513early region installation. This required a small change to the 1514initialization, since AcpiExec must install its own operation region 1515handlers. 1516 1517AcpiExec: Added support to make the debug object timer optional. Default 1518is timer disabled. This cleans up the debug object output -- the timer 1519data is rarely used. 1520 1521AcpiExec: Multiple ACPI tables are now loaded in the order that they 1522appear on the command line. This can be important when there are 1523interdependencies/references between the tables. 1524 1525iASL/Templates. Add support to generate template files with multiple 1526SSDTs within a single output file. Also added ommand line support to 1527specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 15281223, 1225. 1529 1530 1531---------------------------------------- 153224 November 2015. Summary of changes for version 20151124: 1533 15341) ACPICA kernel-resident subsystem: 1535 1536Fixed a possible regression for a previous update to FADT handling. The 1537FADT no longer has a fixed table ID, causing some issues with code that 1538was hardwired to a specific ID. Lv Zheng. 1539 1540Fixed a problem where the method auto-serialization could interfere with 1541the current SyncLevel. This change makes the auto-serialization support 1542transparent to the SyncLevel support and management. 1543 1544Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 1545interface is intended for early access to the namespace during the 1546initial namespace device discovery walk. The _SUB method has been seen to 1547access operation regions in some cases, causing errors because the 1548operation regions are not fully initialized. 1549 1550AML Debugger: Fixed some issues with the terminate/quit/exit commands 1551that can cause faults. Lv Zheng. 1552 1553AML Debugger: Add thread ID support so that single-step mode only applies 1554to the AML Debugger thread. This prevents runtime errors within some 1555kernels. Lv Zheng. 1556 1557Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 1558methods that are invoked by this interface are optional, removed warnings 1559emitted for the case where one or more of these methods do not exist. 1560ACPICA BZ 1208, original change by Prarit Bhargava. 1561 1562Made a major pass through the entire ACPICA source code base to 1563standardize formatting that has diverged a bit over time. There are no 1564functional changes, but this will of course cause quite a few code 1565differences from the previous ACPICA release. 1566 1567Example Code and Data Size: These are the sizes for the OS-independent 1568acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1569debug version of the code includes the debug output trace mechanism and 1570has a much larger code and data size. 1571 1572 Current Release: 1573 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1574 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1575 Previous Release: 1576 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1577 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1578 1579 15802) iASL Compiler/Disassembler and Tools: 1581 1582iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 1583definition blocks within a single ASL file and the resulting AML file. 1584Support for this type of file was also added to the various tools that 1585use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 1586example code below shows two definition blocks within the same file: 1587 1588 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 15890x12345678) 1590 { 1591 } 1592 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 1593 { 1594 } 1595 1596iASL: Enhanced typechecking for the Name() operator. All expressions for 1597the value of the named object must be reduced/folded to a single constant 1598at compile time, as per the ACPI specification (the AML definition of 1599Name()). 1600 1601iASL: Fixed some code indentation issues for the -ic and -ia options (C 1602and assembly headers). Now all emitted code correctly begins in column 1. 1603 1604iASL: Added an error message for an attempt to open a Scope() on an 1605object defined in an SSDT. The DSDT is always loaded into the namespace 1606first, so any attempt to open a Scope on an SSDT object will fail at 1607runtime. 1608 1609 1610---------------------------------------- 161130 September 2015. Summary of changes for version 20150930: 1612 16131) ACPICA kernel-resident subsystem: 1614 1615Debugger: Implemented several changes and bug fixes to assist support for 1616the in-kernel version of the AML debugger. Lv Zheng. 1617- Fix the "predefined" command for in-kernel debugger. 1618- Do not enter debug command loop for the help and version commands. 1619- Disallow "execute" command during execution/single-step of a method. 1620 1621Interpreter: Updated runtime typechecking for all operators that have 1622target operands. The operand is resolved and validated that it is legal. 1623For example, the target cannot be a non-data object such as a Device, 1624Mutex, ThermalZone, etc., as per the ACPI specification. 1625 1626Debugger: Fixed the double-mutex user I/O handshake to work when local 1627deadlock detection is enabled. 1628 1629Debugger: limited display of method locals and arguments (LocalX and 1630ArgX) to only those that have actually been initialized. This prevents 1631lines of extraneous output. 1632 1633Updated the definition of the NFIT table to correct the bit polarity of 1634one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 1635 1636Example Code and Data Size: These are the sizes for the OS-independent 1637acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1638debug version of the code includes the debug output trace mechanism and 1639has a much larger code and data size. 1640 1641 Current Release: 1642 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1643 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1644 Previous Release: 1645 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1646 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1647 1648 16492) iASL Compiler/Disassembler and Tools: 1650 1651iASL: Improved the compile-time typechecking for operands of many of the 1652ASL operators: 1653 1654-- Added an option to disable compiler operand/operator typechecking (- 1655ot). 1656 1657-- For the following operators, the TermArg operands are now validated 1658when possible to be Integer data objects: BankField, OperationRegion, 1659DataTableRegion, Buffer, and Package. 1660 1661-- Store (Source, Target): Both the source and target operands are 1662resolved and checked that the operands are both legal. For example, 1663neither operand can be a non-data object such as a Device, Mutex, 1664ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 1665operator can be used to store an object to any type of target object. 1666 1667-- Store (Source, Target): If the source is a Package object, the target 1668must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 1669is a Package, the source must also be a Package. 1670 1671-- Store (Source, Target): A warning is issued if the source and target 1672resolve to the identical named object. 1673 1674-- Store (Source, <method invocation>): An error is generated for the 1675target method invocation, as this construct is not supported by the AML 1676interpreter. 1677 1678-- For all ASL math and logic operators, the target operand must be a 1679data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 1680includes the function return value also. 1681 1682-- External declarations are also included in the typechecking where 1683possible. External objects defined using the UnknownObj keyword cannot be 1684typechecked, however. 1685 1686iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 1687operator: 1688- Legacy code: Index(PKG1, 3) 1689- New ASL+ code: PKG1[3] 1690This completes the ACPI 6.0 ASL+ support as it was the only operator not 1691supported. 1692 1693iASL: Fixed the file suffix for the preprocessor output file (.i). Two 1694spaces were inadvertently appended to the filename, causing file access 1695and deletion problems on some systems. 1696 1697ASL Test Suite (ASLTS): Updated the master makefile to generate all 1698possible compiler output files when building the test suite -- thus 1699exercising these features of the compiler. These files are automatically 1700deleted when the test suite exits. 1701 1702 1703---------------------------------------- 170418 August 2015. Summary of changes for version 20150818: 1705 17061) ACPICA kernel-resident subsystem: 1707 1708Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 1709Zheng. ACPICA BZ 1186. 1710 1711Completed development to ensure that the ACPICA Disassembler and Debugger 1712are fully standalone components of ACPICA. Removed cross-component 1713dependences. Lv Zheng. 1714 1715The max-number-of-AML-loops is now runtime configurable (previously was 1716compile-time only). This is essentially a loop timeout to force-abort 1717infinite AML loops. ACPCIA BZ 1192. 1718 1719Debugger: Cleanup output to dump ACPI names and namepaths without any 1720trailing underscores. Lv Zheng. ACPICA BZ 1135. 1721 1722Removed unnecessary conditional compilations across the Debugger and 1723Disassembler components where entire modules could be left uncompiled. 1724 1725The aapits test is deprecated and has been removed from the ACPICA git 1726tree. The test has never been completed and has not been maintained, thus 1727becoming rather useless. ACPICA BZ 1015, 794. 1728 1729A batch of small changes to close bugzilla and other reports: 1730- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 1731- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 1732- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 1733- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 1734Moore. 1735- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 1736ACPICA BZ 1184. 1737- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 1738operators. 1739- Debugger: Split debugger initialization/termination interfaces. Lv 1740Zheng. 1741- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 1742identification. 1743- AcpiExec: Add debug message during _REG method phase during table 1744load/init. 1745- AcpiNames: Fix a regression where some output was missing and no longer 1746emitted. 1747- Debugger: General cleanup and simplification. Lv Zheng. 1748- Disassembler: Cleanup use of several global option variables. Lv Zheng. 1749 1750Example Code and Data Size: These are the sizes for the OS-independent 1751acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1752debug version of the code includes the debug output trace mechanism and 1753has a much larger code and data size. 1754 1755 Current Release: 1756 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1757 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1758 Previous Release: 1759 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1760 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1761 1762 17632) iASL Compiler/Disassembler and Tools: 1764 1765AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 1766were not handled properly and caused load errors. Now, properly invoke 1767and use the ACPICA auto-reallocate mechanism for ACPI table data 1768structures. ACPICA BZ 1188 1769 1770AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 1771BZ 1190. 1772 1773AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 1774AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 1775executed during initialization. ACPICA BZ 1187, 1189. 1776 1777iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 1778that corresponds to each disassembled ASL statement, to simplify 1779debugging. ACPICA BZ 1191. 1780 1781Debugger: Add option to the "objects" command to display a summary of the 1782current namespace objects (Object type and count). This is displayed if 1783the command is entered with no arguments. 1784 1785AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 1786 1787 1788---------------------------------------- 178917 July 2015. Summary of changes for version 20150717: 1790 17911) ACPICA kernel-resident subsystem: 1792 1793Improved the partitioning between the Debugger and Disassembler 1794components. This allows the Debugger to be used standalone within kernel 1795code without the Disassembler (which is used for single stepping also). 1796This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 1797 1798Debugger: Implemented a new command to trace the execution of control 1799methods (Trace). This is especially useful for the in-kernel version of 1800the debugger when file I/O may not be available for method trace output. 1801See the ACPICA reference for more information. Lv Zheng. 1802 1803Moved all C library prototypes (used for the local versions of these 1804functions when requested) to a new header, acclib.h 1805Cleaned up the use of non-ANSI C library functions. These functions are 1806implemented locally in ACPICA. Moved all such functions to a common 1807source file, utnonansi.c 1808 1809Debugger: Fixed a problem with the "!!" command (get last command 1810executed) where the debugger could enter an infinite loop and eventually 1811crash. 1812 1813Removed the use of local macros that were used for some of the standard C 1814library functions to automatically cast input parameters. This mostly 1815affected the is* functions where the input parameter is defined to be an 1816int. This required a few modifications to the main ACPICA source code to 1817provide casting for these functions and eliminate possible compiler 1818warnings for these parameters. 1819 1820Across the source code, added additional status/error checking to resolve 1821issues discovered by static source code analysis tools such as Coverity. 1822 1823Example Code and Data Size: These are the sizes for the OS-independent 1824acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1825debug version of the code includes the debug output trace mechanism and 1826has a much larger code and data size. 1827 1828 Current Release: 1829 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1830 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1831 Previous Release: 1832 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1833 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1834 1835 18362) iASL Compiler/Disassembler and Tools: 1837 1838iASL: Fixed a regression where the device map file feature no longer 1839worked properly when used in conjunction with the disassembler. It only 1840worked properly with the compiler itself. 1841 1842iASL: Implemented a new warning for method LocalX variables that are set 1843but never used (similar to a C compiler such as gcc). This also applies 1844to ArgX variables that are not defined by the parent method, and are 1845instead (legally) used as local variables. 1846 1847iASL/Preprocessor: Finished the pass-through of line numbers from the 1848preprocessor to the compiler. This ensures that compiler errors/warnings 1849have the correct original line numbers and filenames, regardless of any 1850#include files. 1851 1852iASL/Preprocessor: Fixed a couple of issues with comment handling and the 1853pass-through of comments to the preprocessor output file (which becomes 1854the compiler input file). Also fixed a problem with // comments that 1855appear after a math expression. 1856 1857iASL: Added support for the TCPA server table to the table compiler and 1858template generator. (The client table was already previously supported) 1859 1860iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 1861identify the iASL compiler. 1862 1863Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 1864multiple times. The new names are ACPI_SIGN_NEGATIVE and 1865ACPI_SIGN_POSITIVE. 1866 1867AcpiHelp: Update to expand help messages for the iASL preprocessor 1868directives. 1869 1870 1871---------------------------------------- 187219 June 2015. Summary of changes for version 20150619: 1873 1874Two regressions in version 20150616 have been addressed: 1875 1876Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 1877etc.) This update changes ACPICA to only use the standard headers for 1878functions, or the prototypes for the local versions of the C library 1879functions. Across the source code, this required some additional casts 1880for some Clib invocations for portability. Moved all local prototypes to 1881a new file, acclib.h 1882 1883Fixes several problems with recent changes to the handling of the FACS 1884table that could cause some systems not to boot. 1885 1886 1887---------------------------------------- 188816 June 2015. Summary of changes for version 20150616: 1889 1890 18911) ACPICA kernel-resident subsystem: 1892 1893Across the entire ACPICA source code base, the various macros for the C 1894library functions (such as ACPI_STRLEN, etc.) have been removed and 1895replaced by the standard C library names (strlen, etc.) The original 1896purpose for these macros is no longer applicable. This simplification 1897reduces the number of macros used in the ACPICA source code 1898significantly, improving readability and maintainability. 1899 1900Implemented support for a new ACPI table, the OSDT. This table, the 1901"override" SDT, can be loaded directly by the host OS at boot time. It 1902enables the replacement of existing namespace objects that were installed 1903via the DSDT and/or SSDTs. The primary purpose for this is to replace 1904buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 1905for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 1906Moore. 1907 1908Added support for systems with (improperly) two FACS tables -- a "32-bit" 1909table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 1910X field). This change will support both automatically. There continues to 1911be systems found with this issue. This support requires a change to the 1912AcpiSetFirmwareWakingVector interface. Also, a public global variable has 1913been added to allow the host to select which FACS is desired 1914(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 1915details Lv Zheng. 1916 1917Added a new feature to allow for systems that do not contain an FACS. 1918Although this is already supported on hardware-reduced platforms, the 1919feature has been extended for all platforms. The reasoning is that we do 1920not want to abort the entire ACPICA initialization just because the 1921system is seriously buggy and has no FACS. 1922 1923Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 1924not correctly transcribed from the ACPI specification in ACPICA version 192520150515. 1926 1927Implemented support for the _CLS object in the AcpiGetObjectInfo external 1928interface. 1929 1930Updated the definitions of the TCPA and TPM2 ACPI tables to the more 1931recent TCG ACPI Specification, December 14, 2014. Table disassembler and 1932compiler also updated. Note: The TCPA "server" table is not supported by 1933the disassembler/table-compiler at this time. 1934 1935ACPI 6.0: Added definitions for the new GIC version field in the MADT. 1936 1937Example Code and Data Size: These are the sizes for the OS-independent 1938acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1939debug version of the code includes the debug output trace mechanism and 1940has a much larger code and data size. 1941 1942 Current Release: 1943 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1944 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1945 Previous Release: 1946 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1947 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1948 1949 19502) iASL Compiler/Disassembler and Tools: 1951 1952Disassembler: Fixed a problem with the new symbolic operator disassembler 1953where incorrect ASL code could be emitted in some cases for the "non- 1954commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 1955ShiftRight. The actual problem cases seem to be rather unusual in common 1956ASL code, however. David Box. 1957 1958Modified the linux version of acpidump to obtain ACPI tables from not 1959just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 1960Zheng. 1961 1962iASL: Fixed a problem where the user preprocessor output file (.i) 1963contained extra data that was not expected. The compiler was using this 1964file as a temporary file and passed through #line directives in order to 1965keep compiler error messages in sync with the input file and line number 1966across multiple include files. The (.i) is no longer a temporary file as 1967the compiler uses a new, different file for the original purpose. 1968 1969iASL: Fixed a problem where comments within the original ASL source code 1970file were not passed through to the preprocessor output file, nor any 1971listing files. 1972 1973iASL: Fixed some issues for the handling of the "#include" preprocessor 1974directive and the similar (but not the same) "Include" ASL operator. 1975 1976iASL: Add support for the new OSDT in both the disassembler and compiler. 1977 1978iASL: Fixed a problem with the constant folding support where a Buffer 1979object could be incorrectly generated (incorrectly formed) during a 1980conversion to a Store() operator. 1981 1982AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 1983description text for the _REV predefined name. _REV now permanently 1984returns 2, as per the ACPI 6.0 specification. 1985 1986Debugger: Enhanced the output of the Debug ASL object for references 1987produced by the Index operator. For Buffers and strings, only output the 1988actual byte pointed to by the index. For packages, only print the single 1989package element decoded by the index. Previously, the entire 1990buffer/string/package was emitted. 1991 1992iASL/Table-compiler: Fixed a regression where the "generic" data types 1993were no longer recognized, causing errors. 1994 1995 1996---------------------------------------- 199715 May 2015. Summary of changes for version 20150515: 1998 1999This release implements most of ACPI 6.0 as described below. 2000 20011) ACPICA kernel-resident subsystem: 2002 2003Implemented runtime argument checking and return value checking for all 2004new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2005_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2006 2007Example Code and Data Size: These are the sizes for the OS-independent 2008acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2009debug version of the code includes the debug output trace mechanism and 2010has a much larger code and data size. 2011 2012 Current Release: 2013 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2014 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2015 Previous Release: 2016 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2017 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2018 2019 20202) iASL Compiler/Disassembler and Tools: 2021 2022iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2023names (argument count validation and return value typechecking.) 2024 2025iASL disassembler and table compiler: implemented support for all new 2026ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2027 2028iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2029tables: FADT, MADT. 2030 2031iASL preprocessor: Added a new directive to enable inclusion of binary 2032blobs into ASL code. The new directive is #includebuffer. It takes a 2033binary file as input and emits a named ascii buffer object into the ASL 2034code. 2035 2036AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2037 2038AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2039directives. 2040 2041AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2042tables. 2043 2044 2045---------------------------------------- 204610 April 2015. Summary of changes for version 20150410: 2047 2048Reverted a change introduced in version 20150408 that caused 2049a regression in the disassembler where incorrect operator 2050symbols could be emitted. 2051 2052 2053---------------------------------------- 205408 April 2015. Summary of changes for version 20150408: 2055 2056 20571) ACPICA kernel-resident subsystem: 2058 2059Permanently set the return value for the _REV predefined name. It now 2060returns 2 (was 5). This matches other ACPI implementations. _REV will be 2061deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2062for ACPI 2.0 and later. It should never be used to differentiate or 2063identify operating systems. 2064 2065Added the "Windows 2015" string to the _OSI support. ACPICA will now 2066return TRUE to a query with this string. 2067 2068Fixed several issues with the local version of the printf function. 2069 2070Added the C99 compiler option (-std=c99) to the Unix makefiles. 2071 2072 Current Release: 2073 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2074 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2075 Previous Release: 2076 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2077 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2078 2079 20802) iASL Compiler/Disassembler and Tools: 2081 2082iASL: Implemented an enhancement to the constant folding feature to 2083transform the parse tree to a simple Store operation whenever possible: 2084 Add (2, 3, X) ==> is converted to: Store (5, X) 2085 X = 2 + 3 ==> is converted to: Store (5, X) 2086 2087Updated support for the SLIC table (Software Licensing Description Table) 2088in both the Data Table compiler and the disassembler. The SLIC table 2089support now conforms to "Microsoft Software Licensing Tables (SLIC and 2090MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2091following the ACPI header is now defined to be "Proprietary Data", and as 2092such, can only be entered or displayed as a hex data block. 2093 2094Implemented full support for the MSDM table as described in the document 2095above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2096following the ACPI header is defined to be "Proprietary Data", and can 2097only be entered or displayed as a hex data block. 2098 2099Implemented the -Pn option for the iASL Table Compiler (was only 2100implemented for the ASL compiler). This option disables the iASL 2101preprocessor. 2102 2103Disassembler: For disassembly of Data Tables, added a comment field 2104around the Ascii equivalent data that is emitted as part of the "Raw 2105Table Data" block. This prevents the iASL Preprocessor from possible 2106confusion if/when the table is compiled. 2107 2108Disassembler: Added an option (-df) to force the disassembler to assume 2109that the table being disassembled contains valid AML. This feature is 2110useful for disassembling AML files that contain ACPI signatures other 2111than DSDT or SSDT (such as OEMx or other signatures). 2112 2113Changes for the EFI version of the tools: 21141) Fixed a build error/issue 21152) Fixed a cast warning 2116 2117iASL: Fixed a path issue with the __FILE__ operator by making the 2118directory prefix optional within the internal SplitInputFilename 2119function. 2120 2121Debugger: Removed some unused global variables. 2122 2123Tests: Updated the makefile for proper generation of the AAPITS suite. 2124 2125 2126---------------------------------------- 212704 February 2015. Summary of changes for version 20150204: 2128 2129ACPICA kernel-resident subsystem: 2130 2131Updated all ACPICA copyrights and signons to 2014. Added the 2014 2132copyright to all module headers and signons, including the standard Linux 2133header. This affects virtually every file in the ACPICA core subsystem, 2134iASL compiler, all ACPICA utilities, and the test suites. 2135 2136Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2137A raw gpe handling mechanism was created to allow better handling of GPE 2138storms that aren't easily managed by the normal handler. The raw handler 2139allows disabling/renabling of the the GPE so that interrupt storms can be 2140avoided in cases where events cannot be timely serviced. In this 2141scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2142GPE. This API will leave the reference counts undisturbed, thereby 2143preventing unintentional clearing of the GPE when the intent in only to 2144temporarily disable it. Raw handlers allow enabling and disabling of a 2145GPE by removing GPE register locking. As such, raw handlers much provide 2146their own locks while using GPE API's to protect access to GPE data 2147structures. 2148Lv Zheng 2149 2150Events: Always modify GPE registers under the GPE lock. 2151Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2152values. Reported as bug by joe.liu@apple.com. 2153 2154Unix makefiles: Separate option to disable optimizations and 2155_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2156NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2157purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2158errors when building ACPICA. This allows disabling the option without 2159also having to disable optimazations. 2160David Box 2161 2162 Current Release: 2163 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2164 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2165 2166-- 2167-------------------------------------- 216807 November 2014. Summary of changes for version 20141107: 2169 2170This release is available at https://acpica.org/downloads 2171 2172This release introduces and implements language extensions to ASL that 2173provide support for symbolic ("C-style") operators and expressions. These 2174language extensions are known collectively as ASL+. 2175 2176 21771) iASL Compiler/Disassembler and Tools: 2178 2179Disassembler: Fixed a problem with disassembly of the UartSerialBus 2180macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2181Box. 2182 2183Disassembler: Fixed the Unicode macro support to add escape sequences. 2184All non-printable ASCII values are emitted as escape sequences, as well 2185as the standard escapes for quote and backslash. Ensures that the 2186disassembled macro can be correctly recompiled. 2187 2188iASL: Added Printf/Fprintf macros for formatted output. These macros are 2189translated to existing AML Concatenate and Store operations. Printf 2190writes to the ASL Debug object. Fprintf allows the specification of an 2191ASL name as the target. Only a single format specifier is required, %o, 2192since the AML interpreter dynamically converts objects to the required 2193type. David E. Box. 2194 2195 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2196 (Concatenate (Concatenate (Concatenate ("", Arg0), 2197 ": Unexpected value for "), Arg1), ", "), Arg2), 2198 " at line "), Arg3), Debug) 2199 2200 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2201 Arg0, Arg1, Arg2, Arg3) 2202 2203 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2204 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2205 2206 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2207 2208iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2209ASL parse tree before the AML code is generated. This allows blocks of 2210ASL code to be removed in order to help locate and identify problem 2211devices and/or code. David E. Box. 2212 2213AcpiExec: Added support (-fi) for an optional namespace object 2214initialization file. This file specifies initial values for namespace 2215objects as necessary for debugging and testing different ASL code paths 2216that may be taken as a result of BIOS options. 2217 2218 22192) Overview of symbolic operator support for ASL (ASL+) 2220------------------------------------------------------- 2221 2222As an extension to the ASL language, iASL implements support for symbolic 2223(C-style) operators for math and logical expressions. This can greatly 2224simplify ASL code as well as improve both readability and 2225maintainability. These language extensions can exist concurrently with 2226all legacy ASL code and expressions. 2227 2228The symbolic extensions are 100% compatible with existing AML 2229interpreters, since no new AML opcodes are created. To implement the 2230extensions, the iASL compiler transforms the symbolic expressions into 2231the legacy ASL/AML equivalents at compile time. 2232 2233Full symbolic expressions are supported, along with the standard C 2234precedence and associativity rules. 2235 2236Full disassembler support for the symbolic expressions is provided, and 2237creates an automatic migration path for existing ASL code to ASL+ code 2238via the disassembly process. By default, the disassembler now emits ASL+ 2239code with symbolic expressions. An option (-dl) is provided to force the 2240disassembler to emit legacy ASL code if desired. 2241 2242Below is the complete list of the currently supported symbolic operators 2243with examples. See the iASL User Guide for additional information. 2244 2245 2246ASL+ Syntax Legacy ASL Equivalent 2247----------- --------------------- 2248 2249 // Math operators 2250 2251Z = X + Y Add (X, Y, Z) 2252Z = X - Y Subtract (X, Y, Z) 2253Z = X * Y Multiply (X, Y, Z) 2254Z = X / Y Divide (X, Y, , Z) 2255Z = X % Y Mod (X, Y, Z) 2256Z = X << Y ShiftLeft (X, Y, Z) 2257Z = X >> Y ShiftRight (X, Y, Z) 2258Z = X & Y And (X, Y, Z) 2259Z = X | Y Or (X, Y, Z) 2260Z = X ^ Y Xor (X, Y, Z) 2261Z = ~X Not (X, Z) 2262X++ Increment (X) 2263X-- Decrement (X) 2264 2265 // Logical operators 2266 2267(X == Y) LEqual (X, Y) 2268(X != Y) LNotEqual (X, Y) 2269(X < Y) LLess (X, Y) 2270(X > Y) LGreater (X, Y) 2271(X <= Y) LLessEqual (X, Y) 2272(X >= Y) LGreaterEqual (X, Y) 2273(X && Y) LAnd (X, Y) 2274(X || Y) LOr (X, Y) 2275(!X) LNot (X) 2276 2277 // Assignment and compound assignment operations 2278 2279X = Y Store (Y, X) 2280X += Y Add (X, Y, X) 2281X -= Y Subtract (X, Y, X) 2282X *= Y Multiply (X, Y, X) 2283X /= Y Divide (X, Y, , X) 2284X %= Y Mod (X, Y, X) 2285X <<= Y ShiftLeft (X, Y, X) 2286X >>= Y ShiftRight (X, Y, X) 2287X &= Y And (X, Y, X) 2288X |= Y Or (X, Y, X) 2289X ^= Y Xor (X, Y, X) 2290 2291 22923) ASL+ Examples: 2293----------------- 2294 2295Legacy ASL: 2296 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 2297 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 22980x03FB), 2299 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 2300 { 2301 And (MEMB, 0xFFFFFFF0, SRMB) 2302 Store (MEMB, Local2) 2303 Store (PDBM, Local1) 2304 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 2305 Store (SRMB, MEMB) 2306 Or (PDBM, 0x02, PDBM) 2307 } 2308 2309ASL+ version: 2310 If (((R510 & 0x03FB) == 0x02E0) || 2311 ((R520 & 0x03FB) == 0x02E0) || 2312 ((R530 & 0x03FB) == 0x02E0) || 2313 ((R540 & 0x03FB) == 0x02E0)) 2314 { 2315 SRMB = (MEMB & 0xFFFFFFF0) 2316 Local2 = MEMB 2317 Local1 = PDBM 2318 PDBM &= 0xFFFFFFFFFFFFFFF9 2319 MEMB = SRMB 2320 PDBM |= 0x02 2321 } 2322 2323Legacy ASL: 2324 Store (0x1234, Local1) 2325 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 2326 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 2327 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 2328 Store (Index (PKG1, 0x03), Local6) 2329 Store (Add (Local3, Local2), Debug) 2330 Add (Local1, 0x0F, Local2) 2331 Add (Local1, Multiply (Local2, Local3), Local2) 2332 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 2333 2334ASL+ version: 2335 Local1 = 0x1234 2336 Local3 = (((Local1 + TEST) + 0x20) * Local2) 2337 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 2338 Local3 = (Local1 + (TEST + (0x20 * Local2))) 2339 Local6 = Index (PKG1, 0x03) 2340 Debug = (Local3 + Local2) 2341 Local2 = (Local1 + 0x0F) 2342 Local2 = (Local1 + (Local2 * Local3)) 2343 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 2344 2345 2346---------------------------------------- 234726 September 2014. Summary of changes for version 20140926: 2348 23491) ACPICA kernel-resident subsystem: 2350 2351Updated the GPIO operation region handler interface (GeneralPurposeIo). 2352In order to support GPIO Connection objects with multiple pins, along 2353with the related Field objects, the following changes to the interface 2354have been made: The Address is now defined to be the offset in bits of 2355the field unit from the previous invocation of a Connection. It can be 2356viewed as a "Pin Number Index" into the connection resource descriptor. 2357The BitWidth is the exact bit width of the field. It is usually one bit, 2358but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 2359additional information and examples. 2360 2361GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 2362corresponding _Lxx/_Exx methods are disabled (they may have been enabled 2363by the firmware), so that they cannot fire until they are enabled via 2364AcpiUpdateAllGpes. Rafael J. Wysocki. 2365 2366Added a new return flag for the Event/GPE status interfaces -- 2367AcpiGetEventStatus and AcpiGetGpeStatus. The new 2368ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 2369GPE currently has a handler associated with it, and can thus actually 2370affect the system. Lv Zheng. 2371 2372Example Code and Data Size: These are the sizes for the OS-independent 2373acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2374debug version of the code includes the debug output trace mechanism and 2375has a much larger code and data size. 2376 2377 Current Release: 2378 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2379 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2380 Previous Release: 2381 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2382 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2383 23842) iASL Compiler/Disassembler and Tools: 2385 2386iASL: Fixed a memory allocation/free regression introduced in 20140828 2387that could cause the compiler to crash. This was introduced inadvertently 2388during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 23891113. 2390 2391iASL: Removed two error messages that have been found to create false 2392positives, until they can be fixed and fully validated (ACPICA BZ 1112): 23931) Illegal forward reference within a method 23942) Illegal reference across two methods 2395 2396iASL: Implemented a new option (-lm) to create a hardware mapping file 2397that summarizes all GPIO, I2C, SPI, and UART connections. This option 2398works for both the compiler and disassembler. See the iASL compiler user 2399guide for additional information and examples (section 6.4.6). 2400 2401AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2402version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2403a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2404 2405AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2406unless STDIN is actually a terminal. Assists with batch-mode processing. 2407ACPICA BZ 1114. 2408 2409Disassembler/AcpiHelp: Added another large group of recognized _HID 2410values. 2411 2412 2413---------------------------------------- 241428 August 2014. Summary of changes for version 20140828: 2415 24161) ACPICA kernel-resident subsystem: 2417 2418Fixed a problem related to the internal use of the Timer() operator where 2419a 64-bit divide could cause an attempted link to a double-precision math 2420library. This divide is not actually necessary, so the code was 2421restructured to eliminate it. Lv Zheng. 2422 2423ACPI 5.1: Added support for the runtime validation of the _DSD package 2424(similar to the iASL support). 2425 2426ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2427SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2428 2429Example Code and Data Size: These are the sizes for the OS-independent 2430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2431debug version of the code includes the debug output trace mechanism and 2432has a much larger code and data size. 2433 2434 Current Release: 2435 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2436 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2437 Previous Release: 2438 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2439 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2440 24412) iASL Compiler/Disassembler and Tools: 2442 2443AcpiExec: Fixed a problem on unix systems where the original terminal 2444state was not always properly restored upon exit. Seen when using the -v 2445option. ACPICA BZ 1104. 2446 2447iASL: Fixed a problem with the validation of the ranges/length within the 2448Memory24 resource descriptor. There was a boundary condition when the 2449range was equal to the (length -1) caused by the fact that these values 2450are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2451 2452Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2453polarity 2454flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2455is 2456now supported properly. 2457 2458ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2459in the disassembler, data table compiler, and table template generator. 2460 2461iASL: Added a requirement for Device() objects that one of either a _HID 2462or _ADR must exist within the scope of a Device, as per the ACPI 2463specification. Remove a similar requirement that was incorrectly in place 2464for the _DSD object. 2465 2466iASL: Added error detection for illegal named references within control 2467methods that would cause runtime failures. Now trapped as errors are: 1) 2468References to objects within a non-parent control method. 2) Forward 2469references (within a method) -- for control methods, AML interpreters use 2470a one-pass parse of control methods. ACPICA BZ 1008. 2471 2472iASL: Added error checking for dependencies related to the _PSx power 2473methods. ACPICA BZ 1029. 24741) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2475_PS3. 24762) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2477scope. 2478 2479iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2480deploying the existing object and string caches and adding new caches for 2481the table compiler. 2482 2483iASL: Split the huge parser source file into multiple subfiles to improve 2484manageability. Generation now requires the M4 macro preprocessor, which 2485is part of the Bison distribution on both unix and windows platforms. 2486 2487AcpiSrc: Fixed and removed all extraneous warnings generated during 2488entire ACPICA source code scan and/or conversion. 2489 2490 2491---------------------------------------- 2492 249324 July 2014. Summary of changes for version 20140724: 2494 2495The ACPI 5.1 specification has been released and is available at: 2496http://uefi.org/specs/access 2497 2498 24990) ACPI 5.1 support in ACPICA: 2500 2501ACPI 5.1 is fully supported in ACPICA as of this release. 2502 2503New predefined names. Support includes iASL and runtime ACPICA 2504validation. 2505 _CCA (Cache Coherency Attribute). 2506 _DSD (Device-Specific Data). David Box. 2507 2508Modifications to existing ACPI tables. Support includes headers, iASL 2509Data Table compiler, disassembler, and the template generator. 2510 FADT - New fields and flags. Graeme Gregory. 2511 GTDT - One new subtable and new fields. Tomasz Nowicki. 2512 MADT - Two new subtables. Tomasz Nowicki. 2513 PCCT - One new subtable. 2514 2515Miscellaneous. 2516 New notification type for System Resource Affinity change events. 2517 2518 25191) ACPICA kernel-resident subsystem: 2520 2521Fixed a regression introduced in 20140627 where a fault can happen during 2522the deletion of Alias AML namespace objects. The problem affected both 2523the core ACPICA and the ACPICA tools including iASL and AcpiExec. 2524 2525Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 2526simple mechanism to enable wake GPEs that have no associated handler or 2527control method. Rafael Wysocki. 2528 2529Updated the AcpiEnableGpe interface to disallow the enable if there is no 2530handler or control method associated with the particular GPE. This will 2531help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 2532 2533Updated GPE handling and dispatch by disabling the GPE before clearing 2534the status bit for edge-triggered GPEs. Lv Zheng. 2535 2536Added Timer() support to the AML Debug object. The current timer value is 2537now displayed with each invocation of (Store to) the debug object to 2538enable simple generation of execution times for AML code (method 2539execution for example.) ACPICA BZ 1093. 2540 2541Example Code and Data Size: These are the sizes for the OS-independent 2542acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2543debug version of the code includes the debug output trace mechanism and 2544has a much larger code and data size. 2545 2546 Current Release: 2547 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 2548 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2549 Previous Release: 2550 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2551 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2552 2553 25542) iASL Compiler/Disassembler and Tools: 2555 2556Fixed an issue with the recently added local printf implementation, 2557concerning width/precision specifiers that could cause incorrect output. 2558Lv Zheng. ACPICA BZ 1094. 2559 2560Disassembler: Added support to detect buffers that contain UUIDs and 2561disassemble them to an invocation of the ToUUID operator. Also emit 2562commented descriptions of known ACPI-related UUIDs. 2563 2564AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 2565-u. Adds three new files. 2566 2567iASL: Update table compiler and disassembler for DMAR table changes that 2568were introduced in September 2013. With assistance by David Woodhouse. 2569 2570---------------------------------------- 257127 June 2014. Summary of changes for version 20140627: 2572 25731) ACPICA kernel-resident subsystem: 2574 2575Formatted Output: Implemented local versions of standard formatted output 2576utilities such as printf, etc. Over time, it has been discovered that 2577there are in fact many portability issues with printf, and the addition 2578of this feature will fix/prevent these issues once and for all. Some 2579known issues are summarized below: 2580 25811) Output of 64-bit values is not portable. For example, UINT64 is %ull 2582for the Linux kernel and is %uI64 for some MSVC versions. 25832) Invoking printf consistently in a manner that is portable across both 258432-bit and 64-bit platforms is difficult at best in many situations. 25853) The output format for pointers varies from system to system (leading 2586zeros especially), and leads to inconsistent output from ACPICA across 2587platforms. 25884) Certain platform-specific printf formats may conflict with ACPICA use. 25895) If there is no local C library available, ACPICA now has local support 2590for printf. 2591 2592-- To address these printf issues in a complete manner, ACPICA now 2593directly implements a small subset of printf format specifiers, only 2594those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 2595 2596Implemented support for ACPICA generation within the EFI environment. 2597Initially, the AcpiDump utility is supported in the UEFI shell 2598environment. Lv Zheng. 2599 2600Added a new external interface, AcpiLogError, to improve ACPICA 2601portability. This allows the host to redirect error messages from the 2602ACPICA utilities. Lv Zheng. 2603 2604Added and deployed new OSL file I/O interfaces to improve ACPICA 2605portability: 2606 AcpiOsOpenFile 2607 AcpiOsCloseFile 2608 AcpiOsReadFile 2609 AcpiOsWriteFile 2610 AcpiOsGetFileOffset 2611 AcpiOsSetFileOffset 2612There are C library implementations of these functions in the new file 2613service_layers/oslibcfs.c -- however, the functions can be implemented by 2614the local host in any way necessary. Lv Zheng. 2615 2616Implemented a mechanism to disable/enable ACPI table checksum validation 2617at runtime. This can be useful when loading tables very early during OS 2618initialization when it may not be possible to map the entire table in 2619order to compute the checksum. Lv Zheng. 2620 2621Fixed a buffer allocation issue for the Generic Serial Bus support. 2622Originally, a fixed buffer length was used. This change allows for 2623variable-length buffers based upon the protocol indicated by the field 2624access attributes. Reported by Lan Tianyu. Lv Zheng. 2625 2626Fixed a problem where an object detached from a namespace node was not 2627properly terminated/cleared and could cause a circular list problem if 2628reattached. ACPICA BZ 1063. David Box. 2629 2630Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 2631 2632Fixed a possible memory leak in an error return path within the function 2633AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 2634 2635Example Code and Data Size: These are the sizes for the OS-independent 2636acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2637debug version of the code includes the debug output trace mechanism and 2638has a much larger code and data size. 2639 2640 Current Release: 2641 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2642 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2643 Previous Release: 2644 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2645 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2646 2647 26482) iASL Compiler/Disassembler and Tools: 2649 2650Disassembler: Add dump of ASCII equivalent text within a comment at the 2651end of each line of the output for the Buffer() ASL operator. 2652 2653AcpiDump: Miscellaneous changes: 2654 Fixed repetitive table dump in -n mode. 2655 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 2656the ACPI 2.0 GUID fails. 2657 2658iASL: Fixed a problem where the compiler could fault if incorrectly given 2659an acpidump output file as input. ACPICA BZ 1088. David Box. 2660 2661AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 2662they are invoked without any arguments. 2663 2664Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 26651086. Colin Ian King. 2666 2667Disassembler: Cleaned up a block of code that extracts a parent Op 2668object. Added a comment that explains that the parent is guaranteed to be 2669valid in this case. ACPICA BZ 1069. 2670 2671 2672---------------------------------------- 267324 April 2014. Summary of changes for version 20140424: 2674 26751) ACPICA kernel-resident subsystem: 2676 2677Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 2678Some of these tables are known to contain a trailing NULL entry. Lv 2679Zheng. 2680 2681Removed an extraneous error message for the case where there are a large 2682number of system GPEs (> 124). This was the "32-bit FADT register is too 2683long to convert to GAS struct" message, which is irrelevant for GPEs 2684since the GPEx_BLK_LEN fields of the FADT are always used instead of the 2685(limited capacity) GAS bit length. Also, several changes to ensure proper 2686support for GPE numbers > 255, where some "GPE number" fields were 8-bits 2687internally. 2688 2689Implemented and deployed additional configuration support for the public 2690ACPICA external interfaces. Entire classes of interfaces can now be 2691easily modified or configured out, replaced by stubbed inline functions 2692by default. Lv Zheng. 2693 2694Moved all public ACPICA runtime configuration globals to the public 2695ACPICA external interface file for convenience. Also, removed some 2696obsolete/unused globals. See the file acpixf.h. Lv Zheng. 2697 2698Documentation: Added a new section to the ACPICA reference describing the 2699maximum number of GPEs that can be supported by the FADT-defined GPEs in 2700block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 2701reference. 2702 2703Example Code and Data Size: These are the sizes for the OS-independent 2704acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2705debug version of the code includes the debug output trace mechanism and 2706has a much larger code and data size. 2707 2708 Current Release: 2709 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2710 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2711 Previous Release: 2712 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2713 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2714 2715 27162) iASL Compiler/Disassembler and Tools: 2717 2718iASL and disassembler: Add full support for the LPIT table (Low Power 2719Idle Table). Includes support in the disassembler, data table compiler, 2720and template generator. 2721 2722AcpiDump utility: 27231) Add option to force the use of the RSDT (over the XSDT). 27242) Improve validation of the RSDP signature (use 8 chars instead of 4). 2725 2726iASL: Add check for predefined packages that are too large. For 2727predefined names that contain subpackages, check if each subpackage is 2728too large. (Check for too small already exists.) 2729 2730Debugger: Updated the GPE command (which simulates a GPE by executing the 2731GPE code paths in ACPICA). The GPE device is now optional, and defaults 2732to the GPE 0/1 FADT-defined blocks. 2733 2734Unix application OSL: Update line-editing support. Add additional error 2735checking and take care not to reset terminal attributes on exit if they 2736were never set. This should help guarantee that the terminal is always 2737left in the previous state on program exit. 2738 2739 2740---------------------------------------- 274125 March 2014. Summary of changes for version 20140325: 2742 27431) ACPICA kernel-resident subsystem: 2744 2745Updated the auto-serialize feature for control methods. This feature 2746automatically serializes all methods that create named objects in order 2747to prevent runtime errors. The update adds support to ignore the 2748currently executing AML SyncLevel when invoking such a method, in order 2749to prevent disruption of any existing SyncLevel priorities that may exist 2750in the AML code. Although the use of SyncLevels is relatively rare, this 2751change fixes a regression where an AE_AML_MUTEX_ORDER exception can 2752appear on some machines starting with the 20140214 release. 2753 2754Added a new external interface to allow the host to install ACPI tables 2755very early, before the namespace is even created. AcpiInstallTable gives 2756the host additional flexibility for ACPI table management. Tables can be 2757installed directly by the host as if they had originally appeared in the 2758XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 2759(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 2760with additional internal restructuring and cleanup. See the ACPICA 2761Reference for interface details. Lv Zheng. 2762 2763Added validation of the checksum for all incoming dynamically loaded 2764tables (via external interfaces or via AML Load/LoadTable operators). Lv 2765Zheng. 2766 2767Updated the use of the AcpiOsWaitEventsComplete interface during Notify 2768and GPE handler removal. Restructured calls to eliminate possible race 2769conditions. Lv Zheng. 2770 2771Added a warning for the use/execution of the ASL/AML Unload (table) 2772operator. This will help detect and identify machines that use this 2773operator if and when it is ever used. This operator has never been seen 2774in the field and the usage model and possible side-effects of the drastic 2775runtime action of a full table removal are unknown. 2776 2777Reverted the use of #pragma push/pop which was introduced in the 20140214 2778release. It appears that push and pop are not implemented by enough 2779compilers to make the use of this feature feasible for ACPICA at this 2780time. However, these operators may be deployed in a future ACPICA 2781release. 2782 2783Added the missing EXPORT_SYMBOL macros for the install and remove SCI 2784handler interfaces. 2785 2786Source code generation: 27871) Disabled the use of the "strchr" macro for the gcc-specific 2788generation. For some versions of gcc, this macro can periodically expose 2789a compiler bug which in turn causes compile-time error(s). 27902) Added support for PPC64 compilation. Colin Ian King. 2791 2792Example Code and Data Size: These are the sizes for the OS-independent 2793acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2794debug version of the code includes the debug output trace mechanism and 2795has a much larger code and data size. 2796 2797 Current Release: 2798 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2799 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2800 Previous Release: 2801 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2802 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2803 2804 28052) iASL Compiler/Disassembler and Tools: 2806 2807Disassembler: Added several new features to improve the readability of 2808the resulting ASL code. Extra information is emitted within comment 2809fields in the ASL code: 28101) Known _HID/_CID values are decoded to descriptive text. 28112) Standard values for the Notify() operator are decoded to descriptive 2812text. 28133) Target operands are expanded to full pathnames (in a comment) when 2814possible. 2815 2816Disassembler: Miscellaneous updates for extern() handling: 28171) Abort compiler if file specified by -fe option does not exist. 28182) Silence unnecessary warnings about argument count mismatches. 28193) Update warning messages concerning unresolved method externals. 28204) Emit "UnknownObj" keyword for externals whose type cannot be 2821determined. 2822 2823AcpiHelp utility: 28241) Added the -a option to display both the ASL syntax and the AML 2825encoding for an input ASL operator. This effectively displays all known 2826information about an ASL operator with one AcpiHelp invocation. 28272) Added substring match support (similar to a wildcard) for the -i 2828(_HID/PNP IDs) option. 2829 2830iASL/Disassembler: Since this tool does not yet support execution on big- 2831endian machines, added detection of endianness and an error message if 2832execution is attempted on big-endian. Support for big-endian within iASL 2833is a feature that is on the ACPICA to-be-done list. 2834 2835AcpiBin utility: 28361) Remove option to extract binary files from an acpidump; this function 2837is made obsolete by the AcpiXtract utility. 28382) General cleanup of open files and allocated buffers. 2839 2840 2841---------------------------------------- 284214 February 2014. Summary of changes for version 20140214: 2843 28441) ACPICA kernel-resident subsystem: 2845 2846Implemented a new mechanism to proactively prevent problems with ill- 2847behaved reentrant control methods that create named ACPI objects. This 2848behavior is illegal as per the ACPI specification, but is nonetheless 2849frequently seen in the field. Previously, this could lead to an 2850AE_ALREADY_EXISTS exception if the method was actually entered by more 2851than one thread. This new mechanism detects such methods at table load 2852time and marks them "serialized" to prevent reentrancy. A new global 2853option, AcpiGbl_AutoSerializeMethods, has been added to disable this 2854feature if desired. This mechanism and global option obsoletes and 2855supersedes the previous AcpiGbl_SerializeAllMethods option. 2856 2857Added the "Windows 2013" string to the _OSI support. ACPICA will now 2858respond TRUE to _OSI queries with this string. It is the stated policy of 2859ACPICA to add new strings to the _OSI support as soon as possible after 2860they are defined. See the full ACPICA _OSI policy which has been added to 2861the utilities/utosi.c file. 2862 2863Hardened/updated the _PRT return value auto-repair code: 28641) Do not abort the repair on a single subpackage failure, continue to 2865check all subpackages. 28662) Add check for the minimum subpackage length (4). 28673) Properly handle extraneous NULL package elements. 2868 2869Added support to avoid the possibility of infinite loops when traversing 2870object linked lists. Never allow an infinite loop, even in the face of 2871corrupted object lists. 2872 2873ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 2874pack(pop) directives to ensure that the ACPICA headers are independent of 2875compiler settings or other host headers. 2876 2877Example Code and Data Size: These are the sizes for the OS-independent 2878acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2879debug version of the code includes the debug output trace mechanism and 2880has a much larger code and data size. 2881 2882 Current Release: 2883 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2884 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2885 Previous Release: 2886 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2887 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2888 2889 28902) iASL Compiler/Disassembler and Tools: 2891 2892iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 2893first reserved field was incorrectly forced to have a value of zero. This 2894change correctly forces the field to have a value of one. ACPICA BZ 1081. 2895 2896Debugger: Added missing support for the "Extra" and "Data" subobjects 2897when displaying object data. 2898 2899Debugger: Added support to display entire object linked lists when 2900displaying object data. 2901 2902iASL: Removed the obsolete -g option to obtain ACPI tables from the 2903Windows registry. This feature has been superseded by the acpidump 2904utility. 2905 2906 2907---------------------------------------- 290814 January 2014. Summary of changes for version 20140114: 2909 29101) ACPICA kernel-resident subsystem: 2911 2912Updated all ACPICA copyrights and signons to 2014. Added the 2014 2913copyright to all module headers and signons, including the standard Linux 2914header. This affects virtually every file in the ACPICA core subsystem, 2915iASL compiler, all ACPICA utilities, and the test suites. 2916 2917Improved parameter validation for AcpiInstallGpeBlock. Added the 2918following checks: 29191) The incoming device handle refers to type ACPI_TYPE_DEVICE. 29202) There is not already a GPE block attached to the device. 2921Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 2922device. 2923 2924Correctly support "references" in the ACPI_OBJECT. This change fixes the 2925support to allow references (namespace nodes) to be passed as arguments 2926to control methods via the evaluate object interface. This is probably 2927most useful for testing purposes, however. 2928 2929Improved support for 32/64 bit physical addresses in printf()-like 2930output. This change improves the support for physical addresses in printf 2931debug statements and other output on both 32-bit and 64-bit hosts. It 2932consistently outputs the appropriate number of bytes for each host. The 2933%p specifier is unsatisfactory since it does not emit uniform output on 2934all hosts/clib implementations (on some, leading zeros are not supported, 2935leading to difficult-to-read output). 2936 2937Example Code and Data Size: These are the sizes for the OS-independent 2938acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2939debug version of the code includes the debug output trace mechanism and 2940has a much larger code and data size. 2941 2942 Current Release: 2943 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2944 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2945 Previous Release: 2946 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2947 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2948 2949 29502) iASL Compiler/Disassembler and Tools: 2951 2952iASL: Fix a possible fault when using the Connection() operator. Fixes a 2953problem if the parent Field definition for the Connection operator refers 2954to an operation region that does not exist. ACPICA BZ 1064. 2955 2956AcpiExec: Load of local test tables is now optional. The utility has the 2957capability to load some various tables to test features of ACPICA. 2958However, there are enough of them that the output of the utility became 2959confusing. With this change, only the required local tables are displayed 2960(RSDP, XSDT, etc.) along with the actual tables loaded via the command 2961line specification. This makes the default output simler and easier to 2962understand. The -el command line option restores the original behavior 2963for testing purposes. 2964 2965AcpiExec: Added support for overlapping operation regions. This change 2966expands the simulation of operation regions by supporting regions that 2967overlap within the given address space. Supports SystemMemory and 2968SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 2969 2970AcpiExec: Added region handler support for PCI_Config and EC spaces. This 2971allows AcpiExec to simulate these address spaces, similar to the current 2972support for SystemMemory and SystemIO. 2973 2974Debugger: Added new command to read/write/compare all namespace objects. 2975The command "test objects" will exercise the entire namespace by writing 2976new values to each data object, and ensuring that the write was 2977successful. The original value is then restored and verified. 2978 2979Debugger: Added the "test predefined" command. This change makes this 2980test public and puts it under the new "test" command. The test executes 2981each and every predefined name within the current namespace. 2982 2983 2984---------------------------------------- 298518 December 2013. Summary of changes for version 20131218: 2986 2987Global note: The ACPI 5.0A specification was released this month. There 2988are no changes needed for ACPICA since this release of ACPI is an 2989errata/clarification release. The specification is available at 2990acpi.info. 2991 2992 29931) ACPICA kernel-resident subsystem: 2994 2995Added validation of the XSDT root table if it is present. Some older 2996platforms contain an XSDT that is ill-formed or otherwise invalid (such 2997as containing some or all entries that are NULL pointers). This change 2998adds a new function to validate the XSDT before actually using it. If the 2999XSDT is found to be invalid, ACPICA will now automatically fall back to 3000using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3001ACPICA and enhanced by Lv Zheng and Bob Moore. 3002 3003Added a runtime option to ignore the XSDT and force the use of the RSDT. 3004This change adds a runtime option that will force ACPICA to use the RSDT 3005instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3006requires that an XSDT be used instead of the RSDT, the XSDT has been 3007found to be corrupt or ill-formed on some machines. Lv Zheng. 3008 3009Added a runtime option to favor 32-bit FADT register addresses over the 301064-bit addresses. This change adds an option to favor 32-bit FADT 3011addresses when there is a conflict between the 32-bit and 64-bit versions 3012of the same register. The default behavior is to use the 64-bit version 3013in accordance with the ACPI specification. This can now be overridden via 3014the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3015 3016During the change above, the internal "Convert FADT" and "Verify FADT" 3017functions have been merged to simplify the code, making it easier to 3018understand and maintain. ACPICA BZ 933. 3019 3020Improve exception reporting and handling for GPE block installation. 3021Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3022status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3023 3024Added helper macros to extract bus/segment numbers from the HEST table. 3025This change adds two macros to extract the encoded bus and segment 3026numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3027Betty Dall <betty.dall@hp.com> 3028 3029Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3030by ACPICA. It is not a public macro, so it should have no effect on 3031existing OSV code. Lv Zheng. 3032 3033Example Code and Data Size: These are the sizes for the OS-independent 3034acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3035debug version of the code includes the debug output trace mechanism and 3036has a much larger code and data size. 3037 3038 Current Release: 3039 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3040 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3041 Previous Release: 3042 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3043 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3044 3045 30462) iASL Compiler/Disassembler and Tools: 3047 3048Disassembler: Improved pathname support for emitted External() 3049statements. This change adds full pathname support for external names 3050that have been resolved internally by the inclusion of additional ACPI 3051tables (via the iASL -e option). Without this change, the disassembler 3052can emit multiple externals for the same object, or it become confused 3053when the Scope() operator is used on an external object. Overall, greatly 3054improves the ability to actually recompile the emitted ASL code when 3055objects a referenced across multiple ACPI tables. Reported by Michael 3056Tsirkin (mst@redhat.com). 3057 3058Tests/ASLTS: Updated functional control suite to execute with no errors. 3059David Box. Fixed several errors related to the testing of the interpreter 3060slack mode. Lv Zheng. 3061 3062iASL: Added support to detect names that are declared within a control 3063method, but are unused (these are temporary names that are only valid 3064during the time the method is executing). A remark is issued for these 3065cases. ACPICA BZ 1022. 3066 3067iASL: Added full support for the DBG2 table. Adds full disassembler, 3068table compiler, and template generator support for the DBG2 table (Debug 3069Port 2 table). 3070 3071iASL: Added full support for the PCCT table, update the table definition. 3072Updates the PCCT table definition in the actbl3.h header and adds table 3073compiler and template generator support. 3074 3075iASL: Added an option to emit only error messages (no warnings/remarks). 3076The -ve option will enable only error messages, warnings and remarks are 3077suppressed. This can simplify debugging when only the errors are 3078important, such as when an ACPI table is disassembled and there are many 3079warnings and remarks -- but only the actual errors are of real interest. 3080 3081Example ACPICA code (source/tools/examples): Updated the example code so 3082that it builds to an actual working program, not just example code. Added 3083ACPI tables and execution of an example control method in the DSDT. Added 3084makefile support for Unix generation. 3085 3086 3087---------------------------------------- 308815 November 2013. Summary of changes for version 20131115: 3089 3090This release is available at https://acpica.org/downloads 3091 3092 30931) ACPICA kernel-resident subsystem: 3094 3095Resource Manager: Fixed loop termination for the "get AML length" 3096function. The loop previously had an error termination on a NULL resource 3097pointer, which can never happen since the loop simply increments a valid 3098resource pointer. This fix changes the loop to terminate with an error on 3099an invalid end-of-buffer condition. The problem can be seen as an 3100infinite loop by callers to AcpiSetCurrentResources with an invalid or 3101corrupted resource descriptor, or a resource descriptor that is missing 3102an END_TAG descriptor. Reported by Dan Carpenter 3103<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3104 3105Table unload and ACPICA termination: Delete all attached data objects 3106during namespace node deletion. This fix updates namespace node deletion 3107to delete the entire list of attached objects (attached via 3108AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 31091024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3110 3111ACPICA termination: Added support to delete all objects attached to the 3112root namespace node. This fix deletes any and all objects that have been 3113attached to the root node via AcpiAttachData. Previously, none of these 3114objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3115 3116Debug output: Do not emit the function nesting level for the in-kernel 3117build. The nesting level is really only useful during a single-thread 3118execution. Therefore, only enable this output for the AcpiExec utility. 3119Also, only emit the thread ID when executing under AcpiExec (Context 3120switches are still always detected and a message is emitted). ACPICA BZ 3121972. 3122 3123Example Code and Data Size: These are the sizes for the OS-independent 3124acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3125debug version of the code includes the debug output trace mechanism and 3126has a much larger code and data size. 3127 3128 Current Release: 3129 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3130 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3131 Previous Release: 3132 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3133 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3134 3135 31362) iASL Compiler/Disassembler and Tools: 3137 3138AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3139correct portable POSIX header for terminal control functions. 3140 3141Disassembler: Fixed control method invocation issues related to the use 3142of the CondRefOf() operator. The problem is seen in the disassembly where 3143control method invocations may not be disassembled properly if the 3144control method name has been used previously as an argument to CondRefOf. 3145The solution is to not attempt to emit an external declaration for the 3146CondRefOf target (it is not necessary in the first place). This prevents 3147disassembler object type confusion. ACPICA BZ 988. 3148 3149Unix Makefiles: Added an option to disable compiler optimizations and the 3150_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3151with optimizations (reportedly, gcc 4.4 for example). This change adds a 3152command line option for make (NOOPT) that disables all compiler 3153optimizations and the _FORTIFY_SOURCE compiler flag. The default 3154optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 31551034. Lv Zheng, Bob Moore. 3156 3157Tests/ASLTS: Added options to specify individual test cases and modes. 3158This allows testers running aslts.sh to optionally specify individual 3159test modes and test cases. Also added an option to disable the forced 3160generation of the ACPICA tools from source if desired. Lv Zheng. 3161 3162---------------------------------------- 316327 September 2013. Summary of changes for version 20130927: 3164 3165This release is available at https://acpica.org/downloads 3166 3167 31681) ACPICA kernel-resident subsystem: 3169 3170Fixed a problem with store operations to reference objects. This change 3171fixes a problem where a Store operation to an ArgX object that contained 3172a 3173reference to a field object did not complete the automatic dereference 3174and 3175then write to the actual field object. Instead, the object type of the 3176field object was inadvertently changed to match the type of the source 3177operand. The new behavior will actually write to the field object (buffer 3178field or field unit), thus matching the correct ACPI-defined behavior. 3179 3180Implemented support to allow the host to redefine individual OSL 3181prototypes. This change enables the host to redefine OSL prototypes found 3182in the acpiosxf.h file. This allows the host to implement OSL interfaces 3183with a macro or inlined function. Further, it allows the host to add any 3184additional required modifiers such as __iomem, __init, __exit, etc., as 3185necessary on a per-interface basis. Enables maximum flexibility for the 3186OSL interfaces. Lv Zheng. 3187 3188Hardcoded the access width for the FADT-defined reset register. The ACPI 3189specification requires the reset register width to be 8 bits. ACPICA now 3190hardcodes the width to 8 and ignores the FADT width value. This provides 3191compatibility with other ACPI implementations that have allowed BIOS code 3192with bad register width values to go unnoticed. Matthew Garett, Bob 3193Moore, 3194Lv Zheng. 3195 3196Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3197used 3198in the OSL header (acpiosxf). The change modifies the position of this 3199macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3200build issues if the OSL defines the implementation of the interface to be 3201an inline stub function. Lv Zheng. 3202 3203Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3204initialization interfaces. This change adds a new macro for the main init 3205and terminate external interfaces in order to support hosts that require 3206additional or different processing for these functions. Changed from 3207ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3208Zheng, Bob Moore. 3209 3210Cleaned up the memory allocation macros for configurability. In the 3211common 3212case, the ACPI_ALLOCATE and related macros now resolve directly to their 3213respective AcpiOs* OSL interfaces. Two options: 32141) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3215default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 32162) For AcpiExec (and for debugging), the macros can optionally be 3217resolved 3218to the local ACPICA interfaces that track each allocation (local tracking 3219is used to immediately detect memory leaks). 3220Lv Zheng. 3221 3222Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3223to predefine this macro to either TRUE or FALSE during the system build. 3224 3225Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3226 3227Example Code and Data Size: These are the sizes for the OS-independent 3228acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3229debug version of the code includes the debug output trace mechanism and 3230has a much larger code and data size. 3231 3232 Current Release: 3233 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3234 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3235 Previous Release: 3236 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3237 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3238 3239 32402) iASL Compiler/Disassembler and Tools: 3241 3242iASL: Implemented wildcard support for the -e option. This simplifies use 3243when there are many SSDTs that must be included to resolve external 3244method 3245declarations. ACPICA BZ 1041. Example: 3246 iasl -e ssdt*.dat -d dsdt.dat 3247 3248AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3249adds a portable module that implements full history and limited line 3250editing for Unix and Linux systems. It does not use readline() due to 3251portability issues. Instead it uses the POSIX termio interface to put the 3252terminal in raw input mode so that the various special keys can be 3253trapped 3254(such as up/down-arrow for history support and left/right-arrow for line 3255editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3256 3257AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3258one or more spaces. This provides compatible with early or different 3259versions of the AcpiDump utility. ACPICA BZ 1044. 3260 3261AcpiDump: Do not ignore tables that contain only an ACPI table header. 3262Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3263no other data. This change adds support to dump these tables. Any tables 3264shorter than the length of an ACPI table header remain in error (an error 3265message is emitted). Reported by Yi Li. 3266 3267Debugger: Echo actual command along with the "unknown command" message. 3268 3269---------------------------------------- 327023 August 2013. Summary of changes for version 20130823: 3271 32721) ACPICA kernel-resident subsystem: 3273 3274Implemented support for host-installed System Control Interrupt (SCI) 3275handlers. Certain ACPI functionality requires the host to handle raw 3276SCIs. For example, the "SCI Doorbell" that is defined for memory power 3277state support requires the host device driver to handle SCIs to examine 3278if the doorbell has been activated. Multiple SCI handlers can be 3279installed to allow for future expansion. New external interfaces are 3280AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 3281details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 3282 3283Operation region support: Never locally free the handler "context" 3284pointer. This change removes some dangerous code that attempts to free 3285the handler context pointer in some (rare) circumstances. The owner of 3286the handler owns this pointer and the ACPICA code should never touch it. 3287Although not seen to be an issue in any kernel, it did show up as a 3288problem (fault) under AcpiExec. Also, set the internal storage field for 3289the context pointer to zero when the region is deactivated, simply for 3290sanity. David Box. ACPICA BZ 1039. 3291 3292AcpiRead: On error, do not modify the return value target location. If an 3293error happens in the middle of a split 32/32 64-bit I/O operation, do not 3294modify the target of the return value pointer. Makes the code consistent 3295with the rest of ACPICA. Bjorn Helgaas. 3296 3297Example Code and Data Size: These are the sizes for the OS-independent 3298acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3299debug version of the code includes the debug output trace mechanism and 3300has a much larger code and data size. 3301 3302 Current Release: 3303 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3304 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3305 Previous Release: 3306 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3307 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 3308 3309 33102) iASL Compiler/Disassembler and Tools: 3311 3312AcpiDump: Implemented several new features and fixed some problems: 33131) Added support to dump the RSDP, RSDT, and XSDT tables. 33142) Added support for multiple table instances (SSDT, UEFI). 33153) Added option to dump "customized" (overridden) tables (-c). 33164) Fixed a problem where some table filenames were improperly 3317constructed. 33185) Improved some error messages, removed some unnecessary messages. 3319 3320iASL: Implemented additional support for disassembly of ACPI tables that 3321contain invocations of external control methods. The -fe<file> option 3322allows the import of a file that specifies the external methods along 3323with the required number of arguments for each -- allowing for the 3324correct disassembly of the table. This is a workaround for a limitation 3325of AML code where the disassembler often cannot determine the number of 3326arguments required for an external control method and generates incorrect 3327ASL code. See the iASL reference for details. ACPICA BZ 1030. 3328 3329Debugger: Implemented a new command (paths) that displays the full 3330pathnames (namepaths) and object types of all objects in the namespace. 3331This is an alternative to the namespace command. 3332 3333Debugger: Implemented a new command (sci) that invokes the SCI dispatch 3334mechanism and any installed handlers. 3335 3336iASL: Fixed a possible segfault for "too many parent prefixes" condition. 3337This can occur if there are too many parent prefixes in a namepath (for 3338example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 3339 3340Application OSLs: Set the return value for the PCI read functions. These 3341functions simply return AE_OK, but should set the return value to zero 3342also. This change implements this. ACPICA BZ 1038. 3343 3344Debugger: Prevent possible command line buffer overflow. Increase the 3345size of a couple of the debugger line buffers, and ensure that overflow 3346cannot happen. ACPICA BZ 1037. 3347 3348iASL: Changed to abort immediately on serious errors during the parsing 3349phase. Due to the nature of ASL, there is no point in attempting to 3350compile these types of errors, and they typically end up causing a 3351cascade of hundreds of errors which obscure the original problem. 3352 3353---------------------------------------- 335425 July 2013. Summary of changes for version 20130725: 3355 33561) ACPICA kernel-resident subsystem: 3357 3358Fixed a problem with the DerefOf operator where references to FieldUnits 3359and BufferFields incorrectly returned the parent object, not the actual 3360value of the object. After this change, a dereference of a FieldUnit 3361reference results in a read operation on the field to get the value, and 3362likewise, the appropriate BufferField value is extracted from the target 3363buffer. 3364 3365Fixed a problem where the _WAK method could cause a fault under these 3366circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 3367method returned no value. The problem is rarely seen because most kernels 3368run ACPICA in slack mode. 3369 3370For the DerefOf operator, a fatal error now results if an attempt is made 3371to dereference a reference (created by the Index operator) to a NULL 3372package element. Provides compatibility with other ACPI implementations, 3373and this behavior will be added to a future version of the ACPI 3374specification. 3375 3376The ACPI Power Management Timer (defined in the FADT) is now optional. 3377This provides compatibility with other ACPI implementations and will 3378appear in the next version of the ACPI specification. If there is no PM 3379Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 3380zero in the FADT indicates no PM timer. 3381 3382Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 3383allows the host to globally enable/disable all vendor strings, all 3384feature strings, or both. Intended to be primarily used for debugging 3385purposes only. Lv Zheng. 3386 3387Expose the collected _OSI data to the host via a global variable. This 3388data tracks the highest level vendor ID that has been invoked by the BIOS 3389so that the host (and potentially ACPICA itself) can change behaviors 3390based upon the age of the BIOS. 3391 3392Example Code and Data Size: These are the sizes for the OS-independent 3393acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3394debug version of the code includes the debug output trace mechanism and 3395has a much larger code and data size. 3396 3397 Current Release: 3398 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3399 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3400 Previous Release: 3401 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3402 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3403 3404 34052) iASL Compiler/Disassembler and Tools: 3406 3407iASL: Created the following enhancements for the -so option (create 3408offset table): 34091)Add offsets for the last nameseg in each namepath for every supported 3410object type 34112)Add support for Processor, Device, Thermal Zone, and Scope objects 34123)Add the actual AML opcode for the parent object of every supported 3413object type 34144)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3415 3416Disassembler: Emit all unresolved external symbols in a single block. 3417These are external references to control methods that could not be 3418resolved, and thus, the disassembler had to make a guess at the number of 3419arguments to parse. 3420 3421iASL: The argument to the -T option (create table template) is now 3422optional. If not specified, the default table is a DSDT, typically the 3423most common case. 3424 3425---------------------------------------- 342626 June 2013. Summary of changes for version 20130626: 3427 34281) ACPICA kernel-resident subsystem: 3429 3430Fixed an issue with runtime repair of the _CST object. Null or invalid 3431elements were not always removed properly. Lv Zheng. 3432 3433Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3434FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3435the maximum number of GPEs is 1016. Use of multiple GPE block devices 3436makes the system-wide number of GPEs essentially unlimited. 3437 3438Example Code and Data Size: These are the sizes for the OS-independent 3439acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3440debug version of the code includes the debug output trace mechanism and 3441has a much larger code and data size. 3442 3443 Current Release: 3444 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3445 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3446 Previous Release: 3447 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3448 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3449 3450 34512) iASL Compiler/Disassembler and Tools: 3452 3453Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3454hosts. Now supports Linux, FreeBSD, and Windows. 3455 3456Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3457Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3458 3459iASL/Preprocessor: Implemented full support for nested 3460#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3461 3462Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3463max. The original purpose of this constraint was to limit the amount of 3464debug output. However, the string function in question (UtPrintString) is 3465now used for the disassembler also, where 256 bytes is insufficient. 3466Reported by RehabMan@GitHub. 3467 3468iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3469tables. ACPICA BZ 999. Lv Zheng. 3470 3471iASL: Fixed a couple of error exit issues that could result in a "Could 3472not delete <file>" message during ASL compilation. 3473 3474AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3475the actual signatures for these tables are "FACP" and "APIC", 3476respectively. 3477 3478AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3479tables are allowed to have multiple instances. 3480 3481---------------------------------------- 348217 May 2013. Summary of changes for version 20130517: 3483 34841) ACPICA kernel-resident subsystem: 3485 3486Fixed a regression introduced in version 20130328 for _INI methods. This 3487change fixes a problem introduced in 20130328 where _INI methods are no 3488longer executed properly because of a memory block that was not 3489initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3490<tomasz.nowicki@linaro.org>. 3491 3492Fixed a possible problem with the new extended sleep registers in the 3493ACPI 34945.0 FADT. Do not use these registers (even if populated) unless the HW- 3495reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 34961020. Lv Zheng. 3497 3498Implemented return value repair code for _CST predefined objects: Sort 3499the 3500list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 3501 3502Implemented a debug-only option to disable loading of SSDTs from the 3503RSDT/XSDT during ACPICA initialization. This can be useful for debugging 3504ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 3505acglobal.h - ACPICA BZ 1005. Lv Zheng. 3506 3507Fixed some issues in the ACPICA initialization and termination code: 3508Tomasz Nowicki <tomasz.nowicki@linaro.org> 35091) Clear events initialized flag upon event component termination. ACPICA 3510BZ 1013. 35112) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 35123) Delete global lock pending lock during termination. ACPICA BZ 1012. 35134) Clear debug buffer global on termination to prevent possible multiple 3514delete. ACPICA BZ 1010. 3515 3516Standardized all switch() blocks across the entire source base. After 3517many 3518years, different formatting for switch() had crept in. This change makes 3519the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 3520 3521Split some files to enhance ACPICA modularity and configurability: 35221) Split buffer dump routines into utilities/utbuffer.c 35232) Split internal error message routines into utilities/uterror.c 35243) Split table print utilities into tables/tbprint.c 35254) Split iASL command-line option processing into asloptions.c 3526 3527Makefile enhancements: 35281) Support for all new files above. 35292) Abort make on errors from any subcomponent. Chao Guan. 35303) Add build support for Apple Mac OS X. Liang Qi. 3531 3532Example Code and Data Size: These are the sizes for the OS-independent 3533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3534debug version of the code includes the debug output trace mechanism and 3535has a much larger code and data size. 3536 3537 Current Release: 3538 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3539 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3540 Previous Release: 3541 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3542 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3543 3544 35452) iASL Compiler/Disassembler and Tools: 3546 3547New utility: Implemented an easily portable version of the acpidump 3548utility to extract ACPI tables from the system (or a file) in an ASCII 3549hex 3550dump format. The top-level code implements the various command line 3551options, file I/O, and table dump routines. To port to a new host, only 3552three functions need to be implemented to get tables -- since this 3553functionality is OS-dependent. See the tools/acpidump/apmain.c module and 3554the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 35551) The Windows version obtains the ACPI tables from the Registry. 35562) The Linux version is under development. 35573) Other hosts - If an OS-dependent module is submitted, it will be 3558distributed with ACPICA. 3559 3560iASL: Fixed a regression for -D preprocessor option (define symbol). A 3561restructuring/change to the initialization sequence caused this option to 3562no longer work properly. 3563 3564iASL: Implemented a mechanism to disable specific warnings and remarks. 3565Adds a new command line option, "-vw <messageid> as well as "#pragma 3566disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 3567 3568iASL: Fix for too-strict package object validation. The package object 3569validation for return values from the predefined names is a bit too 3570strict, it does not allow names references within the package (which will 3571be resolved at runtime.) These types of references cannot be validated at 3572compile time. This change ignores named references within package objects 3573for names that return or define static packages. 3574 3575Debugger: Fixed the 80-character command line limitation for the History 3576command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 3577 3578iASL: Added control method and package support for the -so option 3579(generates AML offset table for BIOS support.) 3580 3581iASL: issue a remark if a non-serialized method creates named objects. If 3582a thread blocks within the method for any reason, and another thread 3583enters the method, the method will fail because an attempt will be made 3584to 3585create the same (named) object twice. In this case, issue a remark that 3586the method should be marked serialized. NOTE: may become a warning later. 3587ACPICA BZ 909. 3588 3589---------------------------------------- 359018 April 2013. Summary of changes for version 20130418: 3591 35921) ACPICA kernel-resident subsystem: 3593 3594Fixed a possible buffer overrun during some rare but specific field unit 3595read operations. This overrun can only happen if the DSDT version is 1 -- 3596meaning that all AML integers are 32 bits -- and the field length is 3597between 33 and 55 bits long. During the read, an internal buffer object 3598is 3599created for the field unit because the field is larger than an integer 3600(32 3601bits). However, in this case, the buffer will be incorrectly written 3602beyond the end because the buffer length is less than the internal 3603minimum 3604of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 3605long, but a full 8 bytes will be written. 3606 3607Updated the Embedded Controller "orphan" _REG method support. This refers 3608to _REG methods under the EC device that have no corresponding operation 3609region. This is allowed by the ACPI specification. This update removes a 3610dependency on the existence an ECDT table. It will execute an orphan _REG 3611method as long as the operation region handler for the EC is installed at 3612the EC device node and not the namespace root. Rui Zhang (original 3613update), Bob Moore (update/integrate). 3614 3615Implemented run-time argument typechecking for all predefined ACPI names 3616(_STA, _BIF, etc.) This change performs object typechecking on all 3617incoming arguments for all predefined names executed via 3618AcpiEvaluateObject. This ensures that ACPI-related device drivers are 3619passing correct object types as well as the correct number of arguments 3620(therefore identifying any issues immediately). Also, the ASL/namespace 3621definition of the predefined name is checked against the ACPI 3622specification for the proper argument count. Adds one new file, 3623nsarguments.c 3624 3625Changed an exception code for the ASL UnLoad() operator. Changed the 3626exception code for the case where the input DdbHandle is invalid, from 3627AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 3628 3629Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 3630global makefile. The use of this flag causes compiler errors on earlier 3631versions of GCC, so it has been removed for compatibility. 3632 3633Miscellaneous cleanup: 36341) Removed some unused/obsolete macros 36352) Fixed a possible memory leak in the _OSI support 36363) Removed an unused variable in the predefined name support 36374) Windows OSL: remove obsolete reference to a memory list field 3638 3639Example Code and Data Size: These are the sizes for the OS-independent 3640acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3641debug version of the code includes the debug output trace mechanism and 3642has a much larger code and data size. 3643 3644 Current Release: 3645 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3646 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3647 Previous Release: 3648 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3649 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3650 3651 36522) iASL Compiler/Disassembler and Tools: 3653 3654AcpiExec: Added installation of a handler for the SystemCMOS address 3655space. This prevents control method abort if a method accesses this 3656space. 3657 3658AcpiExec: Added support for multiple EC devices, and now install EC 3659operation region handler(s) at the actual EC device instead of the 3660namespace root. This reflects the typical behavior of host operating 3661systems. 3662 3663AcpiExec: Updated to ensure that all operation region handlers are 3664installed before the _REG methods are executed. This prevents a _REG 3665method from aborting if it accesses an address space has no handler. 3666AcpiExec installs a handler for every possible address space. 3667 3668Debugger: Enhanced the "handlers" command to display non-root handlers. 3669This change enhances the handlers command to display handlers associated 3670with individual devices throughout the namespace, in addition to the 3671currently supported display of handlers associated with the root 3672namespace 3673node. 3674 3675ASL Test Suite: Several test suite errors have been identified and 3676resolved, reducing the total error count during execution. Chao Guan. 3677 3678---------------------------------------- 367928 March 2013. Summary of changes for version 20130328: 3680 36811) ACPICA kernel-resident subsystem: 3682 3683Fixed several possible race conditions with the internal object reference 3684counting mechanism. Some of the external ACPICA interfaces update object 3685reference counts without holding the interpreter or namespace lock. This 3686change adds a spinlock to protect reference count updates on the internal 3687ACPICA objects. Reported by and with assistance from Andriy Gapon 3688(avg@FreeBSD.org). 3689 3690FADT support: Removed an extraneous warning for very large GPE register 3691sets. This change removes a size mismatch warning if the legacy length 3692field for a GPE register set is larger than the 64-bit GAS structure can 3693accommodate. GPE register sets can be larger than the 255-bit width 3694limitation of the GAS structure. Linn Crosetto (linn@hp.com). 3695 3696_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 3697return from this interface. Handles a possible timeout case if 3698ACPI_WAIT_FOREVER is modified by the host to be a value less than 3699"forever". Jung-uk Kim. 3700 3701Predefined name support: Add allowed/required argument type information 3702to 3703the master predefined info table. This change adds the infrastructure to 3704enable typechecking on incoming arguments for all predefined 3705methods/objects. It does not actually contain the code that will fully 3706utilize this information, this is still under development. Also condenses 3707some duplicate code for the predefined names into a new module, 3708utilities/utpredef.c 3709 3710Example Code and Data Size: These are the sizes for the OS-independent 3711acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3712debug version of the code includes the debug output trace mechanism and 3713has a much larger code and data size. 3714 3715 Previous Release: 3716 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3717 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3718 Current Release: 3719 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3720 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3721 3722 37232) iASL Compiler/Disassembler and Tools: 3724 3725iASL: Implemented a new option to simplify the development of ACPI- 3726related 3727BIOS code. Adds support for a new "offset table" output file. The -so 3728option will create a C table containing the AML table offsets of various 3729named objects in the namespace so that BIOS code can modify them easily 3730at 3731boot time. This can simplify BIOS runtime code by eliminating expensive 3732searches for "magic values", enhancing boot times and adding greater 3733reliability. With assistance from Lee Hamel. 3734 3735iASL: Allow additional predefined names to return zero-length packages. 3736Now, all predefined names that are defined by the ACPI specification to 3737return a "variable-length package of packages" are allowed to return a 3738zero length top-level package. This allows the BIOS to tell the host that 3739the requested feature is not supported, and supports existing BIOS/ASL 3740code and practices. 3741 3742iASL: Changed the "result not used" warning to an error. This is the case 3743where an ASL operator is effectively a NOOP because the result of the 3744operation is not stored anywhere. For example: 3745 Add (4, Local0) 3746There is no target (missing 3rd argument), nor is the function return 3747value used. This is potentially a very serious problem -- since the code 3748was probably intended to do something, but for whatever reason, the value 3749was not stored. Therefore, this issue has been upgraded from a warning to 3750an error. 3751 3752AcpiHelp: Added allowable/required argument types to the predefined names 3753info display. This feature utilizes the recent update to the predefined 3754names table (above). 3755 3756---------------------------------------- 375714 February 2013. Summary of changes for version 20130214: 3758 37591) ACPICA Kernel-resident Subsystem: 3760 3761Fixed a possible regression on some hosts: Reinstated the safe return 3762macros (return_ACPI_STATUS, etc.) that ensure that the argument is 3763evaluated only once. Although these macros are not needed for the ACPICA 3764code itself, they are often used by ACPI-related host device drivers 3765where 3766the safe feature may be necessary. 3767 3768Fixed several issues related to the ACPI 5.0 reduced hardware support 3769(SOC): Now ensure that if the platform declares itself as hardware- 3770reduced 3771via the FADT, the following functions become NOOPs (and always return 3772AE_OK) because ACPI is always enabled by definition on these machines: 3773 AcpiEnable 3774 AcpiDisable 3775 AcpiHwGetMode 3776 AcpiHwSetMode 3777 3778Dynamic Object Repair: Implemented additional runtime repairs for 3779predefined name return values. Both of these repairs can simplify code in 3780the related device drivers that invoke these methods: 37811) For the _STR and _MLS names, automatically repair/convert an ASCII 3782string to a Unicode buffer. 37832) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 3784a 3785lone end tag descriptor in the following cases: A Return(0) was executed, 3786a null buffer was returned, or no object at all was returned (non-slack 3787mode only). Adds a new file, nsconvert.c 3788ACPICA BZ 998. Bob Moore, Lv Zheng. 3789 3790Resource Manager: Added additional code to prevent possible infinite 3791loops 3792while traversing corrupted or ill-formed resource template buffers. Check 3793for zero-length resource descriptors in all code that loops through 3794resource templates (the length field is used to index through the 3795template). This change also hardens the external AcpiWalkResources and 3796AcpiWalkResourceBuffer interfaces. 3797 3798Local Cache Manager: Enhanced the main data structure to eliminate an 3799unnecessary mechanism to access the next object in the list. Actually 3800provides a small performance enhancement for hosts that use the local 3801ACPICA cache manager. Jung-uk Kim. 3802 3803Example Code and Data Size: These are the sizes for the OS-independent 3804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3805debug version of the code includes the debug output trace mechanism and 3806has a much larger code and data size. 3807 3808 Previous Release: 3809 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3810 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3811 Current Release: 3812 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3813 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3814 3815 38162) iASL Compiler/Disassembler and Tools: 3817 3818iASL/Disassembler: Fixed several issues with the definition of the ACPI 38195.0 RASF table (RAS Feature Table). This change incorporates late changes 3820that were made to the ACPI 5.0 specification. 3821 3822iASL/Disassembler: Added full support for the following new ACPI tables: 3823 1) The MTMR table (MID Timer Table) 3824 2) The VRTC table (Virtual Real Time Clock Table). 3825Includes header file, disassembler, table compiler, and template support 3826for both tables. 3827 3828iASL: Implemented compile-time validation of package objects returned by 3829predefined names. This new feature validates static package objects 3830returned by the various predefined names defined to return packages. Both 3831object types and package lengths are validated, for both parent packages 3832and sub-packages, if any. The code is similar in structure and behavior 3833to 3834the runtime repair mechanism within the AML interpreter and uses the 3835existing predefined name information table. Adds a new file, aslprepkg.c. 3836ACPICA BZ 938. 3837 3838iASL: Implemented auto-detection of binary ACPI tables for disassembly. 3839This feature detects a binary file with a valid ACPI table header and 3840invokes the disassembler automatically. Eliminates the need to 3841specifically invoke the disassembler with the -d option. ACPICA BZ 862. 3842 3843iASL/Disassembler: Added several warnings for the case where there are 3844unresolved control methods during the disassembly. This can potentially 3845cause errors when the output file is compiled, because the disassembler 3846assumes zero method arguments in these cases (it cannot determine the 3847actual number of arguments without resolution/definition of the method). 3848 3849Debugger: Added support to display all resources with a single command. 3850Invocation of the resources command with no arguments will now display 3851all 3852resources within the current namespace. 3853 3854AcpiHelp: Added descriptive text for each ACPICA exception code displayed 3855via the -e option. 3856 3857---------------------------------------- 385817 January 2013. Summary of changes for version 20130117: 3859 38601) ACPICA Kernel-resident Subsystem: 3861 3862Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 3863return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 3864objects to return a package containing one integer, most BIOS code 3865returns 3866two integers and the previous code reflects that. However, we also need 3867to 3868support BIOS code that actually implements to the ACPI spec, and this 3869change reflects this. 3870 3871Fixed two issues with the ACPI_DEBUG_PRINT macros: 38721) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 3873C compilers that require this support. 38742) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 3875ACPI_DEBUG is already used by many of the various hosts. 3876 3877Updated all ACPICA copyrights and signons to 2013. Added the 2013 3878copyright to all module headers and signons, including the standard Linux 3879header. This affects virtually every file in the ACPICA core subsystem, 3880iASL compiler, all ACPICA utilities, and the test suites. 3881 3882Example Code and Data Size: These are the sizes for the OS-independent 3883acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3884debug version of the code includes the debug output trace mechanism and 3885has a much larger code and data size. 3886 3887 Previous Release: 3888 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3889 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3890 Current Release: 3891 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3892 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3893 3894 38952) iASL Compiler/Disassembler and Tools: 3896 3897Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 3898prevent a possible fault on some hosts. Some C libraries modify the arg 3899pointer parameter to vfprintf making it difficult to call it twice in the 3900AcpiOsVprintf function. Use a local buffer to workaround this issue. This 3901does not affect the Windows OSL since the Win C library does not modify 3902the arg pointer. Chao Guan, Bob Moore. 3903 3904iASL: Fixed a possible infinite loop when the maximum error count is 3905reached. If an output file other than the .AML file is specified (such as 3906a listing file), and the maximum number of errors is reached, do not 3907attempt to flush data to the output file(s) as the compiler is aborting. 3908This can cause an infinite loop as the max error count code essentially 3909keeps calling itself. 3910 3911iASL/Disassembler: Added an option (-in) to ignore NOOP 3912opcodes/operators. 3913Implemented for both the compiler and the disassembler. Often, the NOOP 3914opcode is used as padding for packages that are changed dynamically by 3915the 3916BIOS. When disassembled and recompiled, these NOOPs will cause syntax 3917errors. This option causes the disassembler to ignore all NOOP opcodes 3918(0xA3), and it also causes the compiler to ignore all ASL source code 3919NOOP 3920statements as well. 3921 3922Debugger: Enhanced the Sleep command to execute all sleep states. This 3923change allows Sleep to be invoked with no arguments and causes the 3924debugger to execute all of the sleep states, 0-5, automatically. 3925 3926---------------------------------------- 392720 December 2012. Summary of changes for version 20121220: 3928 39291) ACPICA Kernel-resident Subsystem: 3930 3931Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 3932alternate entry point for AcpiWalkResources and improves the usability of 3933the resource manager by accepting as input a buffer containing the output 3934of either a _CRS, _PRS, or _AEI method. The key functionality is that the 3935input buffer is not deleted by this interface so that it can be used by 3936the host later. See the ACPICA reference for details. 3937 3938Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 3939(DSDT version < 2). The constant will be truncated and this warning 3940reflects that behavior. 3941 3942Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 3943ExtendedInterrupt, and GpioInt descriptors. This change adds support to 3944both get and set the new wake bit in these descriptors, separately from 3945the existing share bit. Reported by Aaron Lu. 3946 3947Interpreter: Fix Store() when an implicit conversion is not possible. For 3948example, in the cases such as a store of a string to an existing package 3949object, implement the store as a CopyObject(). This is a small departure 3950from the ACPI specification which states that the control method should 3951be 3952aborted in this case. However, the ASLTS suite depends on this behavior. 3953 3954Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 3955macros: check if debug output is currently enabled as soon as possible to 3956minimize performance impact if debug is in fact not enabled. 3957 3958Source code restructuring: Cleanup to improve modularity. The following 3959new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 3960psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 3961Associated makefiles and project files have been updated. 3962 3963Changed an exception code for LoadTable operator. For the case where one 3964of the input strings is too long, change the returned exception code from 3965AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 3966 3967Fixed a possible memory leak in dispatcher error path. On error, delete 3968the mutex object created during method mutex creation. Reported by 3969tim.gardner@canonical.com. 3970 3971Example Code and Data Size: These are the sizes for the OS-independent 3972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3973debug version of the code includes the debug output trace mechanism and 3974has a much larger code and data size. 3975 3976 Previous Release: 3977 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3978 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3979 Current Release: 3980 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3981 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3982 3983 39842) iASL Compiler/Disassembler and Tools: 3985 3986iASL: Disallow a method call as argument to the ObjectType ASL operator. 3987This change tracks an errata to the ACPI 5.0 document. The AML grammar 3988will not allow the interpreter to differentiate between a method and a 3989method invocation when these are used as an argument to the ObjectType 3990operator. The ACPI specification change is to disallow a method 3991invocation 3992(UserTerm) for the ObjectType operator. 3993 3994Finish support for the TPM2 and CSRT tables in the headers, table 3995compiler, and disassembler. 3996 3997Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 3998always expires immediately if the semaphore is not available. The 3999original 4000code was using a relative-time timeout, but sem_timedwait requires the 4001use 4002of an absolute time. 4003 4004iASL: Added a remark if the Timer() operator is used within a 32-bit 4005table. This operator returns a 64-bit time value that will be truncated 4006within a 32-bit table. 4007 4008iASL Source code restructuring: Cleanup to improve modularity. The 4009following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4010aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4011been updated. 4012 4013 4014---------------------------------------- 401514 November 2012. Summary of changes for version 20121114: 4016 40171) ACPICA Kernel-resident Subsystem: 4018 4019Implemented a performance enhancement for ACPI/AML Package objects. This 4020change greatly increases the performance of Package objects within the 4021interpreter. It changes the processing of reference counts for packages 4022by 4023optimizing for the most common case where the package sub-objects are 4024either Integers, Strings, or Buffers. Increases the overall performance 4025of 4026the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 40272X.) 4028Chao Guan. ACPICA BZ 943. 4029 4030Implemented and deployed common macros to extract flag bits from resource 4031descriptors. Improves readability and maintainability of the code. Fixes 4032a 4033problem with the UART serial bus descriptor for the number of data bits 4034flags (was incorrectly 2 bits, should be 3). 4035 4036Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4037of the macros and changed the SETx macros to the style of (destination, 4038source). Also added ACPI_CASTx companion macros. Lv Zheng. 4039 4040Example Code and Data Size: These are the sizes for the OS-independent 4041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4042debug version of the code includes the debug output trace mechanism and 4043has a much larger code and data size. 4044 4045 Previous Release: 4046 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4047 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4048 Current Release: 4049 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4050 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4051 4052 40532) iASL Compiler/Disassembler and Tools: 4054 4055Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4056adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4057Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4058 4059Disassembler: Fixed a problem with external declaration generation. Fixes 4060a problem where an incorrect pathname could be generated for an external 4061declaration if the original reference to the object includes leading 4062carats (^). ACPICA BZ 984. 4063 4064Debugger: Completed a major update for the Disassemble<method> command. 4065This command was out-of-date and did not properly disassemble control 4066methods that had any reasonable complexity. This fix brings the command 4067up 4068to the same level as the rest of the disassembler. Adds one new file, 4069dmdeferred.c, which is existing code that is now common with the main 4070disassembler and the debugger disassemble command. ACPICA MZ 978. 4071 4072iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4073Newer versions of Bison emit this prototype, so moved the prototype out 4074of 4075the iASL header to where it is actually used in order to avoid a 4076duplicate 4077declaration. 4078 4079iASL/Tools: Standardized use of the stream I/O functions: 4080 1) Ensure check for I/O error after every fopen/fread/fwrite 4081 2) Ensure proper order of size/count arguments for fread/fwrite 4082 3) Use test of (Actual != Requested) after all fwrite, and most fread 4083 4) Standardize I/O error messages 4084Improves reliability and maintainability of the code. Bob Moore, Lv 4085Zheng. 4086ACPICA BZ 981. 4087 4088Disassembler: Prevent duplicate External() statements. During generation 4089of external statements, detect similar pathnames that are actually 4090duplicates such as these: 4091 External (\ABCD) 4092 External (ABCD) 4093Remove all leading '\' characters from pathnames during the external 4094statement generation so that duplicates will be detected and tossed. 4095ACPICA BZ 985. 4096 4097Tools: Replace low-level I/O with stream I/O functions. Replace 4098open/read/write/close with the stream I/O equivalents 4099fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4100Moore. 4101 4102AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4103name header so that AcpiXtract recognizes the output file/table. 4104 4105iASL: Remove obsolete -2 option flag. Originally intended to force the 4106compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4107and the entire concept is now obsolete. 4108 4109---------------------------------------- 411018 October 2012. Summary of changes for version 20121018: 4111 4112 41131) ACPICA Kernel-resident Subsystem: 4114 4115Updated support for the ACPI 5.0 MPST table. Fixes some problems 4116introduced by late changes to the table as it was added to the ACPI 5.0 4117specification. Includes header, disassembler, and data table compiler 4118support as well as a new version of the MPST template. 4119 4120AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 41215.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4122methods: _HID, _CID, and _UID. 4123 4124Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4125ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4126name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4127names for their various drivers. Affects the AcpiGetObjectInfo external 4128interface, and other internal interfaces as well. 4129 4130Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4131This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4132on machines that support non-aligned transfers. Optimizes for this case 4133rather than using a strncpy. With assistance from Zheng Lv. 4134 4135Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4136error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4137 4138Added a new debug print message for AML mutex objects that are force- 4139released. At control method termination, any currently acquired mutex 4140objects are force-released. Adds a new debug-only message for each one 4141that is released. 4142 4143Audited/updated all ACPICA return macros and the function debug depth 4144counter: 1) Ensure that all functions that use the various TRACE macros 4145also use the appropriate ACPICA return macros. 2) Ensure that all normal 4146return statements surround the return expression (value) with parens to 4147ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4148Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4149 4150Global source code changes/maintenance: All extra lines at the start and 4151end of each source file have been removed for consistency. Also, within 4152comments, all new sentences start with a single space instead of a double 4153space, again for consistency across the code base. 4154 4155Example Code and Data Size: These are the sizes for the OS-independent 4156acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4157debug version of the code includes the debug output trace mechanism and 4158has a much larger code and data size. 4159 4160 Previous Release: 4161 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4162 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4163 Current Release: 4164 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4165 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4166 4167 41682) iASL Compiler/Disassembler and Tools: 4169 4170AcpiExec: Improved the algorithm used for memory leak/corruption 4171detection. Added some intelligence to the code that maintains the global 4172list of allocated memory. The list is now ordered by allocated memory 4173address, significantly improving performance. When running AcpiExec on 4174the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4175on the platform and/or the environment. Note, this performance 4176enhancement affects the AcpiExec utility only, not the kernel-resident 4177ACPICA code. 4178 4179Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4180the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4181incorrect table offset reported for invalid opcodes. Report the original 418232-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4183 4184Disassembler: Enhanced the -vt option to emit the binary table data in 4185hex format to assist with debugging. 4186 4187Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4188size of file structure. Colin Ian King. 4189 4190---------------------------------------- 419113 September 2012. Summary of changes for version 20120913: 4192 4193 41941) ACPICA Kernel-resident Subsystem: 4195 4196ACPI 5.0: Added two new notify types for the Hardware Error Notification 4197Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4198and 4199MCE(6). 4200 4201Table Manager: Merged/removed duplicate code in the root table resize 4202functions. One function is external, the other is internal. Lv Zheng, 4203ACPICA 4204BZ 846. 4205 4206Makefiles: Completely removed the obsolete "Linux" makefiles under 4207acpica/generate/linux. These makefiles are obsolete and have been 4208replaced 4209by 4210the generic unix makefiles under acpica/generate/unix. 4211 4212Makefiles: Ensure that binary files always copied properly. Minor rule 4213change 4214to ensure that the final binary output files are always copied up to the 4215appropriate binary directory (bin32 or bin64.) 4216 4217Example Code and Data Size: These are the sizes for the OS-independent 4218acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4219debug 4220version of the code includes the debug output trace mechanism and has a 4221much 4222larger code and data size. 4223 4224 Previous Release: 4225 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4226 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4227 Current Release: 4228 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4229 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4230 4231 42322) iASL Compiler/Disassembler and Tools: 4233 4234Disassembler: Fixed a possible fault during the disassembly of resource 4235descriptors when a second parse is required because of the invocation of 4236external control methods within the table. With assistance from 4237adq@lidskialf.net. ACPICA BZ 976. 4238 4239iASL: Fixed a namepath optimization problem. An error can occur if the 4240parse 4241node that contains the namepath to be optimized does not have a parent 4242node 4243that is a named object. This change fixes the problem. 4244 4245iASL: Fixed a regression where the AML file is not deleted on errors. The 4246AML 4247output file should be deleted if there are any errors during the 4248compiler. 4249The 4250only exception is if the -f (force output) option is used. ACPICA BZ 974. 4251 4252iASL: Added a feature to automatically increase internal line buffer 4253sizes. 4254Via realloc(), automatically increase the internal line buffer sizes as 4255necessary to support very long source code lines. The current version of 4256the 4257preprocessor requires a buffer long enough to contain full source code 4258lines. 4259This change increases the line buffer(s) if the input lines go beyond the 4260current buffer size. This eliminates errors that occurred when a source 4261code 4262line was longer than the buffer. 4263 4264iASL: Fixed a problem with constant folding in method declarations. The 4265SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4266if a 4267Type3 opcode was used. 4268 4269Debugger: Improved command help support. For incorrect argument count, 4270display 4271full help for the command. For help command itself, allow an argument to 4272specify a command. 4273 4274Test Suites: Several bug fixes for the ASLTS suite reduces the number of 4275errors during execution of the suite. Guan Chao. 4276 4277---------------------------------------- 427816 August 2012. Summary of changes for version 20120816: 4279 4280 42811) ACPICA Kernel-resident Subsystem: 4282 4283Removed all use of the deprecated _GTS and _BFS predefined methods. The 4284_GTS 4285(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 4286deprecated and will probably be removed from the ACPI specification. 4287Windows 4288does not invoke them, and reportedly never will. The final nail in the 4289coffin 4290is that the ACPI specification states that these methods must be run with 4291interrupts off, which is not going to happen in a kernel interpreter. 4292Note: 4293Linux has removed all use of the methods also. It was discovered that 4294invoking these functions caused failures on some machines, probably 4295because 4296they were never tested since Windows does not call them. Affects two 4297external 4298interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 4299ACPICA BZ 969. 4300 4301Implemented support for complex bit-packed buffers returned from the _PLD 4302(Physical Location of Device) predefined method. Adds a new external 4303interface, AcpiDecodePldBuffer that parses the buffer into a more usable 4304C 4305structure. Note: C Bitfields cannot be used for this type of predefined 4306structure since the memory layout of individual bitfields is not defined 4307by 4308the C language. In addition, there are endian concerns where a compiler 4309will 4310change the bitfield ordering based on the machine type. The new ACPICA 4311interface eliminates these issues, and should be called after _PLD is 4312executed. ACPICA BZ 954. 4313 4314Implemented a change to allow a scope change to root (via "Scope (\)") 4315during 4316execution of module-level ASL code (code that is executed at table load 4317time.) Lin Ming. 4318 4319Added the Windows8/Server2012 string for the _OSI method. This change 4320adds 4321a 4322new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 43232012. 4324 4325Added header support for the new ACPI tables DBG2 (Debug Port Table Type 43262) 4327and CSRT (Core System Resource Table). 4328 4329Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 4330names. This simplifies access to the buffers returned by these predefined 4331names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 4332 4333GPE support: Removed an extraneous parameter from the various low-level 4334internal GPE functions. Tang Feng. 4335 4336Removed the linux makefiles from the unix packages. The generate/linux 4337makefiles are obsolete and have been removed from the unix tarball 4338release 4339packages. The replacement makefiles are under generate/unix, and there is 4340a 4341top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 4342 4343Updates for Unix makefiles: 43441) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 43452) Update linker flags (move to end of command line) for AcpiExec 4346utility. 4347Guan Chao. 4348 4349Split ACPICA initialization functions to new file, utxfinit.c. Split from 4350utxface.c to improve modularity and reduce file size. 4351 4352Example Code and Data Size: These are the sizes for the OS-independent 4353acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4354debug version of the code includes the debug output trace mechanism and 4355has a 4356much larger code and data size. 4357 4358 Previous Release: 4359 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4360 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4361 Current Release: 4362 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4363 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4364 4365 43662) iASL Compiler/Disassembler and Tools: 4367 4368iASL: Fixed a problem with constant folding for fixed-length constant 4369expressions. The constant-folding code was not being invoked for constant 4370expressions that allow the use of type 3/4/5 opcodes to generate 4371constants 4372for expressions such as ByteConstExpr, WordConstExpr, etc. This could 4373result 4374in the generation of invalid AML bytecode. ACPICA BZ 970. 4375 4376iASL: Fixed a generation issue on newer versions of Bison. Newer versions 4377apparently automatically emit some of the necessary externals. This 4378change 4379handles these versions in order to eliminate generation warnings. 4380 4381Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 4382 4383Disassembler: Add support to decode _PLD buffers. The decoded buffer 4384appears 4385within comments in the output file. 4386 4387Debugger: Fixed a regression with the "Threads" command where 4388AE_BAD_PARAMETER was always returned. 4389 4390---------------------------------------- 439111 July 2012. Summary of changes for version 20120711: 4392 43931) ACPICA Kernel-resident Subsystem: 4394 4395Fixed a possible fault in the return package object repair code. Fixes a 4396problem that can occur when a lone package object is wrapped with an 4397outer 4398package object in order to force conformance to the ACPI specification. 4399Can 4400affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4401_DLM, 4402_CSD, _PSD, _TSD. 4403 4404Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4405PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4406ARB_DIS bit must be implemented in the host-dependent C3 processor power 4407state 4408support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4409both 4410Intel and other vendors. (for Intel: ICH4-M and earlier) 4411 4412This change removes the code to disable/enable bus master arbitration 4413during 4414suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4415causes 4416resume problems on some machines. The change has been in use for over 4417seven 4418years within Linux. 4419 4420Implemented two new external interfaces to support host-directed dynamic 4421ACPI 4422table load and unload. They are intended to simplify the host 4423implementation 4424of hot-plug support: 4425 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4426 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4427table. 4428See the ACPICA reference for additional details. Adds one new file, 4429components/tables/tbxfload.c 4430 4431Implemented and deployed two new interfaces for errors and warnings that 4432are 4433known to be caused by BIOS/firmware issues: 4434 AcpiBiosError: Prints "ACPI Firmware Error" message. 4435 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4436Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4437table 4438and FADT errors. Additional deployment to be completed as appropriate in 4439the 4440future. The associated conditional macros are ACPI_BIOS_ERROR and 4441ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4442ACPICA 4443BZ 4444843. 4445 4446Implicit notify support: ensure that no memory allocation occurs within a 4447critical region. This fix moves a memory allocation outside of the time 4448that a 4449spinlock is held. Fixes issues on systems that do not allow this 4450behavior. 4451Jung-uk Kim. 4452 4453Split exception code utilities and tables into a new file, 4454utilities/utexcep.c 4455 4456Example Code and Data Size: These are the sizes for the OS-independent 4457acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4458debug 4459version of the code includes the debug output trace mechanism and has a 4460much 4461larger code and data size. 4462 4463 Previous Release: 4464 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4465 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4466 Current Release: 4467 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4468 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4469 4470 44712) iASL Compiler/Disassembler and Tools: 4472 4473iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4474of 44750. Jung-uk Kim. 4476 4477Debugger: Enhanced the "tables" command to emit additional information 4478about 4479the current set of ACPI tables, including the owner ID and flags decode. 4480 4481Debugger: Reimplemented the "unload" command to use the new 4482AcpiUnloadParentTable external interface. This command was disable 4483previously 4484due to need for an unload interface. 4485 4486AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4487option 4488will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4489 4490---------------------------------------- 449120 June 2012. Summary of changes for version 20120620: 4492 4493 44941) ACPICA Kernel-resident Subsystem: 4495 4496Implemented support to expand the "implicit notify" feature to allow 4497multiple 4498devices to be notified by a single GPE. This feature automatically 4499generates a 4500runtime device notification in the absence of a BIOS-provided GPE control 4501method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 4502notify is 4503provided by ACPICA for Windows compatibility, and is a workaround for 4504BIOS 4505AML 4506code errors. See the description of the AcpiSetupGpeForWake interface in 4507the 4508APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 4509 4510Changed some comments and internal function names to simplify and ensure 4511correctness of the Linux code translation. No functional changes. 4512 4513Example Code and Data Size: These are the sizes for the OS-independent 4514acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4515debug 4516version of the code includes the debug output trace mechanism and has a 4517much 4518larger code and data size. 4519 4520 Previous Release: 4521 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4522 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4523 Current Release: 4524 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4525 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4526 4527 45282) iASL Compiler/Disassembler and Tools: 4529 4530Disassembler: Added support to emit short, commented descriptions for the 4531ACPI 4532predefined names in order to improve the readability of the disassembled 4533output. ACPICA BZ 959. Changes include: 4534 1) Emit descriptions for all standard predefined names (_INI, _STA, 4535_PRW, 4536etc.) 4537 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 4538 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 4539etc.) 4540 4541AcpiSrc: Fixed several long-standing Linux code translation issues. 4542Argument 4543descriptions in function headers are now translated properly to lower 4544case 4545and 4546underscores. ACPICA BZ 961. Also fixes translation problems such as 4547these: 4548(old -> new) 4549 i_aSL -> iASL 4550 00-7_f -> 00-7F 4551 16_k -> 16K 4552 local_fADT -> local_FADT 4553 execute_oSI -> execute_OSI 4554 4555iASL: Fixed a problem where null bytes were inadvertently emitted into 4556some 4557listing files. 4558 4559iASL: Added the existing debug options to the standard help screen. There 4560are 4561no longer two different help screens. ACPICA BZ 957. 4562 4563AcpiHelp: Fixed some typos in the various predefined name descriptions. 4564Also 4565expand some of the descriptions where appropriate. 4566 4567iASL: Fixed the -ot option (display compile times/statistics). Was not 4568working 4569properly for standard output; only worked for the debug file case. 4570 4571---------------------------------------- 457218 May 2012. Summary of changes for version 20120518: 4573 4574 45751) ACPICA Core Subsystem: 4576 4577Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 4578defined 4579to block until asynchronous events such as notifies and GPEs have 4580completed. 4581Within ACPICA, it is only called before a notify or GPE handler is 4582removed/uninstalled. It also may be useful for the host OS within related 4583drivers such as the Embedded Controller driver. See the ACPICA reference 4584for 4585additional information. ACPICA BZ 868. 4586 4587ACPI Tables: Added a new error message for a possible overflow failure 4588during 4589the conversion of FADT 32-bit legacy register addresses to internal 4590common 459164- 4592bit GAS structure representation. The GAS has a one-byte "bit length" 4593field, 4594thus limiting the register length to 255 bits. ACPICA BZ 953. 4595 4596Example Code and Data Size: These are the sizes for the OS-independent 4597acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4598debug 4599version of the code includes the debug output trace mechanism and has a 4600much 4601larger code and data size. 4602 4603 Previous Release: 4604 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4605 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4606 Current Release: 4607 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4608 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4609 4610 46112) iASL Compiler/Disassembler and Tools: 4612 4613iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 4614macro. 4615This keyword was added late in the ACPI 5.0 release cycle and was not 4616implemented until now. 4617 4618Disassembler: Added support for Operation Region externals. Adds missing 4619support for operation regions that are defined in another table, and 4620referenced locally via a Field or BankField ASL operator. Now generates 4621the 4622correct External statement. 4623 4624Disassembler: Several additional fixes for the External() statement 4625generation 4626related to some ASL operators. Also, order the External() statements 4627alphabetically in the disassembler output. Fixes the External() 4628generation 4629for 4630the Create* field, Alias, and Scope operators: 4631 1) Create* buffer field operators - fix type mismatch warning on 4632disassembly 4633 2) Alias - implement missing External support 4634 3) Scope - fix to make sure all necessary externals are emitted. 4635 4636iASL: Improved pathname support. For include files, merge the prefix 4637pathname 4638with the file pathname and eliminate unnecessary components. Convert 4639backslashes in all pathnames to forward slashes, for readability. Include 4640file 4641pathname changes affect both #include and Include() type operators. 4642 4643iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 4644end 4645of a valid line by inserting a newline and then returning the EOF during 4646the 4647next call to GetNextLine. Prevents the line from being ignored due to EOF 4648condition. 4649 4650iASL: Implemented some changes to enhance the IDE support (-vi option.) 4651Error 4652and Warning messages are now correctly recognized for both the source 4653code 4654browser and the global error and warning counts. 4655 4656---------------------------------------- 465720 April 2012. Summary of changes for version 20120420: 4658 4659 46601) ACPICA Core Subsystem: 4661 4662Implemented support for multiple notify handlers. This change adds 4663support 4664to 4665allow multiple system and device notify handlers on Device, Thermal Zone, 4666and 4667Processor objects. This can simplify the host OS notification 4668implementation. 4669Also re-worked and restructured the entire notify support code to 4670simplify 4671handler installation, handler removal, notify event queuing, and notify 4672dispatch to handler(s). Note: there can still only be two global notify 4673handlers - one for system notifies and one for device notifies. There are 4674no 4675changes to the existing handler install/remove interfaces. Lin Ming, Bob 4676Moore, Rafael Wysocki. 4677 4678Fixed a regression in the package repair code where the object reference 4679count was calculated incorrectly. Regression was introduced in the commit 4680"Support to add Package wrappers". 4681 4682Fixed a couple possible memory leaks in the AML parser, in the error 4683recovery 4684path. Jesper Juhl, Lin Ming. 4685 4686Example Code and Data Size: These are the sizes for the OS-independent 4687acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4688debug version of the code includes the debug output trace mechanism and 4689has a 4690much larger code and data size. 4691 4692 Previous Release: 4693 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4694 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4695 Current Release: 4696 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4697 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4698 4699 47002) iASL Compiler/Disassembler and Tools: 4701 4702iASL: Fixed a problem with the resource descriptor support where the 4703length 4704of the StartDependentFn and StartDependentFnNoPrio descriptors were not 4705included in cumulative descriptor offset, resulting in incorrect values 4706for 4707resource tags within resource descriptors appearing after a 4708StartDependent* 4709descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 4710 4711iASL and Preprocessor: Implemented full support for the #line directive 4712to 4713correctly track original source file line numbers through the .i 4714preprocessor 4715output file - for error and warning messages. 4716 4717iASL: Expand the allowable byte constants for address space IDs. 4718Previously, 4719the allowable range was 0x80-0xFF (user-defined spaces), now the range is 47200x0A-0xFF to allow for custom and new IDs without changing the compiler. 4721 4722iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 4723 4724iASL: Add option to completely disable the preprocessor (-Pn). 4725 4726iASL: Now emit all error/warning messages to standard error (stderr) by 4727default (instead of the previous stdout). 4728 4729ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 4730Update 4731for resource descriptor offset fix above. Update/cleanup error output 4732routines. Enable and send iASL errors/warnings to an error logfile 4733(error.txt). Send all other iASL output to a logfile (compiler.txt). 4734Fixed 4735several extraneous "unrecognized operator" messages. 4736 4737---------------------------------------- 473820 March 2012. Summary of changes for version 20120320: 4739 4740 47411) ACPICA Core Subsystem: 4742 4743Enhanced the sleep/wake interfaces to optionally execute the _GTS method 4744(Going To Sleep) and the _BFS method (Back From Sleep). Windows 4745apparently 4746does not execute these methods, and therefore these methods are often 4747untested. It has been seen on some systems where the execution of these 4748methods causes errors and also prevents the machine from entering S5. It 4749is 4750therefore suggested that host operating systems do not execute these 4751methods 4752by default. In the future, perhaps these methods can be optionally 4753executed 4754based on the age of the system and/or what is the newest version of 4755Windows 4756that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 4757and 4758AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 4759Ming. 4760 4761Fixed a problem where the length of the local/common FADT was set too 4762early. 4763The local FADT table length cannot be set to the common length until the 4764original length has been examined. There is code that checks the table 4765length 4766and sets various fields appropriately. This can affect older machines 4767with 4768early FADT versions. For example, this can cause inadvertent writes to 4769the 4770CST_CNT register. Julian Anastasov. 4771 4772Fixed a mapping issue related to a physical table override. Use the 4773deferred 4774mapping mechanism for tables loaded via the physical override OSL 4775interface. 4776This allows for early mapping before the virtual memory manager is 4777available. 4778Thomas Renninger, Bob Moore. 4779 4780Enhanced the automatic return-object repair code: Repair a common problem 4781with 4782predefined methods that are defined to return a variable-length Package 4783of 4784sub-objects. If there is only one sub-object, some BIOS ASL code 4785mistakenly 4786simply returns the single object instead of a Package with one sub- 4787object. 4788This new support will repair this error by wrapping a Package object 4789around 4790the original object, creating the correct and expected Package with one 4791sub- 4792object. Names that can be repaired in this manner include: _ALR, _CSD, 4793_HPX, 4794_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 4795939. 4796 4797Changed the exception code returned for invalid ACPI paths passed as 4798parameters to external interfaces such as AcpiEvaluateObject. Was 4799AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 4800 4801Example Code and Data Size: These are the sizes for the OS-independent 4802acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4803debug 4804version of the code includes the debug output trace mechanism and has a 4805much 4806larger code and data size. 4807 4808 Previous Release: 4809 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4810 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4811 Current Release: 4812 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4813 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4814 4815 48162) iASL Compiler/Disassembler and Tools: 4817 4818iASL: Added the infrastructure and initial implementation of a integrated 4819C- 4820like preprocessor. This will simplify BIOS development process by 4821eliminating 4822the need for a separate preprocessing step during builds. On Windows, it 4823also 4824eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 4825features including full #define() macro support are still under 4826development. 4827These preprocessor directives are supported: 4828 #define 4829 #elif 4830 #else 4831 #endif 4832 #error 4833 #if 4834 #ifdef 4835 #ifndef 4836 #include 4837 #pragma message 4838 #undef 4839 #warning 4840In addition, these new command line options are supported: 4841 -D <symbol> Define symbol for preprocessor use 4842 -li Create preprocessed output file (*.i) 4843 -P Preprocess only and create preprocessor output file (*.i) 4844 4845Table Compiler: Fixed a problem where the equals operator within an 4846expression 4847did not work properly. 4848 4849Updated iASL to use the current versions of Bison/Flex. Updated the 4850Windows 4851project file to invoke these tools from the standard location. ACPICA BZ 4852904. 4853Versions supported: 4854 Flex for Windows: V2.5.4 4855 Bison for Windows: V2.4.1 4856 4857---------------------------------------- 485815 February 2012. Summary of changes for version 20120215: 4859 4860 48611) ACPICA Core Subsystem: 4862 4863There have been some major changes to the sleep/wake support code, as 4864described below (a - e). 4865 4866a) The AcpiLeaveSleepState has been split into two interfaces, similar to 4867AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 4868AcpiLeaveSleepStatePrep. This allows the host to perform actions between 4869the 4870time the _BFS method is called and the _WAK method is called. NOTE: all 4871hosts 4872must update their wake/resume code or else sleep/wake will not work 4873properly. 4874Rafael Wysocki. 4875 4876b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 4877_WAK 4878method. Some machines require that the GPEs are enabled before the _WAK 4879method 4880is executed. Thomas Renninger. 4881 4882c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 4883bit. 4884Some BIOS code assumes that WAK_STS will be cleared on resume and use it 4885to 4886determine whether the system is rebooting or resuming. Matthew Garrett. 4887 4888d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 4889Sleep) to 4890match the ACPI specification requirement. Rafael Wysocki. 4891 4892e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 4893registers within the V5 FADT. This support adds two new files: 4894hardware/hwesleep.c implements the support for the new registers. Moved 4895all 4896sleep/wake external interfaces to hardware/hwxfsleep.c. 4897 4898 4899Added a new OSL interface for ACPI table overrides, 4900AcpiOsPhysicalTableOverride. This interface allows the host to override a 4901table via a physical address, instead of the logical address required by 4902AcpiOsTableOverride. This simplifies the host implementation. Initial 4903implementation by Thomas Renninger. The ACPICA implementation creates a 4904single 4905shared function for table overrides that attempts both a logical and a 4906physical override. 4907 4908Expanded the OSL memory read/write interfaces to 64-bit data 4909(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 4910transfer support for GAS register structures passed to AcpiRead and 4911AcpiWrite. 4912 4913Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 4914custom 4915build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 4916model. 4917See the ACPICA reference for details. ACPICA BZ 942. This option removes 4918about 491910% of the code and 5% of the static data, and the following hardware 4920ACPI 4921features become unavailable: 4922 PM Event and Control registers 4923 SCI interrupt (and handler) 4924 Fixed Events 4925 General Purpose Events (GPEs) 4926 Global Lock 4927 ACPI PM timer 4928 FACS table (Waking vectors and Global Lock) 4929 4930Updated the unix tarball directory structure to match the ACPICA git 4931source 4932tree. This ensures that the generic unix makefiles work properly (in 4933generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 4934867. 4935 4936Updated the return value of the _REV predefined method to integer value 5 4937to 4938reflect ACPI 5.0 support. 4939 4940Moved the external ACPI PM timer interface prototypes to the public 4941acpixf.h 4942file where they belong. 4943 4944Example Code and Data Size: These are the sizes for the OS-independent 4945acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4946debug 4947version of the code includes the debug output trace mechanism and has a 4948much 4949larger code and data size. 4950 4951 Previous Release: 4952 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4953 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4954 Current Release: 4955 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4956 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4957 4958 49592) iASL Compiler/Disassembler and Tools: 4960 4961Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 4962descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 4963incorrectly displayed. 4964 4965AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 4966specification. 4967 4968---------------------------------------- 496911 January 2012. Summary of changes for version 20120111: 4970 4971 49721) ACPICA Core Subsystem: 4973 4974Implemented a new mechanism to allow host device drivers to check for 4975address 4976range conflicts with ACPI Operation Regions. Both SystemMemory and 4977SystemIO 4978address spaces are supported. A new external interface, 4979AcpiCheckAddressRange, 4980allows drivers to check an address range against the ACPI namespace. See 4981the 4982ACPICA reference for additional details. Adds one new file, 4983utilities/utaddress.c. Lin Ming, Bob Moore. 4984 4985Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 4986Control 4987and 4988Status registers, update the ACPI 5.0 flags, and update internal data 4989structures to handle an FADT larger than 256 bytes. The size of the ACPI 49905.0 4991FADT is 268 bytes. 4992 4993Updated all ACPICA copyrights and signons to 2012. Added the 2012 4994copyright to 4995all module headers and signons, including the standard Linux header. This 4996affects virtually every file in the ACPICA core subsystem, iASL compiler, 4997and 4998all ACPICA utilities. 4999 5000Example Code and Data Size: These are the sizes for the OS-independent 5001acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5002debug 5003version of the code includes the debug output trace mechanism and has a 5004much 5005larger code and data size. 5006 5007 Previous Release: 5008 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5009 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5010 Current Release: 5011 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5012 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5013 5014 50152) iASL Compiler/Disassembler and Tools: 5016 5017Disassembler: fixed a problem with the automatic resource tag generation 5018support. Fixes a problem where the resource tags are inadvertently not 5019constructed if the table being disassembled contains external references 5020to 5021control methods. Moved the actual construction of the tags to after the 5022final 5023namespace is constructed (after 2nd parse is invoked due to external 5024control 5025method references.) ACPICA BZ 941. 5026 5027Table Compiler: Make all "generic" operators caseless. These are the 5028operators 5029like UINT8, String, etc. Making these caseless improves ease-of-use. 5030ACPICA BZ 5031934. 5032 5033---------------------------------------- 503423 November 2011. Summary of changes for version 20111123: 5035 50360) ACPI 5.0 Support: 5037 5038This release contains full support for the ACPI 5.0 specification, as 5039summarized below. 5040 5041Reduced Hardware Support: 5042------------------------- 5043 5044This support allows for ACPI systems without the usual ACPI hardware. 5045This 5046support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5047will 5048not attempt to initialize or use any of the usual ACPI hardware. Note, 5049when 5050this flag is set, all of the following ACPI hardware is assumed to be not 5051present and is not initialized or accessed: 5052 5053 General Purpose Events (GPEs) 5054 Fixed Events (PM1a/PM1b and PM Control) 5055 Power Management Timer and Console Buttons (power/sleep) 5056 Real-time Clock Alarm 5057 Global Lock 5058 System Control Interrupt (SCI) 5059 The FACS is assumed to be non-existent 5060 5061ACPI Tables: 5062------------ 5063 5064All new tables and updates to existing tables are fully supported in the 5065ACPICA headers (for use by device drivers), the disassembler, and the 5066iASL 5067Data Table Compiler. ACPI 5.0 defines these new tables: 5068 5069 BGRT /* Boot Graphics Resource Table */ 5070 DRTM /* Dynamic Root of Trust for Measurement table */ 5071 FPDT /* Firmware Performance Data Table */ 5072 GTDT /* Generic Timer Description Table */ 5073 MPST /* Memory Power State Table */ 5074 PCCT /* Platform Communications Channel Table */ 5075 PMTT /* Platform Memory Topology Table */ 5076 RASF /* RAS Feature table */ 5077 5078Operation Regions/SpaceIDs: 5079--------------------------- 5080 5081All new operation regions are fully supported by the iASL compiler, the 5082disassembler, and the ACPICA runtime code (for dispatch to region 5083handlers.) 5084The new operation region Space IDs are: 5085 5086 GeneralPurposeIo 5087 GenericSerialBus 5088 5089Resource Descriptors: 5090--------------------- 5091 5092All new ASL resource descriptors are fully supported by the iASL 5093compiler, 5094the 5095ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5096(including 5097all new predefined resource tags). New descriptors are: 5098 5099 FixedDma 5100 GpioIo 5101 GpioInt 5102 I2cSerialBus 5103 SpiSerialBus 5104 UartSerialBus 5105 5106ASL/AML Operators, New and Modified: 5107------------------------------------ 5108 5109One new operator is added, the Connection operator, which is used to 5110associate 5111a GeneralPurposeIo or GenericSerialBus resource descriptor with 5112individual 5113field objects within an operation region. Several new protocols are 5114associated 5115with the AccessAs operator. All are fully supported by the iASL compiler, 5116disassembler, and runtime ACPICA AML interpreter: 5117 5118 Connection // Declare Field Connection 5119attributes 5120 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5121 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5122Protocol 5123 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5124 RawDataBuffer // Data type for Vendor Data 5125fields 5126 5127Predefined ASL/AML Objects: 5128--------------------------- 5129 5130All new predefined objects/control-methods are supported by the iASL 5131compiler 5132and the ACPICA runtime validation/repair (arguments and return values.) 5133New 5134predefined names include the following: 5135 5136Standard Predefined Names (Objects or Control Methods): 5137 _AEI, _CLS, _CPC, _CWS, _DEP, 5138 _DLM, _EVT, _GCP, _CRT, _GWS, 5139 _HRV, _PRE, _PSE, _SRT, _SUB. 5140 5141Resource Tags (Names used to access individual fields within resource 5142descriptors): 5143 _DBT, _DPL, _DRS, _END, _FLC, 5144 _IOR, _LIN, _MOD, _PAR, _PHA, 5145 _PIN, _PPI, _POL, _RXL, _SLV, 5146 _SPE, _STB, _TXL, _VEN. 5147 5148ACPICA External Interfaces: 5149--------------------------- 5150 5151Several new interfaces have been defined for use by ACPI-related device 5152drivers and other host OS services: 5153 5154AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5155to 5156acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5157provided by the BIOS. They are intended to be used in conjunction with 5158the 5159ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5160mutual exclusion with the AML code/interpreter. 5161 5162AcpiGetEventResources: Returns the (formatted) resource descriptors as 5163defined 5164by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5165provides 5166resource descriptors associated with hardware-reduced platform events, 5167similar 5168to the AcpiGetCurrentResources interface. 5169 5170Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5171operation regions, information about the Connection() object and any 5172optional 5173length information is passed to the region handler within the Context 5174parameter. 5175 5176AcpiBufferToResource: This interface converts a raw AML buffer containing 5177a 5178resource template or resource descriptor to the ACPI_RESOURCE internal 5179format 5180suitable for use by device drivers. Can be used by an operation region 5181handler 5182to convert the Connection() buffer object into a ACPI_RESOURCE. 5183 5184Miscellaneous/Tools/TestSuites: 5185------------------------------- 5186 5187Support for extended _HID names (Four alpha characters instead of three). 5188Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5189Support for ACPI 5.0 features in the ASLTS test suite. 5190Fully updated documentation (ACPICA and iASL reference documents.) 5191 5192ACPI Table Definition Language: 5193------------------------------- 5194 5195Support for this language was implemented and released as a subsystem of 5196the 5197iASL compiler in 2010. (See the iASL compiler User Guide.) 5198 5199 5200Non-ACPI 5.0 changes for this release: 5201-------------------------------------- 5202 52031) ACPICA Core Subsystem: 5204 5205Fix a problem with operation region declarations where a failure can 5206occur 5207if 5208the region name and an argument that evaluates to an object (such as the 5209region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5210937. 5211 5212Do not abort an ACPI table load if an invalid space ID is found within. 5213This 5214will be caught later if the offending method is executed. ACPICA BZ 925. 5215 5216Fixed an issue with the FFixedHW space ID where the ID was not always 5217recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5218 5219Fixed a problem with the 32-bit generation of the unix-specific OSL 5220(osunixxf.c). Lin Ming, ACPICA BZ 936. 5221 5222Several changes made to enable generation with the GCC 4.6 compiler. 5223ACPICA BZ 5224935. 5225 5226New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5227Index/Bank 5228field registers out-of-range. 5229 52302) iASL Compiler/Disassembler and Tools: 5231 5232iASL: Implemented the __PATH__ operator, which returns the full pathname 5233of 5234the current source file. 5235 5236AcpiHelp: Automatically display expanded keyword information for all ASL 5237operators. 5238 5239Debugger: Add "Template" command to disassemble/dump resource template 5240buffers. 5241 5242Added a new master script to generate and execute the ASLTS test suite. 5243Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5244 5245iASL: Fix problem with listing generation during processing of the 5246Switch() 5247operator where AML listing was disabled until the entire Switch block was 5248completed. 5249 5250iASL: Improve support for semicolon statement terminators. Fix "invalid 5251character" message for some cases when the semicolon is used. Semicolons 5252are 5253now allowed after every <Term> grammar element. ACPICA BZ 927. 5254 5255iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5256923. 5257 5258Disassembler: Fix problem with disassembly of the DataTableRegion 5259operator 5260where an inadvertent "Unhandled deferred opcode" message could be 5261generated. 5262 52633) Example Code and Data Size 5264 5265These are the sizes for the OS-independent acpica.lib produced by the 5266Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5267includes the debug output trace mechanism and has a much larger code and 5268data 5269size. 5270 5271 Previous Release: 5272 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5273 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5274 Current Release: 5275 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5276 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5277 5278---------------------------------------- 527922 September 2011. Summary of changes for version 20110922: 5280 52810) ACPI 5.0 News: 5282 5283Support for ACPI 5.0 in ACPICA has been underway for several months and 5284will 5285be released at the same time that ACPI 5.0 is officially released. 5286 5287The ACPI 5.0 specification is on track for release in the next few 5288months. 5289 52901) ACPICA Core Subsystem: 5291 5292Fixed a problem where the maximum sleep time for the Sleep() operator was 5293intended to be limited to two seconds, but was inadvertently limited to 529420 5295seconds instead. 5296 5297Linux and Unix makefiles: Added header file dependencies to ensure 5298correct 5299generation of ACPICA core code and utilities. Also simplified the 5300makefiles 5301considerably through the use of the vpath variable to specify search 5302paths. 5303ACPICA BZ 924. 5304 53052) iASL Compiler/Disassembler and Tools: 5306 5307iASL: Implemented support to check the access length for all fields 5308created to 5309access named Resource Descriptor fields. For example, if a resource field 5310is 5311defined to be two bits, a warning is issued if a CreateXxxxField() is 5312used 5313with an incorrect bit length. This is implemented for all current 5314resource 5315descriptor names. ACPICA BZ 930. 5316 5317Disassembler: Fixed a byte ordering problem with the output of 24-bit and 531856- 5319bit integers. 5320 5321iASL: Fixed a couple of issues associated with variable-length package 5322objects. 1) properly handle constants like One, Ones, Zero -- do not make 5323a 5324VAR_PACKAGE when these are used as a package length. 2) Allow the 5325VAR_PACKAGE 5326opcode (in addition to PACKAGE) when validating object types for 5327predefined 5328names. 5329 5330iASL: Emit statistics for all output files (instead of just the ASL input 5331and 5332AML output). Includes listings, hex files, etc. 5333 5334iASL: Added -G option to the table compiler to allow the compilation of 5335custom 5336ACPI tables. The only part of a table that is required is the standard 533736- 5338byte 5339ACPI header. 5340 5341AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 5342headers), 5343which also adds correct 64-bit support. Also, now all output filenames 5344are 5345completely lower case. 5346 5347AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 5348loading table files. A warning is issued for any such tables. The only 5349exception is an FADT. This also fixes a possible fault when attempting to 5350load 5351non-AML tables. ACPICA BZ 932. 5352 5353AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 5354a 5355missing table terminator could cause a fault when using the -p option. 5356 5357AcpiSrc: Fixed a possible divide-by-zero fault when generating file 5358statistics. 5359 53603) Example Code and Data Size 5361 5362These are the sizes for the OS-independent acpica.lib produced by the 5363Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5364includes the debug output trace mechanism and has a much larger code and 5365data 5366size. 5367 5368 Previous Release (VC 9.0): 5369 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5370 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5371 Current Release (VC 9.0): 5372 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5373 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5374 5375 5376---------------------------------------- 537723 June 2011. Summary of changes for version 20110623: 5378 53791) ACPI CA Core Subsystem: 5380 5381Updated the predefined name repair mechanism to not attempt repair of a 5382_TSS 5383return object if a _PSS object is present. We can only sort the _TSS 5384return 5385package if there is no _PSS within the same scope. This is because if 5386_PSS 5387is 5388present, the ACPI specification dictates that the _TSS Power Dissipation 5389field 5390is to be ignored, and therefore some BIOSs leave garbage values in the 5391_TSS 5392Power field(s). In this case, it is best to just return the _TSS package 5393as- 5394is. Reported by, and fixed with assistance from Fenghua Yu. 5395 5396Added an option to globally disable the control method return value 5397validation 5398and repair. This runtime option can be used to disable return value 5399repair 5400if 5401this is causing a problem on a particular machine. Also added an option 5402to 5403AcpiExec (-dr) to set this disable flag. 5404 5405All makefiles and project files: Major changes to improve generation of 5406ACPICA 5407tools. ACPICA BZ 912: 5408 Reduce default optimization levels to improve compatibility 5409 For Linux, add strict-aliasing=0 for gcc 4 5410 Cleanup and simplify use of command line defines 5411 Cleanup multithread library support 5412 Improve usage messages 5413 5414Linux-specific header: update handling of THREAD_ID and pthread. For the 541532- 5416bit case, improve casting to eliminate possible warnings, especially with 5417the 5418acpica tools. 5419 5420Example Code and Data Size: These are the sizes for the OS-independent 5421acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5422debug 5423version of the code includes the debug output trace mechanism and has a 5424much 5425larger code and data size. 5426 5427 Previous Release (VC 9.0): 5428 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5429 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5430 Current Release (VC 9.0): 5431 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5432 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5433 54342) iASL Compiler/Disassembler and Tools: 5435 5436With this release, a new utility named "acpihelp" has been added to the 5437ACPICA 5438package. This utility summarizes the ACPI specification chapters for the 5439ASL 5440and AML languages. It generates under Linux/Unix as well as Windows, and 5441provides the following functionality: 5442 Find/display ASL operator(s) -- with description and syntax. 5443 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5444 Find/display ACPI predefined name(s) -- with description, number 5445 of arguments, and the return value data type. 5446 Find/display AML opcode name(s) -- with opcode, arguments, and 5447grammar. 5448 Decode/display AML opcode -- with opcode name, arguments, and 5449grammar. 5450 5451Service Layers: Make multi-thread support configurable. Conditionally 5452compile 5453the multi-thread support so that threading libraries will not be linked 5454if 5455not 5456necessary. The only tool that requires multi-thread support is AcpiExec. 5457 5458iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5459of 5460Bison appear to want the interface to yyerror to be a const char * (or at 5461least this is a problem when generating iASL on some systems.) ACPICA BZ 5462923 5463Pierre Lejeune. 5464 5465Tools: Fix for systems where O_BINARY is not defined. Only used for 5466Windows 5467versions of the tools. 5468 5469---------------------------------------- 547027 May 2011. Summary of changes for version 20110527: 5471 54721) ACPI CA Core Subsystem: 5473 5474ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5475table 5476signature. Now, only allow SSDT, OEMx, and a null signature. History: 5477 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5478 (PSDT is now obsolete.) 5479 2) We added support for OEMx tables, signature "OEM" plus a fourth 5480 "don't care" character. 5481 3) Valid tables were encountered with a null signature, so we just 5482 gave up on validating the signature, (05/2008). 5483 4) We encountered non-AML tables such as the MADT, which caused 5484 interpreter errors and kernel faults. So now, we once again allow 5485 only SSDT, OEMx, and now, also a null signature. (05/2011). 5486 5487Added the missing _TDL predefined name to the global name list in order 5488to 5489enable validation. Affects both the core ACPICA code and the iASL 5490compiler. 5491 5492Example Code and Data Size: These are the sizes for the OS-independent 5493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5494debug 5495version of the code includes the debug output trace mechanism and has a 5496much 5497larger code and data size. 5498 5499 Previous Release (VC 9.0): 5500 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5501 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5502 Current Release (VC 9.0): 5503 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5504 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5505 55062) iASL Compiler/Disassembler and Tools: 5507 5508Debugger/AcpiExec: Implemented support for "complex" method arguments on 5509the 5510debugger command line. This adds support beyond simple integers -- 5511including 5512Strings, Buffers, and Packages. Includes support for nested packages. 5513Increased the default command line buffer size to accommodate these 5514arguments. 5515See the ACPICA reference for details and syntax. ACPICA BZ 917. 5516 5517Debugger/AcpiExec: Implemented support for "default" method arguments for 5518the 5519Execute/Debug command. Now, the debugger will always invoke a control 5520method 5521with the required number of arguments -- even if the command line 5522specifies 5523none or insufficient arguments. It uses default integer values for any 5524missing 5525arguments. Also fixes a bug where only six method arguments maximum were 5526supported instead of the required seven. 5527 5528Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 5529and 5530also return status in order to prevent buffer overruns. See the ACPICA 5531reference for details and syntax. ACPICA BZ 921 5532 5533iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 5534makefiles to simplify support for the two different but similar parser 5535generators, bison and yacc. 5536 5537Updated the generic unix makefile for gcc 4. The default gcc version is 5538now 5539expected to be 4 or greater, since options specific to gcc 4 are used. 5540 5541---------------------------------------- 554213 April 2011. Summary of changes for version 20110413: 5543 55441) ACPI CA Core Subsystem: 5545 5546Implemented support to execute a so-called "orphan" _REG method under the 5547EC 5548device. This change will force the execution of a _REG method underneath 5549the 5550EC 5551device even if there is no corresponding operation region of type 5552EmbeddedControl. Fixes a problem seen on some machines and apparently is 5553compatible with Windows behavior. ACPICA BZ 875. 5554 5555Added more predefined methods that are eligible for automatic NULL 5556package 5557element removal. This change adds another group of predefined names to 5558the 5559list 5560of names that can be repaired by having NULL package elements dynamically 5561removed. This group are those methods that return a single variable- 5562length 5563package containing simple data types such as integers, buffers, strings. 5564This 5565includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 5566_PSL, 5567_Sx, 5568and _TZD. ACPICA BZ 914. 5569 5570Split and segregated all internal global lock functions to a new file, 5571evglock.c. 5572 5573Updated internal address SpaceID for DataTable regions. Moved this 5574internal 5575space 5576id in preparation for ACPI 5.0 changes that will include some new space 5577IDs. 5578This 5579change should not affect user/host code. 5580 5581Example Code and Data Size: These are the sizes for the OS-independent 5582acpica.lib 5583produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5584version of 5585the code includes the debug output trace mechanism and has a much larger 5586code 5587and 5588data size. 5589 5590 Previous Release (VC 9.0): 5591 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5592 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5593 Current Release (VC 9.0): 5594 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5595 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5596 55972) iASL Compiler/Disassembler and Tools: 5598 5599iASL/DTC: Major update for new grammar features. Allow generic data types 5600in 5601custom ACPI tables. Field names are now optional. Any line can be split 5602to 5603multiple lines using the continuation char (\). Large buffers now use 5604line- 5605continuation character(s) and no colon on the continuation lines. See the 5606grammar 5607update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 5608Moore. 5609 5610iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 5611statements. 5612Since the parser stuffs a "zero" as the return value for these statements 5613(due 5614to 5615the underlying AML grammar), they were seen as "return with value" by the 5616iASL 5617semantic checking. They are now seen correctly as "null" return 5618statements. 5619 5620iASL: Check if a_REG declaration has a corresponding Operation Region. 5621Adds a 5622check for each _REG to ensure that there is in fact a corresponding 5623operation 5624region declaration in the same scope. If not, the _REG method is not very 5625useful 5626since it probably won't be executed. ACPICA BZ 915. 5627 5628iASL/DTC: Finish support for expression evaluation. Added a new 5629expression 5630parser 5631that implements c-style operator precedence and parenthesization. ACPICA 5632bugzilla 5633908. 5634 5635Disassembler/DTC: Remove support for () and <> style comments in data 5636tables. 5637Now 5638that DTC has full expression support, we don't want to have comment 5639strings 5640that 5641start with a parentheses or a less-than symbol. Now, only the standard /* 5642and 5643// 5644comments are supported, as well as the bracket [] comments. 5645 5646AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 5647"unusual" 5648headers in the acpidump file. Update the header validation to support 5649these 5650tables. Problem introduced in previous AcpiXtract version in the change 5651to 5652support "wrong checksum" error messages emitted by acpidump utility. 5653 5654iASL: Add a * option to generate all template files (as a synonym for 5655ALL) 5656as 5657in 5658"iasl -T *" or "iasl -T ALL". 5659 5660iASL/DTC: Do not abort compiler on fatal errors. We do not want to 5661completely 5662abort the compiler on "fatal" errors, simply should abort the current 5663compile. 5664This allows multiple compiles with a single (possibly wildcard) compiler 5665invocation. 5666 5667---------------------------------------- 566816 March 2011. Summary of changes for version 20110316: 5669 56701) ACPI CA Core Subsystem: 5671 5672Fixed a problem caused by a _PRW method appearing at the namespace root 5673scope 5674during the setup of wake GPEs. A fault could occur if a _PRW directly 5675under 5676the 5677root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 5678 5679Implemented support for "spurious" Global Lock interrupts. On some 5680systems, a 5681global lock interrupt can occur without the pending flag being set. Upon 5682a 5683GL 5684interrupt, we now ensure that a thread is actually waiting for the lock 5685before 5686signaling GL availability. Rafael Wysocki, Bob Moore. 5687 5688Example Code and Data Size: These are the sizes for the OS-independent 5689acpica.lib 5690produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5691version of 5692the code includes the debug output trace mechanism and has a much larger 5693code 5694and 5695data size. 5696 5697 Previous Release (VC 9.0): 5698 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5699 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5700 Current Release (VC 9.0): 5701 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5702 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5703 57042) iASL Compiler/Disassembler and Tools: 5705 5706Implemented full support for the "SLIC" ACPI table. Includes support in 5707the 5708header files, disassembler, table compiler, and template generator. Bob 5709Moore, 5710Lin Ming. 5711 5712AcpiXtract: Correctly handle embedded comments and messages from 5713AcpiDump. 5714Apparently some or all versions of acpidump will occasionally emit a 5715comment 5716like 5717"Wrong checksum", etc., into the dump file. This was causing problems for 5718AcpiXtract. ACPICA BZ 905. 5719 5720iASL: Fix the Linux makefile by removing an inadvertent double file 5721inclusion. 5722ACPICA BZ 913. 5723 5724AcpiExec: Update installation of operation region handlers. Install one 5725handler 5726for a user-defined address space. This is used by the ASL test suite 5727(ASLTS). 5728 5729---------------------------------------- 573011 February 2011. Summary of changes for version 20110211: 5731 57321) ACPI CA Core Subsystem: 5733 5734Added a mechanism to defer _REG methods for some early-installed 5735handlers. 5736Most user handlers should be installed before call to 5737AcpiEnableSubsystem. 5738However, Event handlers and region handlers should be installed after 5739AcpiInitializeObjects. Override handlers for the "default" regions should 5740be 5741installed early, however. This change executes all _REG methods for the 5742default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 5743chicken/egg issues between them. ACPICA BZ 848. 5744 5745Implemented an optimization for GPE detection. This optimization will 5746simply 5747ignore GPE registers that contain no enabled GPEs -- there is no need to 5748read the register since this information is available internally. This 5749becomes more important on machines with a large GPE space. ACPICA 5750bugzilla 5751884. Lin Ming. Suggestion from Joe Liu. 5752 5753Removed all use of the highly unreliable FADT revision field. The 5754revision 5755number in the FADT has been found to be completely unreliable and cannot 5756be 5757trusted. Only the actual table length can be used to infer the version. 5758This 5759change updates the ACPICA core and the disassembler so that both no 5760longer 5761even look at the FADT version and instead depend solely upon the FADT 5762length. 5763 5764Fix an unresolved name issue for the no-debug and no-error-message source 5765generation cases. The _AcpiModuleName was left undefined in these cases, 5766but 5767it is actually needed as a parameter to some interfaces. Define 5768_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 5769 5770Split several large files (makefiles and project files updated) 5771 utglobal.c -> utdecode.c 5772 dbcomds.c -> dbmethod.c dbnames.c 5773 dsopcode.c -> dsargs.c dscontrol.c 5774 dsload.c -> dsload2.c 5775 aslanalyze.c -> aslbtypes.c aslwalks.c 5776 5777Example Code and Data Size: These are the sizes for the OS-independent 5778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5779debug version of the code includes the debug output trace mechanism and 5780has 5781a much larger code and data size. 5782 5783 Previous Release (VC 9.0): 5784 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5785 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5786 Current Release (VC 9.0): 5787 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5788 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5789 57902) iASL Compiler/Disassembler and Tools: 5791 5792iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 5793These are useful C-style macros with the standard definitions. ACPICA 5794bugzilla 898. 5795 5796iASL/DTC: Added support for integer expressions and labels. Support for 5797full 5798expressions for all integer fields in all ACPI tables. Support for labels 5799in 5800"generic" portions of tables such as UEFI. See the iASL reference manual. 5801 5802Debugger: Added a command to display the status of global handlers. The 5803"handlers" command will display op region, fixed event, and miscellaneous 5804global handlers. installation status -- and for op regions, whether 5805default 5806or user-installed handler will be used. 5807 5808iASL: Warn if reserved method incorrectly returns a value. Many 5809predefined 5810names are defined such that they do not return a value. If implemented as 5811a 5812method, issue a warning if such a name explicitly returns a value. ACPICA 5813Bugzilla 855. 5814 5815iASL: Added detection of GPE method name conflicts. Detects a conflict 5816where 5817there are two GPE methods of the form _Lxy and _Exy in the same scope. 5818(For 5819example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 5820 5821iASL/DTC: Fixed a couple input scanner issues with comments and line 5822numbers. Comment remover could get confused and miss a comment ending. 5823Fixed 5824a problem with line counter maintenance. 5825 5826iASL/DTC: Reduced the severity of some errors from fatal to error. There 5827is 5828no need to abort on simple errors within a field definition. 5829 5830Debugger: Simplified the output of the help command. All help output now 5831in 5832a single screen, instead of help subcommands. ACPICA Bugzilla 897. 5833 5834---------------------------------------- 583512 January 2011. Summary of changes for version 20110112: 5836 58371) ACPI CA Core Subsystem: 5838 5839Fixed a race condition between method execution and namespace walks that 5840can 5841possibly cause a fault. The problem was apparently introduced in version 584220100528 as a result of a performance optimization that reduces the 5843number 5844of 5845namespace walks upon method exit by using the delete_namespace_subtree 5846function instead of the delete_namespace_by_owner function used 5847previously. 5848Bug is a missing namespace lock in the delete_namespace_subtree function. 5849dana.myers@oracle.com 5850 5851Fixed several issues and a possible fault with the automatic "serialized" 5852method support. History: This support changes a method to "serialized" on 5853the 5854fly if the method generates an AE_ALREADY_EXISTS error, indicating the 5855possibility that it cannot handle reentrancy. This fix repairs a couple 5856of 5857issues seen in the field, especially on machines with many cores: 5858 5859 1) Delete method children only upon the exit of the last thread, 5860 so as to not delete objects out from under other running threads 5861 (and possibly causing a fault.) 5862 2) Set the "serialized" bit for the method only upon the exit of the 5863 Last thread, so as to not cause deadlock when running threads 5864 attempt to exit. 5865 3) Cleanup the use of the AML "MethodFlags" and internal method flags 5866 so that there is no longer any confusion between the two. 5867 5868 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 5869 5870Debugger: Now lock the namespace for duration of a namespace dump. 5871Prevents 5872issues if the namespace is changing dynamically underneath the debugger. 5873Especially affects temporary namespace nodes, since the debugger displays 5874these also. 5875 5876Updated the ordering of include files. The ACPICA headers should appear 5877before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 5878set 5879any necessary compiler-specific defines, etc. Affects the ACPI-related 5880tools 5881and utilities. 5882 5883Updated all ACPICA copyrights and signons to 2011. Added the 2011 5884copyright 5885to all module headers and signons, including the Linux header. This 5886affects 5887virtually every file in the ACPICA core subsystem, iASL compiler, and all 5888utilities. 5889 5890Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 5891project files for VC++ 6.0 are now obsolete. New project files can be 5892found 5893under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 5894details. 5895 5896Example Code and Data Size: These are the sizes for the OS-independent 5897acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5898debug version of the code includes the debug output trace mechanism and 5899has a 5900much larger code and data size. 5901 5902 Previous Release (VC 6.0): 5903 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5904 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5905 Current Release (VC 9.0): 5906 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5907 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5908 59092) iASL Compiler/Disassembler and Tools: 5910 5911iASL: Added generic data types to the Data Table compiler. Add "generic" 5912data 5913types such as UINT32, String, Unicode, etc., to simplify the generation 5914of 5915platform-defined tables such as UEFI. Lin Ming. 5916 5917iASL: Added listing support for the Data Table Compiler. Adds listing 5918support 5919(-l) to display actual binary output for each line of input code. 5920 5921---------------------------------------- 592209 December 2010. Summary of changes for version 20101209: 5923 59241) ACPI CA Core Subsystem: 5925 5926Completed the major overhaul of the GPE support code that was begun in 5927July 59282010. Major features include: removal of _PRW execution in ACPICA (host 5929executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 5930changes to existing interfaces, simplification of GPE handler operation, 5931and 5932a handful of new interfaces: 5933 5934 AcpiUpdateAllGpes 5935 AcpiFinishGpe 5936 AcpiSetupGpeForWake 5937 AcpiSetGpeWakeMask 5938 One new file, evxfgpe.c to consolidate all external GPE interfaces. 5939 5940See the ACPICA Programmer Reference for full details and programming 5941information. See the new section 4.4 "General Purpose Event (GPE) 5942Support" 5943for a full overview, and section 8.7 "ACPI General Purpose Event 5944Management" 5945for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 5946Ming, 5947Bob Moore, Rafael Wysocki. 5948 5949Implemented a new GPE feature for Windows compatibility, the "Implicit 5950Wake 5951GPE Notify". This feature will automatically issue a Notify(2) on a 5952device 5953when a Wake GPE is received if there is no corresponding GPE method or 5954handler. ACPICA BZ 870. 5955 5956Fixed a problem with the Scope() operator during table parse and load 5957phase. 5958During load phase (table load or method execution), the scope operator 5959should 5960not enter the target into the namespace. Instead, it should open a new 5961scope 5962at the target location. Linux BZ 19462, ACPICA BZ 882. 5963 5964Example Code and Data Size: These are the sizes for the OS-independent 5965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5966debug version of the code includes the debug output trace mechanism and 5967has a 5968much larger code and data size. 5969 5970 Previous Release: 5971 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5972 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5973 Current Release: 5974 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5975 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5976 59772) iASL Compiler/Disassembler and Tools: 5978 5979iASL: Relax the alphanumeric restriction on _CID strings. These strings 5980are 5981"bus-specific" per the ACPI specification, and therefore any characters 5982are 5983acceptable. The only checks that can be performed are for a null string 5984and 5985perhaps for a leading asterisk. ACPICA BZ 886. 5986 5987iASL: Fixed a problem where a syntax error that caused a premature EOF 5988condition on the source file emitted a very confusing error message. The 5989premature EOF is now detected correctly. ACPICA BZ 891. 5990 5991Disassembler: Decode the AccessSize within a Generic Address Structure 5992(byte 5993access, word access, etc.) Note, this field does not allow arbitrary bit 5994access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 5995 5996New: AcpiNames utility - Example namespace dump utility. Shows an example 5997of 5998ACPICA configuration for a minimal namespace dump utility. Uses table and 5999namespace managers, but no AML interpreter. Does not add any 6000functionality 6001over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6002partition and configure ACPICA. ACPICA BZ 883. 6003 6004AML Debugger: Increased the debugger buffer size for method return 6005objects. 6006Was 4K, increased to 16K. Also enhanced error messages for debugger 6007method 6008execution, including the buffer overflow case. 6009 6010---------------------------------------- 601113 October 2010. Summary of changes for version 20101013: 6012 60131) ACPI CA Core Subsystem: 6014 6015Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6016now 6017clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6018HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6019 6020Changed the type of the predefined namespace object _TZ from ThermalZone 6021to 6022Device. This was found to be confusing to the host software that 6023processes 6024the various thermal zones, since _TZ is not really a ThermalZone. 6025However, 6026a 6027Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6028Zhang. 6029 6030Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6031string is "Windows 2006 SP2". 6032 6033Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6034nsrepair 6035code automatically repairs _HID-related strings, this type of code is no 6036longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6037878. 6038 6039Example Code and Data Size: These are the sizes for the OS-independent 6040acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6041debug version of the code includes the debug output trace mechanism and 6042has a 6043much larger code and data size. 6044 6045 Previous Release: 6046 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6047 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6048 Current Release: 6049 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6050 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6051 60522) iASL Compiler/Disassembler and Tools: 6053 6054iASL: Implemented additional compile-time validation for _HID strings. 6055The 6056non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6057length 6058of 6059the string must be exactly seven or eight characters. For both _HID and 6060_CID 6061strings, all characters must be alphanumeric. ACPICA BZ 874. 6062 6063iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6064descriptors that are mostly or all zeros, with the expectation that they 6065will 6066be filled in at runtime. iASL now allows this as long as there is a 6067"resource 6068tag" (name) associated with the descriptor, which gives the ASL a handle 6069needed to modify the descriptor. ACPICA BZ 873. 6070 6071Added single-thread support to the generic Unix application OSL. 6072Primarily 6073for iASL support, this change removes the use of semaphores in the 6074single- 6075threaded ACPICA tools/applications - increasing performance. The 6076_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6077option. ACPICA BZ 879. 6078 6079AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6080support 6081for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6082 6083iASL: Moved all compiler messages to a new file, aslmessages.h. 6084 6085---------------------------------------- 608615 September 2010. Summary of changes for version 20100915: 6087 60881) ACPI CA Core Subsystem: 6089 6090Removed the AcpiOsDerivePciId OSL interface. The various host 6091implementations 6092of this function were not OS-dependent and are now obsolete and can be 6093removed from all host OSLs. This function has been replaced by 6094AcpiHwDerivePciId, which is now part of the ACPICA core code. 6095AcpiHwDerivePciId has been implemented without recursion. Adds one new 6096module, hwpci.c. ACPICA BZ 857. 6097 6098Implemented a dynamic repair for _HID and _CID strings. The following 6099problems are now repaired at runtime: 1) Remove a leading asterisk in the 6100string, and 2) the entire string is uppercased. Both repairs are in 6101accordance with the ACPI specification and will simplify host driver 6102code. 6103ACPICA BZ 871. 6104 6105The ACPI_THREAD_ID type is no longer configurable, internally it is now 6106always UINT64. This simplifies the ACPICA code, especially any printf 6107output. 6108UINT64 is the only common data type for all thread_id types across all 6109operating systems. It is now up to the host OSL to cast the native 6110thread_id 6111type to UINT64 before returning the value to ACPICA (via 6112AcpiOsGetThreadId). 6113Lin Ming, Bob Moore. 6114 6115Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6116"inline" 6117keyword is not standard across compilers, and this type allows inline to 6118be 6119configured on a per-compiler basis. Lin Ming. 6120 6121Made the system global AcpiGbl_SystemAwakeAndRunning publically 6122available. 6123Added an extern for this boolean in acpixf.h. Some hosts utilize this 6124value 6125during suspend/restore operations. ACPICA BZ 869. 6126 6127All code that implements error/warning messages with the "ACPI:" prefix 6128has 6129been moved to a new module, utxferror.c. 6130 6131The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6132it 6133is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6134 6135Example Code and Data Size: These are the sizes for the OS-independent 6136acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6137debug version of the code includes the debug output trace mechanism and 6138has a 6139much larger code and data size. 6140 6141 Previous Release: 6142 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6143 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6144 Current Release: 6145 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6146 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6147 61482) iASL Compiler/Disassembler and Tools: 6149 6150iASL/Disassembler: Write ACPI errors to stderr instead of the output 6151file. 6152This keeps the output files free of random error messages that may 6153originate 6154from within the namespace/interpreter code. Used this opportunity to 6155merge 6156all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6157866. Lin Ming, Bob Moore. 6158 6159Tools: update some printfs for ansi warnings on size_t. Handle width 6160change 6161of size_t on 32-bit versus 64-bit generations. Lin Ming. 6162 6163---------------------------------------- 616406 August 2010. Summary of changes for version 20100806: 6165 61661) ACPI CA Core Subsystem: 6167 6168Designed and implemented a new host interface to the _OSI support code. 6169This 6170will allow the host to dynamically add or remove multiple _OSI strings, 6171as 6172well as install an optional handler that is called for each _OSI 6173invocation. 6174Also added a new AML debugger command, 'osi' to display and modify the 6175global 6176_OSI string table, and test support in the AcpiExec utility. See the 6177ACPICA 6178reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6179New Functions: 6180 AcpiInstallInterface - Add an _OSI string. 6181 AcpiRemoveInterface - Delete an _OSI string. 6182 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6183Obsolete Functions: 6184 AcpiOsValidateInterface - no longer used. 6185New Files: 6186 source/components/utilities/utosi.c 6187 6188Re-introduced the support to enable multi-byte transfers for Embedded 6189Controller (EC) operation regions. A reported problem was found to be a 6190bug 6191in the host OS, not in the multi-byte support. Previously, the maximum 6192data 6193size passed to the EC operation region handler was a single byte. There 6194are 6195often EC Fields larger than one byte that need to be transferred, and it 6196is 6197useful for the EC driver to lock these as a single transaction. This 6198change 6199enables single transfers larger than 8 bits. This effectively changes the 6200access to the EC space from ByteAcc to AnyAcc, and will probably require 6201changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6202bit 6203transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6204 6205Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6206prototype in acpiosxf.h had the output value pointer as a (void *). 6207It should be a (UINT64 *). This may affect some host OSL code. 6208 6209Fixed a couple problems with the recently modified Linux makefiles for 6210iASL 6211and AcpiExec. These new makefiles place the generated object files in the 6212local directory so that there can be no collisions between the files that 6213are 6214shared between them that are compiled with different options. 6215 6216Example Code and Data Size: These are the sizes for the OS-independent 6217acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6218debug version of the code includes the debug output trace mechanism and 6219has a 6220much larger code and data size. 6221 6222 Previous Release: 6223 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6224 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6225 Current Release: 6226 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6227 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6228 62292) iASL Compiler/Disassembler and Tools: 6230 6231iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6232the 6233namespace from and disassemble an entire group of AML files. Useful for 6234loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6235and 6236disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6237 6238iASL: Allow multiple invocations of -e option. This change allows 6239multiple 6240uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6241834. 6242Lin Ming. 6243 6244---------------------------------------- 624502 July 2010. Summary of changes for version 20100702: 6246 62471) ACPI CA Core Subsystem: 6248 6249Implemented several updates to the recently added GPE reference count 6250support. The model for "wake" GPEs is changing to give the host OS 6251complete 6252control of these GPEs. Eventually, the ACPICA core will not execute any 6253_PRW 6254methods, since the host already must execute them. Also, additional 6255changes 6256were made to help ensure that the reference counts are kept in proper 6257synchronization with reality. Rafael J. Wysocki. 6258 62591) Ensure that GPEs are not enabled twice during initialization. 62602) Ensure that GPE enable masks stay in sync with the reference count. 62613) Do not inadvertently enable GPEs when writing GPE registers. 62624) Remove the internal wake reference counter and add new AcpiGpeWakeup 6263interface. This interface will set or clear individual GPEs for wakeup. 62645) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6265interfaces 6266are now used for "runtime" GPEs only. 6267 6268Changed the behavior of the GPE install/remove handler interfaces. The 6269GPE 6270is 6271no longer disabled during this process, as it was found to cause problems 6272on 6273some machines. Rafael J. Wysocki. 6274 6275Reverted a change introduced in version 20100528 to enable Embedded 6276Controller multi-byte transfers. This change was found to cause problems 6277with 6278Index Fields and possibly Bank Fields. It will be reintroduced when these 6279problems have been resolved. 6280 6281Fixed a problem with references to Alias objects within Package Objects. 6282A 6283reference to an Alias within the definition of a Package was not always 6284resolved properly. Aliases to objects like Processors, Thermal zones, 6285etc. 6286were resolved to the actual object instead of a reference to the object 6287as 6288it 6289should be. Package objects are only allowed to contain integer, string, 6290buffer, package, and reference objects. Redhat bugzilla 608648. 6291 6292Example Code and Data Size: These are the sizes for the OS-independent 6293acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6294debug version of the code includes the debug output trace mechanism and 6295has a 6296much larger code and data size. 6297 6298 Previous Release: 6299 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6300 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6301 Current Release: 6302 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6303 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6304 63052) iASL Compiler/Disassembler and Tools: 6306 6307iASL: Implemented a new compiler subsystem to allow definition and 6308compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 6309These 6310are called "ACPI Data Tables", and the new compiler is the "Data Table 6311Compiler". This compiler is intended to simplify the existing error-prone 6312process of creating these tables for the BIOS, as well as allowing the 6313disassembly, modification, recompilation, and override of existing ACPI 6314data 6315tables. See the iASL User Guide for detailed information. 6316 6317iASL: Implemented a new Template Generator option in support of the new 6318Data 6319Table Compiler. This option will create examples of all known ACPI tables 6320that can be used as the basis for table development. See the iASL 6321documentation and the -T option. 6322 6323Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 6324Descriptor Table). 6325 6326Updated the Linux makefiles for iASL and AcpiExec to place the generated 6327object files in the local directory so that there can be no collisions 6328between the shared files between them that are generated with different 6329options. 6330 6331Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 6332Use 6333the #define __APPLE__ to enable this support. 6334 6335---------------------------------------- 633628 May 2010. Summary of changes for version 20100528: 6337 6338Note: The ACPI 4.0a specification was released on April 5, 2010 and is 6339available at www.acpi.info. This is primarily an errata release. 6340 63411) ACPI CA Core Subsystem: 6342 6343Undefined ACPI tables: We are looking for the definitions for the 6344following 6345ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 6346 6347Implemented support to enable multi-byte transfers for Embedded 6348Controller 6349(EC) operation regions. Previously, the maximum data size passed to the 6350EC 6351operation region handler was a single byte. There are often EC Fields 6352larger 6353than one byte that need to be transferred, and it is useful for the EC 6354driver 6355to lock these as a single transaction. This change enables single 6356transfers 6357larger than 8 bits. This effectively changes the access to the EC space 6358from 6359ByteAcc to AnyAcc, and will probably require changes to the host OS 6360Embedded 6361Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 6362bit 6363transfers. Alexey Starikovskiy, Lin Ming 6364 6365Implemented a performance enhancement for namespace search and access. 6366This 6367change enhances the performance of namespace searches and walks by adding 6368a 6369backpointer to the parent in each namespace node. On large namespaces, 6370this 6371change can improve overall ACPI performance by up to 9X. Adding a pointer 6372to 6373each namespace node increases the overall size of the internal namespace 6374by 6375about 5%, since each namespace entry usually consists of both a namespace 6376node and an ACPI operand object. However, this is the first growth of the 6377namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 6378 6379Implemented a performance optimization that reduces the number of 6380namespace 6381walks. On control method exit, only walk the namespace if the method is 6382known 6383to have created namespace objects outside of its local scope. Previously, 6384the 6385entire namespace was traversed on each control method exit. This change 6386can 6387improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 6388Moore. 6389 6390Added support to truncate I/O addresses to 16 bits for Windows 6391compatibility. 6392Some ASL code has been seen in the field that inadvertently has bits set 6393above bit 15. This feature is optional and is enabled if the BIOS 6394requests 6395any Windows OSI strings. It can also be enabled by the host OS. Matthew 6396Garrett, Bob Moore. 6397 6398Added support to limit the maximum time for the ASL Sleep() operator. To 6399prevent accidental deep sleeps, limit the maximum time that Sleep() will 6400actually sleep. Configurable, the default maximum is two seconds. ACPICA 6401bugzilla 854. 6402 6403Added run-time validation support for the _WDG and_WED Microsoft 6404predefined 6405methods. These objects are defined by "Windows Instrumentation", and are 6406not 6407part of the ACPI spec. ACPICA BZ 860. 6408 6409Expanded all statistic counters used during namespace and device 6410initialization from 16 to 32 bits in order to support very large 6411namespaces. 6412 6413Replaced all instances of %d in printf format specifiers with %u since 6414nearly 6415all integers in ACPICA are unsigned. 6416 6417Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6418returned 6419as AE_NO_HANDLER. 6420 6421Example Code and Data Size: These are the sizes for the OS-independent 6422acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6423debug version of the code includes the debug output trace mechanism and 6424has a 6425much larger code and data size. 6426 6427 Previous Release: 6428 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6429 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6430 Current Release: 6431 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6432 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6433 64342) iASL Compiler/Disassembler and Tools: 6435 6436iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6437methods. These objects are defined by "Windows Instrumentation", and are 6438not 6439part of the ACPI spec. ACPICA BZ 860. 6440 6441AcpiExec: added option to disable the memory tracking mechanism. The -dt 6442option will disable the tracking mechanism, which improves performance 6443considerably. 6444 6445AcpiExec: Restructured the command line options into -d (disable) and -e 6446(enable) options. 6447 6448---------------------------------------- 644928 April 2010. Summary of changes for version 20100428: 6450 64511) ACPI CA Core Subsystem: 6452 6453Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6454including FADT-based and GPE Block Devices, execute any _PRW methods in 6455the 6456new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6457runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6458immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6459Devices. Provides compatibility with other ACPI implementations. Two new 6460files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6461Moore. 6462 6463Fixed a regression introduced in version 20100331 within the table 6464manager 6465where initial table loading could fail. This was introduced in the fix 6466for 6467AcpiReallocateRootTable. Also, renamed some of fields in the table 6468manager 6469data structures to clarify their meaning and use. 6470 6471Fixed a possible allocation overrun during internal object copy in 6472AcpiUtCopySimpleObject. The original code did not correctly handle the 6473case 6474where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6475847. 6476 6477Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6478possible access beyond end-of-allocation. Also, now fully validate 6479descriptor 6480(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6481 6482Example Code and Data Size: These are the sizes for the OS-independent 6483acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6484debug version of the code includes the debug output trace mechanism and 6485has a 6486much larger code and data size. 6487 6488 Previous Release: 6489 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6490 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6491 Current Release: 6492 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6493 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6494 64952) iASL Compiler/Disassembler and Tools: 6496 6497iASL: Implemented Min/Max/Len/Gran validation for address resource 6498descriptors. This change implements validation for the address fields 6499that 6500are common to all address-type resource descriptors. These checks are 6501implemented: Checks for valid Min/Max, length within the Min/Max window, 6502valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 6503per 6504table 6-40 in the ACPI 4.0a specification. Also split the large 6505aslrestype1.c 6506and aslrestype2.c files into five new files. ACPICA BZ 840. 6507 6508iASL: Added support for the _Wxx predefined names. This support was 6509missing 6510and these names were not recognized by the compiler as valid predefined 6511names. ACPICA BZ 851. 6512 6513iASL: Added an error for all predefined names that are defined to return 6514no 6515value and thus must be implemented as Control Methods. These include all 6516of 6517the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 6518names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 6519 6520iASL: Implemented the -ts option to emit hex AML data in ASL format, as 6521an 6522ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 6523be 6524dynamically loaded via the Load() operator. Also cleaned up output for 6525the 6526- 6527ta and -tc options. ACPICA BZ 853. 6528 6529Tests: Added a new file with examples of extended iASL error checking. 6530Demonstrates the advanced error checking ability of the iASL compiler. 6531Available at tests/misc/badcode.asl. 6532 6533---------------------------------------- 653431 March 2010. Summary of changes for version 20100331: 6535 65361) ACPI CA Core Subsystem: 6537 6538Completed a major update for the GPE support in order to improve support 6539for 6540shared GPEs and to simplify both host OS and ACPICA code. Added a 6541reference 6542count mechanism to support shared GPEs that require multiple device 6543drivers. 6544Several external interfaces have changed. One external interface has been 6545removed. One new external interface was added. Most of the GPE external 6546interfaces now use the GPE spinlock instead of the events mutex (and the 6547Flags parameter for many GPE interfaces has been removed.) See the 6548updated 6549ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 6550Rafael 6551Wysocki. ACPICA BZ 831. 6552 6553Changed: 6554 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 6555Removed: 6556 AcpiSetGpeType 6557New: 6558 AcpiSetGpe 6559 6560Implemented write support for DataTable operation regions. These regions 6561are 6562defined via the DataTableRegion() operator. Previously, only read support 6563was 6564implemented. The ACPI specification allows DataTableRegions to be 6565read/write, 6566however. 6567 6568Implemented a new subsystem option to force a copy of the DSDT to local 6569memory. Optionally copy the entire DSDT to local memory (instead of 6570simply 6571mapping it.) There are some (albeit very rare) BIOSs that corrupt or 6572replace 6573the original DSDT, creating the need for this option. Default is FALSE, 6574do 6575not copy the DSDT. 6576 6577Implemented detection of a corrupted or replaced DSDT. This change adds 6578support to detect a DSDT that has been corrupted and/or replaced from 6579outside 6580the OS (by firmware). This is typically catastrophic for the system, but 6581has 6582been seen on some machines. Once this problem has been detected, the DSDT 6583copy option can be enabled via system configuration. Lin Ming, Bob Moore. 6584 6585Fixed two problems with AcpiReallocateRootTable during the root table 6586copy. 6587When copying the root table to the new allocation, the length used was 6588incorrect. The new size was used instead of the current table size, 6589meaning 6590too much data was copied. Also, the count of available slots for ACPI 6591tables 6592was not set correctly. Alexey Starikovskiy, Bob Moore. 6593 6594Example Code and Data Size: These are the sizes for the OS-independent 6595acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6596debug version of the code includes the debug output trace mechanism and 6597has a 6598much larger code and data size. 6599 6600 Previous Release: 6601 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6602 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6603 Current Release: 6604 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6605 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6606 66072) iASL Compiler/Disassembler and Tools: 6608 6609iASL: Implement limited typechecking for values returned from predefined 6610control methods. The type of any returned static (unnamed) object is now 6611validated. For example, Return(1). ACPICA BZ 786. 6612 6613iASL: Fixed a predefined name object verification regression. Fixes a 6614problem 6615introduced in version 20100304. An error is incorrectly generated if a 6616predefined name is declared as a static named object with a value defined 6617using the keywords "Zero", "One", or "Ones". Lin Ming. 6618 6619iASL: Added Windows 7 support for the -g option (get local ACPI tables) 6620by 6621reducing the requested registry access rights. ACPICA BZ 842. 6622 6623Disassembler: fixed a possible fault when generating External() 6624statements. 6625Introduced in commit ae7d6fd: Properly handle externals with parent- 6626prefix 6627(carat). Fixes a string length allocation calculation. Lin Ming. 6628 6629---------------------------------------- 663004 March 2010. Summary of changes for version 20100304: 6631 66321) ACPI CA Core Subsystem: 6633 6634Fixed a possible problem with the AML Mutex handling function 6635AcpiExReleaseMutex where the function could fault under the very rare 6636condition when the interpreter has blocked, the interpreter lock is 6637released, 6638the interpreter is then reentered via the same thread, and attempts to 6639acquire an AML mutex that was previously acquired. FreeBSD report 140979. 6640Lin 6641Ming. 6642 6643Implemented additional configuration support for the AML "Debug Object". 6644Output from the debug object can now be enabled via a global variable, 6645AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 6646debugging. 6647This debug output is now available in the release version of ACPICA 6648instead 6649of just the debug version. Also, the entire debug output module can now 6650be 6651configured out of the ACPICA build if desired. One new file added, 6652executer/exdebug.c. Lin Ming, Bob Moore. 6653 6654Added header support for the ACPI MCHI table (Management Controller Host 6655Interface Table). This table was added in ACPI 4.0, but the defining 6656document 6657has only recently become available. 6658 6659Standardized output of integer values for ACPICA warnings/errors. Always 6660use 66610x prefix for hex output, always use %u for unsigned integer decimal 6662output. 6663Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 6664400 6665invocations.) These invocations were converted from the original 6666ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 6667 6668Example Code and Data Size: These are the sizes for the OS-independent 6669acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6670debug version of the code includes the debug output trace mechanism and 6671has a 6672much larger code and data size. 6673 6674 Previous Release: 6675 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6676 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6677 Current Release: 6678 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6679 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6680 66812) iASL Compiler/Disassembler and Tools: 6682 6683iASL: Implemented typechecking support for static (non-control method) 6684predefined named objects that are declared with the Name() operator. For 6685example, the type of this object is now validated to be of type Integer: 6686Name(_BBN, 1). This change migrates the compiler to using the core 6687predefined 6688name table instead of maintaining a local version. Added a new file, 6689aslpredef.c. ACPICA BZ 832. 6690 6691Disassembler: Added support for the ACPI 4.0 MCHI table. 6692 6693---------------------------------------- 669421 January 2010. Summary of changes for version 20100121: 6695 66961) ACPI CA Core Subsystem: 6697 6698Added the 2010 copyright to all module headers and signons. This affects 6699virtually every file in the ACPICA core subsystem, the iASL compiler, the 6700tools/utilities, and the test suites. 6701 6702Implemented a change to the AcpiGetDevices interface to eliminate 6703unnecessary 6704invocations of the _STA method. In the case where a specific _HID is 6705requested, do not run _STA until a _HID match is found. This eliminates 6706potentially dozens of _STA calls during a search for a particular 6707device/HID, 6708which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 6709 6710Implemented an additional repair for predefined method return values. 6711Attempt 6712to repair unexpected NULL elements within returned Package objects. 6713Create 6714an 6715Integer of value zero, a NULL String, or a zero-length Buffer as 6716appropriate. 6717ACPICA BZ 818. Lin Ming, Bob Moore. 6718 6719Removed the obsolete ACPI_INTEGER data type. This type was introduced as 6720the 6721code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 6722(with 672364-bit AML integers). It is now obsolete and this change removes it from 6724the 6725ACPICA code base, replaced by UINT64. The original typedef has been 6726retained 6727for now for compatibility with existing device driver code. ACPICA BZ 6728824. 6729 6730Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 6731in 6732the parse tree object. 6733 6734Added additional warning options for the gcc-4 generation. Updated the 6735source 6736accordingly. This includes some code restructuring to eliminate 6737unreachable 6738code, elimination of some gotos, elimination of unused return values, 6739some 6740additional casting, and removal of redundant declarations. 6741 6742Example Code and Data Size: These are the sizes for the OS-independent 6743acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6744debug version of the code includes the debug output trace mechanism and 6745has a 6746much larger code and data size. 6747 6748 Previous Release: 6749 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6750 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6751 Current Release: 6752 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6753 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6754 67552) iASL Compiler/Disassembler and Tools: 6756 6757No functional changes for this release. 6758 6759---------------------------------------- 676014 December 2009. Summary of changes for version 20091214: 6761 67621) ACPI CA Core Subsystem: 6763 6764Enhanced automatic data type conversions for predefined name repairs. 6765This 6766change expands the automatic repairs/conversions for predefined name 6767return 6768values to make Integers, Strings, and Buffers fully interchangeable. 6769Also, 6770a 6771Buffer can be converted to a Package of Integers if necessary. The 6772nsrepair.c 6773module was completely restructured. Lin Ming, Bob Moore. 6774 6775Implemented automatic removal of null package elements during predefined 6776name 6777repairs. This change will automatically remove embedded and trailing NULL 6778package elements from returned package objects that are defined to 6779contain 6780a 6781variable number of sub-packages. The driver is then presented with a 6782package 6783with no null elements to deal with. ACPICA BZ 819. 6784 6785Implemented a repair for the predefined _FDE and _GTM names. The expected 6786return value for both names is a Buffer of 5 DWORDs. This repair fixes 6787two 6788possible problems (both seen in the field), where a package of integers 6789is 6790returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 6791Kim. 6792 6793Implemented additional module-level code support. This change will 6794properly 6795execute module-level code that is not at the root of the namespace (under 6796a 6797Device object, etc.). Now executes the code within the current scope 6798instead 6799of the root. ACPICA BZ 762. Lin Ming. 6800 6801Fixed possible mutex acquisition errors when running _REG methods. Fixes 6802a 6803problem where mutex errors can occur when running a _REG method that is 6804in 6805the same scope as a method-defined operation region or an operation 6806region 6807under a module-level IF block. This type of code is rare, so the problem 6808has 6809not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 6810 6811Fixed a possible memory leak during module-level code execution. An 6812object 6813could be leaked for each block of executed module-level code if the 6814interpreter slack mode is enabled This change deletes any implicitly 6815returned 6816object from the module-level code block. Lin Ming. 6817 6818Removed messages for successful predefined repair(s). The repair 6819mechanism 6820was considered too wordy. Now, messages are only unconditionally emitted 6821if 6822the return object cannot be repaired. Existing messages for successful 6823repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 6824827. 6825 6826Example Code and Data Size: These are the sizes for the OS-independent 6827acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6828debug version of the code includes the debug output trace mechanism and 6829has a 6830much larger code and data size. 6831 6832 Previous Release: 6833 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6834 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6835 Current Release: 6836 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6837 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6838 68392) iASL Compiler/Disassembler and Tools: 6840 6841iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 6842files 6843were no longer automatically removed at the termination of the compile. 6844 6845acpiexec: Implemented the -f option to specify default region fill value. 6846This option specifies the value used to initialize buffers that simulate 6847operation regions. Default value is zero. Useful for debugging problems 6848that 6849depend on a specific initial value for a region or field. 6850 6851---------------------------------------- 685212 November 2009. Summary of changes for version 20091112: 6853 68541) ACPI CA Core Subsystem: 6855 6856Implemented a post-order callback to AcpiWalkNamespace. The existing 6857interface only has a pre-order callback. This change adds an additional 6858parameter for a post-order callback which will be more useful for bus 6859scans. 6860ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 6861 6862Modified the behavior of the operation region memory mapping cache for 6863SystemMemory. Ensure that the memory mappings created for operation 6864regions 6865do not cross 4K page boundaries. Crossing a page boundary while mapping 6866regions can cause kernel warnings on some hosts if the pages have 6867different 6868attributes. Such regions are probably BIOS bugs, and this is the 6869workaround. 6870Linux BZ 14445. Lin Ming. 6871 6872Implemented an automatic repair for predefined methods that must return 6873sorted lists. This change will repair (by sorting) packages returned by 6874_ALR, 6875_PSS, and _TSS. Drivers can now assume that the packages are correctly 6876sorted 6877and do not contain NULL package elements. Adds one new file, 6878namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 6879 6880Fixed a possible fault during predefined name validation if a return 6881Package 6882object contains NULL elements. Also adds a warning if a NULL element is 6883followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 6884may 6885include repair or removal of all such NULL elements where possible. 6886 6887Implemented additional module-level executable AML code support. This 6888change 6889will execute module-level code that is not at the root of the namespace 6890(under a Device object, etc.) at table load time. Module-level executable 6891AML 6892code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 6893 6894Implemented a new internal function to create Integer objects. This 6895function 6896simplifies miscellaneous object creation code. ACPICA BZ 823. 6897 6898Reduced the severity of predefined repair messages, Warning to Info. 6899Since 6900the object was successfully repaired, a warning is too severe. Reduced to 6901an 6902info message for now. These messages may eventually be changed to debug- 6903only. 6904ACPICA BZ 812. 6905 6906Example Code and Data Size: These are the sizes for the OS-independent 6907acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6908debug version of the code includes the debug output trace mechanism and 6909has a 6910much larger code and data size. 6911 6912 Previous Release: 6913 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6914 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6915 Current Release: 6916 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6917 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6918 69192) iASL Compiler/Disassembler and Tools: 6920 6921iASL: Implemented Switch() with While(1) so that Break works correctly. 6922This 6923change correctly implements the Switch operator with a surrounding 6924While(1) 6925so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 6926 6927iASL: Added a message if a package initializer list is shorter than 6928package 6929length. Adds a new remark for a Package() declaration if an initializer 6930list 6931exists, but is shorter than the declared length of the package. Although 6932technically legal, this is probably a coding error and it is seen in the 6933field. ACPICA BZ 815. Lin Ming, Bob Moore. 6934 6935iASL: Fixed a problem where the compiler could fault after the maximum 6936number 6937of errors was reached (200). 6938 6939acpixtract: Fixed a possible warning for pointer cast if the compiler 6940warning 6941level set very high. 6942 6943---------------------------------------- 694413 October 2009. Summary of changes for version 20091013: 6945 69461) ACPI CA Core Subsystem: 6947 6948Fixed a problem where an Operation Region _REG method could be executed 6949more 6950than once. If a custom address space handler is installed by the host 6951before 6952the "initialize operation regions" phase of the ACPICA initialization, 6953any 6954_REG methods for that address space could be executed twice. This change 6955fixes the problem. ACPICA BZ 427. Lin Ming. 6956 6957Fixed a possible memory leak for the Scope() ASL operator. When the exact 6958invocation of "Scope(\)" is executed (change scope to root), one internal 6959operand object was leaked. Lin Ming. 6960 6961Implemented a run-time repair for the _MAT predefined method. If the _MAT 6962return value is defined as a Field object in the AML, and the field 6963size is less than or equal to the default width of an integer (32 or 696464),_MAT 6965can incorrectly return an Integer instead of a Buffer. ACPICA now 6966automatically repairs this problem. ACPICA BZ 810. 6967 6968Implemented a run-time repair for the _BIF and _BIX predefined methods. 6969The 6970"OEM Information" field is often incorrectly returned as an Integer with 6971value zero if the field is not supported by the platform. This is due to 6972an 6973ambiguity in the ACPI specification. The field should always be a string. 6974ACPICA now automatically repairs this problem by returning a NULL string 6975within the returned Package. ACPICA BZ 807. 6976 6977Example Code and Data Size: These are the sizes for the OS-independent 6978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6979debug version of the code includes the debug output trace mechanism and 6980has a 6981much larger code and data size. 6982 6983 Previous Release: 6984 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6985 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6986 Current Release: 6987 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6988 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6989 69902) iASL Compiler/Disassembler and Tools: 6991 6992Disassembler: Fixed a problem where references to external symbols that 6993contained one or more parent-prefixes (carats) were not handled 6994correctly, 6995possibly causing a fault. ACPICA BZ 806. Lin Ming. 6996 6997Disassembler: Restructured the code so that all functions that handle 6998external symbols are in a single module. One new file is added, 6999common/dmextern.c. 7000 7001AML Debugger: Added a max count argument for the Batch command (which 7002executes multiple predefined methods within the namespace.) 7003 7004iASL: Updated the compiler documentation (User Reference.) Available at 7005http://www.acpica.org/documentation/. ACPICA BZ 750. 7006 7007AcpiXtract: Updated for Lint and other formatting changes. Close all open 7008files. 7009 7010---------------------------------------- 701103 September 2009. Summary of changes for version 20090903: 7012 70131) ACPI CA Core Subsystem: 7014 7015For Windows Vista compatibility, added the automatic execution of an _INI 7016method located at the namespace root (\_INI). This method is executed at 7017table load time. This support is in addition to the automatic execution 7018of 7019\_SB._INI. Lin Ming. 7020 7021Fixed a possible memory leak in the interpreter for AML package objects 7022if 7023the package initializer list is longer than the defined size of the 7024package. 7025This apparently can only happen if the BIOS changes the package size on 7026the 7027fly (seen in a _PSS object), as ASL compilers do not allow this. The 7028interpreter will truncate the package to the defined size (and issue an 7029error 7030message), but previously could leave the extra objects undeleted if they 7031were 7032pre-created during the argument processing (such is the case if the 7033package 7034consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7035 7036Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7037This has been reported in the field. Previously, ACPICA would zero out 7038the 7039buffer/string. Now, the operation is treated as a noop. Provides Windows 7040compatibility. ACPICA BZ 803. Lin Ming. 7041 7042Removed an extraneous error message for ASL constructs of the form 7043Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7044statements 7045are seen in many BIOSs and are once again treated as NOOPs and no error 7046is 7047emitted when they are encountered. ACPICA BZ 785. 7048 7049Fixed an extraneous warning message if a _DSM reserved method returns a 7050Package object. _DSM can return any type of object, so validation on the 7051return type cannot be performed. ACPICA BZ 802. 7052 7053Example Code and Data Size: These are the sizes for the OS-independent 7054acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7055debug version of the code includes the debug output trace mechanism and 7056has a 7057much larger code and data size. 7058 7059 Previous Release: 7060 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7061 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7062 Current Release: 7063 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7064 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7065 70662) iASL Compiler/Disassembler and Tools: 7067 7068iASL: Fixed a problem with the use of the Alias operator and Resource 7069Templates. The correct alias is now constructed and no error is emitted. 7070ACPICA BZ 738. 7071 7072iASL: Implemented the -I option to specify additional search directories 7073for 7074include files. Allows multiple additional search paths for include files. 7075Directories are searched in the order specified on the command line 7076(after 7077the local directory is searched.) ACPICA BZ 800. 7078 7079iASL: Fixed a problem where the full pathname for include files was not 7080emitted for warnings/errors. This caused the IDE support to not work 7081properly. ACPICA BZ 765. 7082 7083iASL: Implemented the -@ option to specify a Windows-style response file 7084containing additional command line options. ACPICA BZ 801. 7085 7086AcpiExec: Added support to load multiple AML files simultaneously (such 7087as 7088a 7089DSDT and multiple SSDTs). Also added support for wildcards within the AML 7090pathname. These features allow all machine tables to be easily loaded and 7091debugged together. ACPICA BZ 804. 7092 7093Disassembler: Added missing support for disassembly of HEST table Error 7094Bank 7095subtables. 7096 7097---------------------------------------- 709830 July 2009. Summary of changes for version 20090730: 7099 7100The ACPI 4.0 implementation for ACPICA is complete with this release. 7101 71021) ACPI CA Core Subsystem: 7103 7104ACPI 4.0: Added header file support for all new and changed ACPI tables. 7105Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7106new 7107for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7108BERT, 7109EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7110There 7111have been some ACPI 4.0 changes to other existing tables. Split the large 7112actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7113 7114ACPI 4.0: Implemented predefined name validation for all new names. There 7115are 711631 new names in ACPI 4.0. The predefined validation module was split into 7117two 7118files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7119 7120Implemented support for so-called "module-level executable code". This is 7121executable AML code that exists outside of any control method and is 7122intended 7123to be executed at table load time. Although illegal since ACPI 2.0, this 7124type 7125of code still exists and is apparently still being created. Blocks of 7126this 7127code are now detected and executed as intended. Currently, the code 7128blocks 7129must exist under either an If, Else, or While construct; these are the 7130typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7131 7132Implemented an automatic dynamic repair for predefined names that return 7133nested Package objects. This applies to predefined names that are defined 7134to 7135return a variable-length Package of sub-packages. If the number of sub- 7136packages is one, BIOS code is occasionally seen that creates a simple 7137single 7138package with no sub-packages. This code attempts to fix the problem by 7139wrapping a new package object around the existing package. These methods 7140can 7141be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7142BZ 7143790. 7144 7145Fixed a regression introduced in 20090625 for the AcpiGetDevices 7146interface. 7147The _HID/_CID matching was broken and no longer matched IDs correctly. 7148ACPICA 7149BZ 793. 7150 7151Fixed a problem with AcpiReset where the reset would silently fail if the 7152register was one of the protected I/O ports. AcpiReset now bypasses the 7153port 7154validation mechanism. This may eventually be driven into the 7155AcpiRead/Write 7156interfaces. 7157 7158Fixed a regression related to the recent update of the AcpiRead/Write 7159interfaces. A sleep/suspend could fail if the optional PM2 Control 7160register 7161does not exist during an attempt to write the Bus Master Arbitration bit. 7162(However, some hosts already delete the code that writes this bit, and 7163the 7164code may in fact be obsolete at this date.) ACPICA BZ 799. 7165 7166Fixed a problem where AcpiTerminate could fault if inadvertently called 7167twice 7168in succession. ACPICA BZ 795. 7169 7170Example Code and Data Size: These are the sizes for the OS-independent 7171acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7172debug version of the code includes the debug output trace mechanism and 7173has a 7174much larger code and data size. 7175 7176 Previous Release: 7177 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7178 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7179 Current Release: 7180 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7181 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7182 71832) iASL Compiler/Disassembler and Tools: 7184 7185ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7186changes to existing tables. ACPICA BZ 775. 7187 7188---------------------------------------- 718925 June 2009. Summary of changes for version 20090625: 7190 7191The ACPI 4.0 Specification was released on June 16 and is available at 7192www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7193continue for the next few releases. 7194 71951) ACPI CA Core Subsystem: 7196 7197ACPI 4.0: Implemented interpreter support for the IPMI operation region 7198address space. Includes support for bi-directional data buffers and an 7199IPMI 7200address space handler (to be installed by an IPMI device driver.) ACPICA 7201BZ 7202773. Lin Ming. 7203 7204ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7205Includes 7206support in both the header files and the disassembler. 7207 7208Completed a major update for the AcpiGetObjectInfo external interface. 7209Changes include: 7210 - Support for variable, unlimited length HID, UID, and CID strings. 7211 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7212etc.) 7213 - Call the _SxW power methods on behalf of a device object. 7214 - Determine if a device is a PCI root bridge. 7215 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7216These changes will require an update to all callers of this interface. 7217See 7218the updated ACPICA Programmer Reference for details. One new source file 7219has 7220been added - utilities/utids.c. ACPICA BZ 368, 780. 7221 7222Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7223transfers. The Value parameter has been extended from 32 bits to 64 bits 7224in 7225order to support new ACPI 4.0 tables. These changes will require an 7226update 7227to 7228all callers of these interfaces. See the ACPICA Programmer Reference for 7229details. ACPICA BZ 768. 7230 7231Fixed several problems with AcpiAttachData. The handler was not invoked 7232when 7233the host node was deleted. The data sub-object was not automatically 7234deleted 7235when the host node was deleted. The interface to the handler had an 7236unused 7237parameter, this was removed. ACPICA BZ 778. 7238 7239Enhanced the function that dumps ACPI table headers. All non-printable 7240characters in the string fields are now replaced with '?' (Signature, 7241OemId, 7242OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7243these fields are occasionally seen in the field. ACPICA BZ 788. 7244 7245Fixed a problem with predefined method repair code where the code that 7246attempts to repair/convert an object of incorrect type is only executed 7247on 7248the first time the predefined method is called. The mechanism that 7249disables 7250warnings on subsequent calls was interfering with the repair mechanism. 7251ACPICA BZ 781. 7252 7253Fixed a possible memory leak in the predefined validation/repair code 7254when 7255a 7256buffer is automatically converted to an expected string object. 7257 7258Removed obsolete 16-bit files from the distribution and from the current 7259git 7260tree head. ACPICA BZ 776. 7261 7262Example Code and Data Size: These are the sizes for the OS-independent 7263acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7264debug version of the code includes the debug output trace mechanism and 7265has a 7266much larger code and data size. 7267 7268 Previous Release: 7269 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7270 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7271 Current Release: 7272 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7273 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7274 72752) iASL Compiler/Disassembler and Tools: 7276 7277ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 7278operation region keyword. ACPICA BZ 771, 772. Lin Ming. 7279 7280ACPI 4.0: iASL - implemented compile-time validation support for all new 7281predefined names and control methods (31 total). ACPICA BZ 769. 7282 7283---------------------------------------- 728421 May 2009. Summary of changes for version 20090521: 7285 72861) ACPI CA Core Subsystem: 7287 7288Disabled the preservation of the SCI enable bit in the PM1 control 7289register. 7290The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 7291to 7292be 7293a "preserved" bit - "OSPM always preserves this bit position", section 72944.7.3.2.1. However, some machines fail if this bit is in fact preserved 7295because the bit needs to be explicitly set by the OS as a workaround. No 7296machines fail if the bit is not preserved. Therefore, ACPICA no longer 7297attempts to preserve this bit. 7298 7299Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 7300incorrectly formed _PRT package could cause a fault. Added validation to 7301ensure that each package element is actually a sub-package. 7302 7303Implemented a new interface to install or override a single control 7304method, 7305AcpiInstallMethod. This interface is useful when debugging in order to 7306repair 7307an existing method or to install a missing method without having to 7308override 7309the entire ACPI table. See the ACPICA Programmer Reference for use and 7310examples. Lin Ming, Bob Moore. 7311 7312Fixed several reference count issues with the DdbHandle object that is 7313created from a Load or LoadTable operator. Prevent premature deletion of 7314the 7315object. Also, mark the object as invalid once the table has been 7316unloaded. 7317This is needed because the handle itself may not be deleted after the 7318table 7319unload, depending on whether it has been stored in a named object by the 7320caller. Lin Ming. 7321 7322Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 7323mutexes of the same sync level are acquired but then not released in 7324strict 7325opposite order, the internally maintained Current Sync Level becomes 7326confused 7327and can cause subsequent execution errors. ACPICA BZ 471. 7328 7329Changed the allowable release order for ASL mutex objects. The ACPI 4.0 7330specification has been changed to make the SyncLevel for mutex objects 7331more 7332useful. When releasing a mutex, the SyncLevel of the mutex must now be 7333the 7334same as the current sync level. This makes more sense than the previous 7335rule 7336(SyncLevel less than or equal). This change updates the code to match the 7337specification. 7338 7339Fixed a problem with the local version of the AcpiOsPurgeCache function. 7340The 7341(local) cache must be locked during all cache object deletions. Andrew 7342Baumann. 7343 7344Updated the Load operator to use operation region interfaces. This 7345replaces 7346direct memory mapping with region access calls. Now, all region accesses 7347go 7348through the installed region handler as they should. 7349 7350Simplified and optimized the NsGetNextNode function. Reduced parameter 7351count 7352and reduced code for this frequently used function. 7353 7354Example Code and Data Size: These are the sizes for the OS-independent 7355acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7356debug version of the code includes the debug output trace mechanism and 7357has a 7358much larger code and data size. 7359 7360 Previous Release: 7361 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7362 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7363 Current Release: 7364 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7365 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7366 73672) iASL Compiler/Disassembler and Tools: 7368 7369Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 7370problems 7371with sub-table disassembly and handling invalid sub-tables. Attempt 7372recovery 7373after an invalid sub-table ID. 7374 7375---------------------------------------- 737622 April 2009. Summary of changes for version 20090422: 7377 73781) ACPI CA Core Subsystem: 7379 7380Fixed a compatibility issue with the recently released I/O port 7381protection 7382mechanism. For windows compatibility, 1) On a port protection violation, 7383simply ignore the request and do not return an exception (allow the 7384control 7385method to continue execution.) 2) If only part of the request overlaps a 7386protected port, read/write the individual ports that are not protected. 7387Linux 7388BZ 13036. Lin Ming 7389 7390Enhanced the execution of the ASL/AML BreakPoint operator so that it 7391actually 7392breaks into the AML debugger if the debugger is present. This matches the 7393ACPI-defined behavior. 7394 7395Fixed several possible warnings related to the use of the configurable 7396ACPI_THREAD_ID. This type can now be configured as either an integer or a 7397pointer with no warnings. Also fixes several warnings in printf-like 7398statements for the 64-bit build when the type is configured as a pointer. 7399ACPICA BZ 766, 767. 7400 7401Fixed a number of possible warnings when compiling with gcc 4+ (depending 7402on 7403warning options.) Examples include printf formats, aliasing, unused 7404globals, 7405missing prototypes, missing switch default statements, use of non-ANSI 7406library functions, use of non-ANSI constructs. See generate/unix/Makefile 7407for 7408a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7409 7410Example Code and Data Size: These are the sizes for the OS-independent 7411acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7412debug version of the code includes the debug output trace mechanism and 7413has a 7414much larger code and data size. 7415 7416 Previous Release: 7417 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7418 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7419 Current Release: 7420 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7421 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7422 74232) iASL Compiler/Disassembler and Tools: 7424 7425iASL: Fixed a generation warning from Bison 2.3 and fixed several 7426warnings 7427on 7428the 64-bit build. 7429 7430iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7431not 7432correctly digest Windows/DOS formatted files (with CR/LF). 7433 7434iASL: Added a new option for "quiet mode" (-va) that produces only the 7435compilation summary, not individual errors and warnings. Useful for large 7436batch compilations. 7437 7438AcpiExec: Implemented a new option (-z) to enable a forced 7439semaphore/mutex 7440timeout that can be used to detect hang conditions during execution of 7441AML 7442code (includes both internal semaphores and AML-defined mutexes and 7443events.) 7444 7445Added new makefiles for the generation of acpica in a generic unix-like 7446environment. These makefiles are intended to generate the acpica tools 7447and 7448utilities from the original acpica git source tree structure. 7449 7450Test Suites: Updated and cleaned up the documentation files. Updated the 7451copyrights to 2009, affecting all source files. Use the new version of 7452iASL 7453with quiet mode. Increased the number of available semaphores in the 7454Windows 7455OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7456added 7457an alternate implementation of the semaphore timeout to allow aslts to 7458execute fully on Cygwin. 7459 7460---------------------------------------- 746120 March 2009. Summary of changes for version 20090320: 7462 74631) ACPI CA Core Subsystem: 7464 7465Fixed a possible race condition between AcpiWalkNamespace and dynamic 7466table 7467unloads. Added a reader/writer locking mechanism to allow multiple 7468concurrent 7469namespace walks (readers), but block a dynamic table unload until it can 7470gain 7471exclusive write access to the namespace. This fixes a problem where a 7472table 7473unload could (possibly catastrophically) delete the portion of the 7474namespace 7475that is currently being examined by a walk. Adds a new file, utlock.c, 7476that 7477implements the reader/writer lock mechanism. ACPICA BZ 749. 7478 7479Fixed a regression introduced in version 20090220 where a change to the 7480FADT 7481handling could cause the ACPICA subsystem to access non-existent I/O 7482ports. 7483 7484Modified the handling of FADT register and table (FACS/DSDT) addresses. 7485The 7486FADT can contain both 32-bit and 64-bit versions of these addresses. 7487Previously, the 64-bit versions were favored, meaning that if both 32 and 748864 7489versions were valid, but not equal, the 64-bit version was used. This was 7490found to cause some machines to fail. Now, in this case, the 32-bit 7491version 7492is used instead. This now matches the Windows behavior. 7493 7494Implemented a new mechanism to protect certain I/O ports. Provides 7495Microsoft 7496compatibility and protects the standard PC I/O ports from access via AML 7497code. Adds a new file, hwvalid.c 7498 7499Fixed a possible extraneous warning message from the FADT support. The 7500message warns of a 32/64 length mismatch between the legacy and GAS 7501definitions for a register. 7502 7503Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 7504is 7505made obsolete by the port protection mechanism above. It was previously 7506used 7507to validate the entire address range of an operation region, which could 7508be 7509incorrect if the range included illegal ports, but fields within the 7510operation region did not actually access those ports. Validation is now 7511performed on a per-field basis instead of the entire region. 7512 7513Modified the handling of the PM1 Status Register ignored bit (bit 11.) 7514Ignored bits must be "preserved" according to the ACPI spec. Usually, 7515this 7516means a read/modify/write when writing to the register. However, for 7517status 7518registers, writing a one means clear the event. Writing a zero means 7519preserve 7520the event (do not clear.) This behavior is clarified in the ACPI 4.0 7521spec, 7522and the ACPICA code now simply always writes a zero to the ignored bit. 7523 7524Modified the handling of ignored bits for the PM1 A/B Control Registers. 7525As 7526per the ACPI specification, for the control registers, preserve 7527(read/modify/write) all bits that are defined as either reserved or 7528ignored. 7529 7530Updated the handling of write-only bits in the PM1 A/B Control Registers. 7531When reading the register, zero the write-only bits as per the ACPI spec. 7532ACPICA BZ 443. Lin Ming. 7533 7534Removed "Linux" from the list of supported _OSI strings. Linux no longer 7535wants to reply true to this request. The Windows strings are the only 7536paths 7537through the AML that are tested and known to work properly. 7538 7539 Previous Release: 7540 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7541 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7542 Current Release: 7543 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7544 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7545 75462) iASL Compiler/Disassembler and Tools: 7547 7548Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 7549and 7550aetables.c 7551 7552---------------------------------------- 755320 February 2009. Summary of changes for version 20090220: 7554 75551) ACPI CA Core Subsystem: 7556 7557Optimized the ACPI register locking. Removed locking for reads from the 7558ACPI 7559bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 7560is 7561not required when reading the single-bit registers. The 7562AcpiGetRegisterUnlocked function is no longer needed and has been 7563removed. 7564This will improve performance for reads on these registers. ACPICA BZ 7565760. 7566 7567Fixed the parameter validation for AcpiRead/Write. Now return 7568AE_BAD_PARAMETER if the input register pointer is null, and 7569AE_BAD_ADDRESS 7570if 7571the register has an address of zero. Previously, these cases simply 7572returned 7573AE_OK. For optional registers such as PM1B status/enable/control, the 7574caller 7575should check for a valid register address before calling. ACPICA BZ 748. 7576 7577Renamed the external ACPI bit register access functions. Renamed 7578AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 7579functions. The new names are AcpiReadBitRegister and 7580AcpiWriteBitRegister. 7581Also, restructured the code for these functions by simplifying the code 7582path 7583and condensing duplicate code to reduce code size. 7584 7585Added new functions to transparently handle the possibly split PM1 A/B 7586registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 7587functions 7588now handle the split registers for PM1 Status, Enable, and Control. 7589ACPICA 7590BZ 7591746. 7592 7593Added a function to handle the PM1 control registers, 7594AcpiHwWritePm1Control. 7595This function writes both of the PM1 control registers (A/B). These 7596registers 7597are different than the PM1 A/B status and enable registers in that 7598different 7599values can be written to the A/B registers. Most notably, the SLP_TYP 7600bits 7601can be different, as per the values returned from the _Sx predefined 7602methods. 7603 7604Removed an extra register write within AcpiHwClearAcpiStatus. This 7605function 7606was writing an optional PM1B status register twice. The existing call to 7607the 7608low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 7609A/B 7610register. ACPICA BZ 751. 7611 7612Split out the PM1 Status registers from the FADT. Added new globals for 7613these 7614registers (A/B), similar to the way the PM1 Enable registers are handled. 7615Instead of overloading the FADT Event Register blocks. This makes the 7616code 7617clearer and less prone to error. 7618 7619Fixed the warning message for when the platform contains too many ACPI 7620tables 7621for the default size of the global root table data structure. The 7622calculation 7623for the truncation value was incorrect. 7624 7625Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 7626obsolete macro, since it is now a simple reference to ->common.type. 7627There 7628were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 7629 7630Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 7631TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 7632simply SLEEP_TYPE. ACPICA BZ 754. 7633 7634Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 7635function is only needed on 64-bit host operating systems and is thus not 7636included for 32-bit hosts. 7637 7638Debug output: print the input and result for invocations of the _OSI 7639reserved 7640control method via the ACPI_LV_INFO debug level. Also, reduced some of 7641the 7642verbosity of this debug level. Len Brown. 7643 7644Example Code and Data Size: These are the sizes for the OS-independent 7645acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7646debug version of the code includes the debug output trace mechanism and 7647has a 7648much larger code and data size. 7649 7650 Previous Release: 7651 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7652 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7653 Current Release: 7654 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7655 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7656 76572) iASL Compiler/Disassembler and Tools: 7658 7659Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 7660various legal performance profiles. 7661 7662---------------------------------------- 766323 January 2009. Summary of changes for version 20090123: 7664 76651) ACPI CA Core Subsystem: 7666 7667Added the 2009 copyright to all module headers and signons. This affects 7668virtually every file in the ACPICA core subsystem, the iASL compiler, and 7669the tools/utilities. 7670 7671Implemented a change to allow the host to override any ACPI table, 7672including 7673dynamically loaded tables. Previously, only the DSDT could be replaced by 7674the 7675host. With this change, the AcpiOsTableOverride interface is called for 7676each 7677table found in the RSDT/XSDT during ACPICA initialization, and also 7678whenever 7679a table is dynamically loaded via the AML Load operator. 7680 7681Updated FADT flag definitions, especially the Boot Architecture flags. 7682 7683Debugger: For the Find command, automatically pad the input ACPI name 7684with 7685underscores if the name is shorter than 4 characters. This enables a 7686match 7687with the actual namespace entry which is itself padded with underscores. 7688 7689Example Code and Data Size: These are the sizes for the OS-independent 7690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7691debug version of the code includes the debug output trace mechanism and 7692has a 7693much larger code and data size. 7694 7695 Previous Release: 7696 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7697 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7698 Current Release: 7699 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7700 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7701 77022) iASL Compiler/Disassembler and Tools: 7703 7704Fix build error under Bison-2.4. 7705 7706Dissasembler: Enhanced FADT support. Added decoding of the Boot 7707Architecture 7708flags. Now decode all flags, regardless of the FADT version. Flag output 7709includes the FADT version which first defined each flag. 7710 7711The iASL -g option now dumps the RSDT to a file (in addition to the FADT 7712and 7713DSDT). Windows only. 7714 7715---------------------------------------- 771604 December 2008. Summary of changes for version 20081204: 7717 77181) ACPI CA Core Subsystem: 7719 7720The ACPICA Programmer Reference has been completely updated and revamped 7721for 7722this release. This includes updates to the external interfaces, OSL 7723interfaces, the overview sections, and the debugger reference. 7724 7725Several new ACPICA interfaces have been implemented and documented in the 7726programmer reference: 7727AcpiReset - Writes the reset value to the FADT-defined reset register. 7728AcpiDisableAllGpes - Disable all available GPEs. 7729AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 7730AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 7731AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 7732AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 7733AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 7734 7735Most of the public ACPI hardware-related interfaces have been moved to a 7736new 7737file, components/hardware/hwxface.c 7738 7739Enhanced the FADT parsing and low-level ACPI register access: The ACPI 7740register lengths within the FADT are now used, and the low level ACPI 7741register access no longer hardcodes the ACPI register lengths. Given that 7742there may be some risk in actually trusting the FADT register lengths, a 7743run- 7744time option was added to fall back to the default hardcoded lengths if 7745the 7746FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 7747option is set to true for now, and a warning is issued if a suspicious 7748FADT 7749register length is overridden with the default value. 7750 7751Fixed a reference count issue in NsRepairObject. This problem was 7752introduced 7753in version 20081031 as part of a fix to repair Buffer objects within 7754Packages. Lin Ming. 7755 7756Added semaphore support to the Linux/Unix application OS-services layer 7757(OSL). ACPICA BZ 448. Lin Ming. 7758 7759Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 7760will 7761be implemented in the OSL, or will binary semaphores be used instead. 7762 7763Example Code and Data Size: These are the sizes for the OS-independent 7764acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7765debug version of the code includes the debug output trace mechanism and 7766has a 7767much larger code and data size. 7768 7769 Previous Release: 7770 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7771 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7772 Current Release: 7773 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7774 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7775 77762) iASL Compiler/Disassembler and Tools: 7777 7778iASL: Completed the '-e' option to include additional ACPI tables in 7779order 7780to 7781aid with disassembly and External statement generation. ACPICA BZ 742. 7782Lin 7783Ming. 7784 7785iASL: Removed the "named object in while loop" error. The compiler cannot 7786determine how many times a loop will execute. ACPICA BZ 730. 7787 7788Disassembler: Implemented support for FADT revision 2 (MS extension). 7789ACPICA 7790BZ 743. 7791 7792Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 7793MCFG). 7794 7795---------------------------------------- 779631 October 2008. Summary of changes for version 20081031: 7797 77981) ACPI CA Core Subsystem: 7799 7800Restructured the ACPICA header files into public/private. acpi.h now 7801includes 7802only the "public" acpica headers. All other acpica headers are "private" 7803and 7804should not be included by acpica users. One new file, accommon.h is used 7805to 7806include the commonly used private headers for acpica code generation. 7807Future 7808plans include moving all private headers to a new subdirectory. 7809 7810Implemented an automatic Buffer->String return value conversion for 7811predefined ACPI methods. For these methods (such as _BIF), added 7812automatic 7813conversion for return objects that are required to be a String, but a 7814Buffer 7815was found instead. This can happen when reading string battery data from 7816an 7817operation region, because it used to be difficult to convert the data 7818from 7819buffer to string from within the ASL. Ensures that the host OS is 7820provided 7821with a valid null-terminated string. Linux BZ 11822. 7822 7823Updated the FACS waking vector interfaces. Split 7824AcpiSetFirmwareWakingVector 7825into two: one for the 32-bit vector, another for the 64-bit vector. This 7826is 7827required because the host OS must setup the wake much differently for 7828each 7829vector (real vs. protected mode, etc.) and the interface itself should 7830not 7831be 7832deciding which vector to use. Also, eliminated the 7833GetFirmwareWakingVector 7834interface, as it served no purpose (only the firmware reads the vector, 7835OS 7836only writes the vector.) ACPICA BZ 731. 7837 7838Implemented a mechanism to escape infinite AML While() loops. Added a 7839loop 7840counter to force exit from AML While loops if the count becomes too 7841large. 7842This can occur in poorly written AML when the hardware does not respond 7843within a while loop and the loop does not implement a timeout. The 7844maximum 7845loop count is configurable. A new exception code is returned when a loop 7846is 7847broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 7848 7849Optimized the execution of AML While loops. Previously, a control state 7850object was allocated and freed for each execution of the loop. The 7851optimization is to simply reuse the control state for each iteration. 7852This 7853speeds up the raw loop execution time by about 5%. 7854 7855Enhanced the implicit return mechanism. For Windows compatibility, return 7856an 7857implicit integer of value zero for methods that contain no executable 7858code. 7859Such methods are seen in the field as stubs (presumably), and can cause 7860drivers to fail if they expect a return value. Lin Ming. 7861 7862Allow multiple backslashes as root prefixes in namepaths. In a fully 7863qualified namepath, allow multiple backslash prefixes. This can happen 7864(and 7865is seen in the field) because of the use of a double-backslash in strings 7866(since backslash is the escape character) causing confusion. ACPICA BZ 7867739 7868Lin Ming. 7869 7870Emit a warning if two different FACS or DSDT tables are discovered in the 7871FADT. Checks if there are two valid but different addresses for the FACS 7872and 7873DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 7874 7875Consolidated the method argument count validation code. Merged the code 7876that 7877validates control method argument counts into the predefined validation 7878module. Eliminates possible multiple warnings for incorrect argument 7879counts. 7880 7881Implemented ACPICA example code. Includes code for ACPICA initialization, 7882handler installation, and calling a control method. Available at 7883source/tools/examples. 7884 7885Added a global pointer for FACS table to simplify internal FACS access. 7886Use 7887the global pointer instead of using AcpiGetTableByIndex for each FACS 7888access. 7889This simplifies the code for the Global Lock and the Firmware Waking 7890Vector(s). 7891 7892Example Code and Data Size: These are the sizes for the OS-independent 7893acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7894debug version of the code includes the debug output trace mechanism and 7895has a 7896much larger code and data size. 7897 7898 Previous Release: 7899 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7900 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7901 Current Release: 7902 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7903 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7904 79052) iASL Compiler/Disassembler and Tools: 7906 7907iASL: Improved disassembly of external method calls. Added the -e option 7908to 7909allow the inclusion of additional ACPI tables to help with the 7910disassembly 7911of 7912method invocations and the generation of external declarations during the 7913disassembly. Certain external method invocations cannot be disassembled 7914properly without the actual declaration of the method. Use the -e option 7915to 7916include the table where the external method(s) are actually declared. 7917Most 7918useful for disassembling SSDTs that make method calls back to the master 7919DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 7920-d 7921-e dsdt.aml ssdt1.aml 7922 7923iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 7924problem where the use of an alias within a namepath would result in a not 7925found error or cause the compiler to fault. Also now allows forward 7926references from the Alias operator itself. ACPICA BZ 738. 7927 7928---------------------------------------- 792926 September 2008. Summary of changes for version 20080926: 7930 79311) ACPI CA Core Subsystem: 7932 7933Designed and implemented a mechanism to validate predefined ACPI methods 7934and 7935objects. This code validates the predefined ACPI objects (objects whose 7936names 7937start with underscore) that appear in the namespace, at the time they are 7938evaluated. The argument count and the type of the returned object are 7939validated against the ACPI specification. The purpose of this validation 7940is 7941to detect problems with the BIOS-implemented predefined ACPI objects 7942before 7943the results are returned to the ACPI-related drivers. Future enhancements 7944may 7945include actual repair of incorrect return objects where possible. Two new 7946files are nspredef.c and acpredef.h. 7947 7948Fixed a fault in the AML parser if a memory allocation fails during the 7949Op 7950completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 7951 7952Fixed an issue with implicit return compatibility. This change improves 7953the 7954implicit return mechanism to be more compatible with the MS interpreter. 7955Lin 7956Ming, ACPICA BZ 349. 7957 7958Implemented support for zero-length buffer-to-string conversions. Allow 7959zero 7960length strings during interpreter buffer-to-string conversions. For 7961example, 7962during the ToDecimalString and ToHexString operators, as well as implicit 7963conversions. Fiodor Suietov, ACPICA BZ 585. 7964 7965Fixed two possible memory leaks in the error exit paths of 7966AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 7967are 7968similar in that they use a stack of state objects in order to eliminate 7969recursion. The stack must be fully unwound and deallocated if an error 7970occurs. Lin Ming. ACPICA BZ 383. 7971 7972Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 7973global 7974ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 7975Moore ACPICA BZ 442. 7976 7977Removed the obsolete version number in module headers. Removed the 7978"$Revision" number that appeared in each module header. This version 7979number 7980was useful under SourceSafe and CVS, but has no meaning under git. It is 7981not 7982only incorrect, it could also be misleading. 7983 7984Example Code and Data Size: These are the sizes for the OS-independent 7985acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7986debug version of the code includes the debug output trace mechanism and 7987has a 7988much larger code and data size. 7989 7990 Previous Release: 7991 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7992 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7993 Current Release: 7994 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7995 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7996 7997---------------------------------------- 799829 August 2008. Summary of changes for version 20080829: 7999 80001) ACPI CA Core Subsystem: 8001 8002Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8003Reference. Changes include the elimination of cheating on the Object 8004field 8005for the DdbHandle subtype, addition of a reference class field to 8006differentiate the various reference types (instead of an AML opcode), and 8007the 8008cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8009 8010Reduce an error to a warning for an incorrect method argument count. 8011Previously aborted with an error if too few arguments were passed to a 8012control method via the external ACPICA interface. Now issue a warning 8013instead 8014and continue. Handles the case where the method inadvertently declares 8015too 8016many arguments, but does not actually use the extra ones. Applies mainly 8017to 8018the predefined methods. Lin Ming. Linux BZ 11032. 8019 8020Disallow the evaluation of named object types with no intrinsic value. 8021Return 8022AE_TYPE for objects that have no value and therefore evaluation is 8023undefined: 8024Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8025of 8026these types were allowed, but an exception would be generated at some 8027point 8028during the evaluation. Now, the error is generated up front. 8029 8030Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8031(nsnames.c). Fixes a leak in the error exit path. 8032 8033Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8034debug 8035levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8036ACPI_EXCEPTION 8037interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8038ACPI_LV_EVENTS. 8039 8040Removed obsolete and/or unused exception codes from the acexcep.h header. 8041There is the possibility that certain device drivers may be affected if 8042they 8043use any of these exceptions. 8044 8045The ACPICA documentation has been added to the public git source tree, 8046under 8047acpica/documents. Included are the ACPICA programmer reference, the iASL 8048compiler reference, and the changes.txt release logfile. 8049 8050Example Code and Data Size: These are the sizes for the OS-independent 8051acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8052debug version of the code includes the debug output trace mechanism and 8053has a 8054much larger code and data size. 8055 8056 Previous Release: 8057 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8058 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8059 Current Release: 8060 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8061 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8062 80632) iASL Compiler/Disassembler and Tools: 8064 8065Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8066defines _SCP with 3 arguments. Previous versions defined it with only 1 8067argument. iASL now allows both definitions. 8068 8069iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8070zero- 8071length subtables when disassembling ACPI tables. Also fixed a couple of 8072errors where a full 16-bit table type field was not extracted from the 8073input 8074properly. 8075 8076acpisrc: Improve comment counting mechanism for generating source code 8077statistics. Count first and last lines of multi-line comments as 8078whitespace, 8079not comment lines. Handle Linux legal header in addition to standard 8080acpica 8081header. 8082 8083---------------------------------------- 8084 808529 July 2008. Summary of changes for version 20080729: 8086 80871) ACPI CA Core Subsystem: 8088 8089Fix a possible deadlock in the GPE dispatch. Remove call to 8090AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8091attempt 8092to acquire the GPE lock but can deadlock since the GPE lock is already 8093held 8094at dispatch time. This code was introduced in version 20060831 as a 8095response 8096to Linux BZ 6881 and has since been removed from Linux. 8097 8098Add a function to dereference returned reference objects. Examines the 8099return 8100object from a call to AcpiEvaluateObject. Any Index or RefOf references 8101are 8102automatically dereferenced in an attempt to return something useful 8103(these 8104reference types cannot be converted into an external ACPI_OBJECT.) 8105Provides 8106MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8107 8108x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8109subtables for the MADT and one new subtable for the SRAT. Includes 8110disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8111x2APIC 8112Specification, June 2008. 8113 8114Additional error checking for pathname utilities. Add error check after 8115all 8116calls to AcpiNsGetPathnameLength. Add status return from 8117AcpiNsBuildExternalPath and check after all calls. Add parameter 8118validation 8119to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8120 8121Return status from the global init function AcpiUtGlobalInitialize. This 8122is 8123used by both the kernel subsystem and the utilities such as iASL 8124compiler. 8125The function could possibly fail when the caches are initialized. Yang 8126Yi. 8127 8128Add a function to decode reference object types to strings. Created for 8129improved error messages. 8130 8131Improve object conversion error messages. Better error messages during 8132object 8133conversion from internal to the external ACPI_OBJECT. Used for external 8134calls 8135to AcpiEvaluateObject. 8136 8137Example Code and Data Size: These are the sizes for the OS-independent 8138acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8139debug version of the code includes the debug output trace mechanism and 8140has a 8141much larger code and data size. 8142 8143 Previous Release: 8144 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8145 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8146 Current Release: 8147 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8148 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8149 81502) iASL Compiler/Disassembler and Tools: 8151 8152Debugger: fix a possible hang when evaluating non-methods. Fixes a 8153problem 8154introduced in version 20080701. If the object being evaluated (via 8155execute 8156command) is not a method, the debugger can hang while trying to obtain 8157non- 8158existent parameters. 8159 8160iASL: relax error for using reserved "_T_x" identifiers. These names can 8161appear in a disassembled ASL file if they were emitted by the original 8162compiler. Instead of issuing an error or warning and forcing the user to 8163manually change these names, issue a remark instead. 8164 8165iASL: error if named object created in while loop. Emit an error if any 8166named 8167object is created within a While loop. If allowed, this code will 8168generate 8169a 8170run-time error on the second iteration of the loop when an attempt is 8171made 8172to 8173create the same named object twice. ACPICA bugzilla 730. 8174 8175iASL: Support absolute pathnames for include files. Add support for 8176absolute 8177pathnames within the Include operator. previously, only relative 8178pathnames 8179were supported. 8180 8181iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8182Descriptor. 8183The ACPI spec requires one interrupt minimum. BZ 423 8184 8185iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8186Handles the case for the Interrupt Resource Descriptor where 8187the ResourceSource argument is omitted but ResourceSourceIndex 8188is present. Now leave room for the Index. BZ 426 8189 8190iASL: Prevent error message if CondRefOf target does not exist. Fixes 8191cases 8192where an error message is emitted if the target does not exist. BZ 516 8193 8194iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8195(get ACPI tables on Windows). This was apparently broken in version 819620070919. 8197 8198AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8199where 8200the EOF happens immediately after the last table in the input file. Print 8201completion message. Previously, no message was displayed in this case. 8202 8203---------------------------------------- 820401 July 2008. Summary of changes for version 20080701: 8205 82060) Git source tree / acpica.org 8207 8208Fixed a problem where a git-clone from http would not transfer the entire 8209source tree. 8210 82111) ACPI CA Core Subsystem: 8212 8213Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8214enable bit. Now performs a read-change-write of the enable register 8215instead 8216of simply writing out the cached enable mask. This will prevent 8217inadvertent 8218enabling of GPEs if a rogue GPE is received during initialization (before 8219GPE 8220handlers are installed.) 8221 8222Implemented a copy for dynamically loaded tables. Previously, dynamically 8223loaded tables were simply mapped - but on some machines this memory is 8224corrupted after suspend. Now copy the table to a local buffer. For the 8225OpRegion case, added checksum verify. Use the table length from the table 8226header, not the region length. For the Buffer case, use the table length 8227also. Dennis Noordsij, Bob Moore. BZ 10734 8228 8229Fixed a problem where the same ACPI table could not be dynamically loaded 8230and 8231unloaded more than once. Without this change, a table cannot be loaded 8232again 8233once it has been loaded/unloaded one time. The current mechanism does not 8234unregister a table upon an unload. During a load, if the same table is 8235found, 8236this no longer returns an exception. BZ 722 8237 8238Fixed a problem where the wrong descriptor length was calculated for the 8239EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8240EndTag 8241are calculated as 12 bytes long, but the actual length in the internal 8242descriptor is 16 because of the round-up to 8 on the 64-bit build. 8243Reported 8244by Linn Crosetto. BZ 728 8245 8246Fixed a possible memory leak in the Unload operator. The DdbHandle 8247returned 8248by Load() did not have its reference count decremented during unload, 8249leading 8250to a memory leak. Lin Ming. BZ 727 8251 8252Fixed a possible memory leak when deleting thermal/processor objects. Any 8253associated notify handlers (and objects) were not being deleted. Fiodor 8254Suietov. BZ 506 8255 8256Fixed the ordering of the ASCII names in the global mutex table to match 8257the 8258actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8259only. 8260Vegard Nossum. BZ 726 8261 8262Enhanced the AcpiGetObjectInfo interface to return the number of required 8263arguments if the object is a control method. Added this call to the 8264debugger 8265so the proper number of default arguments are passed to a method. This 8266prevents a warning when executing methods from AcpiExec. 8267 8268Added a check for an invalid handle in AcpiGetObjectInfo. Return 8269AE_BAD_PARAMETER if input handle is invalid. BZ 474 8270 8271Fixed an extraneous warning from exconfig.c on the 64-bit build. 8272 8273Example Code and Data Size: These are the sizes for the OS-independent 8274acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8275debug version of the code includes the debug output trace mechanism and 8276has a 8277much larger code and data size. 8278 8279 Previous Release: 8280 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8281 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8282 Current Release: 8283 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8284 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8285 82862) iASL Compiler/Disassembler and Tools: 8287 8288iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 8289resource descriptor names. 8290 8291iASL: Detect invalid ASCII characters in input (windows version). Removed 8292the 8293"-CF" flag from the flex compile, enables correct detection of non-ASCII 8294characters in the input. BZ 441 8295 8296iASL: Eliminate warning when result of LoadTable is not used. Eliminate 8297the 8298"result of operation not used" warning when the DDB handle returned from 8299LoadTable is not used. The warning is not needed. BZ 590 8300 8301AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 8302method 8303to 8304pass address of table to the AML. Added option to disable OpRegion 8305simulation 8306to allow creation of an OpRegion with a real address that was passed to 8307_CFG. 8308All of this allows testing of the Load and Unload operators from 8309AcpiExec. 8310 8311Debugger: update tables command for unloaded tables. Handle unloaded 8312tables 8313and use the standard table header output routine. 8314 8315---------------------------------------- 831609 June 2008. Summary of changes for version 20080609: 8317 83181) ACPI CA Core Subsystem: 8319 8320Implemented a workaround for reversed _PRT entries. A significant number 8321of 8322BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 8323change dynamically detects and repairs this problem. Provides 8324compatibility 8325with MS ACPI. BZ 6859 8326 8327Simplified the internal ACPI hardware interfaces to eliminate the locking 8328flag parameter from Register Read/Write. Added a new external interface, 8329AcpiGetRegisterUnlocked. 8330 8331Fixed a problem where the invocation of a GPE control method could hang. 8332This 8333was a regression introduced in 20080514. The new method argument count 8334validation mechanism can enter an infinite loop when a GPE method is 8335dispatched. Problem fixed by removing the obsolete code that passed GPE 8336block 8337information to the notify handler via the control method parameter 8338pointer. 8339 8340Fixed a problem where the _SST execution status was incorrectly returned 8341to 8342the caller of AcpiEnterSleepStatePrep. This was a regression introduced 8343in 834420080514. _SST is optional and a NOT_FOUND exception should never be 8345returned. BZ 716 8346 8347Fixed a problem where a deleted object could be accessed from within the 8348AML 8349parser. This was a regression introduced in version 20080123 as a fix for 8350the 8351Unload operator. Lin Ming. BZ 10669 8352 8353Cleaned up the debug operand dump mechanism. Eliminated unnecessary 8354operands 8355and eliminated the use of a negative index in a loop. Operands are now 8356displayed in the correct order, not backwards. This also fixes a 8357regression 8358introduced in 20080514 on 64-bit systems where the elimination of 8359ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 8360715 8361 8362Fixed a possible memory leak in EvPciConfigRegionSetup where the error 8363exit 8364path did not delete a locally allocated structure. 8365 8366Updated definitions for the DMAR and SRAT tables to synchronize with the 8367current specifications. Includes disassembler support. 8368 8369Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 8370loop termination value was used. Loop terminated on iteration early, 8371missing 8372one mutex. Linn Crosetto 8373 8374Example Code and Data Size: These are the sizes for the OS-independent 8375acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8376debug version of the code includes the debug output trace mechanism and 8377has a 8378much larger code and data size. 8379 8380 Previous Release: 8381 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8382 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8383 Current Release: 8384 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8385 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8386 83872) iASL Compiler/Disassembler and Tools: 8388 8389Disassembler: Implemented support for EisaId() within _CID objects. Now 8390disassemble integer _CID objects back to EisaId invocations, including 8391multiple integers within _CID packages. Includes single-step support for 8392debugger also. 8393 8394Disassembler: Added support for DMAR and SRAT table definition changes. 8395 8396---------------------------------------- 839714 May 2008. Summary of changes for version 20080514: 8398 83991) ACPI CA Core Subsystem: 8400 8401Fixed a problem where GPEs were enabled too early during the ACPICA 8402initialization. This could lead to "handler not installed" errors on some 8403machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8404This 8405ensures that all operation regions and devices throughout the namespace 8406have 8407been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8408 8409Implemented a change to the enter sleep code. Moved execution of the _GTS 8410method to just before setting sleep enable bit. The execution was moved 8411from 8412AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8413immediately before the SLP_EN bit is set, as per the ACPI specification. 8414Luming Yu, BZ 1653. 8415 8416Implemented a fix to disable unknown GPEs (2nd version). Now always 8417disable 8418the GPE, even if ACPICA thinks that that it is already disabled. It is 8419possible that the AML or some other code has enabled the GPE unbeknownst 8420to 8421the ACPICA code. 8422 8423Fixed a problem with the Field operator where zero-length fields would 8424return 8425an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8426ASL 8427field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8428 8429Implemented a fix for the Load operator, now load the table at the 8430namespace 8431root. This reverts a change introduced in version 20071019. The table is 8432now 8433loaded at the namespace root even though this goes against the ACPI 8434specification. This provides compatibility with other ACPI 8435implementations. 8436The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8437Ming. 8438 8439Fixed a problem where ACPICA would not Load() tables with unusual 8440signatures. 8441Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8442acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8443Therefore, signature validation is worthless. Apparently MS ACPI accepts 8444such 8445signatures, ACPICA must be compatible. BZ 10454. 8446 8447Fixed a possible negative array index in AcpiUtValidateException. Added 8448NULL 8449fields to the exception string arrays to eliminate a -1 subtraction on 8450the 8451SubStatus field. 8452 8453Updated the debug tracking macros to reduce overall code and data size. 8454Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8455instead of pointers to static strings. Jan Beulich and Bob Moore. 8456 8457Implemented argument count checking in control method invocation via 8458AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8459too 8460many. This applies only to extern programmatic control method execution, 8461not 8462method-to-method calls within the AML. Lin Ming. 8463 8464Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8465no 8466longer needed, especially with the removal of 16-bit support. It was 8467replaced 8468mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8469bit 8470on 847132/64-bit platforms is required. 8472 8473Added the C const qualifier for appropriate string constants -- mostly 8474MODULE_NAME and printf format strings. Jan Beulich. 8475 8476Example Code and Data Size: These are the sizes for the OS-independent 8477acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8478debug version of the code includes the debug output trace mechanism and 8479has a 8480much larger code and data size. 8481 8482 Previous Release: 8483 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8484 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8485 Current Release: 8486 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8487 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8488 84892) iASL Compiler/Disassembler and Tools: 8490 8491Implemented ACPI table revision ID validation in the disassembler. Zero 8492is 8493always invalid. For DSDTs, the ID controls the interpreter integer width. 84941 8495means 32-bit and this is unusual. 2 or greater is 64-bit. 8496 8497---------------------------------------- 849821 March 2008. Summary of changes for version 20080321: 8499 85001) ACPI CA Core Subsystem: 8501 8502Implemented an additional change to the GPE support in order to suppress 8503spurious or stray GPEs. The AcpiEvDisableGpe function will now 8504permanently 8505disable incoming GPEs that are neither enabled nor disabled -- meaning 8506that 8507the GPE is unknown to the system. This should prevent future interrupt 8508floods 8509from that GPE. BZ 6217 (Zhang Rui) 8510 8511Fixed a problem where NULL package elements were not returned to the 8512AcpiEvaluateObject interface correctly. The element was simply ignored 8513instead of returning a NULL ACPI_OBJECT package element, potentially 8514causing 8515a buffer overflow and/or confusing the caller who expected a fixed number 8516of 8517elements. BZ 10132 (Lin Ming, Bob Moore) 8518 8519Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 8520Dword, 8521Qword), Field, BankField, and IndexField operators when invoked from 8522inside 8523an executing control method. In this case, these operators created 8524namespace 8525nodes that were incorrectly left marked as permanent nodes instead of 8526temporary nodes. This could cause a problem if there is race condition 8527between an exiting control method and a running namespace walk. (Reported 8528by 8529Linn Crosetto) 8530 8531Fixed a problem where the CreateField and CreateXXXField operators would 8532incorrectly allow duplicate names (the name of the field) with no 8533exception 8534generated. 8535 8536Implemented several changes for Notify handling. Added support for new 8537Notify 8538values (ACPI 2.0+) and improved the Notify debug output. Notify on 8539PowerResource objects is no longer allowed, as per the ACPI 8540specification. 8541(Bob Moore, Zhang Rui) 8542 8543All Reference Objects returned via the AcpiEvaluateObject interface are 8544now 8545marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 8546for 8547NULL objects - either NULL package elements or unresolved named 8548references. 8549 8550Fixed a problem where an extraneous debug message was produced for 8551package 8552objects (when debugging enabled). The message "Package List length larger 8553than NumElements count" is now produced in the correct case, and is now 8554an 8555error message rather than a debug message. Added a debug message for the 8556opposite case, where NumElements is larger than the Package List (the 8557package 8558will be padded out with NULL elements as per the ACPI spec.) 8559 8560Implemented several improvements for the output of the ASL "Debug" object 8561to 8562clarify and keep all data for a given object on one output line. 8563 8564Fixed two size calculation issues with the variable-length Start 8565Dependent 8566resource descriptor. 8567 8568Example Code and Data Size: These are the sizes for the OS-independent 8569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8570debug version of the code includes the debug output trace mechanism and 8571has 8572a much larger code and data size. 8573 8574 Previous Release: 8575 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8576 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8577 Current Release: 8578 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8579 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8580 85812) iASL Compiler/Disassembler and Tools: 8582 8583Fixed a problem with the use of the Switch operator where execution of 8584the 8585containing method by multiple concurrent threads could cause an 8586AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 8587actual Switch opcode, it must be simulated with local named temporary 8588variables and if/else pairs. The solution chosen was to mark any method 8589that 8590uses Switch as Serialized, thus preventing multiple thread entries. BZ 8591469. 8592 8593---------------------------------------- 859413 February 2008. Summary of changes for version 20080213: 8595 85961) ACPI CA Core Subsystem: 8597 8598Implemented another MS compatibility design change for GPE/Notify 8599handling. 8600GPEs are now cleared/enabled asynchronously to allow all pending notifies 8601to 8602complete first. It is expected that the OSL will queue the enable request 8603behind all pending notify requests (may require changes to the local host 8604OSL 8605in AcpiOsExecute). Alexey Starikovskiy. 8606 8607Fixed a problem where buffer and package objects passed as arguments to a 8608control method via the external AcpiEvaluateObject interface could cause 8609an 8610AE_AML_INTERNAL exception depending on the order and type of operators 8611executed by the target control method. 8612 8613Fixed a problem where resource descriptor size optimization could cause a 8614problem when a _CRS resource template is passed to a _SRS method. The 8615_SRS 8616resource template must use the same descriptors (with the same size) as 8617returned from _CRS. This change affects the following resource 8618descriptors: 8619IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 86209487) 8621 8622Fixed a problem where a CopyObject to RegionField, BankField, and 8623IndexField 8624objects did not perform an implicit conversion as it should. These types 8625must 8626retain their initial type permanently as per the ACPI specification. 8627However, 8628a CopyObject to all other object types should not perform an implicit 8629conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 8630 8631Fixed a problem with the AcpiGetDevices interface where the mechanism to 8632match device CIDs did not examine the entire list of available CIDs, but 8633instead aborted on the first non-matching CID. Andrew Patterson. 8634 8635Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 8636was 8637inadvertently changed to return a 16-bit value instead of a 32-bit value, 8638truncating the upper dword of a 64-bit value. This macro is only used to 8639display debug output, so no incorrect calculations were made. Also, 8640reimplemented the macro so that a 64-bit shift is not performed by 8641inefficient compilers. 8642 8643Added missing va_end statements that should correspond with each va_start 8644statement. 8645 8646Example Code and Data Size: These are the sizes for the OS-independent 8647acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8648debug version of the code includes the debug output trace mechanism and 8649has 8650a much larger code and data size. 8651 8652 Previous Release: 8653 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8654 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8655 Current Release: 8656 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8657 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8658 86592) iASL Compiler/Disassembler and Tools: 8660 8661Implemented full disassembler support for the following new ACPI tables: 8662BERT, EINJ, and ERST. Implemented partial disassembler support for the 8663complicated HEST table. These tables support the Windows Hardware Error 8664Architecture (WHEA). 8665 8666---------------------------------------- 866723 January 2008. Summary of changes for version 20080123: 8668 86691) ACPI CA Core Subsystem: 8670 8671Added the 2008 copyright to all module headers and signons. This affects 8672virtually every file in the ACPICA core subsystem, the iASL compiler, and 8673the tools/utilities. 8674 8675Fixed a problem with the SizeOf operator when used with Package and 8676Buffer 8677objects. These objects have deferred execution for some arguments, and 8678the 8679execution is now completed before the SizeOf is executed. This problem 8680caused 8681unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 8682BZ 86839558 8684 8685Implemented an enhancement to the interpreter "slack mode". In the 8686absence 8687of 8688an explicit return or an implicitly returned object from the last 8689executed 8690opcode, a control method will now implicitly return an integer of value 0 8691for 8692Microsoft compatibility. (Lin Ming) BZ 392 8693 8694Fixed a problem with the Load operator where an exception was not 8695returned 8696in 8697the case where the table is already loaded. (Lin Ming) BZ 463 8698 8699Implemented support for the use of DDBHandles as an Indexed Reference, as 8700per 8701the ACPI spec. (Lin Ming) BZ 486 8702 8703Implemented support for UserTerm (Method invocation) for the Unload 8704operator 8705as per the ACPI spec. (Lin Ming) BZ 580 8706 8707Fixed a problem with the LoadTable operator where the OemId and 8708OemTableId 8709input strings could cause unexpected failures if they were shorter than 8710the 8711maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 8712 8713Implemented support for UserTerm (Method invocation) for the Unload 8714operator 8715as per the ACPI spec. (Lin Ming) BZ 580 8716 8717Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 8718HEST, 8719IBFT, UEFI, WDAT. Disassembler support is forthcoming. 8720 8721Example Code and Data Size: These are the sizes for the OS-independent 8722acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8723debug version of the code includes the debug output trace mechanism and 8724has 8725a much larger code and data size. 8726 8727 Previous Release: 8728 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8729 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8730 Current Release: 8731 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8732 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8733 87342) iASL Compiler/Disassembler and Tools: 8735 8736Implemented support in the disassembler for checksum validation on 8737incoming 8738binary DSDTs and SSDTs. If incorrect, a message is displayed within the 8739table 8740header dump at the start of the disassembly. 8741 8742Implemented additional debugging information in the namespace listing 8743file 8744created during compilation. In addition to the namespace hierarchy, the 8745full 8746pathname to each namespace object is displayed. 8747 8748Fixed a problem with the disassembler where invalid ACPI tables could 8749cause 8750faults or infinite loops. 8751 8752Fixed an unexpected parse error when using the optional "parameter types" 8753list in a control method declaration. (Lin Ming) BZ 397 8754 8755Fixed a problem where two External declarations with the same name did 8756not 8757cause an error (Lin Ming) BZ 509 8758 8759Implemented support for full TermArgs (adding Argx, Localx and method 8760invocation) for the ParameterData parameter to the LoadTable operator. 8761(Lin 8762Ming) BZ 583,587 8763 8764---------------------------------------- 876519 December 2007. Summary of changes for version 20071219: 8766 87671) ACPI CA Core Subsystem: 8768 8769Implemented full support for deferred execution for the TermArg string 8770arguments for DataTableRegion. This enables forward references and full 8771operand resolution for the three string arguments. Similar to 8772OperationRegion 8773deferred argument execution.) Lin Ming. BZ 430 8774 8775Implemented full argument resolution support for the BankValue argument 8776to 8777BankField. Previously, only constants were supported, now any TermArg may 8778be 8779used. Lin Ming BZ 387, 393 8780 8781Fixed a problem with AcpiGetDevices where the search of a branch of the 8782device tree could be terminated prematurely. In accordance with the ACPI 8783specification, the search down the current branch is terminated if a 8784device 8785is both not present and not functional (instead of just not present.) 8786Yakui 8787Zhao. 8788 8789Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 8790if 8791the underlying AML code changed the GPE enable registers. Now, any 8792unknown 8793incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 8794disabled 8795instead of simply ignored. Rui Zhang. 8796 8797Fixed a problem with Index Fields where the Index register was 8798incorrectly 8799limited to a maximum of 32 bits. Now any size may be used. 8800 8801Fixed a couple memory leaks associated with "implicit return" objects 8802when 8803the AML Interpreter slack mode is enabled. Lin Ming BZ 349 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: 79.0K Code, 17.2K Data, 96.2K Total 8813 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8814 Current Release: 8815 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8816 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8817 8818---------------------------------------- 881914 November 2007. Summary of changes for version 20071114: 8820 88211) ACPI CA Core Subsystem: 8822 8823Implemented event counters for each of the Fixed Events, the ACPI SCI 8824(interrupt) itself, and control methods executed. Named 8825AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 8826These 8827should be useful for debugging and statistics. 8828 8829Implemented a new external interface, AcpiGetStatistics, to retrieve the 8830contents of the various event counters. Returns the current values for 8831AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 8832AcpiMethodCount. The interface can be expanded in the future if new 8833counters 8834are added. Device drivers should use this interface rather than access 8835the 8836counters directly. 8837 8838Fixed a problem with the FromBCD and ToBCD operators. With some 8839compilers, 8840the ShortDivide function worked incorrectly, causing problems with the 8841BCD 8842functions with large input values. A truncation from 64-bit to 32-bit 8843inadvertently occurred. Internal BZ 435. Lin Ming 8844 8845Fixed a problem with Index references passed as method arguments. 8846References 8847passed as arguments to control methods were dereferenced immediately 8848(before 8849control was passed to the called method). The references are now 8850correctly 8851passed directly to the called method. BZ 5389. Lin Ming 8852 8853Fixed a problem with CopyObject used in conjunction with the Index 8854operator. 8855The reference was incorrectly dereferenced before the copy. The reference 8856is 8857now correctly copied. BZ 5391. Lin Ming 8858 8859Fixed a problem with Control Method references within Package objects. 8860These 8861references are now correctly generated. This completes the package 8862construction overhaul that began in version 20071019. 8863 8864Example Code and Data Size: These are the sizes for the OS-independent 8865acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8866debug version of the code includes the debug output trace mechanism and 8867has 8868a much larger code and data size. 8869 8870 Previous Release: 8871 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8872 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8873 Current Release: 8874 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8875 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8876 8877 88782) iASL Compiler/Disassembler and Tools: 8879 8880The AcpiExec utility now installs handlers for all of the predefined 8881Operation Region types. New types supported are: PCI_Config, CMOS, and 8882PCIBARTarget. 8883 8884Fixed a problem with the 64-bit version of AcpiExec where the extended 8885(64- 8886bit) address fields for the DSDT and FACS within the FADT were not being 8887used, causing truncation of the upper 32-bits of these addresses. Lin 8888Ming 8889and Bob Moore 8890 8891---------------------------------------- 889219 October 2007. Summary of changes for version 20071019: 8893 88941) ACPI CA Core Subsystem: 8895 8896Fixed a problem with the Alias operator when the target of the alias is a 8897named ASL operator that opens a new scope -- Scope, Device, 8898PowerResource, 8899Processor, and ThermalZone. In these cases, any children of the original 8900operator could not be accessed via the alias, potentially causing 8901unexpected 8902AE_NOT_FOUND exceptions. (BZ 9067) 8903 8904Fixed a problem with the Package operator where all named references were 8905created as object references and left otherwise unresolved. According to 8906the 8907ACPI specification, a Package can only contain Data Objects or references 8908to 8909control methods. The implication is that named references to Data Objects 8910(Integer, Buffer, String, Package, BufferField, Field) should be resolved 8911immediately upon package creation. This is the approach taken with this 8912change. References to all other named objects (Methods, Devices, Scopes, 8913etc.) are all now properly created as reference objects. (BZ 5328) 8914 8915Reverted a change to Notify handling that was introduced in version 891620070508. This version changed the Notify handling from asynchronous to 8917fully synchronous (Device driver Notify handling with respect to the 8918Notify 8919ASL operator). It was found that this change caused more problems than it 8920solved and was removed by most users. 8921 8922Fixed a problem with the Increment and Decrement operators where the type 8923of 8924the target object could be unexpectedly and incorrectly changed. (BZ 353) 8925Lin Ming. 8926 8927Fixed a problem with the Load and LoadTable operators where the table 8928location within the namespace was ignored. Instead, the table was always 8929loaded into the root or current scope. Lin Ming. 8930 8931Fixed a problem with the Load operator when loading a table from a buffer 8932object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 8933 8934Fixed a problem with the Debug object where a store of a DdbHandle 8935reference 8936object to the Debug object could cause a fault. 8937 8938Added a table checksum verification for the Load operator, in the case 8939where 8940the load is from a buffer. (BZ 578). 8941 8942Implemented additional parameter validation for the LoadTable operator. 8943The 8944length of the input strings SignatureString, OemIdString, and OemTableId 8945are 8946now checked for maximum lengths. (BZ 582) Lin Ming. 8947 8948Example Code and Data Size: These are the sizes for the OS-independent 8949acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8950debug version of the code includes the debug output trace mechanism and 8951has 8952a much larger code and data size. 8953 8954 Previous Release: 8955 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8956 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8957 Current Release: 8958 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8959 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8960 8961 89622) iASL Compiler/Disassembler: 8963 8964Fixed a problem where if a single file was specified and the file did not 8965exist, no error message was emitted. (Introduced with wildcard support in 8966version 20070917.) 8967 8968---------------------------------------- 896919 September 2007. Summary of changes for version 20070919: 8970 89711) ACPI CA Core Subsystem: 8972 8973Designed and implemented new external interfaces to install and remove 8974handlers for ACPI table-related events. Current events that are defined 8975are 8976LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 8977they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 8978AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 8979 8980Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 8981(acpi_serialized option on Linux) could cause some systems to hang during 8982initialization. (Bob Moore) BZ 8171 8983 8984Fixed a problem where objects of certain types (Device, ThermalZone, 8985Processor, PowerResource) can be not found if they are declared and 8986referenced from within the same control method (Lin Ming) BZ 341 8987 8988Example Code and Data Size: These are the sizes for the OS-independent 8989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8990debug version of the code includes the debug output trace mechanism and 8991has 8992a much larger code and data size. 8993 8994 Previous Release: 8995 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8996 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8997 Current Release: 8998 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8999 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9000 9001 90022) iASL Compiler/Disassembler: 9003 9004Implemented support to allow multiple files to be compiled/disassembled 9005in 9006a 9007single invocation. This includes command line wildcard support for both 9008the 9009Windows and Unix versions of the compiler. This feature simplifies the 9010disassembly and compilation of multiple ACPI tables in a single 9011directory. 9012 9013---------------------------------------- 901408 May 2007. Summary of changes for version 20070508: 9015 90161) ACPI CA Core Subsystem: 9017 9018Implemented a Microsoft compatibility design change for the handling of 9019the 9020Notify AML operator. Previously, notify handlers were dispatched and 9021executed completely asynchronously in a deferred thread. The new design 9022still executes the notify handlers in a different thread, but the 9023original 9024thread that executed the Notify() now waits at a synchronization point 9025for 9026the notify handler to complete. Some machines depend on a synchronous 9027Notify 9028operator in order to operate correctly. 9029 9030Implemented support to allow Package objects to be passed as method 9031arguments to the external AcpiEvaluateObject interface. Previously, this 9032would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9033implemented since there were no reserved control methods that required it 9034until recently. 9035 9036Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9037that 9038contained invalid non-zero values in reserved fields could cause later 9039failures because these fields have meaning in later revisions of the 9040FADT. 9041For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9042fields 9043are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9044 9045Fixed a problem where the Global Lock handle was not properly updated if 9046a 9047thread that acquired the Global Lock via executing AML code then 9048attempted 9049to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9050Joe 9051Liu. 9052 9053Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9054could be corrupted if the interrupt being removed was at the head of the 9055list. Reported by Linn Crosetto. 9056 9057Example Code and Data Size: These are the sizes for the OS-independent 9058acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9059debug version of the code includes the debug output trace mechanism and 9060has 9061a much larger code and data size. 9062 9063 Previous Release: 9064 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9065 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9066 Current Release: 9067 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9068 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9069 9070---------------------------------------- 907120 March 2007. Summary of changes for version 20070320: 9072 90731) ACPI CA Core Subsystem: 9074 9075Implemented a change to the order of interpretation and evaluation of AML 9076operand objects within the AML interpreter. The interpreter now evaluates 9077operands in the order that they appear in the AML stream (and the 9078corresponding ASL code), instead of in the reverse order (after the 9079entire 9080operand list has been parsed). The previous behavior caused several 9081subtle 9082incompatibilities with the Microsoft AML interpreter as well as being 9083somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9084 9085Implemented a change to the ACPI Global Lock support. All interfaces to 9086the 9087global lock now allow the same thread to acquire the lock multiple times. 9088This affects the AcpiAcquireGlobalLock external interface to the global 9089lock 9090as well as the internal use of the global lock to support AML fields -- a 9091control method that is holding the global lock can now simultaneously 9092access 9093AML fields that require global lock protection. Previously, in both 9094cases, 9095this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9096to 9097AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9098Controller. There is no change to the behavior of the AML Acquire 9099operator, 9100as this can already be used to acquire a mutex multiple times by the same 9101thread. BZ 8066. With assistance from Alexey Starikovskiy. 9102 9103Fixed a problem where invalid objects could be referenced in the AML 9104Interpreter after error conditions. During operand evaluation, ensure 9105that 9106the internal "Return Object" field is cleared on error and only valid 9107pointers are stored there. Caused occasional access to deleted objects 9108that 9109resulted in "large reference count" warning messages. Valery Podrezov. 9110 9111Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9112on 9113deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9114Podrezov. 9115 9116Fixed an internal problem with the handling of result objects on the 9117interpreter result stack. BZ 7872. Valery Podrezov. 9118 9119Removed obsolete code that handled the case where AML_NAME_OP is the 9120target 9121of a reference (Reference.Opcode). This code was no longer necessary. BZ 91227874. Valery Podrezov. 9123 9124Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9125was 9126a 9127remnant from the previously discontinued 16-bit support. 9128 9129Example Code and Data Size: These are the sizes for the OS-independent 9130acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9131debug version of the code includes the debug output trace mechanism and 9132has 9133a much larger code and data size. 9134 9135 Previous Release: 9136 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9137 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9138 Current Release: 9139 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9140 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9141 9142---------------------------------------- 914326 January 2007. Summary of changes for version 20070126: 9144 91451) ACPI CA Core Subsystem: 9146 9147Added the 2007 copyright to all module headers and signons. This affects 9148virtually every file in the ACPICA core subsystem, the iASL compiler, and 9149the utilities. 9150 9151Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9152during a table load. A bad pointer was passed in the case where the DSDT 9153is 9154overridden, causing a fault in this case. 9155 9156Example Code and Data Size: These are the sizes for the OS-independent 9157acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9158debug version of the code includes the debug output trace mechanism and 9159has 9160a much larger code and data size. 9161 9162 Previous Release: 9163 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9164 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9165 Current Release: 9166 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9167 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9168 9169---------------------------------------- 917015 December 2006. Summary of changes for version 20061215: 9171 91721) ACPI CA Core Subsystem: 9173 9174Support for 16-bit ACPICA has been completely removed since it is no 9175longer 9176necessary and it clutters the code. All 16-bit macros, types, and 9177conditional compiles have been removed, cleaning up and simplifying the 9178code 9179across the entire subsystem. DOS support is no longer needed since the 9180bootable Linux firmware kit is now available. 9181 9182The handler for the Global Lock is now removed during AcpiTerminate to 9183enable a clean subsystem restart, via the implementation of the 9184AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9185HP) 9186 9187Implemented enhancements to the multithreading support within the 9188debugger 9189to enable improved multithreading debugging and evaluation of the 9190subsystem. 9191(Valery Podrezov) 9192 9193Debugger: Enhanced the Statistics/Memory command to emit the total 9194(maximum) 9195memory used during the execution, as well as the maximum memory consumed 9196by 9197each of the various object types. (Valery Podrezov) 9198 9199Example Code and Data Size: These are the sizes for the OS-independent 9200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9201debug version of the code includes the debug output trace mechanism and 9202has 9203a much larger code and data size. 9204 9205 Previous Release: 9206 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9207 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9208 Current Release: 9209 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9210 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9211 9212 92132) iASL Compiler/Disassembler and Tools: 9214 9215AcpiExec: Implemented a new option (-m) to display full memory use 9216statistics upon subsystem/program termination. (Valery Podrezov) 9217 9218---------------------------------------- 921909 November 2006. Summary of changes for version 20061109: 9220 92211) ACPI CA Core Subsystem: 9222 9223Optimized the Load ASL operator in the case where the source operand is 9224an 9225operation region. Simply map the operation region memory, instead of 9226performing a bytewise read. (Region must be of type SystemMemory, see 9227below.) 9228 9229Fixed the Load ASL operator for the case where the source operand is a 9230region field. A buffer object is also allowed as the source operand. BZ 9231480 9232 9233Fixed a problem where the Load ASL operator allowed the source operand to 9234be 9235an operation region of any type. It is now restricted to regions of type 9236SystemMemory, as per the ACPI specification. BZ 481 9237 9238Additional cleanup and optimizations for the new Table Manager code. 9239 9240AcpiEnable will now fail if all of the required ACPI tables are not 9241loaded 9242(FADT, FACS, DSDT). BZ 477 9243 9244Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9245this 9246header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9247manually optimized to be aligned and will not work if it is byte-packed. 9248 9249Example Code and Data Size: These are the sizes for the OS-independent 9250acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9251debug version of the code includes the debug output trace mechanism and 9252has 9253a much larger code and data size. 9254 9255 Previous Release: 9256 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9257 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9258 Current Release: 9259 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9260 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9261 9262 92632) iASL Compiler/Disassembler and Tools: 9264 9265Fixed a problem where the presence of the _OSI predefined control method 9266within complex expressions could cause an internal compiler error. 9267 9268AcpiExec: Implemented full region support for multiple address spaces. 9269SpaceId is now part of the REGION object. BZ 429 9270 9271---------------------------------------- 927211 October 2006. Summary of changes for version 20061011: 9273 92741) ACPI CA Core Subsystem: 9275 9276Completed an AML interpreter performance enhancement for control method 9277execution. Previously a 2-pass parse/execution, control methods are now 9278completely parsed and executed in a single pass. This improves overall 9279interpreter performance by ~25%, reduces code size, and reduces CPU stack 9280use. (Valery Podrezov + interpreter changes in version 20051202 that 9281eliminated namespace loading during the pass one parse.) 9282 9283Implemented _CID support for PCI Root Bridge detection. If the _HID does 9284not 9285match the predefined PCI Root Bridge IDs, the _CID list (if present) is 9286now 9287obtained and also checked for an ID match. 9288 9289Implemented additional support for the PCI _ADR execution: upsearch until 9290a 9291device scope is found before executing _ADR. This allows PCI_Config 9292operation regions to be declared locally within control methods 9293underneath 9294PCI device objects. 9295 9296Fixed a problem with a possible race condition between threads executing 9297AcpiWalkNamespace and the AML interpreter. This condition was removed by 9298modifying AcpiWalkNamespace to (by default) ignore all temporary 9299namespace 9300entries created during any concurrent control method execution. An 9301additional namespace race condition is known to exist between 9302AcpiWalkNamespace and the Load/Unload ASL operators and is still under 9303investigation. 9304 9305Restructured the AML ParseLoop function, breaking it into several 9306subfunctions in order to reduce CPU stack use and improve 9307maintainability. 9308(Mikhail Kouzmich) 9309 9310AcpiGetHandle: Fix for parameter validation to detect invalid 9311combinations 9312of prefix handle and pathname. BZ 478 9313 9314Example Code and Data Size: These are the sizes for the OS-independent 9315acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9316debug version of the code includes the debug output trace mechanism and 9317has 9318a much larger code and data size. 9319 9320 Previous Release: 9321 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9322 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9323 Current Release: 9324 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9325 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9326 93272) iASL Compiler/Disassembler and Tools: 9328 9329Ported the -g option (get local ACPI tables) to the new ACPICA Table 9330Manager 9331to restore original behavior. 9332 9333---------------------------------------- 933427 September 2006. Summary of changes for version 20060927: 9335 93361) ACPI CA Core Subsystem: 9337 9338Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 9339These functions now use a spinlock for mutual exclusion and the interrupt 9340level indication flag is not needed. 9341 9342Fixed a problem with the Global Lock where the lock could appear to be 9343obtained before it is actually obtained. The global lock semaphore was 9344inadvertently created with one unit instead of zero units. (BZ 464) 9345Fiodor 9346Suietov. 9347 9348Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 9349during 9350a read from a buffer or region field. (BZ 458) Fiodor Suietov. 9351 9352Example Code and Data Size: These are the sizes for the OS-independent 9353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9354debug version of the code includes the debug output trace mechanism and 9355has 9356a much larger code and data size. 9357 9358 Previous Release: 9359 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9360 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9361 Current Release: 9362 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9363 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9364 9365 93662) iASL Compiler/Disassembler and Tools: 9367 9368Fixed a compilation problem with the pre-defined Resource Descriptor 9369field 9370names where an "object does not exist" error could be incorrectly 9371generated 9372if the parent ResourceTemplate pathname places the template within a 9373different namespace scope than the current scope. (BZ 7212) 9374 9375Fixed a problem where the compiler could hang after syntax errors 9376detected 9377in an ElseIf construct. (BZ 453) 9378 9379Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 9380operator. An incorrect output filename was produced when this parameter 9381was 9382a null string (""). Now, the original input filename is used as the AML 9383output filename, with an ".aml" extension. 9384 9385Implemented a generic batch command mode for the AcpiExec utility 9386(execute 9387any AML debugger command) (Valery Podrezov). 9388 9389---------------------------------------- 939012 September 2006. Summary of changes for version 20060912: 9391 93921) ACPI CA Core Subsystem: 9393 9394Enhanced the implementation of the "serialized mode" of the interpreter 9395(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9396specified, instead of creating a serialization semaphore per control 9397method, 9398the interpreter lock is simply no longer released before a blocking 9399operation during control method execution. This effectively makes the AML 9400Interpreter single-threaded. The overhead of a semaphore per-method is 9401eliminated. 9402 9403Fixed a regression where an error was no longer emitted if a control 9404method 9405attempts to create 2 objects of the same name. This once again returns 9406AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9407that 9408will dynamically serialize the control method to possible prevent future 9409errors. (BZ 440) 9410 9411Integrated a fix for a problem with PCI Express HID detection in the PCI 9412Config Space setup procedure. (BZ 7145) 9413 9414Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9415AcpiHwInitialize function - the FADT registers are now validated when the 9416table is loaded. 9417 9418Added two new warnings during FADT verification - 1) if the FADT is 9419larger 9420than the largest known FADT version, and 2) if there is a mismatch 9421between 9422a 942332-bit block address and the 64-bit X counterpart (when both are non- 9424zero.) 9425 9426Example Code and Data Size: These are the sizes for the OS-independent 9427acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9428debug version of the code includes the debug output trace mechanism and 9429has 9430a much larger code and data size. 9431 9432 Previous Release: 9433 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9434 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9435 Current Release: 9436 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9437 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9438 9439 94402) iASL Compiler/Disassembler and Tools: 9441 9442Fixed a problem with the implementation of the Switch() operator where 9443the 9444temporary variable was declared too close to the actual Switch, instead 9445of 9446at method level. This could cause a problem if the Switch() operator is 9447within a while loop, causing an error on the second iteration. (BZ 460) 9448 9449Disassembler - fix for error emitted for unknown type for target of scope 9450operator. Now, ignore it and continue. 9451 9452Disassembly of an FADT now verifies the input FADT and reports any errors 9453found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9454 9455Disassembly of raw data buffers with byte initialization data now 9456prefixes 9457each output line with the current buffer offset. 9458 9459Disassembly of ASF! table now includes all variable-length data fields at 9460the end of some of the subtables. 9461 9462The disassembler now emits a comment if a buffer appears to be a 9463ResourceTemplate, but cannot be disassembled as such because the EndTag 9464does 9465not appear at the very end of the buffer. 9466 9467AcpiExec - Added the "-t" command line option to enable the serialized 9468mode 9469of the AML interpreter. 9470 9471---------------------------------------- 947231 August 2006. Summary of changes for version 20060831: 9473 94741) ACPI CA Core Subsystem: 9475 9476Miscellaneous fixes for the Table Manager: 9477- Correctly initialize internal common FADT for all 64-bit "X" fields 9478- Fixed a couple table mapping issues during table load 9479- Fixed a couple alignment issues for IA64 9480- Initialize input array to zero in AcpiInitializeTables 9481- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9482AcpiGetTableByIndex 9483 9484Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9485now 9486immediately disabled to prevent the waking GPE from firing again and to 9487prevent other wake GPEs from interrupting the wake process. 9488 9489Added the AcpiGpeCount global that tracks the number of processed GPEs, 9490to 9491be used for debugging systems with a large number of ACPI interrupts. 9492 9493Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 9494both the ACPICA headers and the disassembler. 9495 9496Example Code and Data Size: These are the sizes for the OS-independent 9497acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9498debug version of the code includes the debug output trace mechanism and 9499has 9500a much larger code and data size. 9501 9502 Previous Release: 9503 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9504 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9505 Current Release: 9506 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9507 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9508 9509 95102) iASL Compiler/Disassembler and Tools: 9511 9512Disassembler support for the DMAR ACPI table. 9513 9514---------------------------------------- 951523 August 2006. Summary of changes for version 20060823: 9516 95171) ACPI CA Core Subsystem: 9518 9519The Table Manager component has been completely redesigned and 9520reimplemented. The new design is much simpler, and reduces the overall 9521code 9522and data size of the kernel-resident ACPICA by approximately 5%. Also, it 9523is 9524now possible to obtain the ACPI tables very early during kernel 9525initialization, even before dynamic memory management is initialized. 9526(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 9527 9528Obsolete ACPICA interfaces: 9529 9530- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 9531init 9532time). 9533- AcpiLoadTable: Not needed. 9534- AcpiUnloadTable: Not needed. 9535 9536New ACPICA interfaces: 9537 9538- AcpiInitializeTables: Must be called before the table manager can be 9539used. 9540- AcpiReallocateRootTable: Used to transfer the root table to dynamically 9541allocated memory after it becomes available. 9542- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 9543tables 9544in the RSDT/XSDT. 9545 9546Other ACPICA changes: 9547 9548- AcpiGetTableHeader returns the actual mapped table header, not a copy. 9549Use 9550AcpiOsUnmapMemory to free this mapping. 9551- AcpiGetTable returns the actual mapped table. The mapping is managed 9552internally and must not be deleted by the caller. Use of this interface 9553causes no additional dynamic memory allocation. 9554- AcpiFindRootPointer: Support for physical addressing has been 9555eliminated, 9556it appeared to be unused. 9557- The interface to AcpiOsMapMemory has changed to be consistent with the 9558other allocation interfaces. 9559- The interface to AcpiOsGetRootPointer has changed to eliminate 9560unnecessary 9561parameters. 9562- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 956364- 9564bit platforms. Was previously 64 bits on all platforms. 9565- The interface to the ACPI Global Lock acquire/release macros have 9566changed 9567slightly since ACPICA no longer keeps a local copy of the FACS with a 9568constructed pointer to the actual global lock. 9569 9570Porting to the new table manager: 9571 9572- AcpiInitializeTables: Must be called once, and can be called anytime 9573during the OS initialization process. It allows the host to specify an 9574area 9575of memory to be used to store the internal version of the RSDT/XSDT (root 9576table). This allows the host to access ACPI tables before memory 9577management 9578is initialized and running. 9579- AcpiReallocateRootTable: Can be called after memory management is 9580running 9581to copy the root table to a dynamically allocated array, freeing up the 9582scratch memory specified in the call to AcpiInitializeTables. 9583- AcpiSubsystemInitialize: This existing interface is independent of the 9584Table Manager, and does not have to be called before the Table Manager 9585can 9586be used, it only must be called before the rest of ACPICA can be used. 9587- ACPI Tables: Some changes have been made to the names and structure of 9588the 9589actbl.h and actbl1.h header files and may require changes to existing 9590code. 9591For example, bitfields have been completely removed because of their lack 9592of 9593portability across C compilers. 9594- Update interfaces to the Global Lock acquire/release macros if local 9595versions are used. (see acwin.h) 9596 9597Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 9598 9599New files: tbfind.c 9600 9601Example Code and Data Size: These are the sizes for the OS-independent 9602acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9603debug version of the code includes the debug output trace mechanism and 9604has 9605a much larger code and data size. 9606 9607 Previous Release: 9608 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9609 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9610 Current Release: 9611 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9612 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9613 9614 96152) iASL Compiler/Disassembler and Tools: 9616 9617No changes for this release. 9618 9619---------------------------------------- 962021 July 2006. Summary of changes for version 20060721: 9621 96221) ACPI CA Core Subsystem: 9623 9624The full source code for the ASL test suite used to validate the iASL 9625compiler and the ACPICA core subsystem is being released with the ACPICA 9626source for the first time. The source is contained in a separate package 9627and 9628consists of over 1100 files that exercise all ASL/AML operators. The 9629package 9630should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 9631Fiodor 9632Suietov) 9633 9634Completed a new design and implementation for support of the ACPI Global 9635Lock. On the OS side, the global lock is now treated as a standard AML 9636mutex. Previously, multiple OS threads could "acquire" the global lock 9637simultaneously. However, this could cause the BIOS to be starved out of 9638the 9639lock - especially in cases such as the Embedded Controller driver where 9640there is a tight coupling between the OS and the BIOS. 9641 9642Implemented an optimization for the ACPI Global Lock interrupt mechanism. 9643The Global Lock interrupt handler no longer queues the execution of a 9644separate thread to signal the global lock semaphore. Instead, the 9645semaphore 9646is signaled directly from the interrupt handler. 9647 9648Implemented support within the AML interpreter for package objects that 9649contain a larger AML length (package list length) than the package 9650element 9651count. In this case, the length of the package is truncated to match the 9652package element count. Some BIOS code apparently modifies the package 9653length 9654on the fly, and this change supports this behavior. Provides 9655compatibility 9656with the MS AML interpreter. (With assistance from Fiodor Suietov) 9657 9658Implemented a temporary fix for the BankValue parameter of a Bank Field 9659to 9660support all constant values, now including the Zero and One opcodes. 9661Evaluation of this parameter must eventually be converted to a full 9662TermArg 9663evaluation. A not-implemented error is now returned (temporarily) for 9664non- 9665constant values for this parameter. 9666 9667Fixed problem reports (Fiodor Suietov) integrated: 9668- Fix for premature object deletion after CopyObject on Operation Region 9669(BZ 9670350) 9671 9672Example Code and Data Size: These are the sizes for the OS-independent 9673acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9674debug version of the code includes the debug output trace mechanism and 9675has 9676a much larger code and data size. 9677 9678 Previous Release: 9679 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 9680 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 9681 Current Release: 9682 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9683 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9684 9685 96862) iASL Compiler/Disassembler and Tools: 9687 9688No changes for this release. 9689 9690---------------------------------------- 969107 July 2006. Summary of changes for version 20060707: 9692 96931) ACPI CA Core Subsystem: 9694 9695Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 9696that do not allow the initialization of address pointers within packed 9697structures - even though the hardware itself may support misaligned 9698transfers. Some of the debug data structures are packed by default to 9699minimize size. 9700 9701Added an error message for the case where AcpiOsGetThreadId() returns 9702zero. 9703A non-zero value is required by the core ACPICA code to ensure the proper 9704operation of AML mutexes and recursive control methods. 9705 9706The DSDT is now the only ACPI table that determines whether the AML 9707interpreter is in 32-bit or 64-bit mode. Not really a functional change, 9708but 9709the hooks for per-table 32/64 switching have been removed from the code. 9710A 9711clarification to the ACPI specification is forthcoming in ACPI 3.0B. 9712 9713Fixed a possible leak of an OwnerID in the error path of 9714AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 9715deletion to a single place in AcpiTbUninstallTable to correct possible 9716leaks 9717when using the AcpiTbDeleteTablesByType interface (with assistance from 9718Lance Ortiz.) 9719 9720Fixed a problem with Serialized control methods where the semaphore 9721associated with the method could be over-signaled after multiple method 9722invocations. 9723 9724Fixed two issues with the locking of the internal namespace data 9725structure. 9726Both the Unload() operator and AcpiUnloadTable interface now lock the 9727namespace during the namespace deletion associated with the table unload 9728(with assistance from Linn Crosetto.) 9729 9730Fixed problem reports (Valery Podrezov) integrated: 9731- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 9732 9733Fixed problem reports (Fiodor Suietov) integrated: 9734- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 9735- On Address Space handler deletion, needless deactivation call (BZ 374) 9736- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 9737375) 9738- Possible memory leak, Notify sub-objects of Processor, Power, 9739ThermalZone 9740(BZ 376) 9741- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 9742- Minimum Length of RSDT should be validated (BZ 379) 9743- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 9744Handler (BZ (380) 9745- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 9746loaded 9747(BZ 381) 9748 9749Example Code and Data Size: These are the sizes for the OS-independent 9750acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9751debug version of the code includes the debug output trace mechanism and 9752has 9753a much larger code and data size. 9754 9755 Previous Release: 9756 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9757 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9758 Current Release: 9759 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9760 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9761 9762 97632) iASL Compiler/Disassembler and Tools: 9764 9765Fixed problem reports: 9766Compiler segfault when ASL contains a long (>1024) String declaration (BZ 9767436) 9768 9769---------------------------------------- 977023 June 2006. Summary of changes for version 20060623: 9771 97721) ACPI CA Core Subsystem: 9773 9774Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 9775allows the type to be customized to the host OS for improved efficiency 9776(since a spinlock is usually a very small object.) 9777 9778Implemented support for "ignored" bits in the ACPI registers. According 9779to 9780the ACPI specification, these bits should be preserved when writing the 9781registers via a read/modify/write cycle. There are 3 bits preserved in 9782this 9783manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 9784 9785Implemented the initial deployment of new OSL mutex interfaces. Since 9786some 9787host operating systems have separate mutex and semaphore objects, this 9788feature was requested. The base code now uses mutexes (and the new mutex 9789interfaces) wherever a binary semaphore was used previously. However, for 9790the current release, the mutex interfaces are defined as macros to map 9791them 9792to the existing semaphore interfaces. Therefore, no OSL changes are 9793required 9794at this time. (See acpiosxf.h) 9795 9796Fixed several problems with the support for the control method SyncLevel 9797parameter. The SyncLevel now works according to the ACPI specification 9798and 9799in concert with the Mutex SyncLevel parameter, since the current 9800SyncLevel 9801is a property of the executing thread. Mutual exclusion for control 9802methods 9803is now implemented with a mutex instead of a semaphore. 9804 9805Fixed three instances of the use of the C shift operator in the bitfield 9806support code (exfldio.c) to avoid the use of a shift value larger than 9807the 9808target data width. The behavior of C compilers is undefined in this case 9809and 9810can cause unpredictable results, and therefore the case must be detected 9811and 9812avoided. (Fiodor Suietov) 9813 9814Added an info message whenever an SSDT or OEM table is loaded dynamically 9815via the Load() or LoadTable() ASL operators. This should improve 9816debugging 9817capability since it will show exactly what tables have been loaded 9818(beyond 9819the tables present in the RSDT/XSDT.) 9820 9821Example Code and Data Size: These are the sizes for the OS-independent 9822acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9823debug version of the code includes the debug output trace mechanism and 9824has 9825a much larger code and data size. 9826 9827 Previous Release: 9828 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9829 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9830 Current Release: 9831 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9832 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9833 9834 98352) iASL Compiler/Disassembler and Tools: 9836 9837No changes for this release. 9838 9839---------------------------------------- 984008 June 2006. Summary of changes for version 20060608: 9841 98421) ACPI CA Core Subsystem: 9843 9844Converted the locking mutex used for the ACPI hardware to a spinlock. 9845This 9846change should eliminate all problems caused by attempting to acquire a 9847semaphore at interrupt level, and it means that all ACPICA external 9848interfaces that directly access the ACPI hardware can be safely called 9849from 9850interrupt level. OSL code that implements the semaphore interfaces should 9851be 9852able to eliminate any workarounds for being called at interrupt level. 9853 9854Fixed a regression introduced in 20060526 where the ACPI device 9855initialization could be prematurely aborted with an AE_NOT_FOUND if a 9856device 9857did not have an optional _INI method. 9858 9859Fixed an IndexField issue where a write to the Data Register should be 9860limited in size to the AccessSize (width) of the IndexField itself. (BZ 9861433, 9862Fiodor Suietov) 9863 9864Fixed problem reports (Valery Podrezov) integrated: 9865- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 9866 9867Fixed problem reports (Fiodor Suietov) integrated: 9868- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 9869 9870Removed four global mutexes that were obsolete and were no longer being 9871used. 9872 9873Example Code and Data Size: These are the sizes for the OS-independent 9874acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9875debug version of the code includes the debug output trace mechanism and 9876has 9877a much larger code and data size. 9878 9879 Previous Release: 9880 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9881 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9882 Current Release: 9883 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9884 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9885 9886 98872) iASL Compiler/Disassembler and Tools: 9888 9889Fixed a fault when using -g option (get tables from registry) on Windows 9890machines. 9891 9892Fixed problem reports integrated: 9893- Generate error if CreateField NumBits parameter is zero. (BZ 405) 9894- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 9895Suietov) 9896- Global table revision override (-r) is ignored (BZ 413) 9897 9898---------------------------------------- 989926 May 2006. Summary of changes for version 20060526: 9900 99011) ACPI CA Core Subsystem: 9902 9903Restructured, flattened, and simplified the internal interfaces for 9904namespace object evaluation - resulting in smaller code, less CPU stack 9905use, 9906and fewer interfaces. (With assistance from Mikhail Kouzmich) 9907 9908Fixed a problem with the CopyObject operator where the first parameter 9909was 9910not typed correctly for the parser, interpreter, compiler, and 9911disassembler. 9912Caused various errors and unexpected behavior. 9913 9914Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 9915produced incorrect results with some C compilers. Since the behavior of C 9916compilers when the shift value is larger than the datatype width is 9917apparently not well defined, the interpreter now detects this condition 9918and 9919simply returns zero as expected in all such cases. (BZ 395) 9920 9921Fixed problem reports (Valery Podrezov) integrated: 9922- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 9923- Allow interpreter to handle nested method declarations (BZ 5361) 9924 9925Fixed problem reports (Fiodor Suietov) integrated: 9926- AcpiTerminate doesn't free debug memory allocation list objects (BZ 9927355) 9928- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 9929356) 9930- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 9931- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 9932- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 9933- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 9934- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 9935- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 9936- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 9937365) 9938- Status of the Global Initialization Handler call not used (BZ 366) 9939- Incorrect object parameter to Global Initialization Handler (BZ 367) 9940 9941Example Code and Data Size: These are the sizes for the OS-independent 9942acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9943debug version of the code includes the debug output trace mechanism and 9944has 9945a much larger code and data size. 9946 9947 Previous Release: 9948 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9949 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9950 Current Release: 9951 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9952 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9953 9954 99552) iASL Compiler/Disassembler and Tools: 9956 9957Modified the parser to allow the names IO, DMA, and IRQ to be used as 9958namespace identifiers with no collision with existing resource descriptor 9959macro names. This provides compatibility with other ASL compilers and is 9960most useful for disassembly/recompilation of existing tables without 9961parse 9962errors. (With assistance from Thomas Renninger) 9963 9964Disassembler: fixed an incorrect disassembly problem with the 9965DataTableRegion and CopyObject operators. Fixed a possible fault during 9966disassembly of some Alias operators. 9967 9968---------------------------------------- 996912 May 2006. Summary of changes for version 20060512: 9970 99711) ACPI CA Core Subsystem: 9972 9973Replaced the AcpiOsQueueForExecution interface with a new interface named 9974AcpiOsExecute. The major difference is that the new interface does not 9975have 9976a Priority parameter, this appeared to be useless and has been replaced 9977by 9978a 9979Type parameter. The Type tells the host what type of execution is being 9980requested, such as global lock handler, notify handler, GPE handler, etc. 9981This allows the host to queue and execute the request as appropriate for 9982the 9983request type, possibly using different work queues and different 9984priorities 9985for the various request types. This enables fixes for multithreading 9986deadlock problems such as BZ #5534, and will require changes to all 9987existing 9988OS interface layers. (Alexey Starikovskiy and Bob Moore) 9989 9990Fixed a possible memory leak associated with the support for the so- 9991called 9992"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 9993Suietov) 9994 9995Fixed a problem with the Load() operator where a table load from an 9996operation region could overwrite an internal table buffer by up to 7 9997bytes 9998and cause alignment faults on IPF systems. (With assistance from Luming 9999Yu) 10000 10001Example Code and Data Size: These are the sizes for the OS-independent 10002acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10003debug version of the code includes the debug output trace mechanism and 10004has 10005a much larger code and data size. 10006 10007 Previous Release: 10008 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10009 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10010 Current Release: 10011 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10012 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10013 10014 10015 100162) iASL Compiler/Disassembler and Tools: 10017 10018Disassembler: Implemented support to cross reference the internal 10019namespace 10020and automatically generate ASL External() statements for symbols not 10021defined 10022within the current table being disassembled. This will simplify the 10023disassembly and recompilation of interdependent tables such as SSDTs 10024since 10025these statements will no longer have to be added manually. 10026 10027Disassembler: Implemented experimental support to automatically detect 10028invocations of external control methods and generate appropriate 10029External() 10030statements. This is problematic because the AML cannot be correctly 10031parsed 10032until the number of arguments for each control method is known. 10033Currently, 10034standalone method invocations and invocations as the source operand of a 10035Store() statement are supported. 10036 10037Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10038LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10039LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10040more readable and likely closer to the original ASL source. 10041 10042---------------------------------------- 1004321 April 2006. Summary of changes for version 20060421: 10044 100451) ACPI CA Core Subsystem: 10046 10047Removed a device initialization optimization introduced in 20051216 where 10048the _STA method was not run unless an _INI was also present for the same 10049device. This optimization could cause problems because it could allow 10050_INI 10051methods to be run within a not-present device subtree. (If a not-present 10052device had no _INI, _STA would not be run, the not-present status would 10053not 10054be discovered, and the children of the device would be incorrectly 10055traversed.) 10056 10057Implemented a new _STA optimization where namespace subtrees that do not 10058contain _INI are identified and ignored during device initialization. 10059Selectively running _STA can significantly improve boot time on large 10060machines (with assistance from Len Brown.) 10061 10062Implemented support for the device initialization case where the returned 10063_STA flags indicate a device not-present but functioning. In this case, 10064_INI 10065is not run, but the device children are examined for presence, as per the 10066ACPI specification. 10067 10068Implemented an additional change to the IndexField support in order to 10069conform to MS behavior. The value written to the Index Register is not 10070simply a byte offset, it is a byte offset in units of the access width of 10071the parent Index Field. (Fiodor Suietov) 10072 10073Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10074interface is called during the creation of all AML operation regions, and 10075allows the host OS to exert control over what addresses it will allow the 10076AML code to access. Operation Regions whose addresses are disallowed will 10077cause a runtime exception when they are actually accessed (will not 10078affect 10079or abort table loading.) See oswinxf or osunixxf for an example 10080implementation. 10081 10082Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10083interface allows the host OS to match the various "optional" 10084interface/behavior strings for the _OSI predefined control method as 10085appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10086for an example implementation. 10087 10088Restructured and corrected various problems in the exception handling 10089code 10090paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10091(with assistance from Takayoshi Kochi.) 10092 10093Modified the Linux source converter to ignore quoted string literals 10094while 10095converting identifiers from mixed to lower case. This will correct 10096problems 10097with the disassembler and other areas where such strings must not be 10098modified. 10099 10100The ACPI_FUNCTION_* macros no longer require quotes around the function 10101name. This allows the Linux source converter to convert the names, now 10102that 10103the converter ignores quoted strings. 10104 10105Example Code and Data Size: These are the sizes for the OS-independent 10106acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10107debug version of the code includes the debug output trace mechanism and 10108has 10109a much larger code and data size. 10110 10111 Previous Release: 10112 10113 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10114 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10115 Current Release: 10116 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10117 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10118 10119 101202) iASL Compiler/Disassembler and Tools: 10121 10122Implemented 3 new warnings for iASL, and implemented multiple warning 10123levels 10124(w2 flag). 10125 101261) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10127not 10128WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10129check for the possible timeout, a warning is issued. 10130 101312) Useless operators: If an ASL operator does not specify an optional 10132target 10133operand and it also does not use the function return value from the 10134operator, a warning is issued since the operator effectively does 10135nothing. 10136 101373) Unreferenced objects: If a namespace object is created, but never 10138referenced, a warning is issued. This is a warning level 2 since there 10139are 10140cases where this is ok, such as when a secondary table is loaded that 10141uses 10142the unreferenced objects. Even so, care is taken to only flag objects 10143that 10144don't look like they will ever be used. For example, the reserved methods 10145(starting with an underscore) are usually not referenced because it is 10146expected that the OS will invoke them. 10147 10148---------------------------------------- 1014931 March 2006. Summary of changes for version 20060331: 10150 101511) ACPI CA Core Subsystem: 10152 10153Implemented header file support for the following additional ACPI tables: 10154ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10155support, 10156all current and known ACPI tables are now defined in the ACPICA headers 10157and 10158are available for use by device drivers and other software. 10159 10160Implemented support to allow tables that contain ACPI names with invalid 10161characters to be loaded. Previously, this would cause the table load to 10162fail, but since there are several known cases of such tables on existing 10163machines, this change was made to enable ACPI support for them. Also, 10164this 10165matches the behavior of the Microsoft ACPI implementation. 10166 10167Fixed a couple regressions introduced during the memory optimization in 10168the 1016920060317 release. The namespace node definition required additional 10170reorganization and an internal datatype that had been changed to 8-bit 10171was 10172restored to 32-bit. (Valery Podrezov) 10173 10174Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10175could be passed through to AcpiOsReleaseObject which is unexpected. Such 10176null pointers are now trapped and ignored, matching the behavior of the 10177previous implementation before the deployment of AcpiOsReleaseObject. 10178(Valery Podrezov, Fiodor Suietov) 10179 10180Fixed a memory mapping leak during the deletion of a SystemMemory 10181operation 10182region where a cached memory mapping was not deleted. This became a 10183noticeable problem for operation regions that are defined within 10184frequently 10185used control methods. (Dana Meyers) 10186 10187Reorganized the ACPI table header files into two main files: one for the 10188ACPI tables consumed by the ACPICA core, and another for the 10189miscellaneous 10190ACPI tables that are consumed by the drivers and other software. The 10191various 10192FADT definitions were merged into one common section and three different 10193tables (ACPI 1.0, 1.0+, and 2.0) 10194 10195Example Code and Data Size: These are the sizes for the OS-independent 10196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10197debug version of the code includes the debug output trace mechanism and 10198has 10199a much larger code and data size. 10200 10201 Previous Release: 10202 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10203 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10204 Current Release: 10205 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10206 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10207 10208 102092) iASL Compiler/Disassembler and Tools: 10210 10211Disassembler: Implemented support to decode and format all non-AML ACPI 10212tables (tables other than DSDTs and SSDTs.) This includes the new tables 10213added to the ACPICA headers, therefore all current and known ACPI tables 10214are 10215supported. 10216 10217Disassembler: The change to allow ACPI names with invalid characters also 10218enables the disassembly of such tables. Invalid characters within names 10219are 10220changed to '*' to make the name printable; the iASL compiler will still 10221generate an error for such names, however, since this is an invalid ACPI 10222character. 10223 10224Implemented an option for AcpiXtract (-a) to extract all tables found in 10225the 10226input file. The default invocation extracts only the DSDTs and SSDTs. 10227 10228Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10229makefile for the AcpiXtract utility. 10230 10231---------------------------------------- 1023217 March 2006. Summary of changes for version 20060317: 10233 102341) ACPI CA Core Subsystem: 10235 10236Implemented the use of a cache object for all internal namespace nodes. 10237Since there are about 1000 static nodes in a typical system, this will 10238decrease memory use for cache implementations that minimize per- 10239allocation 10240overhead (such as a slab allocator.) 10241 10242Removed the reference count mechanism for internal namespace nodes, since 10243it 10244was deemed unnecessary. This reduces the size of each namespace node by 10245about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10246case, 10247and 32 bytes for the 64-bit case. 10248 10249Optimized several internal data structures to reduce object size on 64- 10250bit 10251platforms by packing data within the 64-bit alignment. This includes the 10252frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10253instances corresponding to the namespace objects. 10254 10255Added two new strings for the predefined _OSI method: "Windows 2001.1 10256SP1" 10257and "Windows 2006". 10258 10259Split the allocation tracking mechanism out to a separate file, from 10260utalloc.c to uttrack.c. This mechanism appears to be only useful for 10261application-level code. Kernels may wish to not include uttrack.c in 10262distributions. 10263 10264Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10265associated 10266code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10267macros.) 10268 10269Code and Data Size: These are the sizes for the acpica.lib produced by 10270the 10271Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10272ACPI 10273driver or OSPM code. The debug version of the code includes the debug 10274output 10275trace mechanism and has a much larger code and data size. Note that these 10276values will vary depending on the efficiency of the compiler and the 10277compiler options used during generation. 10278 10279 Previous Release: 10280 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10281 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10282 Current Release: 10283 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10284 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10285 10286 102872) iASL Compiler/Disassembler and Tools: 10288 10289Implemented an ANSI C version of the acpixtract utility. This version 10290will 10291automatically extract the DSDT and all SSDTs from the input acpidump text 10292file and dump the binary output to separate files. It can also display a 10293summary of the input file including the headers for each table found and 10294will extract any single ACPI table, with any signature. (See 10295source/tools/acpixtract) 10296 10297---------------------------------------- 1029810 March 2006. Summary of changes for version 20060310: 10299 103001) ACPI CA Core Subsystem: 10301 10302Tagged all external interfaces to the subsystem with the new 10303ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 10304assist 10305kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 10306macro. The default definition is NULL. 10307 10308Added the ACPI_THREAD_ID type for the return value from 10309AcpiOsGetThreadId. 10310This allows the host to define this as necessary to simplify kernel 10311integration. The default definition is ACPI_NATIVE_UINT. 10312 10313Fixed two interpreter problems related to error processing, the deletion 10314of 10315objects, and placing invalid pointers onto the internal operator result 10316stack. BZ 6028, 6151 (Valery Podrezov) 10317 10318Increased the reference count threshold where a warning is emitted for 10319large 10320reference counts in order to eliminate unnecessary warnings on systems 10321with 10322large namespaces (especially 64-bit.) Increased the value from 0x400 to 103230x800. 10324 10325Due to universal disagreement as to the meaning of the 'c' in the 10326calloc() 10327function, the ACPI_MEM_CALLOCATE macro has been renamed to 10328ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 10329ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 10330ACPI_FREE. 10331 10332Code and Data Size: These are the sizes for the acpica.lib produced by 10333the 10334Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10335ACPI 10336driver or OSPM code. The debug version of the code includes the debug 10337output 10338trace mechanism and has a much larger code and data size. Note that these 10339values will vary depending on the efficiency of the compiler and the 10340compiler options used during generation. 10341 10342 Previous Release: 10343 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10344 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10345 Current Release: 10346 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10347 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10348 10349 103502) iASL Compiler/Disassembler: 10351 10352Disassembler: implemented support for symbolic resource descriptor 10353references. If a CreateXxxxField operator references a fixed offset 10354within 10355a 10356resource descriptor, a name is assigned to the descriptor and the offset 10357is 10358translated to the appropriate resource tag and pathname. The addition of 10359this support brings the disassembled code very close to the original ASL 10360source code and helps eliminate run-time errors when the disassembled 10361code 10362is modified (and recompiled) in such a way as to invalidate the original 10363fixed offsets. 10364 10365Implemented support for a Descriptor Name as the last parameter to the 10366ASL 10367Register() macro. This parameter was inadvertently left out of the ACPI 10368specification, and will be added for ACPI 3.0b. 10369 10370Fixed a problem where the use of the "_OSI" string (versus the full path 10371"\_OSI") caused an internal compiler error. ("No back ptr to op") 10372 10373Fixed a problem with the error message that occurs when an invalid string 10374is 10375used for a _HID object (such as one with an embedded asterisk: 10376"*PNP010A".) 10377The correct message is now displayed. 10378 10379---------------------------------------- 1038017 February 2006. Summary of changes for version 20060217: 10381 103821) ACPI CA Core Subsystem: 10383 10384Implemented a change to the IndexField support to match the behavior of 10385the 10386Microsoft AML interpreter. The value written to the Index register is now 10387a 10388byte offset, no longer an index based upon the width of the Data 10389register. 10390This should fix IndexField problems seen on some machines where the Data 10391register is not exactly one byte wide. The ACPI specification will be 10392clarified on this point. 10393 10394Fixed a problem where several resource descriptor types could overrun the 10395internal descriptor buffer due to size miscalculation: VendorShort, 10396VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10397affect all platforms. 10398 10399Fixed a problem where individual resource descriptors were misaligned 10400within 10401the internal buffer, causing alignment faults on IA64 platforms. 10402 10403Code and Data Size: These are the sizes for the acpica.lib produced by 10404the 10405Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10406ACPI 10407driver or OSPM code. The debug version of the code includes the debug 10408output 10409trace mechanism and has a much larger code and data size. Note that these 10410values will vary depending on the efficiency of the compiler and the 10411compiler options used during generation. 10412 10413 Previous Release: 10414 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10415 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10416 Current Release: 10417 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10418 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10419 10420 104212) iASL Compiler/Disassembler: 10422 10423Implemented support for new reserved names: _WDG and _WED are Microsoft 10424extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10425defined method (Throttling Depth Limit.) 10426 10427Fixed a problem where a zero-length VendorShort or VendorLong resource 10428descriptor was incorrectly emitted as a descriptor of length one. 10429 10430---------------------------------------- 1043110 February 2006. Summary of changes for version 20060210: 10432 104331) ACPI CA Core Subsystem: 10434 10435Removed a couple of extraneous ACPI_ERROR messages that appeared during 10436normal execution. These became apparent after the conversion from 10437ACPI_DEBUG_PRINT. 10438 10439Fixed a problem where the CreateField operator could hang if the BitIndex 10440or 10441NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10442 10443Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10444failed with an exception. This also fixes a couple of related RefOf and 10445DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10446 10447Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10448of 10449AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10450BZ 104515480) 10452 10453Implemented a memory cleanup at the end of the execution of each 10454iteration 10455of an AML While() loop, preventing the accumulation of outstanding 10456objects. 10457(Valery Podrezov, BZ 5427) 10458 10459Eliminated a chunk of duplicate code in the object resolution code. 10460(Valery 10461Podrezov, BZ 5336) 10462 10463Fixed several warnings during the 64-bit code generation. 10464 10465The AcpiSrc source code conversion tool now inserts one line of 10466whitespace 10467after an if() statement that is followed immediately by a comment, 10468improving 10469readability of the Linux code. 10470 10471Code and Data Size: The current and previous library sizes for the core 10472subsystem are shown below. These are the code and data sizes for the 10473acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10474These 10475values do not include any ACPI driver or OSPM code. The debug version of 10476the 10477code includes the debug output trace mechanism and has a much larger code 10478and data size. Note that these values will vary depending on the 10479efficiency 10480of the compiler and the compiler options used during generation. 10481 10482 Previous Release: 10483 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10484 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10485 Current Release: 10486 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10487 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10488 10489 104902) iASL Compiler/Disassembler: 10491 10492Fixed a problem with the disassembly of a BankField operator with a 10493complex 10494expression for the BankValue parameter. 10495 10496---------------------------------------- 1049727 January 2006. Summary of changes for version 20060127: 10498 104991) ACPI CA Core Subsystem: 10500 10501Implemented support in the Resource Manager to allow unresolved 10502namestring 10503references within resource package objects for the _PRT method. This 10504support 10505is in addition to the previously implemented unresolved reference support 10506within the AML parser. If the interpreter slack mode is enabled, these 10507unresolved references will be passed through to the caller as a NULL 10508package 10509entry. 10510 10511Implemented and deployed new macros and functions for error and warning 10512messages across the subsystem. These macros are simpler and generate less 10513code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 10514ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 10515macros remain defined to allow ACPI drivers time to migrate to the new 10516macros. 10517 10518Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 10519the 10520Acquire/Release Lock OSL interfaces. 10521 10522Fixed a problem where Alias ASL operators are sometimes not correctly 10523resolved, in both the interpreter and the iASL compiler. 10524 10525Fixed several problems with the implementation of the 10526ConcatenateResTemplate 10527ASL operator. As per the ACPI specification, zero length buffers are now 10528treated as a single EndTag. One-length buffers always cause a fatal 10529exception. Non-zero length buffers that do not end with a full 2-byte 10530EndTag 10531cause a fatal exception. 10532 10533Fixed a possible structure overwrite in the AcpiGetObjectInfo external 10534interface. (With assistance from Thomas Renninger) 10535 10536Code and Data Size: The current and previous library sizes for the core 10537subsystem are shown below. These are the code and data sizes for the 10538acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10539These 10540values do not include any ACPI driver or OSPM code. The debug version of 10541the 10542code includes the debug output trace mechanism and has a much larger code 10543and data size. Note that these values will vary depending on the 10544efficiency 10545of the compiler and the compiler options used during generation. 10546 10547 Previous Release: 10548 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10549 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10550 Current Release: 10551 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10552 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10553 10554 105552) iASL Compiler/Disassembler: 10556 10557Fixed an internal error that was generated for any forward references to 10558ASL 10559Alias objects. 10560 10561---------------------------------------- 1056213 January 2006. Summary of changes for version 20060113: 10563 105641) ACPI CA Core Subsystem: 10565 10566Added 2006 copyright to all module headers and signons. This affects 10567virtually every file in the ACPICA core subsystem, iASL compiler, and the 10568utilities. 10569 10570Enhanced the ACPICA error reporting in order to simplify user migration 10571to 10572the non-debug version of ACPICA. Replaced all instances of the 10573ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 10574debug 10575levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 10576respectively. This preserves all error and warning messages in the non- 10577debug 10578version of the ACPICA code (this has been referred to as the "debug lite" 10579option.) Over 200 cases were converted to create a total of over 380 10580error/warning messages across the ACPICA code. This increases the code 10581and 10582data size of the default non-debug version of the code somewhat (about 1058313K), 10584but all error/warning reporting may be disabled if desired (and code 10585eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 10586configuration option. The size of the debug version of ACPICA remains 10587about 10588the same. 10589 10590Fixed a memory leak within the AML Debugger "Set" command. One object was 10591not properly deleted for every successful invocation of the command. 10592 10593Code and Data Size: The current and previous library sizes for the core 10594subsystem are shown below. These are the code and data sizes for the 10595acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10596These 10597values do not include any ACPI driver or OSPM code. The debug version of 10598the 10599code includes the debug output trace mechanism and has a much larger code 10600and data size. Note that these values will vary depending on the 10601efficiency 10602of the compiler and the compiler options used during generation. 10603 10604 Previous Release: 10605 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10606 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10607 Current Release: 10608 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10609 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10610 10611 106122) iASL Compiler/Disassembler: 10613 10614The compiler now officially supports the ACPI 3.0a specification that was 10615released on December 30, 2005. (Specification is available at 10616www.acpi.info) 10617 10618---------------------------------------- 1061916 December 2005. Summary of changes for version 20051216: 10620 106211) ACPI CA Core Subsystem: 10622 10623Implemented optional support to allow unresolved names within ASL Package 10624objects. A null object is inserted in the package when a named reference 10625cannot be located in the current namespace. Enabled via the interpreter 10626slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 10627machines 10628that contain such code. 10629 10630Implemented an optimization to the initialization sequence that can 10631improve 10632boot time. During ACPI device initialization, the _STA method is now run 10633if 10634and only if the _INI method exists. The _STA method is used to determine 10635if 10636the device is present; An _INI can only be run if _STA returns present, 10637but 10638it is a waste of time to run the _STA method if the _INI does not exist. 10639(Prototype and assistance from Dong Wei) 10640 10641Implemented use of the C99 uintptr_t for the pointer casting macros if it 10642is 10643available in the current compiler. Otherwise, the default (void *) cast 10644is 10645used as before. 10646 10647Fixed some possible memory leaks found within the execution path of the 10648Break, Continue, If, and CreateField operators. (Valery Podrezov) 10649 10650Fixed a problem introduced in the 20051202 release where an exception is 10651generated during method execution if a control method attempts to declare 10652another method. 10653 10654Moved resource descriptor string constants that are used by both the AML 10655disassembler and AML debugger to the common utilities directory so that 10656these components are independent. 10657 10658Implemented support in the AcpiExec utility (-e switch) to globally 10659ignore 10660exceptions during control method execution (method is not aborted.) 10661 10662Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 10663generation. 10664 10665Code and Data Size: The current and previous library sizes for the core 10666subsystem are shown below. These are the code and data sizes for the 10667acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10668These 10669values do not include any ACPI driver or OSPM code. The debug version of 10670the 10671code includes the debug output trace mechanism and has a much larger code 10672and data size. Note that these values will vary depending on the 10673efficiency 10674of the compiler and the compiler options used during generation. 10675 10676 Previous Release: 10677 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10678 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10679 Current Release: 10680 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10681 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10682 10683 106842) iASL Compiler/Disassembler: 10685 10686Fixed a problem where a CPU stack overflow fault could occur if a 10687recursive 10688method call was made from within a Return statement. 10689 10690---------------------------------------- 1069102 December 2005. Summary of changes for version 20051202: 10692 106931) ACPI CA Core Subsystem: 10694 10695Modified the parsing of control methods to no longer create namespace 10696objects during the first pass of the parse. Objects are now created only 10697during the execute phase, at the moment the namespace creation operator 10698is 10699encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 10700This 10701should eliminate ALREADY_EXISTS exceptions seen on some machines where 10702reentrant control methods are protected by an AML mutex. The mutex will 10703now 10704correctly block multiple threads from attempting to create the same 10705object 10706more than once. 10707 10708Increased the number of available Owner Ids for namespace object tracking 10709from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 10710on 10711some machines with a large number of ACPI tables (either static or 10712dynamic). 10713 10714Fixed a problem with the AcpiExec utility where a fault could occur when 10715the 10716-b switch (batch mode) is used. 10717 10718Enhanced the namespace dump routine to output the owner ID for each 10719namespace object. 10720 10721Code and Data Size: The current and previous library sizes for the core 10722subsystem are shown below. These are the code and data sizes for the 10723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10724These 10725values do not include any ACPI driver or OSPM code. The debug version of 10726the 10727code includes the debug output trace mechanism and has a much larger code 10728and data size. Note that these values will vary depending on the 10729efficiency 10730of the compiler and the compiler options used during generation. 10731 10732 Previous Release: 10733 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10734 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10735 Current Release: 10736 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10737 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10738 10739 107402) iASL Compiler/Disassembler: 10741 10742Fixed a parse error during compilation of certain Switch/Case constructs. 10743To 10744simplify the parse, the grammar now allows for multiple Default 10745statements 10746and this error is now detected and flagged during the analysis phase. 10747 10748Disassembler: The disassembly now includes the contents of the original 10749table header within a comment at the start of the file. This includes the 10750name and version of the original ASL compiler. 10751 10752---------------------------------------- 1075317 November 2005. Summary of changes for version 20051117: 10754 107551) ACPI CA Core Subsystem: 10756 10757Fixed a problem in the AML parser where the method thread count could be 10758decremented below zero if any errors occurred during the method parse 10759phase. 10760This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 10761machines. 10762This also fixed a related regression with the mechanism that detects and 10763corrects methods that cannot properly handle reentrancy (related to the 10764deployment of the new OwnerId mechanism.) 10765 10766Eliminated the pre-parsing of control methods (to detect errors) during 10767table load. Related to the problem above, this was causing unwind issues 10768if 10769any errors occurred during the parse, and it seemed to be overkill. A 10770table 10771load should not be aborted if there are problems with any single control 10772method, thus rendering this feature rather pointless. 10773 10774Fixed a problem with the new table-driven resource manager where an 10775internal 10776buffer overflow could occur for small resource templates. 10777 10778Implemented a new external interface, AcpiGetVendorResource. This 10779interface 10780will find and return a vendor-defined resource descriptor within a _CRS 10781or 10782_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 10783Helgaas. 10784 10785Removed the length limit (200) on string objects as per the upcoming ACPI 107863.0A specification. This affects the following areas of the interpreter: 107871) 10788any implicit conversion of a Buffer to a String, 2) a String object 10789result 10790of the ASL Concatentate operator, 3) the String object result of the ASL 10791ToString operator. 10792 10793Fixed a problem in the Windows OS interface layer (OSL) where a 10794WAIT_FOREVER 10795on a semaphore object would incorrectly timeout. This allows the 10796multithreading features of the AcpiExec utility to work properly under 10797Windows. 10798 10799Updated the Linux makefiles for the iASL compiler and AcpiExec to include 10800the recently added file named "utresrc.c". 10801 10802Code and Data Size: The current and previous library sizes for the core 10803subsystem are shown below. These are the code and data sizes for the 10804acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10805These 10806values do not include any ACPI driver or OSPM code. The debug version of 10807the 10808code includes the debug output trace mechanism and has a much larger code 10809and data size. Note that these values will vary depending on the 10810efficiency 10811of the compiler and the compiler options used during generation. 10812 10813 Previous Release: 10814 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10815 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10816 Current Release: 10817 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10818 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10819 10820 108212) iASL Compiler/Disassembler: 10822 10823Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 10824specification. For the iASL compiler, this means that string literals 10825within 10826the source ASL can be of any length. 10827 10828Enhanced the listing output to dump the AML code for resource descriptors 10829immediately after the ASL code for each descriptor, instead of in a block 10830at 10831the end of the entire resource template. 10832 10833Enhanced the compiler debug output to dump the entire original parse tree 10834constructed during the parse phase, before any transforms are applied to 10835the 10836tree. The transformed tree is dumped also. 10837 10838---------------------------------------- 1083902 November 2005. Summary of changes for version 20051102: 10840 108411) ACPI CA Core Subsystem: 10842 10843Modified the subsystem initialization sequence to improve GPE support. 10844The 10845GPE initialization has been split into two parts in order to defer 10846execution 10847of the _PRW methods (Power Resources for Wake) until after the hardware 10848is 10849fully initialized and the SCI handler is installed. This allows the _PRW 10850methods to access fields protected by the Global Lock. This will fix 10851systems 10852where a NO_GLOBAL_LOCK exception has been seen during initialization. 10853 10854Converted the ACPI internal object disassemble and display code within 10855the 10856AML debugger to fully table-driven operation, reducing code size and 10857increasing maintainability. 10858 10859Fixed a regression with the ConcatenateResTemplate() ASL operator 10860introduced 10861in the 20051021 release. 10862 10863Implemented support for "local" internal ACPI object types within the 10864debugger "Object" command and the AcpiWalkNamespace external interfaces. 10865These local types include RegionFields, BankFields, IndexFields, Alias, 10866and 10867reference objects. 10868 10869Moved common AML resource handling code into a new file, "utresrc.c". 10870This 10871code is shared by both the Resource Manager and the AML Debugger. 10872 10873Code and Data Size: The current and previous library sizes for the core 10874subsystem are shown below. These are the code and data sizes for the 10875acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10876These 10877values do not include any ACPI driver or OSPM code. The debug version of 10878the 10879code includes the debug output trace mechanism and has a much larger code 10880and data size. Note that these values will vary depending on the 10881efficiency 10882of the compiler and the compiler options used during generation. 10883 10884 Previous Release: 10885 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10886 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10887 Current Release: 10888 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10889 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10890 10891 108922) iASL Compiler/Disassembler: 10893 10894Fixed a problem with very large initializer lists (more than 4000 10895elements) 10896for both Buffer and Package objects where the parse stack could overflow. 10897 10898Enhanced the pre-compile source code scan for non-ASCII characters to 10899ignore 10900characters within comment fields. The scan is now always performed and is 10901no 10902longer optional, detecting invalid characters within a source file 10903immediately rather than during the parse phase or later. 10904 10905Enhanced the ASL grammar definition to force early reductions on all 10906list- 10907style grammar elements so that the overall parse stack usage is greatly 10908reduced. This should improve performance and reduce the possibility of 10909parse 10910stack overflow. 10911 10912Eliminated all reduce/reduce conflicts in the iASL parser generation. 10913Also, 10914with the addition of a %expected statement, the compiler generates from 10915source with no warnings. 10916 10917Fixed a possible segment fault in the disassembler if the input filename 10918does not contain a "dot" extension (Thomas Renninger). 10919 10920---------------------------------------- 1092121 October 2005. Summary of changes for version 20051021: 10922 109231) ACPI CA Core Subsystem: 10924 10925Implemented support for the EM64T and other x86-64 processors. This 10926essentially entails recognizing that these processors support non-aligned 10927memory transfers. Previously, all 64-bit processors were assumed to lack 10928hardware support for non-aligned transfers. 10929 10930Completed conversion of the Resource Manager to nearly full table-driven 10931operation. Specifically, the resource conversion code (convert AML to 10932internal format and the reverse) and the debug code to dump internal 10933resource descriptors are fully table-driven, reducing code and data size 10934and 10935improving maintainability. 10936 10937The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 10938word 10939on 64-bit processors instead of a fixed 32-bit word. (With assistance 10940from 10941Alexey Starikovskiy) 10942 10943Implemented support within the resource conversion code for the Type- 10944Specific byte within the various ACPI 3.0 *WordSpace macros. 10945 10946Fixed some issues within the resource conversion code for the type- 10947specific 10948flags for both Memory and I/O address resource descriptors. For Memory, 10949implemented support for the MTP and TTP flags. For I/O, split the TRS and 10950TTP flags into two separate fields. 10951 10952Code and Data Size: The current and previous library sizes for the core 10953subsystem are shown below. These are the code and data sizes for the 10954acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10955These 10956values do not include any ACPI driver or OSPM code. The debug version of 10957the 10958code includes the debug output trace mechanism and has a much larger code 10959and data size. Note that these values will vary depending on the 10960efficiency 10961of the compiler and the compiler options used during generation. 10962 10963 Previous Release: 10964 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10965 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10966 Current Release: 10967 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10968 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10969 10970 10971 109722) iASL Compiler/Disassembler: 10973 10974Relaxed a compiler restriction that disallowed a ResourceIndex byte if 10975the 10976corresponding ResourceSource string was not also present in a resource 10977descriptor declaration. This restriction caused problems with existing 10978AML/ASL code that includes the Index byte without the string. When such 10979AML 10980was disassembled, it could not be compiled without modification. Further, 10981the modified code created a resource template with a different size than 10982the 10983original, breaking code that used fixed offsets into the resource 10984template 10985buffer. 10986 10987Removed a recent feature of the disassembler to ignore a lone 10988ResourceIndex 10989byte. This byte is now emitted if present so that the exact AML can be 10990reproduced when the disassembled code is recompiled. 10991 10992Improved comments and text alignment for the resource descriptor code 10993emitted by the disassembler. 10994 10995Implemented disassembler support for the ACPI 3.0 AccessSize field within 10996a 10997Register() resource descriptor. 10998 10999---------------------------------------- 1100030 September 2005. Summary of changes for version 20050930: 11001 110021) ACPI CA Core Subsystem: 11003 11004Completed a major overhaul of the Resource Manager code - specifically, 11005optimizations in the area of the AML/internal resource conversion code. 11006The 11007code has been optimized to simplify and eliminate duplicated code, CPU 11008stack 11009use has been decreased by optimizing function parameters and local 11010variables, and naming conventions across the manager have been 11011standardized 11012for clarity and ease of maintenance (this includes function, parameter, 11013variable, and struct/typedef names.) The update may force changes in some 11014driver code, depending on how resources are handled by the host OS. 11015 11016All Resource Manager dispatch and information tables have been moved to a 11017single location for clarity and ease of maintenance. One new file was 11018created, named "rsinfo.c". 11019 11020The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11021guarantee that the argument is not evaluated twice, making them less 11022prone 11023to macro side-effects. However, since there exists the possibility of 11024additional stack use if a particular compiler cannot optimize them (such 11025as 11026in the debug generation case), the original macros are optionally 11027available. 11028Note that some invocations of the return_VALUE macro may now cause size 11029mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11030to 11031eliminate these. (From Randy Dunlap) 11032 11033Implemented a new mechanism to enable debug tracing for individual 11034control 11035methods. A new external interface, AcpiDebugTrace, is provided to enable 11036this mechanism. The intent is to allow the host OS to easily enable and 11037disable tracing for problematic control methods. This interface can be 11038easily exposed to a user or debugger interface if desired. See the file 11039psxface.c for details. 11040 11041AcpiUtCallocate will now return a valid pointer if a length of zero is 11042specified - a length of one is used and a warning is issued. This matches 11043the behavior of AcpiUtAllocate. 11044 11045Code and Data Size: The current and previous library sizes for the core 11046subsystem are shown below. These are the code and data sizes for the 11047acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11048These 11049values do not include any ACPI driver or OSPM code. The debug version of 11050the 11051code includes the debug output trace mechanism and has a much larger code 11052and data size. Note that these values will vary depending on the 11053efficiency 11054of the compiler and the compiler options used during generation. 11055 11056 Previous Release: 11057 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11058 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11059 Current Release: 11060 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11061 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11062 11063 110642) iASL Compiler/Disassembler: 11065 11066A remark is issued if the effective compile-time length of a package or 11067buffer is zero. Previously, this was a warning. 11068 11069---------------------------------------- 1107016 September 2005. Summary of changes for version 20050916: 11071 110721) ACPI CA Core Subsystem: 11073 11074Fixed a problem within the Resource Manager where support for the Generic 11075Register descriptor was not fully implemented. This descriptor is now 11076fully 11077recognized, parsed, disassembled, and displayed. 11078 11079Completely restructured the Resource Manager code to utilize table-driven 11080dispatch and lookup, eliminating many of the large switch() statements. 11081This 11082reduces overall subsystem code size and code complexity. Affects the 11083resource parsing and construction, disassembly, and debug dump output. 11084 11085Cleaned up and restructured the debug dump output for all resource 11086descriptors. Improved readability of the output and reduced code size. 11087 11088Fixed a problem where changes to internal data structures caused the 11089optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11090 11091Code and Data Size: The current and previous library sizes for the core 11092subsystem are shown below. These are the code and data sizes for the 11093acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11094These 11095values do not include any ACPI driver or OSPM code. The debug version of 11096the 11097code includes the debug output trace mechanism and has a much larger code 11098and data size. Note that these values will vary depending on the 11099efficiency 11100of the compiler and the compiler options used during generation. 11101 11102 Previous Release: 11103 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11104 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11105 Current Release: 11106 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11107 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11108 11109 111102) iASL Compiler/Disassembler: 11111 11112Updated the disassembler to automatically insert an EndDependentFn() 11113macro 11114into the ASL stream if this macro is missing in the original AML code, 11115simplifying compilation of the resulting ASL module. 11116 11117Fixed a problem in the disassembler where a disassembled ResourceSource 11118string (within a large resource descriptor) was not surrounded by quotes 11119and 11120not followed by a comma, causing errors when the resulting ASL module was 11121compiled. Also, escape sequences within a ResourceSource string are now 11122handled correctly (especially "\\") 11123 11124---------------------------------------- 1112502 September 2005. Summary of changes for version 20050902: 11126 111271) ACPI CA Core Subsystem: 11128 11129Fixed a problem with the internal Owner ID allocation and deallocation 11130mechanisms for control method execution and recursive method invocation. 11131This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11132messages seen on some systems. Recursive method invocation depth is 11133currently limited to 255. (Alexey Starikovskiy) 11134 11135Completely eliminated all vestiges of support for the "module-level 11136executable code" until this support is fully implemented and debugged. 11137This 11138should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11139some systems that invoke this support. 11140 11141Fixed a problem within the resource manager code where the transaction 11142flags 11143for a 64-bit address descriptor were handled incorrectly in the type- 11144specific flag byte. 11145 11146Consolidated duplicate code within the address descriptor resource 11147manager 11148code, reducing overall subsystem code size. 11149 11150Fixed a fault when using the AML debugger "disassemble" command to 11151disassemble individual control methods. 11152 11153Removed references to the "release_current" directory within the Unix 11154release package. 11155 11156Code and Data Size: The current and previous core subsystem library sizes 11157are shown below. These are the code and data sizes for the acpica.lib 11158produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11159include any ACPI driver or OSPM code. The debug version of the code 11160includes 11161the debug output trace mechanism and has a much larger code and data 11162size. 11163Note that these values will vary depending on the efficiency of the 11164compiler 11165and the compiler options used during generation. 11166 11167 Previous Release: 11168 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11169 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11170 Current Release: 11171 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11172 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11173 11174 111752) iASL Compiler/Disassembler: 11176 11177Implemented an error check for illegal duplicate values in the interrupt 11178and 11179dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11180Interrupt(). 11181 11182Implemented error checking for the Irq() and IrqNoFlags() macros to 11183detect 11184too many values in the interrupt list (16 max) and invalid values in the 11185list (range 0 - 15) 11186 11187The maximum length string literal within an ASL file is now restricted to 11188200 characters as per the ACPI specification. 11189 11190Fixed a fault when using the -ln option (generate namespace listing). 11191 11192Implemented an error check to determine if a DescriptorName within a 11193resource descriptor has already been used within the current scope. 11194 11195---------------------------------------- 1119615 August 2005. Summary of changes for version 20050815: 11197 111981) ACPI CA Core Subsystem: 11199 11200Implemented a full bytewise compare to determine if a table load request 11201is 11202attempting to load a duplicate table. The compare is performed if the 11203table 11204signatures and table lengths match. This will allow different tables with 11205the same OEM Table ID and revision to be loaded - probably against the 11206ACPI 11207specification, but discovered in the field nonetheless. 11208 11209Added the changes.txt logfile to each of the zipped release packages. 11210 11211Code and Data Size: Current and previous core subsystem library sizes are 11212shown below. These are the code and data sizes for the acpica.lib 11213produced 11214by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11215any ACPI driver or OSPM code. The debug version of the code includes the 11216debug output trace mechanism and has a much larger code and data size. 11217Note 11218that these values will vary depending on the efficiency of the compiler 11219and 11220the compiler options used during generation. 11221 11222 Previous Release: 11223 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11224 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11225 Current Release: 11226 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11227 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11228 11229 112302) iASL Compiler/Disassembler: 11231 11232Fixed a problem where incorrect AML code could be generated for Package 11233objects if optimization is disabled (via the -oa switch). 11234 11235Fixed a problem with where incorrect AML code is generated for variable- 11236length packages when the package length is not specified and the number 11237of 11238initializer values is greater than 255. 11239 11240 11241---------------------------------------- 1124229 July 2005. Summary of changes for version 20050729: 11243 112441) ACPI CA Core Subsystem: 11245 11246Implemented support to ignore an attempt to install/load a particular 11247ACPI 11248table more than once. Apparently there exists BIOS code that repeatedly 11249attempts to load the same SSDT upon certain events. With assistance from 11250Venkatesh Pallipadi. 11251 11252Restructured the main interface to the AML parser in order to correctly 11253handle all exceptional conditions. This will prevent leakage of the 11254OwnerId 11255resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11256some 11257machines. With assistance from Alexey Starikovskiy. 11258 11259Support for "module level code" has been disabled in this version due to 11260a 11261number of issues that have appeared on various machines. The support can 11262be 11263enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11264compilation. When the issues are fully resolved, the code will be enabled 11265by 11266default again. 11267 11268Modified the internal functions for debug print support to define the 11269FunctionName parameter as a (const char *) for compatibility with 11270compiler 11271built-in macros such as __FUNCTION__, etc. 11272 11273Linted the entire ACPICA source tree for both 32-bit and 64-bit. 11274 11275Implemented support to display an object count summary for the AML 11276Debugger 11277commands Object and Methods. 11278 11279Code and Data Size: Current and previous core subsystem library sizes are 11280shown below. These are the code and data sizes for the acpica.lib 11281produced 11282by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11283any ACPI driver or OSPM code. The debug version of the code includes the 11284debug output trace mechanism and has a much larger code and data size. 11285Note 11286that these values will vary depending on the efficiency of the compiler 11287and 11288the compiler options used during generation. 11289 11290 Previous Release: 11291 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11292 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11293 Current Release: 11294 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11295 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11296 11297 112982) iASL Compiler/Disassembler: 11299 11300Fixed a regression that appeared in the 20050708 version of the compiler 11301where an error message was inadvertently emitted for invocations of the 11302_OSI 11303reserved control method. 11304 11305---------------------------------------- 1130608 July 2005. Summary of changes for version 20050708: 11307 113081) ACPI CA Core Subsystem: 11309 11310The use of the CPU stack in the debug version of the subsystem has been 11311considerably reduced. Previously, a debug structure was declared in every 11312function that used the debug macros. This structure has been removed in 11313favor of declaring the individual elements as parameters to the debug 11314functions. This reduces the cumulative stack use during nested execution 11315of 11316ACPI function calls at the cost of a small increase in the code size of 11317the 11318debug version of the subsystem. With assistance from Alexey Starikovskiy 11319and 11320Len Brown. 11321 11322Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 11323headers to define a macro that will return the current function name at 11324runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 11325by 11326the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 11327compiler-dependent header, the function name is saved on the CPU stack 11328(one 11329pointer per function.) This mechanism is used because apparently there 11330exists no standard ANSI-C defined macro that that returns the function 11331name. 11332 11333Redesigned and reimplemented the "Owner ID" mechanism used to track 11334namespace objects created/deleted by ACPI tables and control method 11335execution. A bitmap is now used to allocate and free the IDs, thus 11336solving 11337the wraparound problem present in the previous implementation. The size 11338of 11339the namespace node descriptor was reduced by 2 bytes as a result (Alexey 11340Starikovskiy). 11341 11342Removed the UINT32_BIT and UINT16_BIT types that were used for the 11343bitfield 11344flag definitions within the headers for the predefined ACPI tables. These 11345have been replaced by UINT8_BIT in order to increase the code portability 11346of 11347the subsystem. If the use of UINT8 remains a problem, we may be forced to 11348eliminate bitfields entirely because of a lack of portability. 11349 11350Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 11351This 11352is a frequently used function and this improvement increases the 11353performance 11354of the entire subsystem (Alexey Starikovskiy). 11355 11356Fixed several possible memory leaks and the inverse - premature object 11357deletion (Alexey Starikovskiy). 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.6K Code, 11.5K Data, 90.1K Total 11372 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11373 Current Release: 11374 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11375 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11376 11377---------------------------------------- 1137824 June 2005. Summary of changes for version 20050624: 11379 113801) ACPI CA Core Subsystem: 11381 11382Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 11383the host-defined cache object. This allows the OSL implementation to 11384define 11385and type this object in any manner desired, simplifying the OSL 11386implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 11387Linux, and should be defined in the OS-specific header file for other 11388operating systems as required. 11389 11390Changed the interface to AcpiOsAcquireObject to directly return the 11391requested object as the function return (instead of ACPI_STATUS.) This 11392change was made for performance reasons, since this is the purpose of the 11393interface in the first place. AcpiOsAcquireObject is now similar to the 11394AcpiOsAllocate interface. 11395 11396Implemented a new AML debugger command named Businfo. This command 11397displays 11398information about all devices that have an associate _PRT object. The 11399_ADR, 11400_HID, _UID, and _CID are displayed for these devices. 11401 11402Modified the initialization sequence in AcpiInitializeSubsystem to call 11403the 11404OSL interface AcpiOslInitialize first, before any local initialization. 11405This 11406change was required because the global initialization now calls OSL 11407interfaces. 11408 11409Enhanced the Dump command to display the entire contents of Package 11410objects 11411(including all sub-objects and their values.) 11412 11413Restructured the code base to split some files because of size and/or 11414because the code logically belonged in a separate file. New files are 11415listed 11416below. All makefiles and project files included in the ACPI CA release 11417have 11418been updated. 11419 utilities/utcache.c /* Local cache interfaces */ 11420 utilities/utmutex.c /* Local mutex support */ 11421 utilities/utstate.c /* State object support */ 11422 interpreter/parser/psloop.c /* Main AML parse loop */ 11423 11424Code and Data Size: Current and previous core subsystem library sizes are 11425shown below. These are the code and data sizes for the acpica.lib 11426produced 11427by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11428any ACPI driver or OSPM code. The debug version of the code includes the 11429debug output trace mechanism and has a much larger code and data size. 11430Note 11431that these values will vary depending on the efficiency of the compiler 11432and 11433the compiler options used during generation. 11434 11435 Previous Release: 11436 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11437 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11438 Current Release: 11439 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11440 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11441 11442 114432) iASL Compiler/Disassembler: 11444 11445Fixed a regression introduced in version 20050513 where the use of a 11446Package 11447object within a Case() statement caused a compile time exception. The 11448original behavior has been restored (a Match() operator is emitted.) 11449 11450---------------------------------------- 1145117 June 2005. Summary of changes for version 20050617: 11452 114531) ACPI CA Core Subsystem: 11454 11455Moved the object cache operations into the OS interface layer (OSL) to 11456allow 11457the host OS to handle these operations if desired (for example, the Linux 11458OSL will invoke the slab allocator). This support is optional; the 11459compile 11460time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11461cache 11462code in the ACPI CA core. The new OSL interfaces are shown below. See 11463utalloc.c for an example implementation, and acpiosxf.h for the exact 11464interface definitions. With assistance from Alexey Starikovskiy. 11465 AcpiOsCreateCache 11466 AcpiOsDeleteCache 11467 AcpiOsPurgeCache 11468 AcpiOsAcquireObject 11469 AcpiOsReleaseObject 11470 11471Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11472return 11473and restore a flags parameter. This fits better with many OS lock models. 11474Note: the current execution state (interrupt handler or not) is no longer 11475passed to these interfaces. If necessary, the OSL must determine this 11476state 11477by itself, a simple and fast operation. With assistance from Alexey 11478Starikovskiy. 11479 11480Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11481present if the revision of the RSDP was 2 or greater. According to the 11482ACPI 11483specification, the XSDT is optional in all cases, and the table manager 11484therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11485Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11486contain 11487only the RSDT. 11488 11489Fixed an interpreter problem with the Mid() operator in the case of an 11490input 11491string where the resulting output string is of zero length. It now 11492correctly 11493returns a valid, null terminated string object instead of a string object 11494with a null pointer. 11495 11496Fixed a problem with the control method argument handling to allow a 11497store 11498to an Arg object that already contains an object of type Device. The 11499Device 11500object is now correctly overwritten. Previously, an error was returned. 11501 11502 11503Enhanced the debugger Find command to emit object values in addition to 11504the 11505found object pathnames. The output format is the same as the dump 11506namespace 11507command. 11508 11509Enhanced the debugger Set command. It now has the ability to set the 11510value 11511of any Named integer object in the namespace (Previously, only method 11512locals 11513and args could be set.) 11514 11515Code and Data Size: Current and previous core subsystem library sizes are 11516shown below. These are the code and data sizes for the acpica.lib 11517produced 11518by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11519any ACPI driver or OSPM code. The debug version of the code includes the 11520debug output trace mechanism and has a much larger code and data size. 11521Note 11522that these values will vary depending on the efficiency of the compiler 11523and 11524the compiler options used during generation. 11525 11526 Previous Release: 11527 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11528 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11529 Current Release: 11530 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11531 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11532 11533 115342) iASL Compiler/Disassembler: 11535 11536Fixed a regression in the disassembler where if/else/while constructs 11537were 11538output incorrectly. This problem was introduced in the previous release 11539(20050526). This problem also affected the single-step disassembly in the 11540debugger. 11541 11542Fixed a problem where compiling the reserved _OSI method would randomly 11543(but 11544rarely) produce compile errors. 11545 11546Enhanced the disassembler to emit compilable code in the face of 11547incorrect 11548AML resource descriptors. If the optional ResourceSourceIndex is present, 11549but the ResourceSource is not, do not emit the ResourceSourceIndex in the 11550disassembly. Otherwise, the resulting code cannot be compiled without 11551errors. 11552 11553---------------------------------------- 1155426 May 2005. Summary of changes for version 20050526: 11555 115561) ACPI CA Core Subsystem: 11557 11558Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 11559the module level (not within a control method.) These opcodes are 11560executed 11561exactly once at the time the table is loaded. This type of code was legal 11562up 11563until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 11564in 11565order to provide backwards compatibility with earlier BIOS 11566implementations. 11567This eliminates the "Encountered executable code at module level" warning 11568that was previously generated upon detection of such code. 11569 11570Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 11571inadvertently be generated during the lookup of namespace objects in the 11572second pass parse of ACPI tables and control methods. It appears that 11573this 11574problem could occur during the resolution of forward references to 11575namespace 11576objects. 11577 11578Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 11579corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 11580allows the deadlock detection debug code to be compiled out in the normal 11581case, improving mutex performance (and overall subsystem performance) 11582considerably. 11583 11584Implemented a handful of miscellaneous fixes for possible memory leaks on 11585error conditions and error handling control paths. These fixes were 11586suggested by FreeBSD and the Coverity Prevent source code analysis tool. 11587 11588Added a check for a null RSDT pointer in AcpiGetFirmwareTable 11589(tbxfroot.c) 11590to prevent a fault in this error case. 11591 11592Code and Data Size: Current and previous core subsystem library sizes are 11593shown below. These are the code and data sizes for the acpica.lib 11594produced 11595by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11596any ACPI driver or OSPM code. The debug version of the code includes the 11597debug output trace mechanism and has a much larger code and data size. 11598Note 11599that these values will vary depending on the efficiency of the compiler 11600and 11601the compiler options used during generation. 11602 11603 Previous Release: 11604 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11605 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11606 Current Release: 11607 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11608 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11609 11610 116112) iASL Compiler/Disassembler: 11612 11613Implemented support to allow Type 1 and Type 2 ASL operators to appear at 11614the module level (not within a control method.) These operators will be 11615executed once at the time the table is loaded. This type of code was 11616legal 11617up until the release of ACPI 2.0B (2002) and is now supported by the iASL 11618compiler in order to provide backwards compatibility with earlier BIOS 11619ASL 11620code. 11621 11622The ACPI integer width (specified via the table revision ID or the -r 11623override, 32 or 64 bits) is now used internally during compile-time 11624constant 11625folding to ensure that constants are truncated to 32 bits if necessary. 11626Previously, the revision ID value was only emitted in the AML table 11627header. 11628 11629An error message is now generated for the Mutex and Method operators if 11630the 11631SyncLevel parameter is outside the legal range of 0 through 15. 11632 11633Fixed a problem with the Method operator ParameterTypes list handling 11634(ACPI 116353.0). Previously, more than 2 types or 2 arguments generated a syntax 11636error. 11637The actual underlying implementation of method argument typechecking is 11638still under development, however. 11639 11640---------------------------------------- 1164113 May 2005. Summary of changes for version 20050513: 11642 116431) ACPI CA Core Subsystem: 11644 11645Implemented support for PCI Express root bridges -- added support for 11646device 11647PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 11648 11649The interpreter now automatically truncates incoming 64-bit constants to 1165032 11651bits if currently executing out of a 32-bit ACPI table (Revision < 2). 11652This 11653also affects the iASL compiler constant folding. (Note: as per below, the 11654iASL compiler no longer allows 64-bit constants within 32-bit tables.) 11655 11656Fixed a problem where string and buffer objects with "static" pointers 11657(pointers to initialization data within an ACPI table) were not handled 11658consistently. The internal object copy operation now always copies the 11659data 11660to a newly allocated buffer, regardless of whether the source object is 11661static or not. 11662 11663Fixed a problem with the FromBCD operator where an implicit result 11664conversion was improperly performed while storing the result to the 11665target 11666operand. Since this is an "explicit conversion" operator, the implicit 11667conversion should never be performed on the output. 11668 11669Fixed a problem with the CopyObject operator where a copy to an existing 11670named object did not always completely overwrite the existing object 11671stored 11672at name. Specifically, a buffer-to-buffer copy did not delete the 11673existing 11674buffer. 11675 11676Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 11677and 11678structs for consistency. 11679 11680Code and Data Size: Current and previous core subsystem library sizes are 11681shown below. These are the code and data sizes for the acpica.lib 11682produced 11683by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11684any ACPI driver or OSPM code. The debug version of the code includes the 11685debug output trace mechanism and has a much larger code and data size. 11686Note 11687that these values will vary depending on the efficiency of the compiler 11688and 11689the compiler options used during generation. 11690 11691 Previous Release: 11692 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11693 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11694 Current Release: (Same sizes) 11695 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11696 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11697 11698 116992) iASL Compiler/Disassembler: 11700 11701The compiler now emits a warning if an attempt is made to generate a 64- 11702bit 11703integer constant from within a 32-bit ACPI table (Revision < 2). The 11704integer 11705is truncated to 32 bits. 11706 11707Fixed a problem with large package objects: if the static length of the 11708package is greater than 255, the "variable length package" opcode is 11709emitted. Previously, this caused an error. This requires an update to the 11710ACPI spec, since it currently (incorrectly) states that packages larger 11711than 11712255 elements are not allowed. 11713 11714The disassembler now correctly handles variable length packages and 11715packages 11716larger than 255 elements. 11717 11718---------------------------------------- 1171908 April 2005. Summary of changes for version 20050408: 11720 117211) ACPI CA Core Subsystem: 11722 11723Fixed three cases in the interpreter where an "index" argument to an ASL 11724function was still (internally) 32 bits instead of the required 64 bits. 11725This was the Index argument to the Index, Mid, and Match operators. 11726 11727The "strupr" function is now permanently local (AcpiUtStrupr), since this 11728is 11729not a POSIX-defined function and not present in most kernel-level C 11730libraries. All references to the C library strupr function have been 11731removed 11732from the headers. 11733 11734Completed the deployment of static functions/prototypes. All prototypes 11735with 11736the static attribute have been moved from the headers to the owning C 11737file. 11738 11739Implemented an extract option (-e) for the AcpiBin utility (AML binary 11740utility). This option allows the utility to extract individual ACPI 11741tables 11742from the output of AcpiDmp. It provides the same functionality of the 11743acpixtract.pl perl script without the worry of setting the correct perl 11744options. AcpiBin runs on Windows and has not yet been generated/validated 11745in 11746the Linux/Unix environment (but should be soon). 11747 11748Updated and fixed the table dump option for AcpiBin (-d). This option 11749converts a single ACPI table to a hex/ascii file, similar to the output 11750of 11751AcpiDmp. 11752 11753Code and Data Size: Current and previous core subsystem library sizes are 11754shown below. These are the code and data sizes for the acpica.lib 11755produced 11756by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11757any ACPI driver or OSPM code. The debug version of the code includes the 11758debug output trace mechanism and has a much larger code and data size. 11759Note 11760that these values will vary depending on the efficiency of the compiler 11761and 11762the compiler options used during generation. 11763 11764 Previous Release: 11765 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11766 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11767 Current Release: 11768 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11769 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11770 11771 117722) iASL Compiler/Disassembler: 11773 11774Disassembler fix: Added a check to ensure that the table length found in 11775the 11776ACPI table header within the input file is not longer than the actual 11777input 11778file size. This indicates some kind of file or table corruption. 11779 11780---------------------------------------- 1178129 March 2005. Summary of changes for version 20050329: 11782 117831) ACPI CA Core Subsystem: 11784 11785An error is now generated if an attempt is made to create a Buffer Field 11786of 11787length zero (A CreateField with a length operand of zero.) 11788 11789The interpreter now issues a warning whenever executable code at the 11790module 11791level is detected during ACPI table load. This will give some idea of the 11792prevalence of this type of code. 11793 11794Implemented support for references to named objects (other than control 11795methods) within package objects. 11796 11797Enhanced package object output for the debug object. Package objects are 11798now 11799completely dumped, showing all elements. 11800 11801Enhanced miscellaneous object output for the debug object. Any object can 11802now be written to the debug object (for example, a device object can be 11803written, and the type of the object will be displayed.) 11804 11805The "static" qualifier has been added to all local functions across both 11806the 11807core subsystem and the iASL compiler. 11808 11809The number of "long" lines (> 80 chars) within the source has been 11810significantly reduced, by about 1/3. 11811 11812Cleaned up all header files to ensure that all CA/iASL functions are 11813prototyped (even static functions) and the formatting is consistent. 11814 11815Two new header files have been added, acopcode.h and acnames.h. 11816 11817Removed several obsolete functions that were no longer used. 11818 11819Code and Data Size: Current and previous core subsystem library sizes are 11820shown below. These are the code and data sizes for the acpica.lib 11821produced 11822by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11823any ACPI driver or OSPM code. The debug version of the code includes the 11824debug output trace mechanism and has a much larger code and data size. 11825Note 11826that these values will vary depending on the efficiency of the compiler 11827and 11828the compiler options used during generation. 11829 11830 Previous Release: 11831 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11832 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11833 Current Release: 11834 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11835 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11836 11837 11838 118392) iASL Compiler/Disassembler: 11840 11841Fixed a problem with the resource descriptor generation/support. For the 11842ResourceSourceIndex and the ResourceSource fields, both must be present, 11843or 11844both must be not present - can't have one without the other. 11845 11846The compiler now returns non-zero from the main procedure if any errors 11847have 11848occurred during the compilation. 11849 11850 11851---------------------------------------- 1185209 March 2005. Summary of changes for version 20050309: 11853 118541) ACPI CA Core Subsystem: 11855 11856The string-to-buffer implicit conversion code has been modified again 11857after 11858a change to the ACPI specification. In order to match the behavior of 11859the 11860other major ACPI implementation, the target buffer is no longer truncated 11861if 11862the source string is smaller than an existing target buffer. This change 11863requires an update to the ACPI spec, and should eliminate the recent 11864AE_AML_BUFFER_LIMIT issues. 11865 11866The "implicit return" support was rewritten to a new algorithm that 11867solves 11868the general case. Rather than attempt to determine when a method is about 11869to 11870exit, the result of every ASL operator is saved momentarily until the 11871very 11872next ASL operator is executed. Therefore, no matter how the method exits, 11873there will always be a saved implicit return value. This feature is only 11874enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 11875eliminate 11876AE_AML_NO_RETURN_VALUE errors when enabled. 11877 11878Implemented implicit conversion support for the predicate (operand) of 11879the 11880If, Else, and While operators. String and Buffer arguments are 11881automatically 11882converted to Integers. 11883 11884Changed the string-to-integer conversion behavior to match the new ACPI 11885errata: "If no integer object exists, a new integer is created. The ASCII 11886string is interpreted as a hexadecimal constant. Each string character is 11887interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 11888with the first character as the most significant digit, and ending with 11889the 11890first non-hexadecimal character or end-of-string." This means that the 11891first 11892non-hex character terminates the conversion and this is the code that was 11893changed. 11894 11895Fixed a problem where the ObjectType operator would fail (fault) when 11896used 11897on an Index of a Package which pointed to a null package element. The 11898operator now properly returns zero (Uninitialized) in this case. 11899 11900Fixed a problem where the While operator used excessive memory by not 11901properly popping the result stack during execution. There was no memory 11902leak 11903after execution, however. (Code provided by Valery Podrezov.) 11904 11905Fixed a problem where references to control methods within Package 11906objects 11907caused the method to be invoked, instead of producing a reference object 11908pointing to the method. 11909 11910Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 11911to 11912improve performance and reduce code size. (Code provided by Alexey 11913Starikovskiy.) 11914 11915Code and Data Size: Current and previous core subsystem library sizes are 11916shown below. These are the code and data sizes for the acpica.lib 11917produced 11918by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11919any ACPI driver or OSPM code. The debug version of the code includes the 11920debug output trace mechanism and has a much larger code and data size. 11921Note 11922that these values will vary depending on the efficiency of the compiler 11923and 11924the compiler options used during generation. 11925 11926 Previous Release: 11927 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11928 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11929 Current Release: 11930 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11931 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11932 11933 119342) iASL Compiler/Disassembler: 11935 11936Fixed a problem with the Return operator with no arguments. Since the AML 11937grammar for the byte encoding requires an operand for the Return opcode, 11938the 11939compiler now emits a Return(Zero) for this case. An ACPI specification 11940update has been written for this case. 11941 11942For tables other than the DSDT, namepath optimization is automatically 11943disabled. This is because SSDTs can be loaded anywhere in the namespace, 11944the 11945compiler has no knowledge of where, and thus cannot optimize namepaths. 11946 11947Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 11948inadvertently omitted from the ACPI specification, and will require an 11949update to the spec. 11950 11951The source file scan for ASCII characters is now optional (-a). This 11952change 11953was made because some vendors place non-ascii characters within comments. 11954However, the scan is simply a brute-force byte compare to ensure all 11955characters in the file are in the range 0x00 to 0x7F. 11956 11957Fixed a problem with the CondRefOf operator where the compiler was 11958inappropriately checking for the existence of the target. Since the point 11959of 11960the operator is to check for the existence of the target at run-time, the 11961compiler no longer checks for the target existence. 11962 11963Fixed a problem where errors generated from the internal AML interpreter 11964during constant folding were not handled properly, causing a fault. 11965 11966Fixed a problem with overly aggressive range checking for the Stall 11967operator. The valid range (max 255) is now only checked if the operand is 11968of 11969type Integer. All other operand types cannot be statically checked. 11970 11971Fixed a problem where control method references within the RefOf, 11972DeRefOf, 11973and ObjectType operators were not treated properly. They are now treated 11974as 11975actual references, not method invocations. 11976 11977Fixed and enhanced the "list namespace" option (-ln). This option was 11978broken 11979a number of releases ago. 11980 11981Improved error handling for the Field, IndexField, and BankField 11982operators. 11983The compiler now cleanly reports and recovers from errors in the field 11984component (FieldUnit) list. 11985 11986Fixed a disassembler problem where the optional ResourceDescriptor fields 11987TRS and TTP were not always handled correctly. 11988 11989Disassembler - Comments in output now use "//" instead of "/*" 11990 11991---------------------------------------- 1199228 February 2005. Summary of changes for version 20050228: 11993 119941) ACPI CA Core Subsystem: 11995 11996Fixed a problem where the result of an Index() operator (an object 11997reference) must increment the reference count on the target object for 11998the 11999life of the object reference. 12000 12001Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12002Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12003WordSpace 12004resource descriptors. 12005 12006Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12007Space Descriptor" string, indicating interpreter support for the 12008descriptors 12009above. 12010 12011Implemented header support for the new ACPI 3.0 FADT flag bits. 12012 12013Implemented header support for the new ACPI 3.0 PCI Express bits for the 12014PM1 12015status/enable registers. 12016 12017Updated header support for the MADT processor local Apic struct and MADT 12018platform interrupt source struct for new ACPI 3.0 fields. 12019 12020Implemented header support for the SRAT and SLIT ACPI tables. 12021 12022Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12023flag 12024at runtime. 12025 12026Code and Data Size: Current and previous core subsystem library sizes are 12027shown below. These are the code and data sizes for the acpica.lib 12028produced 12029by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12030any ACPI driver or OSPM code. The debug version of the code includes the 12031debug output trace mechanism and has a much larger code and data size. 12032Note 12033that these values will vary depending on the efficiency of the compiler 12034and 12035the compiler options used during generation. 12036 12037 Previous Release: 12038 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12039 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12040 Current Release: 12041 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12042 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12043 12044 120452) iASL Compiler/Disassembler: 12046 12047Fixed a problem with the internal 64-bit String-to-integer conversion 12048with 12049strings less than two characters long. 12050 12051Fixed a problem with constant folding where the result of the Index() 12052operator can not be considered a constant. This means that Index() cannot 12053be 12054a type3 opcode and this will require an update to the ACPI specification. 12055 12056Disassembler: Implemented support for the TTP, MTP, and TRS resource 12057descriptor fields. These fields were inadvertently ignored and not output 12058in 12059the disassembly of the resource descriptor. 12060 12061 12062 ---------------------------------------- 1206311 February 2005. Summary of changes for version 20050211: 12064 120651) ACPI CA Core Subsystem: 12066 12067Implemented ACPI 3.0 support for implicit conversion within the Match() 12068operator. MatchObjects can now be of type integer, buffer, or string 12069instead 12070of just type integer. Package elements are implicitly converted to the 12071type 12072of the MatchObject. This change aligns the behavior of Match() with the 12073behavior of the other logical operators (LLess(), etc.) It also requires 12074an 12075errata change to the ACPI specification as this support was intended for 12076ACPI 3.0, but was inadvertently omitted. 12077 12078Fixed a problem with the internal implicit "to buffer" conversion. 12079Strings 12080that are converted to buffers will cause buffer truncation if the string 12081is 12082smaller than the target buffer. Integers that are converted to buffers 12083will 12084not cause buffer truncation, only zero extension (both as per the ACPI 12085spec.) The problem was introduced when code was added to truncate the 12086buffer, but this should not be performed in all cases, only the string 12087case. 12088 12089Fixed a problem with the Buffer and Package operators where the 12090interpreter 12091would get confused if two such operators were used as operands to an ASL 12092operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12093stack was not being popped after the execution of these operators, 12094resulting 12095in an AE_NO_RETURN_VALUE exception. 12096 12097Fixed a problem with constructs of the form Store(Index(...),...). The 12098reference object returned from Index was inadvertently resolved to an 12099actual 12100value. This problem was introduced in version 20050114 when the behavior 12101of 12102Store() was modified to restrict the object types that can be used as the 12103source operand (to match the ACPI specification.) 12104 12105Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12106 12107Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12108 12109Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12110 12111Code and Data Size: Current and previous core subsystem library sizes are 12112shown below. These are the code and data sizes for the acpica.lib 12113produced 12114by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12115any ACPI driver or OSPM code. The debug version of the code includes the 12116debug output trace mechanism and has a much larger code and data size. 12117Note 12118that these values will vary depending on the efficiency of the compiler 12119and 12120the compiler options used during generation. 12121 12122 Previous Release: 12123 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12124 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12125 Current Release: 12126 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12127 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12128 12129 121302) iASL Compiler/Disassembler: 12131 12132Fixed a code generation problem in the constant folding optimization code 12133where incorrect code was generated if a constant was reduced to a buffer 12134object (i.e., a reduced type 5 opcode.) 12135 12136Fixed a typechecking problem for the ToBuffer operator. Caused by an 12137incorrect return type in the internal opcode information table. 12138 12139---------------------------------------- 1214025 January 2005. Summary of changes for version 20050125: 12141 121421) ACPI CA Core Subsystem: 12143 12144Fixed a recently introduced problem with the Global Lock where the 12145underlying semaphore was not created. This problem was introduced in 12146version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12147Acquire() operation on _GL. 12148 12149The local object cache is now optional, and is disabled by default. Both 12150AcpiExec and the iASL compiler enable the cache because they run in user 12151mode and this enhances their performance. #define 12152ACPI_ENABLE_OBJECT_CACHE 12153to enable the local cache. 12154 12155Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12156the 12157optional "implicit return" support where an error was returned if no 12158return 12159object was expected, but one was implicitly returned. AE_OK is now 12160returned 12161in this case and the implicitly returned object is deleted. 12162AcpiUtEvaluateObject is only occasionally used, and only to execute 12163reserved 12164methods such as _STA and _INI where the return type is known up front. 12165 12166Fixed a few issues with the internal convert-to-integer code. It now 12167returns 12168an error if an attempt is made to convert a null string, a string of only 12169blanks/tabs, or a zero-length buffer. This affects both implicit 12170conversion 12171and explicit conversion via the ToInteger() operator. 12172 12173The internal debug code in AcpiUtAcquireMutex has been commented out. It 12174is 12175not needed for normal operation and should increase the performance of 12176the 12177entire subsystem. The code remains in case it is needed for debug 12178purposes 12179again. 12180 12181The AcpiExec source and makefile are included in the Unix/Linux package 12182for 12183the first time. 12184 12185Code and Data Size: Current and previous core subsystem library sizes are 12186shown below. These are the code and data sizes for the acpica.lib 12187produced 12188by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12189any ACPI driver or OSPM code. The debug version of the code includes the 12190debug output trace mechanism and has a much larger code and data size. 12191Note 12192that these values will vary depending on the efficiency of the compiler 12193and 12194the compiler options used during generation. 12195 12196 Previous Release: 12197 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12198 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12199 Current Release: 12200 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12201 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12202 122032) iASL Compiler/Disassembler: 12204 12205Switch/Case support: A warning is now issued if the type of the Switch 12206value 12207cannot be determined at compile time. For example, Switch(Arg0) will 12208generate the warning, and the type is assumed to be an integer. As per 12209the 12210ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12211the 12212warning. 12213 12214Switch/Case support: Implemented support for buffer and string objects as 12215the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12216buffers and strings. 12217 12218Switch/Case support: The emitted code for the LEqual() comparisons now 12219uses 12220the switch value as the first operand, not the second. The case value is 12221now 12222the second operand, and this allows the case value to be implicitly 12223converted to the type of the switch value, not the other way around. 12224 12225Switch/Case support: Temporary variables are now emitted immediately 12226within 12227the control method, not at the global level. This means that there are 12228now 1222936 temps available per-method, not 36 temps per-module as was the case 12230with 12231the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12232 12233---------------------------------------- 1223414 January 2005. Summary of changes for version 20050114: 12235 12236Added 2005 copyright to all module headers. This affects every module in 12237the core subsystem, iASL compiler, and the utilities. 12238 122391) ACPI CA Core Subsystem: 12240 12241Fixed an issue with the String-to-Buffer conversion code where the string 12242null terminator was not included in the buffer after conversion, but 12243there 12244is existing ASL that assumes the string null terminator is included. This 12245is 12246the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12247introduced in the previous version when the code was updated to correctly 12248set the converted buffer size as per the ACPI specification. The ACPI 12249spec 12250is ambiguous and will be updated to specify that the null terminator must 12251be 12252included in the converted buffer. This also affects the ToBuffer() ASL 12253operator. 12254 12255Fixed a problem with the Mid() ASL/AML operator where it did not work 12256correctly on Buffer objects. Newly created sub-buffers were not being 12257marked 12258as initialized. 12259 12260 12261Fixed a problem in AcpiTbFindTable where incorrect string compares were 12262performed on the OemId and OemTableId table header fields. These fields 12263are 12264not null terminated, so strncmp is now used instead of strcmp. 12265 12266Implemented a restriction on the Store() ASL/AML operator to align the 12267behavior with the ACPI specification. Previously, any object could be 12268used 12269as the source operand. Now, the only objects that may be used are 12270Integers, 12271Buffers, Strings, Packages, Object References, and DDB Handles. If 12272necessary, the original behavior can be restored by enabling the 12273EnableInterpreterSlack flag. 12274 12275Enhanced the optional "implicit return" support to allow an implicit 12276return 12277value from methods that are invoked externally via the AcpiEvaluateObject 12278interface. This enables implicit returns from the _STA and _INI methods, 12279for example. 12280 12281Changed the Revision() ASL/AML operator to return the current version of 12282the 12283AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 12284returned 12285the supported ACPI version (This is the function of the _REV method). 12286 12287Updated the _REV predefined method to return the currently supported 12288version 12289of ACPI, now 3. 12290 12291Implemented batch mode option for the AcpiExec utility (-b). 12292 12293Code and Data Size: Current and previous core subsystem library sizes are 12294shown below. These are the code and data sizes for the acpica.lib 12295produced 12296by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12297any ACPI driver or OSPM code. The debug version of the code includes the 12298debug output trace mechanism and has a much larger code and data size. 12299Note 12300that these values will vary depending on the efficiency of the compiler 12301and 12302the compiler options used during generation. 12303 12304 Previous Release: 12305 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12306 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12307 Current Release: 12308 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12309 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12310 12311---------------------------------------- 1231210 December 2004. Summary of changes for version 20041210: 12313 12314ACPI 3.0 support is nearing completion in both the iASL compiler and the 12315ACPI CA core subsystem. 12316 123171) ACPI CA Core Subsystem: 12318 12319Fixed a problem in the ToDecimalString operator where the resulting 12320string 12321length was incorrectly calculated. The length is now calculated exactly, 12322eliminating incorrect AE_STRING_LIMIT exceptions. 12323 12324Fixed a problem in the ToHexString operator to allow a maximum 200 12325character 12326string to be produced. 12327 12328Fixed a problem in the internal string-to-buffer and buffer-to-buffer 12329copy 12330routine where the length of the resulting buffer was not truncated to the 12331new size (if the target buffer already existed). 12332 12333Code and Data Size: Current and previous core subsystem library sizes are 12334shown below. These are the code and data sizes for the acpica.lib 12335produced 12336by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12337any ACPI driver or OSPM code. The debug version of the code includes the 12338debug output trace mechanism and has a much larger code and data size. 12339Note 12340that these values will vary depending on the efficiency of the compiler 12341and 12342the compiler options used during generation. 12343 12344 Previous Release: 12345 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12346 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12347 Current Release: 12348 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12349 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12350 12351 123522) iASL Compiler/Disassembler: 12353 12354Implemented the new ACPI 3.0 resource template macros - DWordSpace, 12355ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 12356Includes support in the disassembler. 12357 12358Implemented support for the new (ACPI 3.0) parameter to the Register 12359macro, 12360AccessSize. 12361 12362Fixed a problem where the _HE resource name for the Interrupt macro was 12363referencing bit 0 instead of bit 1. 12364 12365Implemented check for maximum 255 interrupts in the Interrupt macro. 12366 12367Fixed a problem with the predefined resource descriptor names where 12368incorrect AML code was generated if the offset within the resource buffer 12369was 0 or 1. The optimizer shortened the AML code to a single byte opcode 12370but did not update the surrounding package lengths. 12371 12372Changes to the Dma macro: All channels within the channel list must be 12373in 12374the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 12375optional (default is BusMaster). 12376 12377Implemented check for maximum 7 data bytes for the VendorShort macro. 12378 12379The ReadWrite parameter is now optional for the Memory32 and similar 12380macros. 12381 12382---------------------------------------- 1238303 December 2004. Summary of changes for version 20041203: 12384 123851) ACPI CA Core Subsystem: 12386 12387The low-level field insertion/extraction code (exfldio) has been 12388completely 12389rewritten to eliminate unnecessary complexity, bugs, and boundary 12390conditions. 12391 12392Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 12393ToDecimalString 12394operators where the input operand could be inadvertently deleted if no 12395conversion was necessary (e.g., if the input to ToInteger was an Integer 12396object.) 12397 12398Fixed a problem with the ToDecimalString and ToHexString where an 12399incorrect 12400exception code was returned if the resulting string would be > 200 chars. 12401AE_STRING_LIMIT is now returned. 12402 12403Fixed a problem with the Concatenate operator where AE_OK was always 12404returned, even if the operation failed. 12405 12406Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12407semaphores to be allocated. 12408 12409Code and Data Size: Current and previous core subsystem library sizes are 12410shown below. These are the code and data sizes for the acpica.lib 12411produced 12412by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12413any ACPI driver or OSPM code. The debug version of the code includes the 12414debug output trace mechanism and has a much larger code and data size. 12415Note 12416that these values will vary depending on the efficiency of the compiler 12417and 12418the compiler options used during generation. 12419 12420 Previous Release: 12421 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12422 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12423 Current Release: 12424 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12425 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12426 12427 124282) iASL Compiler/Disassembler: 12429 12430Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12431recently introduced in 20041119. 12432 12433Fixed a problem with the ToUUID macro where the upper nybble of each 12434buffer 12435byte was inadvertently set to zero. 12436 12437---------------------------------------- 1243819 November 2004. Summary of changes for version 20041119: 12439 124401) ACPI CA Core Subsystem: 12441 12442Fixed a problem in the internal ConvertToInteger routine where new 12443integers 12444were not truncated to 32 bits for 32-bit ACPI tables. This routine 12445converts 12446buffers and strings to integers. 12447 12448Implemented support to store a value to an Index() on a String object. 12449This 12450is an ACPI 2.0 feature that had not yet been implemented. 12451 12452Implemented new behavior for storing objects to individual package 12453elements 12454(via the Index() operator). The previous behavior was to invoke the 12455implicit 12456conversion rules if an object was already present at the index. The new 12457behavior is to simply delete any existing object and directly store the 12458new 12459object. Although the ACPI specification seems unclear on this subject, 12460other 12461ACPI implementations behave in this manner. (This is the root of the 12462AE_BAD_HEX_CONSTANT issue.) 12463 12464Modified the RSDP memory scan mechanism to support the extended checksum 12465for 12466ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12467RSDP signature is found with a valid checksum. 12468 12469Code and Data Size: Current and previous core subsystem library sizes are 12470shown below. These are the code and data sizes for the acpica.lib 12471produced 12472by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12473any ACPI driver or OSPM code. The debug version of the code includes the 12474debug output trace mechanism and has a much larger code and data size. 12475Note 12476that these values will vary depending on the efficiency of the compiler 12477and 12478the compiler options used during generation. 12479 12480 Previous Release: 12481 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12482 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12483 Current Release: 12484 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12485 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12486 12487 124882) iASL Compiler/Disassembler: 12489 12490Fixed a missing semicolon in the aslcompiler.y file. 12491 12492---------------------------------------- 1249305 November 2004. Summary of changes for version 20041105: 12494 124951) ACPI CA Core Subsystem: 12496 12497Implemented support for FADT revision 2. This was an interim table 12498(between 12499ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 12500 12501Implemented optional support to allow uninitialized LocalX and ArgX 12502variables in a control method. The variables are initialized to an 12503Integer 12504object with a value of zero. This support is enabled by setting the 12505AcpiGbl_EnableInterpreterSlack flag to TRUE. 12506 12507Implemented support for Integer objects for the SizeOf operator. Either 125084 12509or 8 is returned, depending on the current integer size (32-bit or 64- 12510bit, 12511depending on the parent table revision). 12512 12513Fixed a problem in the implementation of the SizeOf and ObjectType 12514operators 12515where the operand was resolved to a value too early, causing incorrect 12516return values for some objects. 12517 12518Fixed some possible memory leaks during exceptional conditions. 12519 12520Code and Data Size: Current and previous core subsystem library sizes are 12521shown below. These are the code and data sizes for the acpica.lib 12522produced 12523by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12524any ACPI driver or OSPM code. The debug version of the code includes the 12525debug output trace mechanism and has a much larger code and data size. 12526Note 12527that these values will vary depending on the efficiency of the compiler 12528and 12529the compiler options used during generation. 12530 12531 Previous Release: 12532 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12533 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12534 Current Release: 12535 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12536 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12537 12538 125392) iASL Compiler/Disassembler: 12540 12541Implemented support for all ACPI 3.0 reserved names and methods. 12542 12543Implemented all ACPI 3.0 grammar elements in the front-end, including 12544support for semicolons. 12545 12546Implemented the ACPI 3.0 Function() and ToUUID() macros 12547 12548Fixed a problem in the disassembler where a Scope() operator would not be 12549emitted properly if the target of the scope was in another table. 12550 12551---------------------------------------- 1255215 October 2004. Summary of changes for version 20041015: 12553 12554Note: ACPI CA is currently undergoing an in-depth and complete formal 12555evaluation to test/verify the following areas. Other suggestions are 12556welcome. This will result in an increase in the frequency of releases and 12557the number of bug fixes in the next few months. 12558 - Functional tests for all ASL/AML operators 12559 - All implicit/explicit type conversions 12560 - Bit fields and operation regions 12561 - 64-bit math support and 32-bit-only "truncated" math support 12562 - Exceptional conditions, both compiler and interpreter 12563 - Dynamic object deletion and memory leaks 12564 - ACPI 3.0 support when implemented 12565 - External interfaces to the ACPI subsystem 12566 12567 125681) ACPI CA Core Subsystem: 12569 12570Fixed two alignment issues on 64-bit platforms - within debug statements 12571in 12572AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 12573Address 12574field within the non-aligned ACPI generic address structure. 12575 12576Fixed a problem in the Increment and Decrement operators where incorrect 12577operand resolution could result in the inadvertent modification of the 12578original integer when the integer is passed into another method as an 12579argument and the arg is then incremented/decremented. 12580 12581Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 12582bit 12583BCD number were truncated during conversion. 12584 12585Fixed a problem in the ToDecimal operator where the length of the 12586resulting 12587string could be set incorrectly too long if the input operand was a 12588Buffer 12589object. 12590 12591Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 12592(0) 12593within a buffer would prematurely terminate a compare between buffer 12594objects. 12595 12596Added a check for string overflow (>200 characters as per the ACPI 12597specification) during the Concatenate operator with two string operands. 12598 12599Code and Data Size: Current and previous core subsystem library sizes are 12600shown below. These are the code and data sizes for the acpica.lib 12601produced 12602by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12603any ACPI driver or OSPM code. The debug version of the code includes the 12604debug output trace mechanism and has a much larger code and data size. 12605Note 12606that these values will vary depending on the efficiency of the compiler 12607and 12608the compiler options used during generation. 12609 12610 Previous Release: 12611 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12612 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12613 Current Release: 12614 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12615 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12616 12617 12618 126192) iASL Compiler/Disassembler: 12620 12621Allow the use of the ObjectType operator on uninitialized Locals and Args 12622(returns 0 as per the ACPI specification). 12623 12624Fixed a problem where the compiler would fault if there was a syntax 12625error 12626in the FieldName of all of the various CreateXXXField operators. 12627 12628Disallow the use of lower case letters within the EISAID macro, as per 12629the 12630ACPI specification. All EISAID strings must be of the form "UUUNNNN" 12631Where 12632U is an uppercase letter and N is a hex digit. 12633 12634 12635---------------------------------------- 1263606 October 2004. Summary of changes for version 20041006: 12637 126381) ACPI CA Core Subsystem: 12639 12640Implemented support for the ACPI 3.0 Timer operator. This ASL function 12641implements a 64-bit timer with 100 nanosecond granularity. 12642 12643Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 12644implement the ACPI 3.0 Timer operator. This allows the host OS to 12645implement 12646the timer with the best clock available. Also, it keeps the core 12647subsystem 12648out of the clock handling business, since the host OS (usually) performs 12649this function. 12650 12651Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 12652functions use a 64-bit address which is part of the packed ACPI Generic 12653Address Structure. Since the structure is non-aligned, the alignment 12654macros 12655are now used to extract the address to a local variable before use. 12656 12657Fixed a problem where the ToInteger operator assumed all input strings 12658were 12659hexadecimal. The operator now handles both decimal strings and hex 12660strings 12661(prefixed with "0x"). 12662 12663Fixed a problem where the string length in the string object created as a 12664result of the internal ConvertToString procedure could be incorrect. This 12665potentially affected all implicit conversions and also the 12666ToDecimalString 12667and ToHexString operators. 12668 12669Fixed two problems in the ToString operator. If the length parameter was 12670zero, an incorrect string object was created and the value of the input 12671length parameter was inadvertently changed from zero to Ones. 12672 12673Fixed a problem where the optional ResourceSource string in the 12674ExtendedIRQ 12675resource macro was ignored. 12676 12677Simplified the interfaces to the internal division functions, reducing 12678code 12679size and complexity. 12680 12681Code and Data Size: Current and previous core subsystem library sizes are 12682shown below. These are the code and data sizes for the acpica.lib 12683produced 12684by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12685any ACPI driver or OSPM code. The debug version of the code includes the 12686debug output trace mechanism and has a much larger code and data size. 12687Note 12688that these values will vary depending on the efficiency of the compiler 12689and 12690the compiler options used during generation. 12691 12692 Previous Release: 12693 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12694 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12695 Current Release: 12696 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12697 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12698 12699 127002) iASL Compiler/Disassembler: 12701 12702Implemented support for the ACPI 3.0 Timer operator. 12703 12704Fixed a problem where the Default() operator was inadvertently ignored in 12705a 12706Switch/Case block. This was a problem in the translation of the Switch 12707statement to If...Else pairs. 12708 12709Added support to allow a standalone Return operator, with no parentheses 12710(or 12711operands). 12712 12713Fixed a problem with code generation for the ElseIf operator where the 12714translated Else...If parse tree was improperly constructed leading to the 12715loss of some code. 12716 12717---------------------------------------- 1271822 September 2004. Summary of changes for version 20040922: 12719 127201) ACPI CA Core Subsystem: 12721 12722Fixed a problem with the implementation of the LNot() operator where 12723"Ones" 12724was not returned for the TRUE case. Changed the code to return Ones 12725instead 12726of (!Arg) which was usually 1. This change affects iASL constant folding 12727for 12728this operator also. 12729 12730Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 12731not 12732initialized properly -- Now zero the entire buffer in this case where the 12733buffer already exists. 12734 12735Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 12736Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 12737related code considerably. This will require changes/updates to all OS 12738interface layers (OSLs.) 12739 12740Implemented a new external interface, AcpiInstallExceptionHandler, to 12741allow 12742a system exception handler to be installed. This handler is invoked upon 12743any 12744run-time exception that occurs during control method execution. 12745 12746Added support for the DSDT in AcpiTbFindTable. This allows the 12747DataTableRegion() operator to access the local copy of the DSDT. 12748 12749Code and Data Size: Current and previous core subsystem library sizes are 12750shown below. These are the code and data sizes for the acpica.lib 12751produced 12752by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12753any ACPI driver or OSPM code. The debug version of the code includes the 12754debug output trace mechanism and has a much larger code and data size. 12755Note 12756that these values will vary depending on the efficiency of the compiler 12757and 12758the compiler options used during generation. 12759 12760 Previous Release: 12761 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12762 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12763 Current Release: 12764 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12765 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12766 12767 127682) iASL Compiler/Disassembler: 12769 12770Fixed a problem with constant folding and the LNot operator. LNot was 12771returning 1 in the TRUE case, not Ones as per the ACPI specification. 12772This 12773could result in the generation of an incorrect folded/reduced constant. 12774 12775End-Of-File is now allowed within a "//"-style comment. A parse error no 12776longer occurs if such a comment is at the very end of the input ASL 12777source 12778file. 12779 12780Implemented the "-r" option to override the Revision in the table header. 12781The initial use of this option will be to simplify the evaluation of the 12782AML 12783interpreter by allowing a single ASL source module to be compiled for 12784either 1278532-bit or 64-bit integers. 12786 12787 12788---------------------------------------- 1278927 August 2004. Summary of changes for version 20040827: 12790 127911) ACPI CA Core Subsystem: 12792 12793- Implemented support for implicit object conversion in the non-numeric 12794logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 12795and 12796LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 12797the second operand is implicitly converted on the fly to match the type 12798of 12799the first operand. For example: 12800 12801 LEqual (Source1, Source2) 12802 12803Source1 and Source2 must each evaluate to an integer, a string, or a 12804buffer. 12805The data type of Source1 dictates the required type of Source2. Source2 12806is 12807implicitly converted if necessary to match the type of Source1. 12808 12809- Updated and corrected the behavior of the string conversion support. 12810The 12811rules concerning conversion of buffers to strings (according to the ACPI 12812specification) are as follows: 12813 12814ToDecimalString - explicit byte-wise conversion of buffer to string of 12815decimal values (0-255) separated by commas. ToHexString - explicit byte- 12816wise 12817conversion of buffer to string of hex values (0-FF) separated by commas. 12818ToString - explicit byte-wise conversion of buffer to string. Byte-by- 12819byte 12820copy with no transform except NULL terminated. Any other implicit buffer- 12821to- 12822string conversion - byte-wise conversion of buffer to string of hex 12823values 12824(0-FF) separated by spaces. 12825 12826- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 12827 12828- Fixed a problem in AcpiNsGetPathnameLength where the returned length 12829was 12830one byte too short in the case of a node in the root scope. This could 12831cause a fault during debug output. 12832 12833- Code and Data Size: Current and previous core subsystem library sizes 12834are 12835shown below. These are the code and data sizes for the acpica.lib 12836produced 12837by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12838any ACPI driver or OSPM code. The debug version of the code includes the 12839debug output trace mechanism and has a much larger code and data size. 12840Note 12841that these values will vary depending on the efficiency of the compiler 12842and 12843the compiler options used during generation. 12844 12845 Previous Release: 12846 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12847 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12848 Current Release: 12849 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12850 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12851 12852 128532) iASL Compiler/Disassembler: 12854 12855- Fixed a Linux generation error. 12856 12857 12858---------------------------------------- 1285916 August 2004. Summary of changes for version 20040816: 12860 128611) ACPI CA Core Subsystem: 12862 12863Designed and implemented support within the AML interpreter for the so- 12864called "implicit return". This support returns the result of the last 12865ASL 12866operation within a control method, in the absence of an explicit Return() 12867operator. A few machines depend on this behavior, even though it is not 12868explicitly supported by the ASL language. It is optional support that 12869can 12870be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 12871 12872Removed support for the PCI_Config address space from the internal low 12873level 12874hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 12875support was not used internally, and would not work correctly anyway 12876because 12877the PCI bus number and segment number were not supported. There are 12878separate interfaces for PCI configuration space access because of the 12879unique 12880interface. 12881 12882Code and Data Size: Current and previous core subsystem library sizes are 12883shown below. These are the code and data sizes for the acpica.lib 12884produced 12885by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12886any ACPI driver or OSPM code. The debug version of the code includes the 12887debug output trace mechanism and has a much larger code and data size. 12888Note 12889that these values will vary depending on the efficiency of the compiler 12890and 12891the compiler options used during generation. 12892 12893 Previous Release: 12894 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12895 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12896 Current Release: 12897 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12898 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12899 12900 129012) iASL Compiler/Disassembler: 12902 12903Fixed a problem where constants in ASL expressions at the root level (not 12904within a control method) could be inadvertently truncated during code 12905generation. This problem was introduced in the 20040715 release. 12906 12907 12908---------------------------------------- 1290915 July 2004. Summary of changes for version 20040715: 12910 129111) ACPI CA Core Subsystem: 12912 12913Restructured the internal HW GPE interfaces to pass/track the current 12914state 12915of interrupts (enabled/disabled) in order to avoid possible deadlock and 12916increase flexibility of the interfaces. 12917 12918Implemented a "lexicographical compare" for String and Buffer objects 12919within 12920the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 12921- 12922as per further clarification to the ACPI specification. Behavior is 12923similar 12924to C library "strcmp". 12925 12926Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 12927external function. In the 32-bit non-debug case, the stack use has been 12928reduced from 168 bytes to 32 bytes. 12929 12930Deployed a new run-time configuration flag, 12931AcpiGbl_EnableInterpreterSlack, 12932whose purpose is to allow the AML interpreter to forgive certain bad AML 12933constructs. Default setting is FALSE. 12934 12935Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 12936IO 12937support code. If enabled, it allows field access to go beyond the end of 12938a 12939region definition if the field is within the region length rounded up to 12940the 12941next access width boundary (a common coding error.) 12942 12943Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 12944ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 12945these 12946symbols are lowercased by the latest version of the AcpiSrc tool. 12947 12948The prototypes for the PCI interfaces in acpiosxf.h have been updated to 12949rename "Register" to simply "Reg" to prevent certain compilers from 12950complaining. 12951 12952Code and Data Size: Current and previous core subsystem library sizes are 12953shown below. These are the code and data sizes for the acpica.lib 12954produced 12955by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12956any ACPI driver or OSPM code. The debug version of the code includes the 12957debug output trace mechanism and has a much larger code and data size. 12958Note 12959that these values will vary depending on the efficiency of the compiler 12960and 12961the compiler options used during generation. 12962 12963 Previous Release: 12964 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12965 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12966 Current Release: 12967 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12968 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12969 12970 129712) iASL Compiler/Disassembler: 12972 12973Implemented full support for Package objects within the Case() operator. 12974Note: The Break() operator is currently not supported within Case blocks 12975(TermLists) as there is some question about backward compatibility with 12976ACPI 129771.0 interpreters. 12978 12979 12980Fixed a problem where complex terms were not supported properly within 12981the 12982Switch() operator. 12983 12984Eliminated extraneous warning for compiler-emitted reserved names of the 12985form "_T_x". (Used in Switch/Case operators.) 12986 12987Eliminated optimization messages for "_T_x" objects and small constants 12988within the DefinitionBlock operator. 12989 12990 12991---------------------------------------- 1299215 June 2004. Summary of changes for version 20040615: 12993 129941) ACPI CA Core Subsystem: 12995 12996Implemented support for Buffer and String objects (as per ACPI 2.0) for 12997the 12998following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12999LLessEqual. 13000 13001All directory names in the entire source package are lower case, as they 13002were in earlier releases. 13003 13004Implemented "Disassemble" command in the AML debugger that will 13005disassemble 13006a single control method. 13007 13008Code and Data Size: Current and previous core subsystem library sizes are 13009shown below. These are the code and data sizes for the acpica.lib 13010produced 13011by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13012any ACPI driver or OSPM code. The debug version of the code includes the 13013debug output trace mechanism and has a much larger code and data size. 13014Note 13015that these values will vary depending on the efficiency of the compiler 13016and 13017the compiler options used during generation. 13018 13019 Previous Release: 13020 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13021 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13022 13023 Current Release: 13024 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13025 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13026 13027 130282) iASL Compiler/Disassembler: 13029 13030Implemented support for Buffer and String objects (as per ACPI 2.0) for 13031the 13032following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13033LLessEqual. 13034 13035All directory names in the entire source package are lower case, as they 13036were in earlier releases. 13037 13038Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13039not found. 13040 13041Fixed an issue with the Windows version of the compiler where later 13042versions 13043of Windows place the FADT in the registry under the name "FADT" and not 13044"FACP" as earlier versions did. This applies when using the -g or - 13045d<nofilename> options. The compiler now looks for both strings as 13046necessary. 13047 13048Fixed a problem with compiler namepath optimization where a namepath 13049within 13050the Scope() operator could not be optimized if the namepath was a subpath 13051of 13052the current scope path. 13053 13054---------------------------------------- 1305527 May 2004. Summary of changes for version 20040527: 13056 130571) ACPI CA Core Subsystem: 13058 13059Completed a new design and implementation for EBDA (Extended BIOS Data 13060Area) 13061support in the RSDP scan code. The original code improperly scanned for 13062the 13063EBDA by simply scanning from memory location 0 to 0x400. The correct 13064method 13065is to first obtain the EBDA pointer from within the BIOS data area, then 13066scan 1K of memory starting at the EBDA pointer. There appear to be few 13067if 13068any machines that place the RSDP in the EBDA, however. 13069 13070Integrated a fix for a possible fault during evaluation of BufferField 13071arguments. Obsolete code that was causing the problem was removed. 13072 13073Found and fixed a problem in the Field Support Code where data could be 13074corrupted on a bit field read that starts on an aligned boundary but does 13075not end on an aligned boundary. Merged the read/write "datum length" 13076calculation code into a common procedure. 13077 13078Rolled in a couple of changes to the FreeBSD-specific header. 13079 13080 13081Code and Data Size: Current and previous core subsystem library sizes are 13082shown below. These are the code and data sizes for the acpica.lib 13083produced 13084by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13085any ACPI driver or OSPM code. The debug version of the code includes the 13086debug output trace mechanism and has a much larger code and data size. 13087Note 13088that these values will vary depending on the efficiency of the compiler 13089and 13090the compiler options used during generation. 13091 13092 Previous Release: 13093 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13094 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13095 Current Release: 13096 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13097 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13098 13099 131002) iASL Compiler/Disassembler: 13101 13102Fixed a generation warning produced by some overly-verbose compilers for 13103a 1310464-bit constant. 13105 13106---------------------------------------- 1310714 May 2004. Summary of changes for version 20040514: 13108 131091) ACPI CA Core Subsystem: 13110 13111Fixed a problem where hardware GPE enable bits sometimes not set properly 13112during and after GPE method execution. Result of 04/27 changes. 13113 13114Removed extra "clear all GPEs" when sleeping/waking. 13115 13116Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13117AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13118to 13119the new AcpiEv* calls as appropriate. 13120 13121ACPI_OS_NAME was removed from the OS-specific headers. The default name 13122is 13123now "Microsoft Windows NT" for maximum compatibility. However this can 13124be 13125changed by modifying the acconfig.h file. 13126 13127Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13128traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13129 13130Run _INI methods on ThermalZone objects. This is against the ACPI 13131specification, but there is apparently ASL code in the field that has 13132these 13133_INI methods, and apparently "other" AML interpreters execute them. 13134 13135Performed a full 16/32/64 bit lint that resulted in some small changes. 13136 13137Added a sleep simulation command to the AML debugger to test sleep code. 13138 13139Code and Data Size: Current and previous core subsystem library sizes are 13140shown below. These are the code and data sizes for the acpica.lib 13141produced 13142by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13143any ACPI driver or OSPM code. The debug version of the code includes the 13144debug output trace mechanism and has a much larger code and data size. 13145Note 13146that these values will vary depending on the efficiency of the compiler 13147and 13148the compiler options used during generation. 13149 13150 Previous Release: 13151 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13152 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13153 Current Release: 13154 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13155 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13156 13157---------------------------------------- 1315827 April 2004. Summary of changes for version 20040427: 13159 131601) ACPI CA Core Subsystem: 13161 13162Completed a major overhaul of the GPE handling within ACPI CA. There are 13163now three types of GPEs: wake-only, runtime-only, and combination 13164wake/run. 13165The only GPEs allowed to be combination wake/run are for button-style 13166devices such as a control-method power button, control-method sleep 13167button, 13168or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13169not 13170referenced by any _PRW methods are marked for "runtime" and hardware 13171enabled. Any GPE that is referenced by a _PRW method is marked for 13172"wake" 13173(and disabled at runtime). However, at sleep time, only those GPEs that 13174have been specifically enabled for wake via the AcpiEnableGpe interface 13175will 13176actually be hardware enabled. 13177 13178A new external interface has been added, AcpiSetGpeType(), that is meant 13179to 13180be used by device drivers to force a GPE to a particular type. It will 13181be 13182especially useful for the drivers for the button devices mentioned above. 13183 13184Completed restructuring of the ACPI CA initialization sequence so that 13185default operation region handlers are installed before GPEs are 13186initialized 13187and the _PRW methods are executed. This will prevent errors when the 13188_PRW 13189methods attempt to access system memory or I/O space. 13190 13191GPE enable/disable no longer reads the GPE enable register. We now keep 13192the 13193enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13194thus no longer depend on the hardware to maintain these bits. 13195 13196Always clear the wake status and fixed/GPE status bits before sleep, even 13197for state S5. 13198 13199Improved the AML debugger output for displaying the GPE blocks and their 13200current status. 13201 13202Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13203where 13204x = 0,1,2,3,4. 13205 13206Fixed a problem where the physical address was incorrectly calculated 13207when 13208the Load() operator was used to directly load from an Operation Region 13209(vs. 13210loading from a Field object.) Also added check for minimum table length 13211for 13212this case. 13213 13214Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13215mutex release. 13216 13217Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13218consistency with the other fields returned. 13219 13220Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13221structure for each GPE in the system, so the size of this structure is 13222important. 13223 13224CPU stack requirement reduction: Cleaned up the method execution and 13225object 13226evaluation paths so that now a parameter structure is passed, instead of 13227copying the various method parameters over and over again. 13228 13229In evregion.c: Correctly exit and reenter the interpreter region if and 13230only if dispatching an operation region request to a user-installed 13231handler. 13232Do not exit/reenter when dispatching to a default handler (e.g., default 13233system memory or I/O handlers) 13234 13235 13236Notes for updating drivers for the new GPE support. The following 13237changes 13238must be made to ACPI-related device drivers that are attached to one or 13239more 13240GPEs: (This information will be added to the ACPI CA Programmer 13241Reference.) 13242 132431) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13244must 13245explicitly call AcpiEnableGpe. 132462) There is a new interface called AcpiSetGpeType. This should be called 13247before enabling the GPE. Also, this interface will automatically disable 13248the GPE if it is currently enabled. 132493) AcpiEnableGpe no longer supports a GPE type flag. 13250 13251Specific drivers that must be changed: 132521) EC driver: 13253 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13254AeGpeHandler, NULL); 13255 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13256 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13257 132582) Button Drivers (Power, Lid, Sleep): 13259Run _PRW method under parent device 13260If _PRW exists: /* This is a control-method button */ 13261 Extract GPE number and possibly GpeDevice 13262 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13263 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13264 13265For all other devices that have _PRWs, we automatically set the GPE type 13266to 13267ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13268This 13269must be done on a selective basis, usually requiring some kind of user 13270app 13271to allow the user to pick the wake devices. 13272 13273 13274Code and Data Size: Current and previous core subsystem library sizes are 13275shown below. These are the code and data sizes for the acpica.lib 13276produced 13277by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13278any ACPI driver or OSPM code. The debug version of the code includes the 13279debug output trace mechanism and has a much larger code and data size. 13280Note 13281that these values will vary depending on the efficiency of the compiler 13282and 13283the compiler options used during generation. 13284 13285 Previous Release: 13286 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13287 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13288 Current Release: 13289 13290 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13291 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13292 13293 13294 13295---------------------------------------- 1329602 April 2004. Summary of changes for version 20040402: 13297 132981) ACPI CA Core Subsystem: 13299 13300Fixed an interpreter problem where an indirect store through an ArgX 13301parameter was incorrectly applying the "implicit conversion rules" during 13302the store. From the ACPI specification: "If the target is a method local 13303or 13304argument (LocalX or ArgX), no conversion is performed and the result is 13305stored directly to the target". The new behavior is to disable implicit 13306conversion during ALL stores to an ArgX. 13307 13308Changed the behavior of the _PRW method scan to ignore any and all errors 13309returned by a given _PRW. This prevents the scan from aborting from the 13310failure of any single _PRW. 13311 13312Moved the runtime configuration parameters from the global init procedure 13313to 13314static variables in acglobal.h. This will allow the host to override the 13315default values easily. 13316 13317Code and Data Size: Current and previous core subsystem library sizes are 13318shown below. These are the code and data sizes for the acpica.lib 13319produced 13320by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13321any ACPI driver or OSPM code. The debug version of the code includes the 13322debug output trace mechanism and has a much larger code and data size. 13323Note 13324that these values will vary depending on the efficiency of the compiler 13325and 13326the compiler options used during generation. 13327 13328 Previous Release: 13329 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13330 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13331 Current Release: 13332 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13333 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13334 13335 133362) iASL Compiler/Disassembler: 13337 13338iASL now fully disassembles SSDTs. However, External() statements are 13339not 13340generated automatically for unresolved symbols at this time. This is a 13341planned feature for future implementation. 13342 13343Fixed a scoping problem in the disassembler that occurs when the type of 13344the 13345target of a Scope() operator is overridden. This problem caused an 13346incorrectly nested internal namespace to be constructed. 13347 13348Any warnings or errors that are emitted during disassembly are now 13349commented 13350out automatically so that the resulting file can be recompiled without 13351any 13352hand editing. 13353 13354---------------------------------------- 1335526 March 2004. Summary of changes for version 20040326: 13356 133571) ACPI CA Core Subsystem: 13358 13359Implemented support for "wake" GPEs via interaction between GPEs and the 13360_PRW methods. Every GPE that is pointed to by one or more _PRWs is 13361identified as a WAKE GPE and by default will no longer be enabled at 13362runtime. Previously, we were blindly enabling all GPEs with a 13363corresponding 13364_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 13365We 13366believe this has been the cause of thousands of "spurious" GPEs on some 13367systems. 13368 13369This new GPE behavior is can be reverted to the original behavior (enable 13370ALL GPEs at runtime) via a runtime flag. 13371 13372Fixed a problem where aliased control methods could not access objects 13373properly. The proper scope within the namespace was not initialized 13374(transferred to the target of the aliased method) before executing the 13375target method. 13376 13377Fixed a potential race condition on internal object deletion on the 13378return 13379object in AcpiEvaluateObject. 13380 13381Integrated a fix for resource descriptors where both _MEM and _MTP were 13382being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 13383wide, 0x0F instead of 0x03.) 13384 13385Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 13386preventing 13387a 13388fault in some cases. 13389 13390Updated Notify() values for debug statements in evmisc.c 13391 13392Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 13393 13394Code and Data Size: Current and previous core subsystem library sizes are 13395shown below. These are the code and data sizes for the acpica.lib 13396produced 13397by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13398any ACPI driver or OSPM code. The debug version of the code includes the 13399debug output trace mechanism and has a much larger code and data size. 13400Note 13401that these values will vary depending on the efficiency of the compiler 13402and 13403the compiler options used during generation. 13404 13405 Previous Release: 13406 13407 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13408 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13409 Current Release: 13410 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13411 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13412 13413---------------------------------------- 1341411 March 2004. Summary of changes for version 20040311: 13415 134161) ACPI CA Core Subsystem: 13417 13418Fixed a problem where errors occurring during the parse phase of control 13419method execution did not abort cleanly. For example, objects created and 13420installed in the namespace were not deleted. This caused all subsequent 13421invocations of the method to return the AE_ALREADY_EXISTS exception. 13422 13423Implemented a mechanism to force a control method to "Serialized" 13424execution 13425if the method attempts to create namespace objects. (The root of the 13426AE_ALREADY_EXISTS problem.) 13427 13428Implemented support for the predefined _OSI "internal" control method. 13429Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13430and 13431"Windows 2001.1", and can be easily upgraded for new strings as 13432necessary. 13433This feature will allow "other" operating systems to execute the fully 13434tested, "Windows" code path through the ASL code 13435 13436Global Lock Support: Now allows multiple acquires and releases with any 13437internal thread. Removed concept of "owning thread" for this special 13438mutex. 13439 13440Fixed two functions that were inappropriately declaring large objects on 13441the 13442CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13443during 13444method execution considerably. 13445 13446Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13447S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13448 13449Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13450defined on the machine. 13451 13452Implemented two runtime options: One to force all control method 13453execution 13454to "Serialized" to mimic Windows behavior, another to disable _OSI 13455support 13456if it causes problems on a given machine. 13457 13458Code and Data Size: Current and previous core subsystem library sizes are 13459shown below. These are the code and data sizes for the acpica.lib 13460produced 13461by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13462any ACPI driver or OSPM code. The debug version of the code includes the 13463debug output trace mechanism and has a much larger code and data size. 13464Note 13465that these values will vary depending on the efficiency of the compiler 13466and 13467the compiler options used during generation. 13468 13469 Previous Release: 13470 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13471 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13472 Current Release: 13473 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13474 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13475 134762) iASL Compiler/Disassembler: 13477 13478Fixed an array size problem for FreeBSD that would cause the compiler to 13479fault. 13480 13481---------------------------------------- 1348220 February 2004. Summary of changes for version 20040220: 13483 13484 134851) ACPI CA Core Subsystem: 13486 13487Implemented execution of _SxD methods for Device objects in the 13488GetObjectInfo interface. 13489 13490Fixed calls to _SST method to pass the correct arguments. 13491 13492Added a call to _SST on wake to restore to "working" state. 13493 13494Check for End-Of-Buffer failure case in the WalkResources interface. 13495 13496Integrated fix for 64-bit alignment issue in acglobal.h by moving two 13497structures to the beginning of the file. 13498 13499After wake, clear GPE status register(s) before enabling GPEs. 13500 13501After wake, clear/enable power button. (Perhaps we should clear/enable 13502all 13503fixed events upon wake.) 13504 13505Fixed a couple of possible memory leaks in the Namespace manager. 13506 13507Integrated latest acnetbsd.h file. 13508 13509---------------------------------------- 1351011 February 2004. Summary of changes for version 20040211: 13511 13512 135131) ACPI CA Core Subsystem: 13514 13515Completed investigation and implementation of the call-by-reference 13516mechanism for control method arguments. 13517 13518Fixed a problem where a store of an object into an indexed package could 13519fail if the store occurs within a different method than the method that 13520created the package. 13521 13522Fixed a problem where the ToDecimal operator could return incorrect 13523results. 13524 13525Fixed a problem where the CopyObject operator could fail on some of the 13526more 13527obscure objects (e.g., Reference objects.) 13528 13529Improved the output of the Debug object to display buffer, package, and 13530index objects. 13531 13532Fixed a problem where constructs of the form "RefOf (ArgX)" did not 13533return 13534the expected result. 13535 13536Added permanent ACPI_REPORT_ERROR macros for all instances of the 13537ACPI_AML_INTERNAL exception. 13538 13539Integrated latest version of acfreebsd.h 13540 13541---------------------------------------- 1354216 January 2004. Summary of changes for version 20040116: 13543 13544The purpose of this release is primarily to update the copyright years in 13545each module, thus causing a huge number of diffs. There are a few small 13546functional changes, however. 13547 135481) ACPI CA Core Subsystem: 13549 13550Improved error messages when there is a problem finding one or more of 13551the 13552required base ACPI tables 13553 13554Reintroduced the definition of APIC_HEADER in actbl.h 13555 13556Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 13557 13558Removed extraneous reference to NewObj in dsmthdat.c 13559 135602) iASL compiler 13561 13562Fixed a problem introduced in December that disabled the correct 13563disassembly 13564of Resource Templates 13565 13566 13567---------------------------------------- 1356803 December 2003. Summary of changes for version 20031203: 13569 135701) ACPI CA Core Subsystem: 13571 13572Changed the initialization of Operation Regions during subsystem 13573init to perform two entire walks of the ACPI namespace; The first 13574to initialize the regions themselves, the second to execute the 13575_REG methods. This fixed some interdependencies across _REG 13576methods found on some machines. 13577 13578Fixed a problem where a Store(Local0, Local1) could simply update 13579the object reference count, and not create a new copy of the 13580object if the Local1 is uninitialized. 13581 13582Implemented support for the _SST reserved method during sleep 13583transitions. 13584 13585Implemented support to clear the SLP_TYP and SLP_EN bits when 13586waking up, this is apparently required by some machines. 13587 13588When sleeping, clear the wake status only if SleepState is not S5. 13589 13590Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 13591pointer arithmetic advanced a string pointer too far. 13592 13593Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 13594could be returned if the requested table has not been loaded. 13595 13596Within the support for IRQ resources, restructured the handling of 13597the active and edge/level bits. 13598 13599Fixed a few problems in AcpiPsxExecute() where memory could be 13600leaked under certain error conditions. 13601 13602Improved error messages for the cases where the ACPI mode could 13603not be entered. 13604 13605Code and Data Size: Current and previous core subsystem library 13606sizes are shown below. These are the code and data sizes for the 13607acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13608these values do not include any ACPI driver or OSPM code. The 13609debug version of the code includes the debug output trace 13610mechanism and has a much larger code and data size. Note that 13611these values will vary depending on the efficiency of the compiler 13612and the compiler options used during generation. 13613 13614 Previous Release (20031029): 13615 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13616 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13617 Current Release: 13618 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13619 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13620 136212) iASL Compiler/Disassembler: 13622 13623Implemented a fix for the iASL disassembler where a bad index was 13624generated. This was most noticeable on 64-bit platforms 13625 13626 13627---------------------------------------- 1362829 October 2003. Summary of changes for version 20031029: 13629 136301) ACPI CA Core Subsystem: 13631 13632 13633Fixed a problem where a level-triggered GPE with an associated 13634_Lxx control method was incorrectly cleared twice. 13635 13636Fixed a problem with the Field support code where an access can 13637occur beyond the end-of-region if the field is non-aligned but 13638extends to the very end of the parent region (resulted in an 13639AE_AML_REGION_LIMIT exception.) 13640 13641Fixed a problem with ACPI Fixed Events where an RT Clock handler 13642would not get invoked on an RTC event. The RTC event bitmasks for 13643the PM1 registers were not being initialized properly. 13644 13645Implemented support for executing _STA and _INI methods for 13646Processor objects. Although this is currently not part of the 13647ACPI specification, there is existing ASL code that depends on the 13648init-time execution of these methods. 13649 13650Implemented and deployed a GetDescriptorName function to decode 13651the various types of internal descriptors. Guards against null 13652descriptors during debug output also. 13653 13654Implemented and deployed a GetNodeName function to extract the 4- 13655character namespace node name. This function simplifies the debug 13656and error output, as well as guarding against null pointers during 13657output. 13658 13659Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 13660simplify the debug and error output of 64-bit integers. This 13661macro replaces the HIDWORD and LODWORD macros for dumping these 13662integers. 13663 13664Updated the implementation of the Stall() operator to only call 13665AcpiOsStall(), and also return an error if the operand is larger 13666than 255. This preserves the required behavior of not 13667relinquishing the processor, as would happen if AcpiOsSleep() was 13668called for "long stalls". 13669 13670Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 13671initialized are now treated as NOOPs. 13672 13673Cleaned up a handful of warnings during 64-bit generation. 13674 13675Fixed a reported error where and incorrect GPE number was passed 13676to the GPE dispatch handler. This value is only used for error 13677output, however. Used this opportunity to clean up and streamline 13678the GPE dispatch code. 13679 13680Code and Data Size: Current and previous core subsystem library 13681sizes are shown below. These are the code and data sizes for the 13682acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13683these values do not include any ACPI driver or OSPM code. The 13684 13685debug version of the code includes the debug output trace 13686mechanism and has a much larger code and data size. Note that 13687these values will vary depending on the efficiency of the compiler 13688and the compiler options used during generation. 13689 13690 Previous Release (20031002): 13691 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13692 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13693 Current Release: 13694 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13695 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13696 13697 136982) iASL Compiler/Disassembler: 13699 13700Updated the iASL compiler to return an error if the operand to the 13701Stall() operator is larger than 255. 13702 13703 13704---------------------------------------- 1370502 October 2003. Summary of changes for version 20031002: 13706 13707 137081) ACPI CA Core Subsystem: 13709 13710Fixed a problem with Index Fields where the index was not 13711incremented for fields that require multiple writes to the 13712index/data registers (Fields that are wider than the data 13713register.) 13714 13715Fixed a problem with all Field objects where a write could go 13716beyond the end-of-field if the field was larger than the access 13717granularity and therefore required multiple writes to complete the 13718request. An extra write beyond the end of the field could happen 13719inadvertently. 13720 13721Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 13722would incorrectly be returned if the width of the Data Register 13723was larger than the specified field access width. 13724 13725Completed fixes for LoadTable() and Unload() and verified their 13726operation. Implemented full support for the "DdbHandle" object 13727throughout the ACPI CA subsystem. 13728 13729Implemented full support for the MADT and ECDT tables in the ACPI 13730CA header files. Even though these tables are not directly 13731consumed by ACPI CA, the header definitions are useful for ACPI 13732device drivers. 13733 13734Integrated resource descriptor fixes posted to the Linux ACPI 13735list. This included checks for minimum descriptor length, and 13736support for trailing NULL strings within descriptors that have 13737optional string elements. 13738 13739Code and Data Size: Current and previous core subsystem library 13740sizes are shown below. These are the code and data sizes for the 13741acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13742these values do not include any ACPI driver or OSPM code. The 13743debug version of the code includes the debug output trace 13744mechanism and has a much larger code and data size. Note that 13745these values will vary depending on the efficiency of the compiler 13746and the compiler options used during generation. 13747 13748 Previous Release (20030918): 13749 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13750 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13751 Current Release: 13752 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13753 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13754 13755 137562) iASL Compiler: 13757 13758Implemented detection of non-ASCII characters within the input 13759source ASL file. This catches attempts to compile binary (AML) 13760files early in the compile, with an informative error message. 13761 13762Fixed a problem where the disassembler would fault if the output 13763filename could not be generated or if the output file could not be 13764opened. 13765 13766---------------------------------------- 1376718 September 2003. Summary of changes for version 20030918: 13768 13769 137701) ACPI CA Core Subsystem: 13771 13772Found and fixed a longstanding problem with the late execution of 13773the various deferred AML opcodes (such as Operation Regions, 13774Buffer Fields, Buffers, and Packages). If the name string 13775specified for the name of the new object placed the object in a 13776scope other than the current scope, the initialization/execution 13777of the opcode failed. The solution to this problem was to 13778implement a mechanism where the late execution of such opcodes 13779does not attempt to lookup/create the name a second time in an 13780incorrect scope. This fixes the "region size computed 13781incorrectly" problem. 13782 13783Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 13784Global Lock AE_BAD_PARAMETER error. 13785 13786Fixed several 64-bit issues with prototypes, casting and data 13787types. 13788 13789Removed duplicate prototype from acdisasm.h 13790 13791Fixed an issue involving EC Operation Region Detach (Shaohua Li) 13792 13793Code and Data Size: Current and previous core subsystem library 13794sizes are shown below. These are the code and data sizes for the 13795acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13796these values do not include any ACPI driver or OSPM code. The 13797debug version of the code includes the debug output trace 13798mechanism and has a much larger code and data size. Note that 13799these values will vary depending on the efficiency of the compiler 13800and the compiler options used during generation. 13801 13802 Previous Release: 13803 13804 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13805 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13806 Current Release: 13807 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13808 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13809 13810 138112) Linux: 13812 13813Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 13814correct sleep time in seconds. 13815 13816---------------------------------------- 1381714 July 2003. Summary of changes for version 20030619: 13818 138191) ACPI CA Core Subsystem: 13820 13821Parse SSDTs in order discovered, as opposed to reverse order 13822(Hrvoje Habjanic) 13823 13824Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 13825Klausner, 13826 Nate Lawson) 13827 13828 138292) Linux: 13830 13831Dynamically allocate SDT list (suggested by Andi Kleen) 13832 13833proc function return value cleanups (Andi Kleen) 13834 13835Correctly handle NMI watchdog during long stalls (Andrew Morton) 13836 13837Make it so acpismp=force works (reported by Andrew Morton) 13838 13839 13840---------------------------------------- 1384119 June 2003. Summary of changes for version 20030619: 13842 138431) ACPI CA Core Subsystem: 13844 13845Fix To/FromBCD, eliminating the need for an arch-specific #define. 13846 13847Do not acquire a semaphore in the S5 shutdown path. 13848 13849Fix ex_digits_needed for 0. (Takayoshi Kochi) 13850 13851Fix sleep/stall code reversal. (Andi Kleen) 13852 13853Revert a change having to do with control method calling 13854semantics. 13855 138562) Linux: 13857 13858acpiphp update (Takayoshi Kochi) 13859 13860Export acpi_disabled for sonypi (Stelian Pop) 13861 13862Mention acpismp=force in config help 13863 13864Re-add acpitable.c and acpismp=force. This improves backwards 13865 13866compatibility and also cleans up the code to a significant degree. 13867 13868Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 13869 13870---------------------------------------- 1387122 May 2003. Summary of changes for version 20030522: 13872 138731) ACPI CA Core Subsystem: 13874 13875Found and fixed a reported problem where an AE_NOT_FOUND error 13876occurred occasionally during _BST evaluation. This turned out to 13877be an Owner ID allocation issue where a called method did not get 13878a new ID assigned to it. Eventually, (after 64k calls), the Owner 13879ID UINT16 would wraparound so that the ID would be the same as the 13880caller's and the called method would delete the caller's 13881namespace. 13882 13883Implemented extended error reporting for control methods that are 13884aborted due to a run-time exception. Output includes the exact 13885AML instruction that caused the method abort, a dump of the method 13886locals and arguments at the time of the abort, and a trace of all 13887nested control method calls. 13888 13889Modified the interpreter to allow the creation of buffers of zero 13890length from the AML code. Implemented new code to ensure that no 13891attempt is made to actually allocate a memory buffer (of length 13892zero) - instead, a simple buffer object with a NULL buffer pointer 13893and length zero is created. A warning is no longer issued when 13894the AML attempts to create a zero-length buffer. 13895 13896Implemented a workaround for the "leading asterisk issue" in 13897_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 13898asterisk is automatically removed if present in any HID, UID, or 13899CID strings. The iASL compiler will still flag this asterisk as 13900an error, however. 13901 13902Implemented full support for _CID methods that return a package of 13903multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 13904now additionally returns a device _CID list if present. This 13905required a change to the external interface in order to pass an 13906ACPI_BUFFER object as a parameter since the _CID list is of 13907variable length. 13908 13909Fixed a problem with the new AE_SAME_HANDLER exception where 13910handler initialization code did not know about this exception. 13911 13912Code and Data Size: Current and previous core subsystem library 13913sizes are shown below. These are the code and data sizes for the 13914acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13915these values do not include any ACPI driver or OSPM code. The 13916debug version of the code includes the debug output trace 13917mechanism and has a much larger code and data size. Note that 13918these values will vary depending on the efficiency of the compiler 13919and the compiler options used during generation. 13920 13921 Previous Release (20030509): 13922 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13923 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13924 Current Release: 13925 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13926 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13927 13928 139292) Linux: 13930 13931Fixed a bug in which we would reinitialize the ACPI interrupt 13932after it was already working, thus disabling all ACPI and the IRQs 13933for any other device sharing the interrupt. (Thanks to Stian 13934Jordet) 13935 13936Toshiba driver update (John Belmonte) 13937 13938Return only 0 or 1 for our interrupt handler status (Andrew 13939Morton) 13940 13941 139423) iASL Compiler: 13943 13944Fixed a reported problem where multiple (nested) ElseIf() 13945statements were not handled correctly by the compiler, resulting 13946in incorrect warnings and incorrect AML code. This was a problem 13947in both the ASL parser and the code generator. 13948 13949 139504) Documentation: 13951 13952Added changes to existing interfaces, new exception codes, and new 13953text concerning reference count object management versus garbage 13954collection. 13955 13956---------------------------------------- 1395709 May 2003. Summary of changes for version 20030509. 13958 13959 139601) ACPI CA Core Subsystem: 13961 13962Changed the subsystem initialization sequence to hold off 13963installation of address space handlers until the hardware has been 13964initialized and the system has entered ACPI mode. This is because 13965the installation of space handlers can cause _REG methods to be 13966run. Previously, the _REG methods could potentially be run before 13967ACPI mode was enabled. 13968 13969Fixed some memory leak issues related to address space handler and 13970notify handler installation. There were some problems with the 13971reference count mechanism caused by the fact that the handler 13972objects are shared across several namespace objects. 13973 13974Fixed a reported problem where reference counts within the 13975namespace were not properly updated when named objects created by 13976method execution were deleted. 13977 13978Fixed a reported problem where multiple SSDTs caused a deletion 13979issue during subsystem termination. Restructured the table data 13980structures to simplify the linked lists and the related code. 13981 13982Fixed a problem where the table ID associated with secondary 13983tables (SSDTs) was not being propagated into the namespace objects 13984created by those tables. This would only present a problem for 13985tables that are unloaded at run-time, however. 13986 13987Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 13988type as the length parameter (instead of UINT32). 13989 13990Solved a long-standing problem where an ALREADY_EXISTS error 13991appears on various systems. This problem could happen when there 13992are multiple PCI_Config operation regions under a single PCI root 13993bus. This doesn't happen very frequently, but there are some 13994systems that do this in the ASL. 13995 13996Fixed a reported problem where the internal DeleteNode function 13997was incorrectly handling the case where a namespace node was the 13998first in the parent's child list, and had additional peers (not 13999the only child, but first in the list of children.) 14000 14001Code and Data Size: Current core subsystem library sizes are shown 14002below. These are the code and data sizes for the acpica.lib 14003produced by the Microsoft Visual C++ 6.0 compiler, and these 14004values do not include any ACPI driver or OSPM code. The debug 14005version of the code includes the debug output trace mechanism and 14006has a much larger code and data size. Note that these values will 14007vary depending on the efficiency of the compiler and the compiler 14008options used during generation. 14009 14010 Previous Release 14011 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14012 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14013 Current Release: 14014 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14015 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14016 14017 140182) Linux: 14019 14020Allow ":" in OS override string (Ducrot Bruno) 14021 14022Kobject fix (Greg KH) 14023 14024 140253 iASL Compiler/Disassembler: 14026 14027Fixed a problem in the generation of the C source code files (AML 14028is emitted in C source statements for BIOS inclusion) where the 14029Ascii dump that appears within a C comment at the end of each line 14030could cause a compile time error if the AML sequence happens to 14031have an open comment or close comment sequence embedded. 14032 14033 14034---------------------------------------- 1403524 April 2003. Summary of changes for version 20030424. 14036 14037 140381) ACPI CA Core Subsystem: 14039 14040Support for big-endian systems has been implemented. Most of the 14041support has been invisibly added behind big-endian versions of the 14042ACPI_MOVE_* macros. 14043 14044Fixed a problem in AcpiHwDisableGpeBlock() and 14045AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14046low level hardware write routine. The offset parameter was 14047actually eliminated from the low level read/write routines because 14048they had become obsolete. 14049 14050Fixed a problem where a handler object was deleted twice during 14051the removal of a fixed event handler. 14052 14053 140542) Linux: 14055 14056A fix for SMP systems with link devices was contributed by 14057 14058Compaq's Dan Zink. 14059 14060(2.5) Return whether we handled the interrupt in our IRQ handler. 14061(Linux ISRs no longer return void, so we can propagate the handler 14062return value from the ACPI CA core back to the OS.) 14063 14064 14065 140663) Documentation: 14067 14068The ACPI CA Programmer Reference has been updated to reflect new 14069interfaces and changes to existing interfaces. 14070 14071---------------------------------------- 1407228 March 2003. Summary of changes for version 20030328. 14073 140741) ACPI CA Core Subsystem: 14075 14076The GPE Block Device support has been completed. New interfaces 14077are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14078interfaces (enable, disable, clear, getstatus) have been split 14079into separate interfaces for Fixed Events and General Purpose 14080Events (GPEs) in order to support GPE Block Devices properly. 14081 14082Fixed a problem where the error message "Failed to acquire 14083semaphore" would appear during operations on the embedded 14084controller (EC). 14085 14086Code and Data Size: Current core subsystem library sizes are shown 14087below. These are the code and data sizes for the acpica.lib 14088produced by the Microsoft Visual C++ 6.0 compiler, and these 14089values do not include any ACPI driver or OSPM code. The debug 14090version of the code includes the debug output trace mechanism and 14091has a much larger code and data size. Note that these values will 14092vary depending on the efficiency of the compiler and the compiler 14093options used during generation. 14094 14095 Previous Release 14096 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14097 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14098 Current Release: 14099 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14100 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14101 14102 14103---------------------------------------- 1410428 February 2003. Summary of changes for version 20030228. 14105 14106 141071) ACPI CA Core Subsystem: 14108 14109The GPE handling and dispatch code has been completely overhauled 14110in preparation for support of GPE Block Devices (ID ACPI0006). 14111This affects internal data structures and code only; there should 14112be no differences visible externally. One new file has been 14113added, evgpeblk.c 14114 14115The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14116fields that are used to determine the GPE block lengths. The 14117REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14118structures are ignored. This is per the ACPI specification but it 14119isn't very clear. The full 256 Block 0/1 GPEs are now supported 14120(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14121 14122In the SCI interrupt handler, removed the read of the PM1_CONTROL 14123register to look at the SCI_EN bit. On some machines, this read 14124causes an SMI event and greatly slows down SCI events. (This may 14125in fact be the cause of slow battery status response on some 14126systems.) 14127 14128Fixed a problem where a store of a NULL string to a package object 14129could cause the premature deletion of the object. This was seen 14130during execution of the battery _BIF method on some systems, 14131resulting in no battery data being returned. 14132 14133Added AcpiWalkResources interface to simplify parsing of resource 14134lists. 14135 14136Code and Data Size: Current core subsystem library sizes are shown 14137below. These are the code and data sizes for the acpica.lib 14138produced by the Microsoft Visual C++ 6.0 compiler, and these 14139values do not include any ACPI driver or OSPM code. The debug 14140version of the code includes the debug output trace mechanism and 14141has a much larger code and data size. Note that these values will 14142vary depending on the efficiency of the compiler and the compiler 14143options used during generation. 14144 14145 Previous Release 14146 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14147 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14148 Current Release: 14149 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14150 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14151 14152 141532) Linux 14154 14155S3 fixes (Ole Rohne) 14156 14157Update ACPI PHP driver with to use new acpi_walk_resource API 14158(Bjorn Helgaas) 14159 14160Add S4BIOS support (Pavel Machek) 14161 14162Map in entire table before performing checksum (John Stultz) 14163 14164Expand the mem= cmdline to allow the specification of reserved and 14165ACPI DATA blocks (Pavel Machek) 14166 14167Never use ACPI on VISWS 14168 14169Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14170 14171Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14172causing us to think that some systems support C2 when they really 14173don't. 14174 14175Do not count processor objects for non-present CPUs (Thanks to 14176Dominik Brodowski) 14177 14178 141793) iASL Compiler: 14180 14181Fixed a problem where ASL include files could not be found and 14182opened. 14183 14184Added support for the _PDC reserved name. 14185 14186 14187---------------------------------------- 1418822 January 2003. Summary of changes for version 20030122. 14189 14190 141911) ACPI CA Core Subsystem: 14192 14193Added a check for constructs of the form: Store (Local0, Local0) 14194where Local0 is not initialized. Apparently, some BIOS 14195programmers believe that this is a NOOP. Since this store doesn't 14196do anything anyway, the new prototype behavior will ignore this 14197error. This is a case where we can relax the strict checking in 14198the interpreter in the name of compatibility. 14199 14200 142012) Linux 14202 14203The AcpiSrc Source Conversion Utility has been released with the 14204Linux package for the first time. This is the utility that is 14205used to convert the ACPI CA base source code to the Linux version. 14206 14207(Both) Handle P_BLK lengths shorter than 6 more gracefully 14208 14209(Both) Move more headers to include/acpi, and delete an unused 14210header. 14211 14212(Both) Move drivers/acpi/include directory to include/acpi 14213 14214(Both) Boot functions don't use cmdline, so don't pass it around 14215 14216(Both) Remove include of unused header (Adrian Bunk) 14217 14218(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14219the 14220former now also includes the latter, acpiphp.h only needs the one, 14221now. 14222 14223(2.5) Make it possible to select method of bios restoring after S3 14224resume. [=> no more ugly ifdefs] (Pavel Machek) 14225 14226(2.5) Make proc write interfaces work (Pavel Machek) 14227 14228(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14229 14230(2.5) Break out ACPI Perf code into its own module, under cpufreq 14231(Dominik Brodowski) 14232 14233(2.4) S4BIOS support (Ducrot Bruno) 14234 14235(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14236Visinoni) 14237 14238 142393) iASL Compiler: 14240 14241Added support to disassemble SSDT and PSDTs. 14242 14243Implemented support to obtain SSDTs from the Windows registry if 14244available. 14245 14246 14247---------------------------------------- 1424809 January 2003. Summary of changes for version 20030109. 14249 142501) ACPI CA Core Subsystem: 14251 14252Changed the behavior of the internal Buffer-to-String conversion 14253function. The current ACPI specification states that the contents 14254of the buffer are "converted to a string of two-character 14255hexadecimal numbers, each separated by a space". Unfortunately, 14256this definition is not backwards compatible with existing ACPI 1.0 14257implementations (although the behavior was not defined in the ACPI 142581.0 specification). The new behavior simply copies data from the 14259buffer to the string until a null character is found or the end of 14260the buffer is reached. The new String object is always null 14261terminated. This problem was seen during the generation of _BIF 14262battery data where incorrect strings were returned for battery 14263type, etc. This will also require an errata to the ACPI 14264specification. 14265 14266Renamed all instances of NATIVE_UINT and NATIVE_INT to 14267ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14268 14269Copyright in all module headers (both Linux and non-Linux) has be 14270updated to 2003. 14271 14272Code and Data Size: Current core subsystem library sizes are shown 14273below. These are the code and data sizes for the acpica.lib 14274produced by the Microsoft Visual C++ 6.0 compiler, and these 14275values do not include any ACPI driver or OSPM code. The debug 14276version of the code includes the debug output trace mechanism and 14277has a much larger code and data size. Note that these values will 14278vary depending on the efficiency of the compiler and the compiler 14279options used during generation. 14280 14281 Previous Release 14282 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14283 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14284 Current Release: 14285 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14286 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14287 14288 142892) Linux 14290 14291Fixed an oops on module insertion/removal (Matthew Tippett) 14292 14293(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 14294 14295(2.5) Replace pr_debug (Randy Dunlap) 14296 14297(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 14298 14299(Both) Eliminate spawning of thread from timer callback, in favor 14300of schedule_work() 14301 14302(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 14303 14304(Both) Added define for Fixed Function HW region (Matthew Wilcox) 14305 14306(Both) Add missing statics to button.c (Pavel Machek) 14307 14308Several changes have been made to the source code translation 14309utility that generates the Linux Code in order to make the code 14310more "Linux-like": 14311 14312All typedefs on structs and unions have been removed in keeping 14313with the Linux coding style. 14314 14315Removed the non-Linux SourceSafe module revision number from each 14316module header. 14317 14318Completed major overhaul of symbols to be lowercased for linux. 14319Doubled the number of symbols that are lowercased. 14320 14321Fixed a problem where identifiers within procedure headers and 14322within quotes were not fully lower cased (they were left with a 14323starting capital.) 14324 14325Some C macros whose only purpose is to allow the generation of 16- 14326bit code are now completely removed in the Linux code, increasing 14327readability and maintainability. 14328 14329---------------------------------------- 14330 1433112 December 2002. Summary of changes for version 20021212. 14332 14333 143341) ACPI CA Core Subsystem: 14335 14336Fixed a problem where the creation of a zero-length AML Buffer 14337would cause a fault. 14338 14339Fixed a problem where a Buffer object that pointed to a static AML 14340buffer (in an ACPI table) could inadvertently be deleted, causing 14341memory corruption. 14342 14343Fixed a problem where a user buffer (passed in to the external 14344ACPI CA interfaces) could be overwritten if the buffer was too 14345small to complete the operation, causing memory corruption. 14346 14347Fixed a problem in the Buffer-to-String conversion code where a 14348string of length one was always returned, regardless of the size 14349of the input Buffer object. 14350 14351Removed the NATIVE_CHAR data type across the entire source due to 14352lack of need and lack of consistent use. 14353 14354Code and Data Size: Current core subsystem library sizes are shown 14355below. These are the code and data sizes for the acpica.lib 14356produced by the Microsoft Visual C++ 6.0 compiler, and these 14357values do not include any ACPI driver or OSPM code. The debug 14358version of the code includes the debug output trace mechanism and 14359has a much larger code and data size. Note that these values will 14360vary depending on the efficiency of the compiler and the compiler 14361options used during generation. 14362 14363 Previous Release 14364 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14365 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14366 Current Release: 14367 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14368 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14369 14370 14371---------------------------------------- 1437205 December 2002. Summary of changes for version 20021205. 14373 143741) ACPI CA Core Subsystem: 14375 14376Fixed a problem where a store to a String or Buffer object could 14377cause corruption of the DSDT if the object type being stored was 14378the same as the target object type and the length of the object 14379being stored was equal to or smaller than the original (existing) 14380target object. This was seen to cause corruption of battery _BIF 14381buffers if the _BIF method modified the buffer on the fly. 14382 14383Fixed a problem where an internal error was generated if a control 14384method invocation was used in an OperationRegion, Buffer, or 14385Package declaration. This was caused by the deferred parsing of 14386the control method and thus the deferred creation of the internal 14387method object. The solution to this problem was to create the 14388internal method object at the moment the method is encountered in 14389the first pass - so that subsequent references to the method will 14390able to obtain the required parameter count and thus properly 14391parse the method invocation. This problem presented itself as an 14392AE_AML_INTERNAL during the pass 1 parse phase during table load. 14393 14394Fixed a problem where the internal String object copy routine did 14395not always allocate sufficient memory for the target String object 14396and caused memory corruption. This problem was seen to cause 14397"Allocation already present in list!" errors as memory allocation 14398became corrupted. 14399 14400Implemented a new function for the evaluation of namespace objects 14401that allows the specification of the allowable return object 14402types. This simplifies a lot of code that checks for a return 14403object of one or more specific objects returned from the 14404evaluation (such as _STA, etc.) This may become and external 14405function if it would be useful to ACPI-related drivers. 14406 14407Completed another round of prefixing #defines with "ACPI_" for 14408clarity. 14409 14410Completed additional code restructuring to allow more modular 14411linking for iASL compiler and AcpiExec. Several files were split 14412creating new files. New files: nsparse.c dsinit.c evgpe.c 14413 14414Implemented an abort mechanism to terminate an executing control 14415method via the AML debugger. This feature is useful for debugging 14416control methods that depend (wait) for specific hardware 14417responses. 14418 14419Code and Data Size: Current core subsystem library sizes are shown 14420below. These are the code and data sizes for the acpica.lib 14421produced by the Microsoft Visual C++ 6.0 compiler, and these 14422values do not include any ACPI driver or OSPM code. The debug 14423version of the code includes the debug output trace mechanism and 14424has a much larger code and data size. Note that these values will 14425vary depending on the efficiency of the compiler and the compiler 14426options used during generation. 14427 14428 Previous Release 14429 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14430 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14431 Current Release: 14432 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14433 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14434 14435 144362) iASL Compiler/Disassembler 14437 14438Fixed a compiler code generation problem for "Interrupt" Resource 14439Descriptors. If specified in the ASL, the optional "Resource 14440Source Index" and "Resource Source" fields were not inserted into 14441the correct location within the AML resource descriptor, creating 14442an invalid descriptor. 14443 14444Fixed a disassembler problem for "Interrupt" resource descriptors. 14445The optional "Resource Source Index" and "Resource Source" fields 14446were ignored. 14447 14448 14449---------------------------------------- 1445022 November 2002. Summary of changes for version 20021122. 14451 14452 144531) ACPI CA Core Subsystem: 14454 14455Fixed a reported problem where an object stored to a Method Local 14456or Arg was not copied to a new object during the store - the 14457object pointer was simply copied to the Local/Arg. This caused 14458all subsequent operations on the Local/Arg to also affect the 14459original source of the store operation. 14460 14461Fixed a problem where a store operation to a Method Local or Arg 14462was not completed properly if the Local/Arg contained a reference 14463(from RefOf) to a named field. The general-purpose store-to- 14464namespace-node code is now used so that this case is handled 14465automatically. 14466 14467Fixed a problem where the internal object copy routine would cause 14468a protection fault if the object being copied was a Package and 14469contained either 1) a NULL package element or 2) a nested sub- 14470package. 14471 14472Fixed a problem with the GPE initialization that resulted from an 14473ambiguity in the ACPI specification. One section of the 14474specification states that both the address and length of the GPE 14475block must be zero if the block is not supported. Another section 14476implies that only the address need be zero if the block is not 14477supported. The code has been changed so that both the address and 14478the length must be non-zero to indicate a valid GPE block (i.e., 14479if either the address or the length is zero, the GPE block is 14480invalid.) 14481 14482Code and Data Size: Current core subsystem library sizes are shown 14483below. These are the code and data sizes for the acpica.lib 14484produced by the Microsoft Visual C++ 6.0 compiler, and these 14485values do not include any ACPI driver or OSPM code. The debug 14486version of the code includes the debug output trace mechanism and 14487has a much larger code and data size. Note that these values will 14488vary depending on the efficiency of the compiler and the compiler 14489options used during generation. 14490 14491 Previous Release 14492 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14493 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14494 Current Release: 14495 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14496 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14497 14498 144992) Linux 14500 14501Cleaned up EC driver. Exported an external EC read/write 14502interface. By going through this, other drivers (most notably 14503sonypi) will be able to serialize access to the EC. 14504 14505 145063) iASL Compiler/Disassembler 14507 14508Implemented support to optionally generate include files for both 14509ASM and C (the -i switch). This simplifies BIOS development by 14510automatically creating include files that contain external 14511declarations for the symbols that are created within the 14512 14513(optionally generated) ASM and C AML source files. 14514 14515 14516---------------------------------------- 1451715 November 2002. Summary of changes for version 20021115. 14518 145191) ACPI CA Core Subsystem: 14520 14521Fixed a memory leak problem where an error during resolution of 14522 14523method arguments during a method invocation from another method 14524failed to cleanup properly by deleting all successfully resolved 14525argument objects. 14526 14527Fixed a problem where the target of the Index() operator was not 14528correctly constructed if the source object was a package. This 14529problem has not been detected because the use of a target operand 14530with Index() is very rare. 14531 14532Fixed a problem with the Index() operator where an attempt was 14533made to delete the operand objects twice. 14534 14535Fixed a problem where an attempt was made to delete an operand 14536twice during execution of the CondRefOf() operator if the target 14537did not exist. 14538 14539Implemented the first of perhaps several internal create object 14540functions that create and initialize a specific object type. This 14541consolidates duplicated code wherever the object is created, thus 14542shrinking the size of the subsystem. 14543 14544Implemented improved debug/error messages for errors that occur 14545during nested method invocations. All executing method pathnames 14546are displayed (with the error) as the call stack is unwound - thus 14547simplifying debug. 14548 14549Fixed a problem introduced in the 10/02 release that caused 14550premature deletion of a buffer object if a buffer was used as an 14551ASL operand where an integer operand is required (Thus causing an 14552implicit object conversion from Buffer to Integer.) The change in 14553the 10/02 release was attempting to fix a memory leak (albeit 14554incorrectly.) 14555 14556Code and Data Size: Current core subsystem library sizes are shown 14557below. These are the code and data sizes for the acpica.lib 14558produced by the Microsoft Visual C++ 6.0 compiler, and these 14559values do not include any ACPI driver or OSPM code. The debug 14560version of the code includes the debug output trace mechanism and 14561has a much larger code and data size. Note that these values will 14562vary depending on the efficiency of the compiler and the compiler 14563options used during generation. 14564 14565 Previous Release 14566 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14567 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14568 Current Release: 14569 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14570 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14571 14572 145732) Linux 14574 14575Changed the implementation of the ACPI semaphores to use down() 14576instead of down_interruptable(). It is important that the 14577execution of ACPI control methods not be interrupted by signals. 14578Methods must run to completion, or the system may be left in an 14579unknown/unstable state. 14580 14581Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 14582(Shawn Starr) 14583 14584 145853) iASL Compiler/Disassembler 14586 14587 14588Changed the default location of output files. All output files 14589are now placed in the current directory by default instead of in 14590the directory of the source file. This change may affect some 14591existing makefiles, but it brings the behavior of the compiler in 14592line with other similar tools. The location of the output files 14593can be overridden with the -p command line switch. 14594 14595 14596---------------------------------------- 1459711 November 2002. Summary of changes for version 20021111. 14598 14599 146000) ACPI Specification 2.0B is released and is now available at: 14601http://www.acpi.info/index.html 14602 14603 146041) ACPI CA Core Subsystem: 14605 14606Implemented support for the ACPI 2.0 SMBus Operation Regions. 14607This includes the early detection and handoff of the request to 14608the SMBus region handler (avoiding all of the complex field 14609support code), and support for the bidirectional return packet 14610from an SMBus write operation. This paves the way for the 14611development of SMBus drivers in each host operating system. 14612 14613Fixed a problem where the semaphore WAIT_FOREVER constant was 14614defined as 32 bits, but must be 16 bits according to the ACPI 14615specification. This had the side effect of causing ASL 14616Mutex/Event timeouts even though the ASL code requested a wait 14617forever. Changed all internal references to the ACPI timeout 14618parameter to 16 bits to prevent future problems. Changed the name 14619of WAIT_FOREVER to ACPI_WAIT_FOREVER. 14620 14621Code and Data Size: Current core subsystem library sizes are shown 14622below. These are the code and data sizes for the acpica.lib 14623produced by the Microsoft Visual C++ 6.0 compiler, and these 14624values do not include any ACPI driver or OSPM code. The debug 14625version of the code includes the debug output trace mechanism and 14626has a much larger code and data size. Note that these values will 14627vary depending on the efficiency of the compiler and the compiler 14628options used during generation. 14629 14630 Previous Release 14631 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14632 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14633 Current Release: 14634 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14635 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14636 14637 146382) Linux 14639 14640Module loading/unloading fixes (John Cagle) 14641 14642 146433) iASL Compiler/Disassembler 14644 14645Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 14646 14647Implemented support for the disassembly of all SMBus protocol 14648keywords (SMBQuick, SMBWord, etc.) 14649 14650---------------------------------------- 1465101 November 2002. Summary of changes for version 20021101. 14652 14653 146541) ACPI CA Core Subsystem: 14655 14656Fixed a problem where platforms that have a GPE1 block but no GPE0 14657block were not handled correctly. This resulted in a "GPE 14658overlap" error message. GPE0 is no longer required. 14659 14660Removed code added in the previous release that inserted nodes 14661into the namespace in alphabetical order. This caused some side- 14662effects on various machines. The root cause of the problem is 14663still under investigation since in theory, the internal ordering 14664of the namespace nodes should not matter. 14665 14666 14667Enhanced error reporting for the case where a named object is not 14668found during control method execution. The full ACPI namepath 14669(name reference) of the object that was not found is displayed in 14670this case. 14671 14672Note: as a result of the overhaul of the namespace object types in 14673the previous release, the namespace nodes for the predefined 14674scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 14675instead of ACPI_TYPE_ANY. This simplifies the namespace 14676management code but may affect code that walks the namespace tree 14677looking for specific object types. 14678 14679Code and Data Size: Current core subsystem library sizes are shown 14680below. These are the code and data sizes for the acpica.lib 14681produced by the Microsoft Visual C++ 6.0 compiler, and these 14682values do not include any ACPI driver or OSPM code. The debug 14683version of the code includes the debug output trace mechanism and 14684has a much larger code and data size. Note that these values will 14685vary depending on the efficiency of the compiler and the compiler 14686options used during generation. 14687 14688 Previous Release 14689 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14690 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14691 Current Release: 14692 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14693 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14694 14695 146962) Linux 14697 14698Fixed a problem introduced in the previous release where the 14699Processor and Thermal objects were not recognized and installed in 14700/proc. This was related to the scope type change described above. 14701 14702 147033) iASL Compiler/Disassembler 14704 14705Implemented the -g option to get all of the required ACPI tables 14706from the registry and save them to files (Windows version of the 14707compiler only.) The required tables are the FADT, FACS, and DSDT. 14708 14709Added ACPI table checksum validation during table disassembly in 14710order to catch corrupted tables. 14711 14712 14713---------------------------------------- 1471422 October 2002. Summary of changes for version 20021022. 14715 147161) ACPI CA Core Subsystem: 14717 14718Implemented a restriction on the Scope operator that the target 14719must already exist in the namespace at the time the operator is 14720encountered (during table load or method execution). In other 14721words, forward references are not allowed and Scope() cannot 14722create a new object. This changes the previous behavior where the 14723interpreter would create the name if not found. This new behavior 14724correctly enables the search-to-root algorithm during namespace 14725lookup of the target name. Because of this upsearch, this fixes 14726the known Compaq _SB_.OKEC problem and makes both the AML 14727interpreter and iASL compiler compatible with other ACPI 14728implementations. 14729 14730Completed a major overhaul of the internal ACPI object types for 14731the ACPI Namespace and the associated operand objects. Many of 14732these types had become obsolete with the introduction of the two- 14733pass namespace load. This cleanup simplifies the code and makes 14734the entire namespace load mechanism much clearer and easier to 14735understand. 14736 14737Improved debug output for tracking scope opening/closing to help 14738diagnose scoping issues. The old scope name as well as the new 14739scope name are displayed. Also improved error messages for 14740problems with ASL Mutex objects and error messages for GPE 14741problems. 14742 14743Cleaned up the namespace dump code, removed obsolete code. 14744 14745All string output (for all namespace/object dumps) now uses the 14746common ACPI string output procedure which handles escapes properly 14747and does not emit non-printable characters. 14748 14749Fixed some issues with constants in the 64-bit version of the 14750local C library (utclib.c) 14751 14752 147532) Linux 14754 14755EC Driver: No longer attempts to acquire the Global Lock at 14756interrupt level. 14757 14758 147593) iASL Compiler/Disassembler 14760 14761Implemented ACPI 2.0B grammar change that disallows all Type 1 and 147622 opcodes outside of a control method. This means that the 14763"executable" operators (versus the "namespace" operators) cannot 14764be used at the table level; they can only be used within a control 14765method. 14766 14767Implemented the restriction on the Scope() operator where the 14768target must already exist in the namespace at the time the 14769operator is encountered (during ASL compilation). In other words, 14770forward references are not allowed and Scope() cannot create a new 14771object. This makes the iASL compiler compatible with other ACPI 14772implementations and makes the Scope() implementation adhere to the 14773ACPI specification. 14774 14775Fixed a problem where namepath optimization for the Alias operator 14776was optimizing the wrong path (of the two namepaths.) This caused 14777a "Missing alias link" error message. 14778 14779Fixed a problem where an "unknown reserved name" warning could be 14780incorrectly generated for names like "_SB" when the trailing 14781underscore is not used in the original ASL. 14782 14783Fixed a problem where the reserved name check did not handle 14784NamePaths with multiple NameSegs correctly. The first nameseg of 14785the NamePath was examined instead of the last NameSeg. 14786 14787 14788---------------------------------------- 14789 1479002 October 2002. Summary of changes for this release. 14791 14792 147931) ACPI CA Core Subsystem version 20021002: 14794 14795Fixed a problem where a store/copy of a string to an existing 14796string did not always set the string length properly in the String 14797object. 14798 14799Fixed a reported problem with the ToString operator where the 14800behavior was identical to the ToHexString operator instead of just 14801simply converting a raw buffer to a string data type. 14802 14803Fixed a problem where CopyObject and the other "explicit" 14804conversion operators were not updating the internal namespace node 14805type as part of the store operation. 14806 14807Fixed a memory leak during implicit source operand conversion 14808where the original object was not deleted if it was converted to a 14809new object of a different type. 14810 14811Enhanced error messages for all problems associated with namespace 14812lookups. Common procedure generates and prints the lookup name as 14813well as the formatted status. 14814 14815Completed implementation of a new design for the Alias support 14816within the namespace. The existing design did not handle the case 14817where a new object was assigned to one of the two names due to the 14818use of an explicit conversion operator, resulting in the two names 14819pointing to two different objects. The new design simply points 14820the Alias name to the original name node - not to the object. 14821This results in a level of indirection that must be handled in the 14822name resolution mechanism. 14823 14824Code and Data Size: Current core subsystem library sizes are shown 14825below. These are the code and data sizes for the acpica.lib 14826produced by the Microsoft Visual C++ 6.0 compiler, and these 14827values do not include any ACPI driver or OSPM code. The debug 14828version of the code includes the debug output trace mechanism and 14829has a larger code and data size. Note that these values will vary 14830depending on the efficiency of the compiler and the compiler 14831options used during generation. 14832 14833 Previous Release 14834 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14835 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14836 Current Release: 14837 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14838 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14839 14840 148412) Linux 14842 14843Initialize thermal driver's timer before it is used. (Knut 14844Neumann) 14845 14846Allow handling negative celsius values. (Kochi Takayoshi) 14847 14848Fix thermal management and make trip points. R/W (Pavel Machek) 14849 14850Fix /proc/acpi/sleep. (P. Christeas) 14851 14852IA64 fixes. (David Mosberger) 14853 14854Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 14855 14856Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 14857Brodowski) 14858 14859 148603) iASL Compiler/Disassembler 14861 14862Clarified some warning/error messages. 14863 14864 14865---------------------------------------- 1486618 September 2002. Summary of changes for this release. 14867 14868 148691) ACPI CA Core Subsystem version 20020918: 14870 14871Fixed a reported problem with reference chaining (via the Index() 14872and RefOf() operators) in the ObjectType() and SizeOf() operators. 14873The definition of these operators includes the dereferencing of 14874all chained references to return information on the base object. 14875 14876Fixed a problem with stores to indexed package elements - the 14877existing code would not complete the store if an "implicit 14878conversion" was not performed. In other words, if the existing 14879object (package element) was to be replaced completely, the code 14880didn't handle this case. 14881 14882Relaxed typechecking on the ASL "Scope" operator to allow the 14883target name to refer to an object of type Integer, String, or 14884Buffer, in addition to the scoping object types (Device, 14885predefined Scopes, Processor, PowerResource, and ThermalZone.) 14886This allows existing AML code that has workarounds for a bug in 14887Windows to function properly. A warning is issued, however. This 14888affects both the AML interpreter and the iASL compiler. Below is 14889an example of this type of ASL code: 14890 14891 Name(DEB,0x00) 14892 Scope(DEB) 14893 { 14894 14895Fixed some reported problems with 64-bit integer support in the 14896local implementation of C library functions (clib.c) 14897 14898 148992) Linux 14900 14901Use ACPI fix map region instead of IOAPIC region, since it is 14902undefined in non-SMP. 14903 14904Ensure that the SCI has the proper polarity and trigger, even on 14905systems that do not have an interrupt override entry in the MADT. 14906 149072.5 big driver reorganization (Pat Mochel) 14908 14909Use early table mapping code from acpitable.c (Andi Kleen) 14910 14911New blacklist entries (Andi Kleen) 14912 14913Blacklist improvements. Split blacklist code out into a separate 14914file. Move checking the blacklist to very early. Previously, we 14915would use ACPI tables, and then halfway through init, check the 14916blacklist -- too late. Now, it's early enough to completely fall- 14917back to non-ACPI. 14918 14919 149203) iASL Compiler/Disassembler version 20020918: 14921 14922Fixed a problem where the typechecking code didn't know that an 14923alias could point to a method. In other words, aliases were not 14924being dereferenced during typechecking. 14925 14926 14927---------------------------------------- 1492829 August 2002. Summary of changes for this release. 14929 149301) ACPI CA Core Subsystem Version 20020829: 14931 14932If the target of a Scope() operator already exists, it must be an 14933object type that actually opens a scope -- such as a Device, 14934Method, Scope, etc. This is a fatal runtime error. Similar error 14935check has been added to the iASL compiler also. 14936 14937Tightened up the namespace load to disallow multiple names in the 14938same scope. This previously was allowed if both objects were of 14939the same type. (i.e., a lookup was the same as entering a new 14940name). 14941 14942 149432) Linux 14944 14945Ensure that the ACPI interrupt has the proper trigger and 14946polarity. 14947 14948local_irq_disable is extraneous. (Matthew Wilcox) 14949 14950Make "acpi=off" actually do what it says, and not use the ACPI 14951interpreter *or* the tables. 14952 14953Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 14954Takayoshi) 14955 14956 149573) iASL Compiler/Disassembler Version 20020829: 14958 14959Implemented namepath optimization for name declarations. For 14960example, a declaration like "Method (\_SB_.ABCD)" would get 14961optimized to "Method (ABCD)" if the declaration is within the 14962\_SB_ scope. This optimization is in addition to the named 14963reference path optimization first released in the previous 14964version. This would seem to complete all possible optimizations 14965for namepaths within the ASL/AML. 14966 14967If the target of a Scope() operator already exists, it must be an 14968object type that actually opens a scope -- such as a Device, 14969Method, Scope, etc. 14970 14971Implemented a check and warning for unreachable code in the same 14972block below a Return() statement. 14973 14974Fixed a problem where the listing file was not generated if the 14975compiler aborted if the maximum error count was exceeded (200). 14976 14977Fixed a problem where the typechecking of method return values was 14978broken. This includes the check for a return value when the 14979method is invoked as a TermArg (a return value is expected.) 14980 14981Fixed a reported problem where EOF conditions during a quoted 14982string or comment caused a fault. 14983 14984 14985---------------------------------------- 1498615 August 2002. Summary of changes for this release. 14987 149881) ACPI CA Core Subsystem Version 20020815: 14989 14990Fixed a reported problem where a Store to a method argument that 14991contains a reference did not perform the indirect store correctly. 14992This problem was created during the conversion to the new 14993reference object model - the indirect store to a method argument 14994code was not updated to reflect the new model. 14995 14996Reworked the ACPI mode change code to better conform to ACPI 2.0, 14997handle corner cases, and improve code legibility (Kochi Takayoshi) 14998 14999Fixed a problem with the pathname parsing for the carat (^) 15000prefix. The heavy use of the carat operator by the new namepath 15001optimization in the iASL compiler uncovered a problem with the AML 15002interpreter handling of this prefix. In the case where one or 15003more carats precede a single nameseg, the nameseg was treated as 15004standalone and the search rule (to root) was inadvertently 15005applied. This could cause both the iASL compiler and the 15006interpreter to find the wrong object or to miss the error that 15007should occur if the object does not exist at that exact pathname. 15008 15009Found and fixed the problem where the HP Pavilion DSDT would not 15010load. This was a relatively minor tweak to the table loading code 15011(a problem caused by the unexpected encounter with a method 15012invocation not within a control method), but it does not solve the 15013overall issue of the execution of AML code at the table level. 15014This investigation is still ongoing. 15015 15016Code and Data Size: Current core subsystem library sizes are shown 15017below. These are the code and data sizes for the acpica.lib 15018produced by the Microsoft Visual C++ 6.0 compiler, and these 15019values do not include any ACPI driver or OSPM code. The debug 15020version of the code includes the debug output trace mechanism and 15021has a larger code and data size. Note that these values will vary 15022depending on the efficiency of the compiler and the compiler 15023options used during generation. 15024 15025 Previous Release 15026 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15027 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15028 Current Release: 15029 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15030 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15031 15032 150332) Linux 15034 15035Remove redundant slab.h include (Brad Hards) 15036 15037Fix several bugs in thermal.c (Herbert Nachtnebel) 15038 15039Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15040 15041Change acpi_system_suspend to use updated irq functions (Pavel 15042Machek) 15043 15044Export acpi_get_firmware_table (Matthew Wilcox) 15045 15046Use proper root proc entry for ACPI (Kochi Takayoshi) 15047 15048Fix early-boot table parsing (Bjorn Helgaas) 15049 15050 150513) iASL Compiler/Disassembler 15052 15053Reworked the compiler options to make them more consistent and to 15054use two-letter options where appropriate. We were running out of 15055sensible letters. This may break some makefiles, so check the 15056current options list by invoking the compiler with no parameters. 15057 15058Completed the design and implementation of the ASL namepath 15059optimization option for the compiler. This option optimizes all 15060references to named objects to the shortest possible path. The 15061first attempt tries to utilize a single nameseg (4 characters) and 15062the "search-to-root" algorithm used by the interpreter. If that 15063cannot be used (because either the name is not in the search path 15064or there is a conflict with another object with the same name), 15065the pathname is optimized using the carat prefix (usually a 15066shorter string than specifying the entire path from the root.) 15067 15068Implemented support to obtain the DSDT from the Windows registry 15069(when the disassembly option is specified with no input file). 15070Added this code as the implementation for AcpiOsTableOverride in 15071the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15072utility) to scan memory for the DSDT to the AcpiOsTableOverride 15073function in the DOS OSL to make the disassembler truly OS 15074independent. 15075 15076Implemented a new option to disassemble and compile in one step. 15077When used without an input filename, this option will grab the 15078DSDT from the local machine, disassemble it, and compile it in one 15079step. 15080 15081Added a warning message for invalid escapes (a backslash followed 15082by any character other than the allowable escapes). This catches 15083the quoted string error "\_SB_" (which should be "\\_SB_" ). 15084 15085Also, there are numerous instances in the ACPI specification where 15086this error occurs. 15087 15088Added a compiler option to disable all optimizations. This is 15089basically the "compatibility mode" because by using this option, 15090the AML code will come out exactly the same as other ASL 15091compilers. 15092 15093Added error messages for incorrectly ordered dependent resource 15094functions. This includes: missing EndDependentFn macro at end of 15095dependent resource list, nested dependent function macros (both 15096start and end), and missing StartDependentFn macro. These are 15097common errors that should be caught at compile time. 15098 15099Implemented _OSI support for the disassembler and compiler. _OSI 15100must be included in the namespace for proper disassembly (because 15101the disassembler must know the number of arguments.) 15102 15103Added an "optimization" message type that is optional (off by 15104default). This message is used for all optimizations - including 15105constant folding, integer optimization, and namepath optimization. 15106 15107---------------------------------------- 1510825 July 2002. Summary of changes for this release. 15109 15110 151111) ACPI CA Core Subsystem Version 20020725: 15112 15113The AML Disassembler has been enhanced to produce compilable ASL 15114code and has been integrated into the iASL compiler (see below) as 15115well as the single-step disassembly for the AML debugger and the 15116disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15117resource templates and macros are fully supported. The 15118disassembler has been tested on over 30 different AML files, 15119producing identical AML when the resulting disassembled ASL file 15120is recompiled with the same ASL compiler. 15121 15122Modified the Resource Manager to allow zero interrupts and zero 15123dma channels during the GetCurrentResources call. This was 15124causing problems on some platforms. 15125 15126Added the AcpiOsRedirectOutput interface to the OSL to simplify 15127output redirection for the AcpiOsPrintf and AcpiOsVprintf 15128interfaces. 15129 15130Code and Data Size: Current core subsystem library sizes are shown 15131below. These are the code and data sizes for the acpica.lib 15132produced by the Microsoft Visual C++ 6.0 compiler, and these 15133values do not include any ACPI driver or OSPM code. The debug 15134version of the code includes the debug output trace mechanism and 15135has a larger code and data size. Note that these values will vary 15136depending on the efficiency of the compiler and the compiler 15137options used during generation. 15138 15139 Previous Release 15140 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15141 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15142 Current Release: 15143 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15144 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15145 15146 151472) Linux 15148 15149Fixed a panic in the EC driver (Dominik Brodowski) 15150 15151Implemented checksum of the R/XSDT itself during Linux table scan 15152(Richard Schaal) 15153 15154 151553) iASL compiler 15156 15157The AML disassembler is integrated into the compiler. The "-d" 15158option invokes the disassembler to completely disassemble an 15159input AML file, producing as output a text ASL file with the 15160extension ".dsl" (to avoid name collisions with existing .asl 15161source files.) A future enhancement will allow the disassembler 15162to obtain the BIOS DSDT from the registry under Windows. 15163 15164Fixed a problem with the VendorShort and VendorLong resource 15165descriptors where an invalid AML sequence was created. 15166 15167Implemented a fix for BufferData term in the ASL parser. It was 15168inadvertently defined twice, allowing invalid syntax to pass and 15169causing reduction conflicts. 15170 15171Fixed a problem where the Ones opcode could get converted to a 15172value of zero if "Ones" was used where a byte, word or dword value 15173was expected. The 64-bit value is now truncated to the correct 15174size with the correct value. 15175 15176 15177 15178---------------------------------------- 1517902 July 2002. Summary of changes for this release. 15180 15181 151821) ACPI CA Core Subsystem Version 20020702: 15183 15184The Table Manager code has been restructured to add several new 15185features. Tables that are not required by the core subsystem 15186(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15187validated in any way and are returned from AcpiGetFirmwareTable if 15188requested. The AcpiOsTableOverride interface is now called for 15189each table that is loaded by the subsystem in order to allow the 15190host to override any table it chooses. Previously, only the DSDT 15191could be overridden. Added one new files, tbrsdt.c and 15192tbgetall.c. 15193 15194Fixed a problem with the conversion of internal package objects to 15195external objects (when a package is returned from a control 15196method.) The return buffer length was set to zero instead of the 15197proper length of the package object. 15198 15199Fixed a reported problem with the use of the RefOf and DeRefOf 15200operators when passing reference arguments to control methods. A 15201new type of Reference object is used internally for references 15202produced by the RefOf operator. 15203 15204Added additional error messages in the Resource Manager to explain 15205AE_BAD_DATA errors when they occur during resource parsing. 15206 15207Split the AcpiEnableSubsystem into two primitives to enable a 15208finer granularity initialization sequence. These two calls should 15209be called in this order: AcpiEnableSubsystem (flags), 15210AcpiInitializeObjects (flags). The flags parameter remains the 15211same. 15212 15213 152142) Linux 15215 15216Updated the ACPI utilities module to understand the new style of 15217fully resolved package objects that are now returned from the core 15218subsystem. This eliminates errors of the form: 15219 15220 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15221 acpi_utils-0430 [145] acpi_evaluate_reference: 15222 Invalid element in package (not a device reference) 15223 15224The method evaluation utility uses the new buffer allocation 15225scheme instead of calling AcpiEvaluate Object twice. 15226 15227Added support for ECDT. This allows the use of the Embedded 15228 15229Controller before the namespace has been fully initialized, which 15230is necessary for ACPI 2.0 support, and for some laptops to 15231initialize properly. (Laptops using ECDT are still rare, so only 15232limited testing was performed of the added functionality.) 15233 15234Fixed memory leaks in the EC driver. 15235 15236Eliminated a brittle code structure in acpi_bus_init(). 15237 15238Eliminated the acpi_evaluate() helper function in utils.c. It is 15239no longer needed since acpi_evaluate_object can optionally 15240allocate memory for the return object. 15241 15242Implemented fix for keyboard hang when getting battery readings on 15243some systems (Stephen White) 15244 15245PCI IRQ routing update (Dominik Brodowski) 15246 15247Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15248support 15249 15250---------------------------------------- 1525111 June 2002. Summary of changes for this release. 15252 15253 152541) ACPI CA Core Subsystem Version 20020611: 15255 15256Fixed a reported problem where constants such as Zero and One 15257appearing within _PRT packages were not handled correctly within 15258the resource manager code. Originally reported against the ASL 15259compiler because the code generator now optimizes integers to 15260their minimal AML representation (i.e. AML constants if possible.) 15261The _PRT code now handles all AML constant opcodes correctly 15262(Zero, One, Ones, Revision). 15263 15264Fixed a problem with the Concatenate operator in the AML 15265interpreter where a buffer result object was incorrectly marked as 15266not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15267 15268All package sub-objects are now fully resolved before they are 15269returned from the external ACPI interfaces. This means that name 15270strings are resolved to object handles, and constant operators 15271(Zero, One, Ones, Revision) are resolved to Integers. 15272 15273Implemented immediate resolution of the AML Constant opcodes 15274(Zero, One, Ones, Revision) to Integer objects upon detection 15275within the AML stream. This has simplified and reduced the 15276generated code size of the subsystem by eliminating about 10 15277switch statements for these constants (which previously were 15278contained in Reference objects.) The complicating issues are that 15279the Zero opcode is used as a "placeholder" for unspecified 15280optional target operands and stores to constants are defined to be 15281no-ops. 15282 15283Code and Data Size: Current core subsystem library sizes are shown 15284below. These are the code and data sizes for the acpica.lib 15285produced by the Microsoft Visual C++ 6.0 compiler, and these 15286values do not include any ACPI driver or OSPM code. The debug 15287version of the code includes the debug output trace mechanism and 15288has a larger code and data size. Note that these values will vary 15289depending on the efficiency of the compiler and the compiler 15290options used during generation. 15291 15292 Previous Release 15293 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15294 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15295 Current Release: 15296 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15297 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15298 15299 153002) Linux 15301 15302 15303Added preliminary support for obtaining _TRA data for PCI root 15304bridges (Bjorn Helgaas). 15305 15306 153073) iASL Compiler Version X2046: 15308 15309Fixed a problem where the "_DDN" reserved name was defined to be a 15310control method with one argument. There are no arguments, and 15311_DDN does not have to be a control method. 15312 15313Fixed a problem with the Linux version of the compiler where the 15314source lines printed with error messages were the wrong lines. 15315This turned out to be the "LF versus CR/LF" difference between 15316Windows and Unix. This appears to be the longstanding issue 15317concerning listing output and error messages. 15318 15319Fixed a problem with the Linux version of compiler where opcode 15320names within error messages were wrong. This was caused by a 15321slight difference in the output of the Flex tool on Linux versus 15322Windows. 15323 15324Fixed a problem with the Linux compiler where the hex output files 15325contained some garbage data caused by an internal buffer overrun. 15326 15327 15328---------------------------------------- 1532917 May 2002. Summary of changes for this release. 15330 15331 153321) ACPI CA Core Subsystem Version 20020517: 15333 15334Implemented a workaround to an BIOS bug discovered on the HP 15335OmniBook where the FADT revision number and the table size are 15336inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 15337behavior is to fallback to using only the ACPI 1.0 fields of the 15338FADT if the table is too small to be a ACPI 2.0 table as claimed 15339by the revision number. Although this is a BIOS bug, this is a 15340case where the workaround is simple enough and with no side 15341effects, so it seemed prudent to add it. A warning message is 15342issued, however. 15343 15344Implemented minimum size checks for the fixed-length ACPI tables - 15345- the FADT and FACS, as well as consistency checks between the 15346revision number and the table size. 15347 15348Fixed a reported problem in the table override support where the 15349new table pointer was incorrectly treated as a physical address 15350instead of a logical address. 15351 15352Eliminated the use of the AE_AML_ERROR exception and replaced it 15353with more descriptive codes. 15354 15355Fixed a problem where an exception would occur if an ASL Field was 15356defined with no named Field Units underneath it (used by some 15357index fields). 15358 15359Code and Data Size: Current core subsystem library sizes are shown 15360below. These are the code and data sizes for the acpica.lib 15361produced by the Microsoft Visual C++ 6.0 compiler, and these 15362values do not include any ACPI driver or OSPM code. The debug 15363version of the code includes the debug output trace mechanism and 15364has a larger code and data size. Note that these values will vary 15365depending on the efficiency of the compiler and the compiler 15366options used during generation. 15367 15368 Previous Release 15369 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15370 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15371 Current Release: 15372 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15373 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15374 15375 15376 153772) Linux 15378 15379Much work done on ACPI init (MADT and PCI IRQ routing support). 15380(Paul D. and Dominik Brodowski) 15381 15382Fix PCI IRQ-related panic on boot (Sam Revitch) 15383 15384Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 15385 15386Fix "MHz" typo (Dominik Brodowski) 15387 15388Fix RTC year 2000 issue (Dominik Brodowski) 15389 15390Preclude multiple button proc entries (Eric Brunet) 15391 15392Moved arch-specific code out of include/platform/aclinux.h 15393 153943) iASL Compiler Version X2044: 15395 15396Implemented error checking for the string used in the EISAID macro 15397(Usually used in the definition of the _HID object.) The code now 15398strictly enforces the PnP format - exactly 7 characters, 3 15399uppercase letters and 4 hex digits. 15400 15401If a raw string is used in the definition of the _HID object 15402(instead of the EISAID macro), the string must contain all 15403alphanumeric characters (e.g., "*PNP0011" is not allowed because 15404of the asterisk.) 15405 15406Implemented checking for invalid use of ACPI reserved names for 15407most of the name creation operators (Name, Device, Event, Mutex, 15408OperationRegion, PowerResource, Processor, and ThermalZone.) 15409Previously, this check was only performed for control methods. 15410 15411Implemented an additional check on the Name operator to emit an 15412error if a reserved name that must be implemented in ASL as a 15413control method is used. We know that a reserved name must be a 15414method if it is defined with input arguments. 15415 15416The warning emitted when a namespace object reference is not found 15417during the cross reference phase has been changed into an error. 15418The "External" directive should be used for names defined in other 15419modules. 15420 15421 154224) Tools and Utilities 15423 15424The 16-bit tools (adump16 and aexec16) have been regenerated and 15425tested. 15426 15427Fixed a problem with the output of both acpidump and adump16 where 15428the indentation of closing parentheses and brackets was not 15429 15430aligned properly with the parent block. 15431 15432 15433---------------------------------------- 1543403 May 2002. Summary of changes for this release. 15435 15436 154371) ACPI CA Core Subsystem Version 20020503: 15438 15439Added support a new OSL interface that allows the host operating 15440 15441system software to override the DSDT found in the firmware - 15442AcpiOsTableOverride. With this interface, the OSL can examine the 15443version of the firmware DSDT and replace it with a different one 15444if desired. 15445 15446Added new external interfaces for accessing ACPI registers from 15447device drivers and other system software - AcpiGetRegister and 15448AcpiSetRegister. This was simply an externalization of the 15449existing AcpiHwBitRegister interfaces. 15450 15451Fixed a regression introduced in the previous build where the 15452ASL/AML CreateField operator always returned an error, 15453"destination must be a NS Node". 15454 15455Extended the maximum time (before failure) to successfully enable 15456ACPI mode to 3 seconds. 15457 15458Code and Data Size: Current core subsystem library sizes are shown 15459below. These are the code and data sizes for the acpica.lib 15460produced by the Microsoft Visual C++ 6.0 compiler, and these 15461values do not include any ACPI driver or OSPM code. The debug 15462version of the code includes the debug output trace mechanism and 15463has a larger code and data size. Note that these values will vary 15464depending on the efficiency of the compiler and the compiler 15465options used during generation. 15466 15467 Previous Release 15468 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15469 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15470 Current Release: 15471 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15472 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15473 15474 154752) Linux 15476 15477Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15478free. While 3 out of 4 of our in-house systems work fine, the last 15479one still hangs when testing the LAPIC timer. 15480 15481Renamed many files in 2.5 kernel release to omit "acpi_" from the 15482name. 15483 15484Added warning on boot for Presario 711FR. 15485 15486Sleep improvements (Pavel Machek) 15487 15488ACPI can now be built without CONFIG_PCI enabled. 15489 15490IA64: Fixed memory map functions (JI Lee) 15491 15492 154933) iASL Compiler Version X2043: 15494 15495Added support to allow the compiler to be integrated into the MS 15496VC++ development environment for one-button compilation of single 15497files or entire projects -- with error-to-source-line mapping. 15498 15499Implemented support for compile-time constant folding for the 15500Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 15501specification. This allows the ASL writer to use expressions 15502instead of Integer/Buffer/String constants in terms that must 15503evaluate to constants at compile time and will also simplify the 15504emitted AML in any such sub-expressions that can be folded 15505(evaluated at compile-time.) This increases the size of the 15506compiler significantly because a portion of the ACPI CA AML 15507interpreter is included within the compiler in order to pre- 15508evaluate constant expressions. 15509 15510 15511Fixed a problem with the "Unicode" ASL macro that caused the 15512compiler to fault. (This macro is used in conjunction with the 15513_STR reserved name.) 15514 15515Implemented an AML opcode optimization to use the Zero, One, and 15516Ones opcodes where possible to further reduce the size of integer 15517constants and thus reduce the overall size of the generated AML 15518code. 15519 15520Implemented error checking for new reserved terms for ACPI version 155212.0A. 15522 15523Implemented the -qr option to display the current list of ACPI 15524reserved names known to the compiler. 15525 15526Implemented the -qc option to display the current list of ASL 15527operators that are allowed within constant expressions and can 15528therefore be folded at compile time if the operands are constants. 15529 15530 155314) Documentation 15532 15533Updated the Programmer's Reference for new interfaces, data types, 15534and memory allocation model options. 15535 15536Updated the iASL Compiler User Reference to apply new format and 15537add information about new features and options. 15538 15539---------------------------------------- 1554019 April 2002. Summary of changes for this release. 15541 155421) ACPI CA Core Subsystem Version 20020419: 15543 15544The source code base for the Core Subsystem has been completely 15545cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 15546versions. The Lint option files used are included in the 15547/acpi/generate/lint directory. 15548 15549Implemented enhanced status/error checking across the entire 15550Hardware manager subsystem. Any hardware errors (reported from 15551the OSL) are now bubbled up and will abort a running control 15552method. 15553 15554 15555Fixed a problem where the per-ACPI-table integer width (32 or 64) 15556was stored only with control method nodes, causing a fault when 15557non-control method code was executed during table loading. The 15558solution implemented uses a global variable to indicate table 15559width across the entire ACPI subsystem. Therefore, ACPI CA does 15560not support mixed integer widths across different ACPI tables 15561(DSDT, SSDT). 15562 15563Fixed a problem where NULL extended fields (X fields) in an ACPI 155642.0 ACPI FADT caused the table load to fail. Although the 15565existing ACPI specification is a bit fuzzy on this topic, the new 15566behavior is to fall back on a ACPI 1.0 field if the corresponding 15567ACPI 2.0 X field is zero (even though the table revision indicates 15568a full ACPI 2.0 table.) The ACPI specification will be updated to 15569clarify this issue. 15570 15571Fixed a problem with the SystemMemory operation region handler 15572where memory was always accessed byte-wise even if the AML- 15573specified access width was larger than a byte. This caused 15574problems on systems with memory-mapped I/O. Memory is now 15575accessed with the width specified. On systems that do not support 15576non-aligned transfers, a check is made to guarantee proper address 15577alignment before proceeding in order to avoid an AML-caused 15578alignment fault within the kernel. 15579 15580 15581Fixed a problem with the ExtendedIrq resource where only one byte 15582of the 4-byte Irq field was extracted. 15583 15584Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 15585function was out of date and required a rewrite. 15586 15587Code and Data Size: Current core subsystem library sizes are shown 15588below. These are the code and data sizes for the acpica.lib 15589produced by the Microsoft Visual C++ 6.0 compiler, and these 15590values do not include any ACPI driver or OSPM code. The debug 15591version of the code includes the debug output trace mechanism and 15592has a larger code and data size. Note that these values will vary 15593depending on the efficiency of the compiler and the compiler 15594options used during generation. 15595 15596 Previous Release 15597 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15598 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15599 Current Release: 15600 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15601 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15602 15603 156042) Linux 15605 15606PCI IRQ routing fixes (Dominik Brodowski) 15607 15608 156093) iASL Compiler Version X2042: 15610 15611Implemented an additional compile-time error check for a field 15612unit whose size + minimum access width would cause a run-time 15613access beyond the end-of-region. Previously, only the field size 15614itself was checked. 15615 15616The Core subsystem and iASL compiler now share a common parse 15617object in preparation for compile-time evaluation of the type 156183/4/5 ASL operators. 15619 15620 15621---------------------------------------- 15622Summary of changes for this release: 03_29_02 15623 156241) ACPI CA Core Subsystem Version 20020329: 15625 15626Implemented support for late evaluation of TermArg operands to 15627Buffer and Package objects. This allows complex expressions to be 15628used in the declarations of these object types. 15629 15630Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 156311.0, if the field was larger than 32 bits, it was returned as a 15632buffer - otherwise it was returned as an integer. In ACPI 2.0, 15633the field is returned as a buffer only if the field is larger than 1563464 bits. The TableRevision is now considered when making this 15635conversion to avoid incompatibility with existing ASL code. 15636 15637Implemented logical addressing for AcpiOsGetRootPointer. This 15638allows an RSDP with either a logical or physical address. With 15639this support, the host OS can now override all ACPI tables with 15640one logical RSDP. Includes implementation of "typed" pointer 15641support to allow a common data type for both physical and logical 15642pointers internally. This required a change to the 15643AcpiOsGetRootPointer interface. 15644 15645Implemented the use of ACPI 2.0 Generic Address Structures for all 15646GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 15647mapped I/O for these ACPI features. 15648 15649Initialization now ignores not only non-required tables (All 15650tables other than the FADT, FACS, DSDT, and SSDTs), but also does 15651not validate the table headers of unrecognized tables. 15652 15653Fixed a problem where a notify handler could only be 15654installed/removed on an object of type Device. All "notify" 15655 15656objects are now supported -- Devices, Processor, Power, and 15657Thermal. 15658 15659Removed most verbosity from the ACPI_DB_INFO debug level. Only 15660critical information is returned when this debug level is enabled. 15661 15662Code and Data Size: Current core subsystem library sizes are shown 15663below. These are the code and data sizes for the acpica.lib 15664produced by the Microsoft Visual C++ 6.0 compiler, and these 15665values do not include any ACPI driver or OSPM code. The debug 15666version of the code includes the debug output trace mechanism and 15667has a larger code and data size. Note that these values will vary 15668depending on the efficiency of the compiler and the compiler 15669options used during generation. 15670 15671 Previous Release 15672 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15673 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15674 Current Release: 15675 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15676 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15677 15678 156792) Linux: 15680 15681The processor driver (acpi_processor.c) now fully supports ACPI 156822.0-based processor performance control (e.g. Intel(R) 15683SpeedStep(TM) technology) Note that older laptops that only have 15684the Intel "applet" interface are not supported through this. The 15685'limit' and 'performance' interface (/proc) are fully functional. 15686[Note that basic policy for controlling performance state 15687transitions will be included in the next version of ospmd.] The 15688idle handler was modified to more aggressively use C2, and PIIX4 15689errata handling underwent a complete overhaul (big thanks to 15690Dominik Brodowski). 15691 15692Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 15693based devices in the ACPI namespace are now dynamically bound 15694(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 15695This allows, among other things, ACPI to resolve bus numbers for 15696subordinate PCI bridges. 15697 15698Enhanced PCI IRQ routing to get the proper bus number for _PRT 15699entries defined underneath PCI bridges. 15700 15701Added IBM 600E to bad bios list due to invalid _ADR value for 15702PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 15703 15704In the process of adding full MADT support (e.g. IOAPIC) for IA32 15705(acpi.c, mpparse.c) -- stay tuned. 15706 15707Added back visual differentiation between fixed-feature and 15708control-method buttons in dmesg. Buttons are also subtyped (e.g. 15709button/power/PWRF) to simplify button identification. 15710 15711We no longer use -Wno-unused when compiling debug. Please ignore 15712any "_THIS_MODULE defined but not used" messages. 15713 15714Can now shut down the system using "magic sysrq" key. 15715 15716 157173) iASL Compiler version 2041: 15718 15719Fixed a problem where conversion errors for hex/octal/decimal 15720constants were not reported. 15721 15722Implemented a fix for the General Register template Address field. 15723This field was 8 bits when it should be 64. 15724 15725Fixed a problem where errors/warnings were no longer being emitted 15726within the listing output file. 15727 15728Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 15729exactly 4 characters, alphanumeric only. 15730 15731 15732 15733 15734---------------------------------------- 15735Summary of changes for this release: 03_08_02 15736 15737 157381) ACPI CA Core Subsystem Version 20020308: 15739 15740Fixed a problem with AML Fields where the use of the "AccessAny" 15741keyword could cause an interpreter error due to attempting to read 15742or write beyond the end of the parent Operation Region. 15743 15744Fixed a problem in the SystemMemory Operation Region handler where 15745an attempt was made to map memory beyond the end of the region. 15746This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 15747errors on some Linux systems. 15748 15749Fixed a problem where the interpreter/namespace "search to root" 15750algorithm was not functioning for some object types. Relaxed the 15751internal restriction on the search to allow upsearches for all 15752external object types as well as most internal types. 15753 15754 157552) Linux: 15756 15757We now use safe_halt() macro versus individual calls to sti | hlt. 15758 15759Writing to the processor limit interface should now work. "echo 1" 15760will increase the limit, 2 will decrease, and 0 will reset to the 15761 15762default. 15763 15764 157653) ASL compiler: 15766 15767Fixed segfault on Linux version. 15768 15769 15770---------------------------------------- 15771Summary of changes for this release: 02_25_02 15772 157731) ACPI CA Core Subsystem: 15774 15775 15776Fixed a problem where the GPE bit masks were not initialized 15777properly, causing erratic GPE behavior. 15778 15779Implemented limited support for multiple calling conventions. The 15780code can be generated with either the VPL (variable parameter 15781list, or "C") convention, or the FPL (fixed parameter list, or 15782"Pascal") convention. The core subsystem is about 3.4% smaller 15783when generated with FPL. 15784 15785 157862) Linux 15787 15788Re-add some /proc/acpi/event functionality that was lost during 15789the rewrite 15790 15791Resolved issue with /proc events for fixed-feature buttons showing 15792up as the system device. 15793 15794Fixed checks on C2/C3 latencies to be inclusive of maximum values. 15795 15796Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 15797 15798Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 15799 15800Fixed limit interface & usage to fix bugs with passive cooling 15801hysterisis. 15802 15803Restructured PRT support. 15804 15805 15806---------------------------------------- 15807Summary of changes for this label: 02_14_02 15808 15809 158101) ACPI CA Core Subsystem: 15811 15812Implemented support in AcpiLoadTable to allow loading of FACS and 15813FADT tables. 15814 15815Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 15816been removed. All 64-bit platforms should be migrated to the ACPI 158172.0 tables. The actbl71.h header has been removed from the source 15818tree. 15819 15820All C macros defined within the subsystem have been prefixed with 15821"ACPI_" to avoid collision with other system include files. 15822 15823Removed the return value for the two AcpiOsPrint interfaces, since 15824it is never used and causes lint warnings for ignoring the return 15825value. 15826 15827Added error checking to all internal mutex acquire and release 15828calls. Although a failure from one of these interfaces is 15829probably a fatal system error, these checks will cause the 15830immediate abort of the currently executing method or interface. 15831 15832Fixed a problem where the AcpiSetCurrentResources interface could 15833fault. This was a side effect of the deployment of the new memory 15834allocation model. 15835 15836Fixed a couple of problems with the Global Lock support introduced 15837in the last major build. The "common" (1.0/2.0) internal FACS was 15838being overwritten with the FACS signature and clobbering the 15839Global Lock pointer. Also, the actual firmware FACS was being 15840unmapped after construction of the "common" FACS, preventing 15841access to the actual Global Lock field within it. The "common" 15842internal FACS is no longer installed as an actual ACPI table; it 15843is used simply as a global. 15844 15845Code and Data Size: Current core subsystem library sizes are shown 15846below. These are the code and data sizes for the acpica.lib 15847produced by the Microsoft Visual C++ 6.0 compiler, and these 15848values do not include any ACPI driver or OSPM code. The debug 15849version of the code includes the debug output trace mechanism and 15850has a larger code and data size. Note that these values will vary 15851depending on the efficiency of the compiler and the compiler 15852options used during generation. 15853 15854 Previous Release (02_07_01) 15855 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15856 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15857 Current Release: 15858 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15859 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15860 15861 158622) Linux 15863 15864Updated Linux-specific code for core macro and OSL interface 15865changes described above. 15866 15867Improved /proc/acpi/event. It now can be opened only once and has 15868proper poll functionality. 15869 15870Fixed and restructured power management (acpi_bus). 15871 15872Only create /proc "view by type" when devices of that class exist. 15873 15874Fixed "charging/discharging" bug (and others) in acpi_battery. 15875 15876Improved thermal zone code. 15877 15878 158793) ASL Compiler, version X2039: 15880 15881 15882Implemented the new compiler restriction on ASL String hex/octal 15883escapes to non-null, ASCII values. An error results if an invalid 15884value is used. (This will require an ACPI 2.0 specification 15885change.) 15886 15887AML object labels that are output to the optional C and ASM source 15888are now prefixed with both the ACPI table signature and table ID 15889to help guarantee uniqueness within a large BIOS project. 15890 15891 15892---------------------------------------- 15893Summary of changes for this label: 02_01_02 15894 158951) ACPI CA Core Subsystem: 15896 15897ACPI 2.0 support is complete in the entire Core Subsystem and the 15898ASL compiler. All new ACPI 2.0 operators are implemented and all 15899other changes for ACPI 2.0 support are complete. With 15900simultaneous code and data optimizations throughout the subsystem, 15901ACPI 2.0 support has been implemented with almost no additional 15902cost in terms of code and data size. 15903 15904Implemented a new mechanism for allocation of return buffers. If 15905the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 15906be allocated on behalf of the caller. Consolidated all return 15907buffer validation and allocation to a common procedure. Return 15908buffers will be allocated via the primary OSL allocation interface 15909since it appears that a separate pool is not needed by most users. 15910If a separate pool is required for these buffers, the caller can 15911still use the original mechanism and pre-allocate the buffer(s). 15912 15913Implemented support for string operands within the DerefOf 15914operator. 15915 15916Restructured the Hardware and Event managers to be table driven, 15917simplifying the source code and reducing the amount of generated 15918code. 15919 15920Split the common read/write low-level ACPI register bitfield 15921procedure into a separate read and write, simplifying the code 15922considerably. 15923 15924Obsoleted the AcpiOsCallocate OSL interface. This interface was 15925used only a handful of times and didn't have enough critical mass 15926for a separate interface. Replaced with a common calloc procedure 15927in the core. 15928 15929Fixed a reported problem with the GPE number mapping mechanism 15930that allows GPE1 numbers to be non-contiguous with GPE0. 15931Reorganized the GPE information and shrunk a large array that was 15932originally large enough to hold info for all possible GPEs (256) 15933to simply large enough to hold all GPEs up to the largest GPE 15934number on the machine. 15935 15936Fixed a reported problem with resource structure alignment on 64- 15937bit platforms. 15938 15939Changed the AcpiEnableEvent and AcpiDisableEvent external 15940interfaces to not require any flags for the common case of 15941enabling/disabling a GPE. 15942 15943Implemented support to allow a "Notify" on a Processor object. 15944 15945Most TBDs in comments within the source code have been resolved 15946and eliminated. 15947 15948 15949Fixed a problem in the interpreter where a standalone parent 15950prefix (^) was not handled correctly in the interpreter and 15951debugger. 15952 15953Removed obsolete and unnecessary GPE save/restore code. 15954 15955Implemented Field support in the ASL Load operator. This allows a 15956table to be loaded from a named field, in addition to loading a 15957table directly from an Operation Region. 15958 15959Implemented timeout and handle support in the external Global Lock 15960interfaces. 15961 15962Fixed a problem in the AcpiDump utility where pathnames were no 15963longer being generated correctly during the dump of named objects. 15964 15965Modified the AML debugger to give a full display of if/while 15966predicates instead of just one AML opcode at a time. (The 15967predicate can have several nested ASL statements.) The old method 15968was confusing during single stepping. 15969 15970Code and Data Size: Current core subsystem library sizes are shown 15971below. These are the code and data sizes for the acpica.lib 15972produced by the Microsoft Visual C++ 6.0 compiler, and these 15973values do not include any ACPI driver or OSPM code. The debug 15974version of the code includes the debug output trace mechanism and 15975has a larger code and data size. Note that these values will vary 15976depending on the efficiency of the compiler and the compiler 15977options used during generation. 15978 15979 Previous Release (12_18_01) 15980 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15981 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15982 Current Release: 15983 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15984 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15985 159862) Linux 15987 15988 Implemented fix for PIIX reverse throttling errata (Processor 15989driver) 15990 15991Added new Limit interface (Processor and Thermal drivers) 15992 15993New thermal policy (Thermal driver) 15994 15995Many updates to /proc 15996 15997Battery "low" event support (Battery driver) 15998 15999Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16000 16001IA32 - IA64 initialization unification, no longer experimental 16002 16003Menuconfig options redesigned 16004 160053) ASL Compiler, version X2037: 16006 16007Implemented several new output features to simplify integration of 16008AML code into firmware: 1) Output the AML in C source code with 16009labels for each named ASL object. The original ASL source code 16010is interleaved as C comments. 2) Output the AML in ASM source code 16011with labels and interleaved ASL source. 3) Output the AML in 16012raw hex table form, in either C or ASM. 16013 16014Implemented support for optional string parameters to the 16015LoadTable operator. 16016 16017Completed support for embedded escape sequences within string 16018literals. The compiler now supports all single character escapes 16019as well as the Octal and Hex escapes. Note: the insertion of a 16020null byte into a string literal (via the hex/octal escape) causes 16021the string to be immediately terminated. A warning is issued. 16022 16023Fixed a problem where incorrect AML was generated for the case 16024where an ASL namepath consists of a single parent prefix ( 16025 16026) with no trailing name segments. 16027 16028The compiler has been successfully generated with a 64-bit C 16029compiler. 16030 16031 16032 16033 16034---------------------------------------- 16035Summary of changes for this label: 12_18_01 16036 160371) Linux 16038 16039Enhanced blacklist with reason and severity fields. Any table's 16040signature may now be used to identify a blacklisted system. 16041 16042Call _PIC control method to inform the firmware which interrupt 16043model the OS is using. Turn on any disabled link devices. 16044 16045Cleaned up busmgr /proc error handling (Andreas Dilger) 16046 16047 2) ACPI CA Core Subsystem: 16048 16049Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16050while loop) 16051 16052Completed implementation of the ACPI 2.0 "Continue", 16053"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16054operators. All new ACPI 2.0 operators are now implemented in both 16055the ASL compiler and the AML interpreter. The only remaining ACPI 160562.0 task is support for the String data type in the DerefOf 16057operator. Fixed a problem with AcquireMutex where the status code 16058was lost if the caller had to actually wait for the mutex. 16059 16060Increased the maximum ASL Field size from 64K bits to 4G bits. 16061 16062Completed implementation of the external Global Lock interfaces -- 16063AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16064Handler parameters were added. 16065 16066Completed another pass at removing warnings and issues when 16067compiling with 64-bit compilers. The code now compiles cleanly 16068with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16069add and subtract (diff) macros have changed considerably. 16070 16071 16072Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1607364-bit platforms, 32-bits on all others. This type is used 16074wherever memory allocation and/or the C sizeof() operator is used, 16075and affects the OSL memory allocation interfaces AcpiOsAllocate 16076and AcpiOsCallocate. 16077 16078Implemented sticky user breakpoints in the AML debugger. 16079 16080Code and Data Size: Current core subsystem library sizes are shown 16081below. These are the code and data sizes for the acpica.lib 16082produced by the Microsoft Visual C++ 6.0 compiler, and these 16083values do not include any ACPI driver or OSPM code. The debug 16084version of the code includes the debug output trace mechanism and 16085has a larger code and data size. Note that these values will vary 16086depending on the efficiency of the compiler and the compiler 16087options used during generation. 16088 16089 Previous Release (12_05_01) 16090 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16091 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16092 Current Release: 16093 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16094 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16095 16096 3) ASL Compiler, version X2034: 16097 16098Now checks for (and generates an error if detected) the use of a 16099Break or Continue statement without an enclosing While statement. 16100 16101 16102Successfully generated the compiler with the Intel 64-bit C 16103compiler. 16104 16105 ---------------------------------------- 16106Summary of changes for this label: 12_05_01 16107 16108 1) ACPI CA Core Subsystem: 16109 16110The ACPI 2.0 CopyObject operator is fully implemented. This 16111operator creates a new copy of an object (and is also used to 16112bypass the "implicit conversion" mechanism of the Store operator.) 16113 16114The ACPI 2.0 semantics for the SizeOf operator are fully 16115implemented. The change is that performing a SizeOf on a 16116reference object causes an automatic dereference of the object to 16117tha actual value before the size is evaluated. This behavior was 16118undefined in ACPI 1.0. 16119 16120The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16121have been implemented. The interrupt polarity and mode are now 16122independently set. 16123 16124Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16125appearing in Package objects were not properly converted to 16126integers when the internal Package was converted to an external 16127object (via the AcpiEvaluateObject interface.) 16128 16129Fixed a problem with the namespace object deletion mechanism for 16130objects created by control methods. There were two parts to this 16131problem: 1) Objects created during the initialization phase method 16132parse were not being deleted, and 2) The object owner ID mechanism 16133to track objects was broken. 16134 16135Fixed a problem where the use of the ASL Scope operator within a 16136control method would result in an invalid opcode exception. 16137 16138Fixed a problem introduced in the previous label where the buffer 16139length required for the _PRT structure was not being returned 16140correctly. 16141 16142Code and Data Size: Current core subsystem library sizes are shown 16143below. These are the code and data sizes for the acpica.lib 16144produced by the Microsoft Visual C++ 6.0 compiler, and these 16145values do not include any ACPI driver or OSPM code. The debug 16146version of the code includes the debug output trace mechanism and 16147has a larger code and data size. Note that these values will vary 16148depending on the efficiency of the compiler and the compiler 16149options used during generation. 16150 16151 Previous Release (11_20_01) 16152 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16153 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16154 16155 Current Release: 16156 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16157 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16158 16159 2) Linux: 16160 16161Updated all files to apply cleanly against 2.4.16. 16162 16163Added basic PCI Interrupt Routing Table (PRT) support for IA32 16164(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16165version supports both static and dyanmic PRT entries, but dynamic 16166entries are treated as if they were static (not yet 16167reconfigurable). Architecture- specific code to use this data is 16168absent on IA32 but should be available shortly. 16169 16170Changed the initialization sequence to start the ACPI interpreter 16171(acpi_init) prior to initialization of the PCI driver (pci_init) 16172in init/main.c. This ordering is required to support PRT and 16173facilitate other (future) enhancement. A side effect is that the 16174ACPI bus driver and certain device drivers can no longer be loaded 16175as modules. 16176 16177Modified the 'make menuconfig' options to allow PCI Interrupt 16178Routing support to be included without the ACPI Bus and other 16179device drivers. 16180 16181 3) ASL Compiler, version X2033: 16182 16183Fixed some issues with the use of the new CopyObject and 16184DataTableRegion operators. Both are fully functional. 16185 16186 ---------------------------------------- 16187Summary of changes for this label: 11_20_01 16188 16189 20 November 2001. Summary of changes for this release. 16190 16191 1) ACPI CA Core Subsystem: 16192 16193Updated Index support to match ACPI 2.0 semantics. Storing a 16194Integer, String, or Buffer to an Index of a Buffer will store only 16195the least-significant byte of the source to the Indexed buffer 16196byte. Multiple writes are not performed. 16197 16198Fixed a problem where the access type used in an AccessAs ASL 16199operator was not recorded correctly into the field object. 16200 16201Fixed a problem where ASL Event objects were created in a 16202signalled state. Events are now created in an unsignalled state. 16203 16204The internal object cache is now purged after table loading and 16205initialization to reduce the use of dynamic kernel memory -- on 16206the assumption that object use is greatest during the parse phase 16207of the entire table (versus the run-time use of individual control 16208methods.) 16209 16210ACPI 2.0 variable-length packages are now fully operational. 16211 16212Code and Data Size: Code and Data optimizations have permitted new 16213feature development with an actual reduction in the library size. 16214Current core subsystem library sizes are shown below. These are 16215the code and data sizes for the acpica.lib produced by the 16216Microsoft Visual C++ 6.0 compiler, and these values do not include 16217any ACPI driver or OSPM code. The debug version of the code 16218includes the debug output trace mechanism and has a larger code 16219and data size. Note that these values will vary depending on the 16220efficiency of the compiler and the compiler options used during 16221generation. 16222 16223 Previous Release (11_09_01): 16224 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16225 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16226 16227 Current Release: 16228 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16229 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16230 16231 2) Linux: 16232 16233Enhanced the ACPI boot-time initialization code to allow the use 16234of Local APIC tables for processor enumeration on IA-32, and to 16235pave the way for a fully MPS-free boot (on SMP systems) in the 16236near future. This functionality replaces 16237arch/i386/kernel/acpitables.c, which was introduced in an earlier 162382.4.15-preX release. To enable this feature you must add 16239"acpi_boot=on" to the kernel command line -- see the help entry 16240for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16241the works... 16242 16243Restructured the configuration options to allow boot-time table 16244parsing support without inclusion of the ACPI Interpreter (and 16245other) code. 16246 16247NOTE: This release does not include fixes for the reported events, 16248power-down, and thermal passive cooling issues (coming soon). 16249 16250 3) ASL Compiler: 16251 16252Added additional typechecking for Fields within restricted access 16253Operation Regions. All fields within EC and CMOS regions must be 16254declared with ByteAcc. All fields withing SMBus regions must be 16255declared with the BufferAcc access type. 16256 16257Fixed a problem where the listing file output of control methods 16258no longer interleaved the actual AML code with the ASL source 16259code. 16260 16261 16262 16263 16264---------------------------------------- 16265Summary of changes for this label: 11_09_01 16266 162671) ACPI CA Core Subsystem: 16268 16269Implemented ACPI 2.0-defined support for writes to fields with a 16270Buffer, String, or Integer source operand that is smaller than the 16271target field. In these cases, the source operand is zero-extended 16272to fill the target field. 16273 16274Fixed a problem where a Field starting bit offset (within the 16275parent operation region) was calculated incorrectly if the 16276 16277alignment of the field differed from the access width. This 16278affected CreateWordField, CreateDwordField, CreateQwordField, and 16279possibly other fields that use the "AccessAny" keyword. 16280 16281Fixed a problem introduced in the 11_02_01 release where indirect 16282stores through method arguments did not operate correctly. 16283 162842) Linux: 16285 16286Implemented boot-time ACPI table parsing support 16287(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 16288facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 16289legacy BIOS interfaces (e.g. MPS) for the configuration of system 16290processors, memory, and interrupts during setup_arch(). Note that 16291this patch does not include the required architecture-specific 16292changes required to apply this information -- subsequent patches 16293will be posted for both IA32 and IA64 to achieve this. 16294 16295Added low-level sleep support for IA32 platforms, courtesy of Pat 16296Mochel. This allows IA32 systems to transition to/from various 16297sleeping states (e.g. S1, S3), although the lack of a centralized 16298driver model and power-manageable drivers will prevent its 16299(successful) use on most systems. 16300 16301Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 16302submenu, unified IA32 and IA64 options, added new "Boot using ACPI 16303tables" option, etc. 16304 16305Increased the default timeout for the EC driver from 1ms to 10ms 16306(1000 cycles of 10us) to try to address AE_TIME errors during EC 16307transactions. 16308 16309 ---------------------------------------- 16310Summary of changes for this label: 11_02_01 16311 163121) ACPI CA Core Subsystem: 16313 16314ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 16315(QWordAcc keyword). All ACPI 2.0 64-bit support is now 16316implemented. 16317 16318OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 16319changes to support ACPI 2.0 Qword field access. Read/Write 16320PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 16321accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 16322the value parameter for the address space handler interface is now 16323an ACPI_INTEGER. OSL implementations of these interfaces must now 16324handle the case where the Width parameter is 64. 16325 16326Index Fields: Fixed a problem where unaligned bit assembly and 16327disassembly for IndexFields was not supported correctly. 16328 16329Index and Bank Fields: Nested Index and Bank Fields are now 16330supported. During field access, a check is performed to ensure 16331that the value written to an Index or Bank register is not out of 16332the range of the register. The Index (or Bank) register is 16333written before each access to the field data. Future support will 16334include allowing individual IndexFields to be wider than the 16335DataRegister width. 16336 16337Fields: Fixed a problem where the AML interpreter was incorrectly 16338attempting to write beyond the end of a Field/OpRegion. This was 16339a boundary case that occurred when a DWORD field was written to a 16340BYTE access OpRegion, forcing multiple writes and causing the 16341interpreter to write one datum too many. 16342 16343Fields: Fixed a problem with Field/OpRegion access where the 16344starting bit address of a field was incorrectly calculated if the 16345current access type was wider than a byte (WordAcc, DwordAcc, or 16346QwordAcc). 16347 16348Fields: Fixed a problem where forward references to individual 16349FieldUnits (individual Field names within a Field definition) were 16350not resolved during the AML table load. 16351 16352Fields: Fixed a problem where forward references from a Field 16353definition to the parent Operation Region definition were not 16354resolved during the AML table load. 16355 16356Fields: Duplicate FieldUnit names within a scope are now detected 16357during AML table load. 16358 16359Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 16360returned an incorrect name for the root node. 16361 16362Code and Data Size: Code and Data optimizations have permitted new 16363feature development with an actual reduction in the library size. 16364Current core subsystem library sizes are shown below. These are 16365the code and data sizes for the acpica.lib produced by the 16366Microsoft Visual C++ 6.0 compiler, and these values do not include 16367any ACPI driver or OSPM code. The debug version of the code 16368includes the debug output trace mechanism and has a larger code 16369and data size. Note that these values will vary depending on the 16370efficiency of the compiler and the compiler options used during 16371generation. 16372 16373 Previous Release (10_18_01): 16374 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16375 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16376 16377 Current Release: 16378 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16379 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16380 16381 2) Linux: 16382 16383Improved /proc processor output (Pavel Machek) Re-added 16384MODULE_LICENSE("GPL") to all modules. 16385 16386 3) ASL Compiler version X2030: 16387 16388Duplicate FieldUnit names within a scope are now detected and 16389flagged as errors. 16390 16391 4) Documentation: 16392 16393Programmer Reference updated to reflect OSL and address space 16394handler interface changes described above. 16395 16396---------------------------------------- 16397Summary of changes for this label: 10_18_01 16398 16399ACPI CA Core Subsystem: 16400 16401Fixed a problem with the internal object reference count mechanism 16402that occasionally caused premature object deletion. This resolves 16403all of the outstanding problem reports where an object is deleted 16404in the middle of an interpreter evaluation. Although this problem 16405only showed up in rather obscure cases, the solution to the 16406problem involved an adjustment of all reference counts involving 16407objects attached to namespace nodes. 16408 16409Fixed a problem with Field support in the interpreter where 16410writing to an aligned field whose length is an exact multiple (2 16411or greater) of the field access granularity would cause an attempt 16412to write beyond the end of the field. 16413 16414The top level AML opcode execution functions within the 16415interpreter have been renamed with a more meaningful and 16416consistent naming convention. The modules exmonad.c and 16417exdyadic.c were eliminated. New modules are exoparg1.c, 16418exoparg2.c, exoparg3.c, and exoparg6.c. 16419 16420Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16421 16422Fixed a problem where the AML debugger was causing some internal 16423objects to not be deleted during subsystem termination. 16424 16425Fixed a problem with the external AcpiEvaluateObject interface 16426where the subsystem would fault if the named object to be 16427evaluated refered to a constant such as Zero, Ones, etc. 16428 16429Fixed a problem with IndexFields and BankFields where the 16430subsystem would fault if the index, data, or bank registers were 16431not defined in the same scope as the field itself. 16432 16433Added printf format string checking for compilers that support 16434this feature. Corrected more than 50 instances of issues with 16435format specifiers within invocations of ACPI_DEBUG_PRINT 16436throughout the core subsystem code. 16437 16438The ASL "Revision" operator now returns the ACPI support level 16439implemented in the core - the value "2" since the ACPI 2.0 support 16440is more than 50% implemented. 16441 16442Enhanced the output of the AML debugger "dump namespace" command 16443to output in a more human-readable form. 16444 16445Current core subsystem library code sizes are shown below. These 16446 16447are the code and data sizes for the acpica.lib produced by the 16448Microsoft Visual C++ 6.0 compiler, and these values do not include 16449any ACPI driver or OSPM code. The debug version of the code 16450includes the full debug trace mechanism -- leading to a much 16451 16452larger code and data size. Note that these values will vary 16453depending on the efficiency of the compiler and the compiler 16454options used during generation. 16455 16456 Previous Label (09_20_01): 16457 Non-Debug Version: 65K Code, 5K Data, 70K Total 16458 Debug Version: 138K Code, 58K Data, 196K Total 16459 16460 This Label: 16461 16462 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16463 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16464 16465Linux: 16466 16467Implemented a "Bad BIOS Blacklist" to track machines that have 16468known ASL/AML problems. 16469 16470Enhanced the /proc interface for the thermal zone driver and added 16471support for _HOT (the critical suspend trip point). The 'info' 16472file now includes threshold/policy information, and allows setting 16473of _SCP (cooling preference) and _TZP (polling frequency) values 16474to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16475frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16476preference to the passive/quiet mode (if supported by the ASL). 16477 16478Implemented a workaround for a gcc bug that resuted in an OOPs 16479when loading the control method battery driver. 16480 16481 ---------------------------------------- 16482Summary of changes for this label: 09_20_01 16483 16484 ACPI CA Core Subsystem: 16485 16486The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16487modified to allow individual GPE levels to be flagged as wake- 16488enabled (i.e., these GPEs are to remain enabled when the platform 16489sleeps.) 16490 16491The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16492support wake-enabled GPEs. This means that upon entering the 16493sleep state, all GPEs that are not wake-enabled are disabled. 16494When leaving the sleep state, these GPEs are reenabled. 16495 16496A local double-precision divide/modulo module has been added to 16497enhance portability to OS kernels where a 64-bit math library is 16498not available. The new module is "utmath.c". 16499 16500Several optimizations have been made to reduce the use of CPU 16501stack. Originally over 2K, the maximum stack usage is now below 165022K at 1860 bytes (1.82k) 16503 16504Fixed a problem with the AcpiGetFirmwareTable interface where the 16505root table pointer was not mapped into a logical address properly. 16506 16507Fixed a problem where a NULL pointer was being dereferenced in the 16508interpreter code for the ASL Notify operator. 16509 16510Fixed a problem where the use of the ASL Revision operator 16511returned an error. This operator now returns the current version 16512of the ACPI CA core subsystem. 16513 16514Fixed a problem where objects passed as control method parameters 16515to AcpiEvaluateObject were always deleted at method termination. 16516However, these objects may end up being stored into the namespace 16517by the called method. The object reference count mechanism was 16518applied to these objects instead of a force delete. 16519 16520Fixed a problem where static strings or buffers (contained in the 16521AML code) that are declared as package elements within the ASL 16522code could cause a fault because the interpreter would attempt to 16523delete them. These objects are now marked with the "static 16524object" flag to prevent any attempt to delete them. 16525 16526Implemented an interpreter optimization to use operands directly 16527from the state object instead of extracting the operands to local 16528variables. This reduces stack use and code size, and improves 16529performance. 16530 16531The module exxface.c was eliminated as it was an unnecessary extra 16532layer of code. 16533 16534Current core subsystem library code sizes are shown below. These 16535are the code and data sizes for the acpica.lib produced by the 16536Microsoft Visual C++ 6.0 compiler, and these values do not include 16537any ACPI driver or OSPM code. The debug version of the code 16538includes the full debug trace mechanism -- leading to a much 16539larger code and data size. Note that these values will vary 16540depending on the efficiency of the compiler and the compiler 16541options used during generation. 16542 16543 Non-Debug Version: 65K Code, 5K Data, 70K Total 16544(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 16545Total (Previously 195K) 16546 16547Linux: 16548 16549Support for ACPI 2.0 64-bit integers has been added. All ACPI 16550Integer objects are now 64 bits wide 16551 16552All Acpi data types and structures are now in lower case. Only 16553Acpi macros are upper case for differentiation. 16554 16555 Documentation: 16556 16557Changes to the external interfaces as described above. 16558 16559 ---------------------------------------- 16560Summary of changes for this label: 08_31_01 16561 16562 ACPI CA Core Subsystem: 16563 16564A bug with interpreter implementation of the ASL Divide operator 16565was found and fixed. The implicit function return value (not the 16566explicit store operands) was returning the remainder instead of 16567the quotient. This was a longstanding bug and it fixes several 16568known outstanding issues on various platforms. 16569 16570The ACPI_DEBUG_PRINT and function trace entry/exit macros have 16571been further optimized for size. There are 700 invocations of the 16572DEBUG_PRINT macro alone, so each optimization reduces the size of 16573the debug version of the subsystem significantly. 16574 16575A stack trace mechanism has been implemented. The maximum stack 16576usage is about 2K on 32-bit platforms. The debugger command "stat 16577stack" will display the current maximum stack usage. 16578 16579All public symbols and global variables within the subsystem are 16580now prefixed with the string "Acpi". This keeps all of the 16581symbols grouped together in a kernel map, and avoids conflicts 16582with other kernel subsystems. 16583 16584Most of the internal fixed lookup tables have been moved into the 16585code segment via the const operator. 16586 16587Several enhancements have been made to the interpreter to both 16588reduce the code size and improve performance. 16589 16590Current core subsystem library code sizes are shown below. These 16591are the code and data sizes for the acpica.lib produced by the 16592Microsoft Visual C++ 6.0 compiler, and these values do not include 16593any ACPI driver or OSPM code. The debug version of the code 16594includes the full debug trace mechanism which contains over 700 16595invocations of the DEBUG_PRINT macro, 500 function entry macro 16596invocations, and over 900 function exit macro invocations -- 16597leading to a much larger code and data size. Note that these 16598values will vary depending on the efficiency of the compiler and 16599the compiler options used during generation. 16600 16601 Non-Debug Version: 64K Code, 5K Data, 69K Total 16602Debug Version: 137K Code, 58K Data, 195K Total 16603 16604 Linux: 16605 16606Implemented wbinvd() macro, pending a kernel-wide definition. 16607 16608Fixed /proc/acpi/event to handle poll() and short reads. 16609 16610 ASL Compiler, version X2026: 16611 16612Fixed a problem introduced in the previous label where the AML 16613 16614code emitted for package objects produced packages with zero 16615length. 16616 16617 ---------------------------------------- 16618Summary of changes for this label: 08_16_01 16619 16620ACPI CA Core Subsystem: 16621 16622The following ACPI 2.0 ASL operators have been implemented in the 16623AML interpreter (These are already supported by the Intel ASL 16624compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 16625ToBuffer. Support for 64-bit AML constants is implemented in the 16626AML parser, debugger, and disassembler. 16627 16628The internal memory tracking mechanism (leak detection code) has 16629been upgraded to reduce the memory overhead (a separate tracking 16630block is no longer allocated for each memory allocation), and now 16631supports all of the internal object caches. 16632 16633The data structures and code for the internal object caches have 16634been coelesced and optimized so that there is a single cache and 16635memory list data structure and a single group of functions that 16636implement generic cache management. This has reduced the code 16637size in both the debug and release versions of the subsystem. 16638 16639The DEBUG_PRINT macro(s) have been optimized for size and replaced 16640by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 16641different, because it generates a single call to an internal 16642function. This results in a savings of about 90 bytes per 16643invocation, resulting in an overall code and data savings of about 1664416% in the debug version of the subsystem. 16645 16646 Linux: 16647 16648Fixed C3 disk corruption problems and re-enabled C3 on supporting 16649machines. 16650 16651Integrated low-level sleep code by Patrick Mochel. 16652 16653Further tweaked source code Linuxization. 16654 16655Other minor fixes. 16656 16657 ASL Compiler: 16658 16659Support for ACPI 2.0 variable length packages is fixed/completed. 16660 16661Fixed a problem where the optional length parameter for the ACPI 166622.0 ToString operator. 16663 16664Fixed multiple extraneous error messages when a syntax error is 16665detected within the declaration line of a control method. 16666 16667 ---------------------------------------- 16668Summary of changes for this label: 07_17_01 16669 16670ACPI CA Core Subsystem: 16671 16672Added a new interface named AcpiGetFirmwareTable to obtain any 16673ACPI table via the ACPI signature. The interface can be called at 16674any time during kernel initialization, even before the kernel 16675virtual memory manager is initialized and paging is enabled. This 16676allows kernel subsystems to obtain ACPI tables very early, even 16677before the ACPI CA subsystem is initialized. 16678 16679Fixed a problem where Fields defined with the AnyAcc attribute 16680could be resolved to the incorrect address under the following 16681conditions: 1) the field width is larger than 8 bits and 2) the 16682parent operation region is not defined on a DWORD boundary. 16683 16684Fixed a problem where the interpreter is not being locked during 16685namespace initialization (during execution of the _INI control 16686methods), causing an error when an attempt is made to release it 16687later. 16688 16689ACPI 2.0 support in the AML Interpreter has begun and will be 16690ongoing throughout the rest of this year. In this label, The Mod 16691operator is implemented. 16692 16693Added a new data type to contain full PCI addresses named 16694ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 16695and Function values. 16696 16697 Linux: 16698 16699Enhanced the Linux version of the source code to change most 16700capitalized ACPI type names to lowercase. For example, all 16701instances of ACPI_STATUS are changed to acpi_status. This will 16702result in a large diff, but the change is strictly cosmetic and 16703aligns the CA code closer to the Linux coding standard. 16704 16705OSL Interfaces: 16706 16707The interfaces to the PCI configuration space have been changed to 16708add the PCI Segment number and to split the single 32-bit combined 16709DeviceFunction field into two 16-bit fields. This was 16710accomplished by moving the four values that define an address in 16711PCI configuration space (segment, bus, device, and function) to 16712the new ACPI_PCI_ID structure. 16713 16714The changes to the PCI configuration space interfaces led to a 16715reexamination of the complete set of address space access 16716interfaces for PCI, I/O, and Memory. The previously existing 18 16717interfaces have proven difficult to maintain (any small change 16718must be propagated across at least 6 interfaces) and do not easily 16719allow for future expansion to 64 bits if necessary. Also, on some 16720systems, it would not be appropriate to demultiplex the access 16721width (8, 16, 32,or 64) before calling the OSL if the 16722corresponding native OS interfaces contain a similar access width 16723parameter. For these reasons, the 18 address space interfaces 16724have been replaced by these 6 new ones: 16725 16726AcpiOsReadPciConfiguration 16727AcpiOsWritePciConfiguration 16728AcpiOsReadMemory 16729AcpiOsWriteMemory 16730AcpiOsReadPort 16731AcpiOsWritePort 16732 16733Added a new interface named AcpiOsGetRootPointer to allow the OSL 16734to perform the platform and/or OS-specific actions necessary to 16735obtain the ACPI RSDP table pointer. On IA-32 platforms, this 16736interface will simply call down to the CA core to perform the low- 16737memory search for the table. On IA-64, the RSDP is obtained from 16738EFI. Migrating this interface to the OSL allows the CA core to 16739 16740remain OS and platform independent. 16741 16742Added a new interface named AcpiOsSignal to provide a generic 16743"function code and pointer" interface for various miscellaneous 16744signals and notifications that must be made to the host OS. The 16745first such signals are intended to support the ASL Fatal and 16746Breakpoint operators. In the latter case, the AcpiOsBreakpoint 16747interface has been obsoleted. 16748 16749The definition of the AcpiFormatException interface has been 16750changed to simplify its use. The caller no longer must supply a 16751buffer to the call; A pointer to a const string is now returned 16752directly. This allows the call to be easily used in printf 16753statements, etc. since the caller does not have to manage a local 16754buffer. 16755 16756 16757 ASL Compiler, Version X2025: 16758 16759The ACPI 2.0 Switch/Case/Default operators have been implemented 16760and are fully functional. They will work with all ACPI 1.0 16761interpreters, since the operators are simply translated to If/Else 16762pairs. 16763 16764The ACPI 2.0 ElseIf operator is implemented and will also work 16765with 1.0 interpreters, for the same reason. 16766 16767Implemented support for ACPI 2.0 variable-length packages. These 16768packages have a separate opcode, and their size is determined by 16769the interpreter at run-time. 16770 16771Documentation The ACPI CA Programmer Reference has been updated to 16772reflect the new interfaces and changes to existing interfaces. 16773 16774 ------------------------------------------ 16775Summary of changes for this label: 06_15_01 16776 16777 ACPI CA Core Subsystem: 16778 16779Fixed a problem where a DWORD-accessed field within a Buffer 16780object would get its byte address inadvertently rounded down to 16781the nearest DWORD. Buffers are always Byte-accessible. 16782 16783 ASL Compiler, version X2024: 16784 16785Fixed a problem where the Switch() operator would either fault or 16786hang the compiler. Note however, that the AML code for this ACPI 167872.0 operator is not yet implemented. 16788 16789Compiler uses the new AcpiOsGetTimer interface to obtain compile 16790timings. 16791 16792Implementation of the CreateField operator automatically converts 16793a reference to a named field within a resource descriptor from a 16794byte offset to a bit offset if required. 16795 16796Added some missing named fields from the resource descriptor 16797support. These are the names that are automatically created by the 16798compiler to reference fields within a descriptor. They are only 16799valid at compile time and are not passed through to the AML 16800interpreter. 16801 16802Resource descriptor named fields are now typed as Integers and 16803subject to compile-time typechecking when used in expressions. 16804 16805 ------------------------------------------ 16806Summary of changes for this label: 05_18_01 16807 16808 ACPI CA Core Subsystem: 16809 16810Fixed a couple of problems in the Field support code where bits 16811from adjacent fields could be returned along with the proper field 16812bits. Restructured the field support code to improve performance, 16813readability and maintainability. 16814 16815New DEBUG_PRINTP macro automatically inserts the procedure name 16816into the output, saving hundreds of copies of procedure name 16817strings within the source, shrinking the memory footprint of the 16818debug version of the core subsystem. 16819 16820 Source Code Structure: 16821 16822The source code directory tree was restructured to reflect the 16823current organization of the component architecture. Some files 16824and directories have been moved and/or renamed. 16825 16826 Linux: 16827 16828Fixed leaking kacpidpc processes. 16829 16830Fixed queueing event data even when /proc/acpi/event is not 16831opened. 16832 16833 ASL Compiler, version X2020: 16834 16835Memory allocation performance enhancement - over 24X compile time 16836improvement on large ASL files. Parse nodes and namestring 16837buffers are now allocated from a large internal compiler buffer. 16838 16839The temporary .SRC file is deleted unless the "-s" option is 16840specified 16841 16842The "-d" debug output option now sends all output to the .DBG file 16843instead of the console. 16844 16845"External" second parameter is now optional 16846 16847"ElseIf" syntax now properly allows the predicate 16848 16849Last operand to "Load" now recognized as a Target operand 16850 16851Debug object can now be used anywhere as a normal object. 16852 16853ResourceTemplate now returns an object of type BUFFER 16854 16855EISAID now returns an object of type INTEGER 16856 16857"Index" now works with a STRING operand 16858 16859"LoadTable" now accepts optional parameters 16860 16861"ToString" length parameter is now optional 16862 16863"Interrupt (ResourceType," parse error fixed. 16864 16865"Register" with a user-defined region space parse error fixed 16866 16867Escaped backslash at the end of a string ("\\") scan/parse error 16868fixed 16869 16870"Revision" is now an object of type INTEGER. 16871 16872 16873 16874------------------------------------------ 16875Summary of changes for this label: 05_02_01 16876 16877Linux: 16878 16879/proc/acpi/event now blocks properly. 16880 16881Removed /proc/sys/acpi. You can still dump your DSDT from 16882/proc/acpi/dsdt. 16883 16884 ACPI CA Core Subsystem: 16885 16886Fixed a problem introduced in the previous label where some of the 16887"small" resource descriptor types were not recognized. 16888 16889Improved error messages for the case where an ASL Field is outside 16890the range of the parent operation region. 16891 16892 ASL Compiler, version X2018: 16893 16894 16895Added error detection for ASL Fields that extend beyond the length 16896of the parent operation region (only if the length of the region 16897is known at compile time.) This includes fields that have a 16898minimum access width that is smaller than the parent region, and 16899individual field units that are partially or entirely beyond the 16900extent of the parent. 16901 16902 16903 16904------------------------------------------ 16905Summary of changes for this label: 04_27_01 16906 16907 ACPI CA Core Subsystem: 16908 16909Fixed a problem where the namespace mutex could be released at the 16910wrong time during execution of AcpiRemoveAddressSpaceHandler. 16911 16912Added optional thread ID output for debug traces, to simplify 16913debugging of multiple threads. Added context switch notification 16914when the debug code realizes that a different thread is now 16915executing ACPI code. 16916 16917Some additional external data types have been prefixed with the 16918string "ACPI_" for consistency. This may effect existing code. 16919The data types affected are the external callback typedefs - e.g., 16920 16921WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 16922 16923 Linux: 16924 16925Fixed an issue with the OSL semaphore implementation where a 16926thread was waking up with an error from receiving a SIGCHLD 16927signal. 16928 16929Linux version of ACPI CA now uses the system C library for string 16930manipulation routines instead of a local implementation. 16931 16932Cleaned up comments and removed TBDs. 16933 16934 ASL Compiler, version X2017: 16935 16936Enhanced error detection and reporting for all file I/O 16937operations. 16938 16939 Documentation: 16940 16941Programmer Reference updated to version 1.06. 16942 16943 16944 16945------------------------------------------ 16946Summary of changes for this label: 04_13_01 16947 16948 ACPI CA Core Subsystem: 16949 16950Restructured support for BufferFields and RegionFields. 16951BankFields support is now fully operational. All known 32-bit 16952limitations on field sizes have been removed. Both BufferFields 16953and (Operation) RegionFields are now supported by the same field 16954management code. 16955 16956Resource support now supports QWORD address and IO resources. The 1695716/32/64 bit address structures and the Extended IRQ structure 16958have been changed to properly handle Source Resource strings. 16959 16960A ThreadId of -1 is now used to indicate a "mutex not acquired" 16961condition internally and must never be returned by AcpiOsThreadId. 16962This reserved value was changed from 0 since Unix systems allow a 16963thread ID of 0. 16964 16965Linux: 16966 16967Driver code reorganized to enhance portability 16968 16969Added a kernel configuration option to control ACPI_DEBUG 16970 16971Fixed the EC driver to honor _GLK. 16972 16973ASL Compiler, version X2016: 16974 16975Fixed support for the "FixedHw" keyword. Previously, the FixedHw 16976address space was set to 0, not 0x7f as it should be. 16977 16978 ------------------------------------------ 16979Summary of changes for this label: 03_13_01 16980 16981 ACPI CA Core Subsystem: 16982 16983During ACPI initialization, the _SB_._INI method is now run if 16984present. 16985 16986Notify handler fix - notifies are deferred until the parent method 16987completes execution. This fixes the "mutex already acquired" 16988issue seen occasionally. 16989 16990Part of the "implicit conversion" rules in ACPI 2.0 have been 16991found to cause compatibility problems with existing ASL/AML. The 16992convert "result-to-target-type" implementation has been removed 16993for stores to method Args and Locals. Source operand conversion 16994is still fully implemented. Possible changes to ACPI 2.0 16995specification pending. 16996 16997Fix to AcpiRsCalculatePciRoutingTableLength to return correct 16998length. 16999 17000Fix for compiler warnings for 64-bit compiles. 17001 17002 Linux: 17003 17004/proc output aligned for easier parsing. 17005 17006Release-version compile problem fixed. 17007 17008New kernel configuration options documented in Configure.help. 17009 17010IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17011context" message. 17012 17013 OSPM: 17014 17015Power resource driver integrated with bus manager. 17016 17017Fixed kernel fault during active cooling for thermal zones. 17018 17019Source Code: 17020 17021The source code tree has been restructured. 17022 17023 17024 17025------------------------------------------ 17026Summary of changes for this label: 03_02_01 17027 17028 Linux OS Services Layer (OSL): 17029 17030Major revision of all Linux-specific code. 17031 17032Modularized all ACPI-specific drivers. 17033 17034Added new thermal zone and power resource drivers. 17035 17036Revamped /proc interface (new functionality is under /proc/acpi). 17037 17038New kernel configuration options. 17039 17040 Linux known issues: 17041 17042New kernel configuration options not documented in Configure.help 17043yet. 17044 17045 17046Module dependencies not currently implemented. If used, they 17047should be loaded in this order: busmgr, power, ec, system, 17048processor, battery, ac_adapter, button, thermal. 17049 17050Modules will not load if CONFIG_MODVERSION is set. 17051 17052IBM 600E - entering S5 may reboot instead of shutting down. 17053 17054IBM 600E - Sleep button may generate "Invalid <NULL> context" 17055message. 17056 17057Some systems may fail with "execution mutex already acquired" 17058message. 17059 17060 ACPI CA Core Subsystem: 17061 17062Added a new OSL Interface, AcpiOsGetThreadId. This was required 17063for the deadlock detection code. Defined to return a non-zero, 32- 17064bit thread ID for the currently executing thread. May be a non- 17065zero constant integer on single-thread systems. 17066 17067Implemented deadlock detection for internal subsystem mutexes. We 17068may add conditional compilation for this code (debug only) later. 17069 17070ASL/AML Mutex object semantics are now fully supported. This 17071includes multiple acquires/releases by owner and support for the 17072 17073Mutex SyncLevel parameter. 17074 17075A new "Force Release" mechanism automatically frees all ASL 17076Mutexes that have been acquired but not released when a thread 17077exits the interpreter. This forces conformance to the ACPI spec 17078("All mutexes must be released when an invocation exits") and 17079prevents deadlocked ASL threads. This mechanism can be expanded 17080(later) to monitor other resource acquisitions if OEM ASL code 17081continues to misbehave (which it will). 17082 17083Several new ACPI exception codes have been added for the Mutex 17084support. 17085 17086Recursive method calls are now allowed and supported (the ACPI 17087spec does in fact allow recursive method calls.) The number of 17088recursive calls is subject to the restrictions imposed by the 17089SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17090parameter. 17091 17092Implemented support for the SyncLevel parameter for control 17093methods (ACPI 2.0 feature) 17094 17095Fixed a deadlock problem when multiple threads attempted to use 17096the interpreter. 17097 17098Fixed a problem where the string length of a String package 17099element was not always set in a package returned from 17100AcpiEvaluateObject. 17101 17102Fixed a problem where the length of a String package element was 17103not always included in the length of the overall package returned 17104from AcpiEvaluateObject. 17105 17106Added external interfaces (Acpi*) to the ACPI debug memory 17107manager. This manager keeps a list of all outstanding 17108allocations, and can therefore detect memory leaks and attempts to 17109free memory blocks more than once. Useful for code such as the 17110power manager, etc. May not be appropriate for device drivers. 17111Performance with the debug code enabled is slow. 17112 17113The ACPI Global Lock is now an optional hardware element. 17114 17115 ASL Compiler Version X2015: 17116 17117Integrated changes to allow the compiler to be generated on 17118multiple platforms. 17119 17120Linux makefile added to generate the compiler on Linux 17121 17122 Source Code: 17123 17124All platform-specific headers have been moved to their own 17125subdirectory, Include/Platform. 17126 17127New source file added, Interpreter/ammutex.c 17128 17129New header file, Include/acstruct.h 17130 17131 Documentation: 17132 17133The programmer reference has been updated for the following new 17134interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17135 17136 ------------------------------------------ 17137Summary of changes for this label: 02_08_01 17138 17139Core ACPI CA Subsystem: Fixed a problem where an error was 17140incorrectly returned if the return resource buffer was larger than 17141the actual data (in the resource interfaces). 17142 17143References to named objects within packages are resolved to the 17144 17145full pathname string before packages are returned directly (via 17146the AcpiEvaluateObject interface) or indirectly via the resource 17147interfaces. 17148 17149Linux OS Services Layer (OSL): 17150 17151Improved /proc battery interface. 17152 17153 17154Added C-state debugging output and other miscellaneous fixes. 17155 17156ASL Compiler Version X2014: 17157 17158All defined method arguments can now be used as local variables, 17159including the ones that are not actually passed in as parameters. 17160The compiler tracks initialization of the arguments and issues an 17161exception if they are used without prior assignment (just like 17162locals). 17163 17164The -o option now specifies a filename prefix that is used for all 17165output files, including the AML output file. Otherwise, the 17166default behavior is as follows: 1) the AML goes to the file 17167specified in the DSDT. 2) all other output files use the input 17168source filename as the base. 17169 17170 ------------------------------------------ 17171Summary of changes for this label: 01_25_01 17172 17173Core ACPI CA Subsystem: Restructured the implementation of object 17174store support within the interpreter. This includes support for 17175the Store operator as well as any ASL operators that include a 17176target operand. 17177 17178Partially implemented support for Implicit Result-to-Target 17179conversion. This is when a result object is converted on the fly 17180to the type of an existing target object. Completion of this 17181support is pending further analysis of the ACPI specification 17182concerning this matter. 17183 17184CPU-specific code has been removed from the subsystem (hardware 17185directory). 17186 17187New Power Management Timer functions added 17188 17189Linux OS Services Layer (OSL): Moved system state transition code 17190to the core, fixed it, and modified Linux OSL accordingly. 17191 17192Fixed C2 and C3 latency calculations. 17193 17194 17195We no longer use the compilation date for the version message on 17196initialization, but retrieve the version from AcpiGetSystemInfo(). 17197 17198Incorporated for fix Sony VAIO machines. 17199 17200Documentation: The Programmer Reference has been updated and 17201reformatted. 17202 17203 17204ASL Compiler: Version X2013: Fixed a problem where the line 17205numbering and error reporting could get out of sync in the 17206presence of multiple include files. 17207 17208 ------------------------------------------ 17209Summary of changes for this label: 01_15_01 17210 17211Core ACPI CA Subsystem: 17212 17213Implemented support for type conversions in the execution of the 17214ASL Concatenate operator (The second operand is converted to 17215match the type of the first operand before concatenation.) 17216 17217Support for implicit source operand conversion is partially 17218implemented. The ASL source operand types Integer, Buffer, and 17219String are freely interchangeable for most ASL operators and are 17220converted by the interpreter on the fly as required. Implicit 17221Target operand conversion (where the result is converted to the 17222target type before storing) is not yet implemented. 17223 17224Support for 32-bit and 64-bit BCD integers is implemented. 17225 17226Problem fixed where a field read on an aligned field could cause a 17227read past the end of the field. 17228 17229New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17230does not return a value, but the caller expects one. (The ASL 17231compiler flags this as a warning.) 17232 17233ASL Compiler: 17234 17235Version X2011: 172361. Static typechecking of all operands is implemented. This 17237prevents the use of invalid objects (such as using a Package where 17238an Integer is required) at compile time instead of at interpreter 17239run-time. 172402. The ASL source line is printed with ALL errors and warnings. 172413. Bug fix for source EOF without final linefeed. 172424. Debug option is split into a parse trace and a namespace trace. 172435. Namespace output option (-n) includes initial values for 17244integers and strings. 172456. Parse-only option added for quick syntax checking. 172467. Compiler checks for duplicate ACPI name declarations 17247 17248Version X2012: 172491. Relaxed typechecking to allow interchangeability between 17250strings, integers, and buffers. These types are now converted by 17251the interpreter at runtime. 172522. Compiler reports time taken by each internal subsystem in the 17253debug output file. 17254 17255 17256 ------------------------------------------ 17257Summary of changes for this label: 12_14_00 17258 17259ASL Compiler: 17260 17261This is the first official release of the compiler. Since the 17262compiler requires elements of the Core Subsystem, this label 17263synchronizes everything. 17264 17265------------------------------------------ 17266Summary of changes for this label: 12_08_00 17267 17268 17269Fixed a problem where named references within the ASL definition 17270of both OperationRegions and CreateXXXFields did not work 17271properly. The symptom was an AE_AML_OPERAND_TYPE during 17272initialization of the region/field. This is similar (but not 17273related internally) to the problem that was fixed in the last 17274label. 17275 17276Implemented both 32-bit and 64-bit support for the BCD ASL 17277functions ToBCD and FromBCD. 17278 17279Updated all legal headers to include "2000" in the copyright 17280years. 17281 17282 ------------------------------------------ 17283Summary of changes for this label: 12_01_00 17284 17285Fixed a problem where method invocations within the ASL definition 17286of both OperationRegions and CreateXXXFields did not work 17287properly. The symptom was an AE_AML_OPERAND_TYPE during 17288initialization of the region/field: 17289 17290 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 17291[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 17292(0x3005) 17293 17294Fixed a problem where operators with more than one nested 17295subexpression would fail. The symptoms were varied, by mostly 17296AE_AML_OPERAND_TYPE errors. This was actually a rather serious 17297problem that has gone unnoticed until now. 17298 17299 Subtract (Add (1,2), Multiply (3,4)) 17300 17301Fixed a problem where AcpiGetHandle didn't quite get fixed in the 17302previous build (The prefix part of a relative path was handled 17303incorrectly). 17304 17305Fixed a problem where Operation Region initialization failed if 17306the operation region name was a "namepath" instead of a simple 17307"nameseg". Symptom was an AE_NO_OPERAND error. 17308 17309Fixed a problem where an assignment to a local variable via the 17310indirect RefOf mechanism only worked for the first such 17311assignment. Subsequent assignments were ignored. 17312 17313 ------------------------------------------ 17314Summary of changes for this label: 11_15_00 17315 17316ACPI 2.0 table support with backwards support for ACPI 1.0 and the 173170.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 17318the AML interpreter does NOT have support for the new 2.0 ASL 17319grammar terms at this time. 17320 17321All ACPI hardware access is via the GAS structures in the ACPI 2.0 17322FADT. 17323 17324All physical memory addresses across all platforms are now 64 bits 17325wide. Logical address width remains dependent on the platform 17326(i.e., "void *"). 17327 17328AcpiOsMapMemory interface changed to a 64-bit physical address. 17329 17330The AML interpreter integer size is now 64 bits, as per the ACPI 173312.0 specification. 17332 17333For backwards compatibility with ACPI 1.0, ACPI tables with a 17334revision number less than 2 use 32-bit integers only. 17335 17336Fixed a problem where the evaluation of OpRegion operands did not 17337always resolve them to numbers properly. 17338 17339------------------------------------------ 17340Summary of changes for this label: 10_20_00 17341 17342Fix for CBN_._STA issue. This fix will allow correct access to 17343CBN_ OpRegions when the _STA returns 0x8. 17344 17345Support to convert ACPI constants (Ones, Zeros, One) to actual 17346values before a package object is returned 17347 17348Fix for method call as predicate to if/while construct causing 17349incorrect if/while behavior 17350 17351Fix for Else block package lengths sometimes calculated wrong (if 17352block > 63 bytes) 17353 17354Fix for Processor object length field, was always zero 17355 17356Table load abort if FACP sanity check fails 17357 17358Fix for problem with Scope(name) if name already exists 17359 17360Warning emitted if a named object referenced cannot be found 17361(resolved) during method execution. 17362 17363 17364 17365 17366 17367------------------------------------------ 17368Summary of changes for this label: 9_29_00 17369 17370New table initialization interfaces: AcpiInitializeSubsystem no 17371longer has any parameters AcpiFindRootPointer - Find the RSDP (if 17372necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 17373>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 17374AcpiLoadTables 17375 17376Note: These interface changes require changes to all existing OSDs 17377 17378The PCI_Config default address space handler is always installed 17379at the root namespace object. 17380 17381------------------------------------------- 17382Summary of changes for this label: 09_15_00 17383 17384The new initialization architecture is implemented. New 17385interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 17386AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 17387 17388(Namespace is automatically loaded when a table is loaded) 17389 17390The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1739152 bytes to 32 bytes. There is usually one of these for every 17392namespace object, so the memory savings is significant. 17393 17394Implemented just-in-time evaluation of the CreateField operators. 17395 17396Bug fixes for IA-64 support have been integrated. 17397 17398Additional code review comments have been implemented 17399 17400The so-called "third pass parse" has been replaced by a final walk 17401through the namespace to initialize all operation regions (address 17402spaces) and fields that have not yet been initialized during the 17403execution of the various _INI and REG methods. 17404 17405New file - namespace/nsinit.c 17406 17407------------------------------------------- 17408Summary of changes for this label: 09_01_00 17409 17410Namespace manager data structures have been reworked to change the 17411primary object from a table to a single object. This has 17412resulted in dynamic memory savings of 3X within the namespace and 174132X overall in the ACPI CA subsystem. 17414 17415Fixed problem where the call to AcpiEvFindPciRootBuses was 17416inadvertently left commented out. 17417 17418Reduced the warning count when generating the source with the GCC 17419compiler. 17420 17421Revision numbers added to each module header showing the 17422SourceSafe version of the file. Please refer to this version 17423number when giving us feedback or comments on individual modules. 17424 17425The main object types within the subsystem have been renamed to 17426clarify their purpose: 17427 17428ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17429ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17430ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17431 17432NOTE: no changes to the initialization sequence are included in 17433this label. 17434 17435------------------------------------------- 17436Summary of changes for this label: 08_23_00 17437 17438Fixed problem where TerminateControlMethod was being called 17439multiple times per method 17440 17441Fixed debugger problem where single stepping caused a semaphore to 17442be oversignalled 17443 17444Improved performance through additional parse object caching - 17445added ACPI_EXTENDED_OP type 17446 17447------------------------------------------- 17448Summary of changes for this label: 08_10_00 17449 17450Parser/Interpreter integration: Eliminated the creation of 17451complete parse trees for ACPI tables and control methods. 17452Instead, parse subtrees are created and then deleted as soon as 17453they are processed (Either entered into the namespace or executed 17454by the interpreter). This reduces the use of dynamic kernel 17455memory significantly. (about 10X) 17456 17457Exception codes broken into classes and renumbered. Be sure to 17458recompile all code that includes acexcep.h. Hopefully we won't 17459have to renumber the codes again now that they are split into 17460classes (environment, programmer, AML code, ACPI table, and 17461internal). 17462 17463Fixed some additional alignment issues in the Resource Manager 17464subcomponent 17465 17466Implemented semaphore tracking in the AcpiExec utility, and fixed 17467several places where mutexes/semaphores were being unlocked 17468without a corresponding lock operation. There are no known 17469semaphore or mutex "leaks" at this time. 17470 17471Fixed the case where an ASL Return operator is used to return an 17472unnamed package. 17473 17474------------------------------------------- 17475Summary of changes for this label: 07_28_00 17476 17477Fixed a problem with the way addresses were calculated in 17478AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17479manifested itself when a Field was created with WordAccess or 17480DwordAccess, but the field unit defined within the Field was less 17481 17482than a Word or Dword. 17483 17484Fixed a problem in AmlDumpOperands() module's loop to pull 17485operands off of the operand stack to display information. The 17486problem manifested itself as a TLB error on 64-bit systems when 17487accessing an operand stack with two or more operands. 17488 17489Fixed a problem with the PCI configuration space handlers where 17490context was getting confused between accesses. This required a 17491change to the generic address space handler and address space 17492setup definitions. Handlers now get both a global handler context 17493(this is the one passed in by the user when executing 17494AcpiInstallAddressSpaceHandler() and a specific region context 17495that is unique to each region (For example, the _ADR, _SEG and 17496_BBN values associated with a specific region). The generic 17497function definitions have changed to the following: 17498 17499typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 17500UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 17501*HandlerContext, // This used to be void *Context void 17502*RegionContext); // This is an additional parameter 17503 17504typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 17505RegionHandle, UINT32 Function, void *HandlerContext, void 17506**RegionContext); // This used to be **ReturnContext 17507 17508------------------------------------------- 17509Summary of changes for this label: 07_21_00 17510 17511Major file consolidation and rename. All files within the 17512interpreter have been renamed as well as most header files. This 17513was done to prevent collisions with existing files in the host 17514OSs -- filenames such as "config.h" and "global.h" seem to be 17515quite common. The VC project files have been updated. All 17516makefiles will require modification. 17517 17518The parser/interpreter integration continues in Phase 5 with the 17519implementation of a complete 2-pass parse (the AML is parsed 17520twice) for each table; This avoids the construction of a huge 17521parse tree and therefore reduces the amount of dynamic memory 17522required by the subsystem. Greater use of the parse object cache 17523means that performance is unaffected. 17524 17525Many comments from the two code reviews have been rolled in. 17526 17527The 64-bit alignment support is complete. 17528 17529------------------------------------------- 17530Summary of changes for this label: 06_30_00 17531 17532With a nod and a tip of the hat to the technology of yesteryear, 17533we've added support in the source code for 80 column output 17534devices. The code is now mostly constrained to 80 columns or 17535less to support environments and editors that 1) cannot display 17536or print more than 80 characters on a single line, and 2) cannot 17537disable line wrapping. 17538 17539A major restructuring of the namespace data structure has been 17540completed. The result is 1) cleaner and more 17541understandable/maintainable code, and 2) a significant reduction 17542in the dynamic memory requirement for each named ACPI object 17543(almost half). 17544 17545------------------------------------------- 17546Summary of changes for this label: 06_23_00 17547 17548Linux support has been added. In order to obtain approval to get 17549the ACPI CA subsystem into the Linux kernel, we've had to make 17550quite a few changes to the base subsystem that will affect all 17551users (all the changes are generic and OS- independent). The 17552effects of these global changes have been somewhat far reaching. 17553Files have been merged and/or renamed and interfaces have been 17554renamed. The major changes are described below. 17555 17556Osd* interfaces renamed to AcpiOs* to eliminate namespace 17557pollution/confusion within our target kernels. All OSD 17558interfaces must be modified to match the new naming convention. 17559 17560Files merged across the subsystem. A number of the smaller source 17561and header files have been merged to reduce the file count and 17562increase the density of the existing files. There are too many 17563to list here. In general, makefiles that call out individual 17564files will require rebuilding. 17565 17566Interpreter files renamed. All interpreter files now have the 17567prefix am* instead of ie* and is*. 17568 17569Header files renamed: The acapi.h file is now acpixf.h. The 17570acpiosd.h file is now acpiosxf.h. We are removing references to 17571the acronym "API" since it is somewhat windowsy. The new name is 17572"external interface" or xface or xf in the filenames.j 17573 17574 17575All manifest constants have been forced to upper case (some were 17576mixed case.) Also, the string "ACPI_" has been prepended to many 17577(not all) of the constants, typedefs, and structs. 17578 17579The globals "DebugLevel" and "DebugLayer" have been renamed 17580"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 17581 17582All other globals within the subsystem are now prefixed with 17583"AcpiGbl_" Internal procedures within the subsystem are now 17584prefixed with "Acpi" (with only a few exceptions). The original 17585two-letter abbreviation for the subcomponent remains after "Acpi" 17586- for example, CmCallocate became AcpiCmCallocate. 17587 17588Added a source code translation/conversion utility. Used to 17589generate the Linux source code, it can be modified to generate 17590other types of source as well. Can also be used to cleanup 17591existing source by removing extraneous spaces and blank lines. 17592Found in tools/acpisrc/* 17593 17594OsdUnMapMemory was renamed to OsdUnmapMemory and then 17595AcpiOsUnmapMemory. (UnMap became Unmap). 17596 17597A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 17598When set to one, this indicates that the caller wants to use the 17599 17600semaphore as a mutex, not a counting semaphore. ACPI CA uses 17601both types. However, implementers of this call may want to use 17602different OS primitives depending on the type of semaphore 17603requested. For example, some operating systems provide separate 17604 17605"mutex" and "semaphore" interfaces - where the mutex interface is 17606much faster because it doesn't have all the overhead of a full 17607semaphore implementation. 17608 17609Fixed a deadlock problem where a method that accesses the PCI 17610address space can block forever if it is the first access to the 17611space. 17612 17613------------------------------------------- 17614Summary of changes for this label: 06_02_00 17615 17616Support for environments that cannot handle unaligned data 17617accesses (e.g. firmware and OS environments devoid of alignment 17618handler technology namely SAL/EFI and the IA-64 Linux kernel) has 17619been added (via configurable macros) in these three areas: - 17620Transfer of data from the raw AML byte stream is done via byte 17621moves instead of word/dword/qword moves. - External objects are 17622aligned within the user buffer, including package elements (sub- 17623objects). - Conversion of name strings to UINT32 Acpi Names is now 17624done byte-wise. 17625 17626The Store operator was modified to mimic Microsoft's 17627implementation when storing to a Buffer Field. 17628 17629Added a check of the BM_STS bit before entering C3. 17630 17631The methods subdirectory has been obsoleted and removed. A new 17632file, cmeval.c subsumes the functionality. 17633 17634A 16-bit (DOS) version of AcpiExec has been developed. The 17635makefile is under the acpiexec directory. 17636