changes.txt revision 246849
1205147Sedwin---------------------------------------- 214 February 2013. Summary of changes for version 20130214: 3 41) ACPICA Kernel-resident Subsystem: 5 6Fixed a possible regression on some hosts: Reinstated the safe return 7macros (return_ACPI_STATUS, etc.) that ensure that the argument is 8evaluated only once. Although these macros are not needed for the ACPICA 9code itself, they are often used by ACPI-related host device drivers where 10the safe feature may be necessary. 11 12Fixed several issues related to the ACPI 5.0 reduced hardware support 13(SOC): Now ensure that if the platform declares itself as hardware-reduced 14via the FADT, the following functions become NOOPs (and always return 15AE_OK) because ACPI is always enabled by definition on these machines: 16 AcpiEnable 17 AcpiDisable 18 AcpiHwGetMode 19 AcpiHwSetMode 20 21Dynamic Object Repair: Implemented additional runtime repairs for 22predefined name return values. Both of these repairs can simplify code in 23the related device drivers that invoke these methods: 241) For the _STR and _MLS names, automatically repair/convert an ASCII 25string to a Unicode buffer. 262) For the _CRS, _PRS, and _DMA names, return a resource descriptor with a 27lone end tag descriptor in the following cases: A Return(0) was executed, 28a null buffer was returned, or no object at all was returned (non-slack 29mode only). Adds a new file, nsconvert.c 30ACPICA BZ 998. Bob Moore, Lv Zheng. 31 32Resource Manager: Added additional code to prevent possible infinite loops 33while traversing corrupted or ill-formed resource template buffers. Check 34for zero-length resource descriptors in all code that loops through 35resource templates (the length field is used to index through the 36template). This change also hardens the external AcpiWalkResources and 37AcpiWalkResourceBuffer interfaces. 38 39Local Cache Manager: Enhanced the main data structure to eliminate an 40unnecessary mechanism to access the next object in the list. Actually 41provides a small performance enhancement for hosts that use the local 42ACPICA cache manager. Jung-uk Kim. 43 44Example Code and Data Size: These are the sizes for the OS-independent 45acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 46debug version of the code includes the debug output trace mechanism and 47has a much larger code and data size. 48 49 Previous Release: 50 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 51 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 52 Current Release: 53 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 54 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 55 56 572) iASL Compiler/Disassembler and Tools: 58 59iASL/Disassembler: Fixed several issues with the definition of the ACPI 605.0 RASF table (RAS Feature Table). This change incorporates late changes 61that were made to the ACPI 5.0 specification. 62 63iASL/Disassembler: Added full support for the following new ACPI tables: 64 1) The MTMR table (MID Timer Table) 65 2) The VRTC table (Virtual Real Time Clock Table). 66Includes header file, disassembler, table compiler, and template support 67for both tables. 68 69iASL: Implemented compile-time validation of package objects returned by 70predefined names. This new feature validates static package objects 71returned by the various predefined names defined to return packages. Both 72object types and package lengths are validated, for both parent packages 73and sub-packages, if any. The code is similar in structure and behavior to 74the runtime repair mechanism within the AML interpreter and uses the 75existing predefined name information table. Adds a new file, aslprepkg.c. 76ACPICA BZ 938. 77 78iASL: Implemented auto-detection of binary ACPI tables for disassembly. 79This feature detects a binary file with a valid ACPI table header and 80invokes the disassembler automatically. Eliminates the need to 81specifically invoke the disassembler with the -d option. ACPICA BZ 862. 82 83iASL/Disassembler: Added several warnings for the case where there are 84unresolved control methods during the disassembly. This can potentially 85cause errors when the output file is compiled, because the disassembler 86assumes zero method arguments in these cases (it cannot determine the 87actual number of arguments without resolution/definition of the method). 88 89Debugger: Added support to display all resources with a single command. 90Invocation of the resources command with no arguments will now display all 91resources within the current namespace. 92 93AcpiHelp: Added descriptive text for each ACPICA exception code displayed 94via the -e option. 95 96---------------------------------------- 9717 January 2013. Summary of changes for version 20130117: 98 991) ACPICA Kernel-resident Subsystem: 100 101Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 102return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 103objects to return a package containing one integer, most BIOS code returns 104two integers and the previous code reflects that. However, we also need to 105support BIOS code that actually implements to the ACPI spec, and this 106change reflects this. 107 108Fixed two issues with the ACPI_DEBUG_PRINT macros: 1091) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 110C compilers that require this support. 1112) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 112ACPI_DEBUG is already used by many of the various hosts. 113 114Updated all ACPICA copyrights and signons to 2013. Added the 2013 115copyright to all module headers and signons, including the standard Linux 116header. This affects virtually every file in the ACPICA core subsystem, 117iASL compiler, all ACPICA utilities, and the test suites. 118 119Example Code and Data Size: These are the sizes for the OS-independent 120acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 121debug version of the code includes the debug output trace mechanism and 122has a much larger code and data size. 123 124 Previous Release: 125 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 126 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 127 Current Release: 128 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 129 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 130 131 1322) iASL Compiler/Disassembler and Tools: 133 134Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 135prevent a possible fault on some hosts. Some C libraries modify the arg 136pointer parameter to vfprintf making it difficult to call it twice in the 137AcpiOsVprintf function. Use a local buffer to workaround this issue. This 138does not affect the Windows OSL since the Win C library does not modify 139the arg pointer. Chao Guan, Bob Moore. 140 141iASL: Fixed a possible infinite loop when the maximum error count is 142reached. If an output file other than the .AML file is specified (such as 143a listing file), and the maximum number of errors is reached, do not 144attempt to flush data to the output file(s) as the compiler is aborting. 145This can cause an infinite loop as the max error count code essentially 146keeps calling itself. 147 148iASL/Disassembler: Added an option (-in) to ignore NOOP opcodes/operators. 149Implemented for both the compiler and the disassembler. Often, the NOOP 150opcode is used as padding for packages that are changed dynamically by the 151BIOS. When disassembled and recompiled, these NOOPs will cause syntax 152errors. This option causes the disassembler to ignore all NOOP opcodes 153(0xA3), and it also causes the compiler to ignore all ASL source code NOOP 154statements as well. 155 156Debugger: Enhanced the Sleep command to execute all sleep states. This 157change allows Sleep to be invoked with no arguments and causes the 158debugger to execute all of the sleep states, 0-5, automatically. 159 160---------------------------------------- 16120 December 2012. Summary of changes for version 20121220: 162 1631) ACPICA Kernel-resident Subsystem: 164 165Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 166alternate entry point for AcpiWalkResources and improves the usability of 167the resource manager by accepting as input a buffer containing the output 168of either a _CRS, _PRS, or _AEI method. The key functionality is that the 169input buffer is not deleted by this interface so that it can be used by 170the host later. See the ACPICA reference for details. 171 172Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 173(DSDT version < 2). The constant will be truncated and this warning 174reflects that behavior. 175 176Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 177ExtendedInterrupt, and GpioInt descriptors. This change adds support to 178both get and set the new wake bit in these descriptors, separately from 179the existing share bit. Reported by Aaron Lu. 180 181Interpreter: Fix Store() when an implicit conversion is not possible. For 182example, in the cases such as a store of a string to an existing package 183object, implement the store as a CopyObject(). This is a small departure 184from the ACPI specification which states that the control method should be 185aborted in this case. However, the ASLTS suite depends on this behavior. 186 187Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 188macros: check if debug output is currently enabled as soon as possible to 189minimize performance impact if debug is in fact not enabled. 190 191Source code restructuring: Cleanup to improve modularity. The following 192new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 193psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 194Associated makefiles and project files have been updated. 195 196Changed an exception code for LoadTable operator. For the case where one 197of the input strings is too long, change the returned exception code from 198AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 199 200Fixed a possible memory leak in dispatcher error path. On error, delete 201the mutex object created during method mutex creation. Reported by 202tim.gardner@canonical.com. 203 204Example Code and Data Size: These are the sizes for the OS-independent 205acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 206debug version of the code includes the debug output trace mechanism and 207has a much larger code and data size. 208 209 Previous Release: 210 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 211 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 212 Current Release: 213 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 214 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 215 216 2172) iASL Compiler/Disassembler and Tools: 218 219iASL: Disallow a method call as argument to the ObjectType ASL operator. 220This change tracks an errata to the ACPI 5.0 document. The AML grammar 221will not allow the interpreter to differentiate between a method and a 222method invocation when these are used as an argument to the ObjectType 223operator. The ACPI specification change is to disallow a method invocation 224(UserTerm) for the ObjectType operator. 225 226Finish support for the TPM2 and CSRT tables in the headers, table 227compiler, and disassembler. 228 229Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 230always expires immediately if the semaphore is not available. The original 231code was using a relative-time timeout, but sem_timedwait requires the use 232of an absolute time. 233 234iASL: Added a remark if the Timer() operator is used within a 32-bit 235table. This operator returns a 64-bit time value that will be truncated 236within a 32-bit table. 237 238iASL Source code restructuring: Cleanup to improve modularity. The 239following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 240aslmethod.c, and aslfileio.c. Associated makefiles and project files have 241been updated. 242 243 244---------------------------------------- 24514 November 2012. Summary of changes for version 20121114: 246 2471) ACPICA Kernel-resident Subsystem: 248 249Implemented a performance enhancement for ACPI/AML Package objects. This 250change greatly increases the performance of Package objects within the 251interpreter. It changes the processing of reference counts for packages by 252optimizing for the most common case where the package sub-objects are 253either Integers, Strings, or Buffers. Increases the overall performance of 254the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 2X.) 255Chao Guan. ACPICA BZ 943. 256 257Implemented and deployed common macros to extract flag bits from resource 258descriptors. Improves readability and maintainability of the code. Fixes a 259problem with the UART serial bus descriptor for the number of data bits 260flags (was incorrectly 2 bits, should be 3). 261 262Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 263of the macros and changed the SETx macros to the style of (destination, 264source). Also added ACPI_CASTx companion macros. Lv Zheng. 265 266Example Code and Data Size: These are the sizes for the OS-independent 267acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 268debug version of the code includes the debug output trace mechanism and 269has a much larger code and data size. 270 271 Previous Release: 272 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 273 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 274 Current Release: 275 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 276 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 277 278 2792) iASL Compiler/Disassembler and Tools: 280 281Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 282adds the ShareAndWake and ExclusiveAndWake flags which were added to the 283Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 284 285Disassembler: Fixed a problem with external declaration generation. Fixes 286a problem where an incorrect pathname could be generated for an external 287declaration if the original reference to the object includes leading 288carats (^). ACPICA BZ 984. 289 290Debugger: Completed a major update for the Disassemble<method> command. 291This command was out-of-date and did not properly disassemble control 292methods that had any reasonable complexity. This fix brings the command up 293to the same level as the rest of the disassembler. Adds one new file, 294dmdeferred.c, which is existing code that is now common with the main 295disassembler and the debugger disassemble command. ACPICA MZ 978. 296 297iASL: Moved the parser entry prototype to avoid a duplicate declaration. 298Newer versions of Bison emit this prototype, so moved the prototype out of 299the iASL header to where it is actually used in order to avoid a duplicate 300declaration. 301 302iASL/Tools: Standardized use of the stream I/O functions: 303 1) Ensure check for I/O error after every fopen/fread/fwrite 304 2) Ensure proper order of size/count arguments for fread/fwrite 305 3) Use test of (Actual != Requested) after all fwrite, and most fread 306 4) Standardize I/O error messages 307Improves reliability and maintainability of the code. Bob Moore, Lv Zheng. 308ACPICA BZ 981. 309 310Disassembler: Prevent duplicate External() statements. During generation 311of external statements, detect similar pathnames that are actually 312duplicates such as these: 313 External (\ABCD) 314 External (ABCD) 315Remove all leading '\' characters from pathnames during the external 316statement generation so that duplicates will be detected and tossed. 317ACPICA BZ 985. 318 319Tools: Replace low-level I/O with stream I/O functions. Replace 320open/read/write/close with the stream I/O equivalents 321fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 322Moore. 323 324AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 325name header so that AcpiXtract recognizes the output file/table. 326 327iASL: Remove obsolete -2 option flag. Originally intended to force the 328compiler/disassembler into an ACPI 2.0 mode, this was never implemented 329and the entire concept is now obsolete. 330 331---------------------------------------- 33218 October 2012. Summary of changes for version 20121018: 333 334 3351) ACPICA Kernel-resident Subsystem: 336 337Updated support for the ACPI 5.0 MPST table. Fixes some problems 338introduced by late changes to the table as it was added to the ACPI 5.0 339specification. Includes header, disassembler, and data table compiler 340support as well as a new version of the MPST template. 341 342AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 3435.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 344methods: _HID, _CID, and _UID. 345 346Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 347ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 348name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 349names for their various drivers. Affects the AcpiGetObjectInfo external 350interface, and other internal interfaces as well. 351 352Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 353This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 354on machines that support non-aligned transfers. Optimizes for this case 355rather than using a strncpy. With assistance from Zheng Lv. 356 357Resource Manager: Small fix for buffer size calculation. Fixed a one byte 358error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 359 360Added a new debug print message for AML mutex objects that are force- 361released. At control method termination, any currently acquired mutex 362objects are force-released. Adds a new debug-only message for each one 363that is released. 364 365Audited/updated all ACPICA return macros and the function debug depth 366counter: 1) Ensure that all functions that use the various TRACE macros 367also use the appropriate ACPICA return macros. 2) Ensure that all normal 368return statements surround the return expression (value) with parens to 369ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 370Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 371 372Global source code changes/maintenance: All extra lines at the start and 373end of each source file have been removed for consistency. Also, within 374comments, all new sentences start with a single space instead of a double 375space, again for consistency across the code base. 376 377Example Code and Data Size: These are the sizes for the OS-independent 378acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 379debug version of the code includes the debug output trace mechanism and 380has a much larger code and data size. 381 382 Previous Release: 383 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 384 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 385 Current Release: 386 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 387 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 388 389 3902) iASL Compiler/Disassembler and Tools: 391 392AcpiExec: Improved the algorithm used for memory leak/corruption 393detection. Added some intelligence to the code that maintains the global 394list of allocated memory. The list is now ordered by allocated memory 395address, significantly improving performance. When running AcpiExec on 396the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 397on the platform and/or the environment. Note, this performance 398enhancement affects the AcpiExec utility only, not the kernel-resident 399ACPICA code. 400 401Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 402the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 403incorrect table offset reported for invalid opcodes. Report the original 40432-bit value for bad ACPI_NAMEs (as well as the repaired name.) 405 406Disassembler: Enhanced the -vt option to emit the binary table data in 407hex format to assist with debugging. 408 409Fixed a potential filename buffer overflow in osunixdir.c. Increased the 410size of file structure. Colin Ian King. 411 412---------------------------------------- 41313 September 2012. Summary of changes for version 20120913: 414 415 4161) ACPICA Kernel-resident Subsystem: 417 418ACPI 5.0: Added two new notify types for the Hardware Error Notification 419Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 420and 421MCE(6). 422 423Table Manager: Merged/removed duplicate code in the root table resize 424functions. One function is external, the other is internal. Lv Zheng, 425ACPICA 426BZ 846. 427 428Makefiles: Completely removed the obsolete "Linux" makefiles under 429acpica/generate/linux. These makefiles are obsolete and have been replaced 430by 431the generic unix makefiles under acpica/generate/unix. 432 433Makefiles: Ensure that binary files always copied properly. Minor rule 434change 435to ensure that the final binary output files are always copied up to the 436appropriate binary directory (bin32 or bin64.) 437 438Example Code and Data Size: These are the sizes for the OS-independent 439acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 440debug 441version of the code includes the debug output trace mechanism and has a 442much 443larger code and data size. 444 445 Previous Release: 446 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 447 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 448 Current Release: 449 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 450 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 451 452 4532) iASL Compiler/Disassembler and Tools: 454 455Disassembler: Fixed a possible fault during the disassembly of resource 456descriptors when a second parse is required because of the invocation of 457external control methods within the table. With assistance from 458adq@lidskialf.net. ACPICA BZ 976. 459 460iASL: Fixed a namepath optimization problem. An error can occur if the 461parse 462node that contains the namepath to be optimized does not have a parent 463node 464that is a named object. This change fixes the problem. 465 466iASL: Fixed a regression where the AML file is not deleted on errors. The 467AML 468output file should be deleted if there are any errors during the compiler. 469The 470only exception is if the -f (force output) option is used. ACPICA BZ 974. 471 472iASL: Added a feature to automatically increase internal line buffer 473sizes. 474Via realloc(), automatically increase the internal line buffer sizes as 475necessary to support very long source code lines. The current version of 476the 477preprocessor requires a buffer long enough to contain full source code 478lines. 479This change increases the line buffer(s) if the input lines go beyond the 480current buffer size. This eliminates errors that occurred when a source 481code 482line was longer than the buffer. 483 484iASL: Fixed a problem with constant folding in method declarations. The 485SyncLevel term is a ByteConstExpr, and incorrect code would be generated 486if a 487Type3 opcode was used. 488 489Debugger: Improved command help support. For incorrect argument count, 490display 491full help for the command. For help command itself, allow an argument to 492specify a command. 493 494Test Suites: Several bug fixes for the ASLTS suite reduces the number of 495errors during execution of the suite. Guan Chao. 496 497---------------------------------------- 49816 August 2012. Summary of changes for version 20120816: 499 500 5011) ACPICA Kernel-resident Subsystem: 502 503Removed all use of the deprecated _GTS and _BFS predefined methods. The 504_GTS 505(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 506deprecated and will probably be removed from the ACPI specification. 507Windows 508does not invoke them, and reportedly never will. The final nail in the 509coffin 510is that the ACPI specification states that these methods must be run with 511interrupts off, which is not going to happen in a kernel interpreter. 512Note: 513Linux has removed all use of the methods also. It was discovered that 514invoking these functions caused failures on some machines, probably 515because 516they were never tested since Windows does not call them. Affects two 517external 518interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 519ACPICA BZ 969. 520 521Implemented support for complex bit-packed buffers returned from the _PLD 522(Physical Location of Device) predefined method. Adds a new external 523interface, AcpiDecodePldBuffer that parses the buffer into a more usable C 524structure. Note: C Bitfields cannot be used for this type of predefined 525structure since the memory layout of individual bitfields is not defined 526by 527the C language. In addition, there are endian concerns where a compiler 528will 529change the bitfield ordering based on the machine type. The new ACPICA 530interface eliminates these issues, and should be called after _PLD is 531executed. ACPICA BZ 954. 532 533Implemented a change to allow a scope change to root (via "Scope (\)") 534during 535execution of module-level ASL code (code that is executed at table load 536time.) Lin Ming. 537 538Added the Windows8/Server2012 string for the _OSI method. This change adds 539a 540new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 5412012. 542 543Added header support for the new ACPI tables DBG2 (Debug Port Table Type 5442) 545and CSRT (Core System Resource Table). 546 547Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 548names. This simplifies access to the buffers returned by these predefined 549names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 550 551GPE support: Removed an extraneous parameter from the various low-level 552internal GPE functions. Tang Feng. 553 554Removed the linux makefiles from the unix packages. The generate/linux 555makefiles are obsolete and have been removed from the unix tarball release 556packages. The replacement makefiles are under generate/unix, and there is 557a 558top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 559 560Updates for Unix makefiles: 5611) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 5622) Update linker flags (move to end of command line) for AcpiExec utility. 563Guan Chao. 564 565Split ACPICA initialization functions to new file, utxfinit.c. Split from 566utxface.c to improve modularity and reduce file size. 567 568Example Code and Data Size: These are the sizes for the OS-independent 569acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 570debug version of the code includes the debug output trace mechanism and 571has a 572much larger code and data size. 573 574 Previous Release: 575 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 576 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 577 Current Release: 578 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 579 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 580 581 5822) iASL Compiler/Disassembler and Tools: 583 584iASL: Fixed a problem with constant folding for fixed-length constant 585expressions. The constant-folding code was not being invoked for constant 586expressions that allow the use of type 3/4/5 opcodes to generate constants 587for expressions such as ByteConstExpr, WordConstExpr, etc. This could 588result 589in the generation of invalid AML bytecode. ACPICA BZ 970. 590 591iASL: Fixed a generation issue on newer versions of Bison. Newer versions 592apparently automatically emit some of the necessary externals. This change 593handles these versions in order to eliminate generation warnings. 594 595Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 596 597Disassembler: Add support to decode _PLD buffers. The decoded buffer 598appears 599within comments in the output file. 600 601Debugger: Fixed a regression with the "Threads" command where 602AE_BAD_PARAMETER was always returned. 603 604---------------------------------------- 60511 July 2012. Summary of changes for version 20120711: 606 6071) ACPICA Kernel-resident Subsystem: 608 609Fixed a possible fault in the return package object repair code. Fixes a 610problem that can occur when a lone package object is wrapped with an outer 611package object in order to force conformance to the ACPI specification. 612Can 613affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 614_DLM, 615_CSD, _PSD, _TSD. 616 617Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 618PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 619ARB_DIS bit must be implemented in the host-dependent C3 processor power 620state 621support. Note, ARB_DIS is obsolete and only applies to older chipsets, 622both 623Intel and other vendors. (for Intel: ICH4-M and earlier) 624 625This change removes the code to disable/enable bus master arbitration 626during 627suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 628causes 629resume problems on some machines. The change has been in use for over 630seven 631years within Linux. 632 633Implemented two new external interfaces to support host-directed dynamic 634ACPI 635table load and unload. They are intended to simplify the host 636implementation 637of hot-plug support: 638 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 639 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 640table. 641See the ACPICA reference for additional details. Adds one new file, 642components/tables/tbxfload.c 643 644Implemented and deployed two new interfaces for errors and warnings that 645are 646known to be caused by BIOS/firmware issues: 647 AcpiBiosError: Prints "ACPI Firmware Error" message. 648 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 649Deployed these new interfaces in the ACPICA Table Manager code for ACPI 650table 651and FADT errors. Additional deployment to be completed as appropriate in 652the 653future. The associated conditional macros are ACPI_BIOS_ERROR and 654ACPI_BIOS_WARNING. See the ACPICA reference for additional details. ACPICA 655BZ 656843. 657 658Implicit notify support: ensure that no memory allocation occurs within a 659critical region. This fix moves a memory allocation outside of the time 660that a 661spinlock is held. Fixes issues on systems that do not allow this behavior. 662Jung-uk Kim. 663 664Split exception code utilities and tables into a new file, 665utilities/utexcep.c 666 667Example Code and Data Size: These are the sizes for the OS-independent 668acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 669debug 670version of the code includes the debug output trace mechanism and has a 671much 672larger code and data size. 673 674 Previous Release: 675 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 676 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 677 Current Release: 678 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 679 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 680 681 6822) iASL Compiler/Disassembler and Tools: 683 684iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 685of 6860. Jung-uk Kim. 687 688Debugger: Enhanced the "tables" command to emit additional information 689about 690the current set of ACPI tables, including the owner ID and flags decode. 691 692Debugger: Reimplemented the "unload" command to use the new 693AcpiUnloadParentTable external interface. This command was disable 694previously 695due to need for an unload interface. 696 697AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 698option 699will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 700 701---------------------------------------- 70220 June 2012. Summary of changes for version 20120620: 703 704 7051) ACPICA Kernel-resident Subsystem: 706 707Implemented support to expand the "implicit notify" feature to allow 708multiple 709devices to be notified by a single GPE. This feature automatically 710generates a 711runtime device notification in the absence of a BIOS-provided GPE control 712method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 713notify is 714provided by ACPICA for Windows compatibility, and is a workaround for BIOS 715AML 716code errors. See the description of the AcpiSetupGpeForWake interface in 717the 718APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 719 720Changed some comments and internal function names to simplify and ensure 721correctness of the Linux code translation. No functional changes. 722 723Example Code and Data Size: These are the sizes for the OS-independent 724acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 725debug 726version of the code includes the debug output trace mechanism and has a 727much 728larger code and data size. 729 730 Previous Release: 731 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 732 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 733 Current Release: 734 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 735 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 736 737 7382) iASL Compiler/Disassembler and Tools: 739 740Disassembler: Added support to emit short, commented descriptions for the 741ACPI 742predefined names in order to improve the readability of the disassembled 743output. ACPICA BZ 959. Changes include: 744 1) Emit descriptions for all standard predefined names (_INI, _STA, 745_PRW, 746etc.) 747 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 748 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 749etc.) 750 751AcpiSrc: Fixed several long-standing Linux code translation issues. 752Argument 753descriptions in function headers are now translated properly to lower case 754and 755underscores. ACPICA BZ 961. Also fixes translation problems such as these: 756(old -> new) 757 i_aSL -> iASL 758 00-7_f -> 00-7F 759 16_k -> 16K 760 local_fADT -> local_FADT 761 execute_oSI -> execute_OSI 762 763iASL: Fixed a problem where null bytes were inadvertently emitted into 764some 765listing files. 766 767iASL: Added the existing debug options to the standard help screen. There 768are 769no longer two different help screens. ACPICA BZ 957. 770 771AcpiHelp: Fixed some typos in the various predefined name descriptions. 772Also 773expand some of the descriptions where appropriate. 774 775iASL: Fixed the -ot option (display compile times/statistics). Was not 776working 777properly for standard output; only worked for the debug file case. 778 779---------------------------------------- 78018 May 2012. Summary of changes for version 20120518: 781 782 7831) ACPICA Core Subsystem: 784 785Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 786defined 787to block until asynchronous events such as notifies and GPEs have 788completed. 789Within ACPICA, it is only called before a notify or GPE handler is 790removed/uninstalled. It also may be useful for the host OS within related 791drivers such as the Embedded Controller driver. See the ACPICA reference 792for 793additional information. ACPICA BZ 868. 794 795ACPI Tables: Added a new error message for a possible overflow failure 796during 797the conversion of FADT 32-bit legacy register addresses to internal common 79864- 799bit GAS structure representation. The GAS has a one-byte "bit length" 800field, 801thus limiting the register length to 255 bits. ACPICA BZ 953. 802 803Example Code and Data Size: These are the sizes for the OS-independent 804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 805debug 806version of the code includes the debug output trace mechanism and has a 807much 808larger code and data size. 809 810 Previous Release: 811 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 812 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 813 Current Release: 814 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 815 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 816 817 8182) iASL Compiler/Disassembler and Tools: 819 820iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 821macro. 822This keyword was added late in the ACPI 5.0 release cycle and was not 823implemented until now. 824 825Disassembler: Added support for Operation Region externals. Adds missing 826support for operation regions that are defined in another table, and 827referenced locally via a Field or BankField ASL operator. Now generates 828the 829correct External statement. 830 831Disassembler: Several additional fixes for the External() statement 832generation 833related to some ASL operators. Also, order the External() statements 834alphabetically in the disassembler output. Fixes the External() generation 835for 836the Create* field, Alias, and Scope operators: 837 1) Create* buffer field operators - fix type mismatch warning on 838disassembly 839 2) Alias - implement missing External support 840 3) Scope - fix to make sure all necessary externals are emitted. 841 842iASL: Improved pathname support. For include files, merge the prefix 843pathname 844with the file pathname and eliminate unnecessary components. Convert 845backslashes in all pathnames to forward slashes, for readability. Include 846file 847pathname changes affect both #include and Include() type operators. 848 849iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 850end 851of a valid line by inserting a newline and then returning the EOF during 852the 853next call to GetNextLine. Prevents the line from being ignored due to EOF 854condition. 855 856iASL: Implemented some changes to enhance the IDE support (-vi option.) 857Error 858and Warning messages are now correctly recognized for both the source code 859browser and the global error and warning counts. 860 861---------------------------------------- 86220 April 2012. Summary of changes for version 20120420: 863 864 8651) ACPICA Core Subsystem: 866 867Implemented support for multiple notify handlers. This change adds support 868to 869allow multiple system and device notify handlers on Device, Thermal Zone, 870and 871Processor objects. This can simplify the host OS notification 872implementation. 873Also re-worked and restructured the entire notify support code to simplify 874handler installation, handler removal, notify event queuing, and notify 875dispatch to handler(s). Note: there can still only be two global notify 876handlers - one for system notifies and one for device notifies. There are 877no 878changes to the existing handler install/remove interfaces. Lin Ming, Bob 879Moore, Rafael Wysocki. 880 881Fixed a regression in the package repair code where the object reference 882count was calculated incorrectly. Regression was introduced in the commit 883"Support to add Package wrappers". 884 885Fixed a couple possible memory leaks in the AML parser, in the error 886recovery 887path. Jesper Juhl, Lin Ming. 888 889Example Code and Data Size: These are the sizes for the OS-independent 890acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 891debug version of the code includes the debug output trace mechanism and 892has a 893much larger code and data size. 894 895 Previous Release: 896 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 897 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 898 Current Release: 899 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 900 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 901 902 9032) iASL Compiler/Disassembler and Tools: 904 905iASL: Fixed a problem with the resource descriptor support where the 906length 907of the StartDependentFn and StartDependentFnNoPrio descriptors were not 908included in cumulative descriptor offset, resulting in incorrect values 909for 910resource tags within resource descriptors appearing after a 911StartDependent* 912descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 913 914iASL and Preprocessor: Implemented full support for the #line directive to 915correctly track original source file line numbers through the .i 916preprocessor 917output file - for error and warning messages. 918 919iASL: Expand the allowable byte constants for address space IDs. 920Previously, 921the allowable range was 0x80-0xFF (user-defined spaces), now the range is 9220x0A-0xFF to allow for custom and new IDs without changing the compiler. 923 924iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 925 926iASL: Add option to completely disable the preprocessor (-Pn). 927 928iASL: Now emit all error/warning messages to standard error (stderr) by 929default (instead of the previous stdout). 930 931ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 932Update 933for resource descriptor offset fix above. Update/cleanup error output 934routines. Enable and send iASL errors/warnings to an error logfile 935(error.txt). Send all other iASL output to a logfile (compiler.txt). Fixed 936several extraneous "unrecognized operator" messages. 937 938---------------------------------------- 93920 March 2012. Summary of changes for version 20120320: 940 941 9421) ACPICA Core Subsystem: 943 944Enhanced the sleep/wake interfaces to optionally execute the _GTS method 945(Going To Sleep) and the _BFS method (Back From Sleep). Windows apparently 946does not execute these methods, and therefore these methods are often 947untested. It has been seen on some systems where the execution of these 948methods causes errors and also prevents the machine from entering S5. It 949is 950therefore suggested that host operating systems do not execute these 951methods 952by default. In the future, perhaps these methods can be optionally 953executed 954based on the age of the system and/or what is the newest version of 955Windows 956that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 957and 958AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 959Ming. 960 961Fixed a problem where the length of the local/common FADT was set too 962early. 963The local FADT table length cannot be set to the common length until the 964original length has been examined. There is code that checks the table 965length 966and sets various fields appropriately. This can affect older machines with 967early FADT versions. For example, this can cause inadvertent writes to the 968CST_CNT register. Julian Anastasov. 969 970Fixed a mapping issue related to a physical table override. Use the 971deferred 972mapping mechanism for tables loaded via the physical override OSL 973interface. 974This allows for early mapping before the virtual memory manager is 975available. 976Thomas Renninger, Bob Moore. 977 978Enhanced the automatic return-object repair code: Repair a common problem 979with 980predefined methods that are defined to return a variable-length Package of 981sub-objects. If there is only one sub-object, some BIOS ASL code 982mistakenly 983simply returns the single object instead of a Package with one sub-object. 984This new support will repair this error by wrapping a Package object 985around 986the original object, creating the correct and expected Package with one 987sub- 988object. Names that can be repaired in this manner include: _ALR, _CSD, 989_HPX, 990_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 991939. 992 993Changed the exception code returned for invalid ACPI paths passed as 994parameters to external interfaces such as AcpiEvaluateObject. Was 995AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 996 997Example Code and Data Size: These are the sizes for the OS-independent 998acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 999debug 1000version of the code includes the debug output trace mechanism and has a 1001much 1002larger code and data size. 1003 1004 Previous Release: 1005 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 1006 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1007 Current Release: 1008 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 1009 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1010 1011 10122) iASL Compiler/Disassembler and Tools: 1013 1014iASL: Added the infrastructure and initial implementation of a integrated 1015C- 1016like preprocessor. This will simplify BIOS development process by 1017eliminating 1018the need for a separate preprocessing step during builds. On Windows, it 1019also 1020eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 1021features including full #define() macro support are still under 1022development. 1023These preprocessor directives are supported: 1024 #define 1025 #elif 1026 #else 1027 #endif 1028 #error 1029 #if 1030 #ifdef 1031 #ifndef 1032 #include 1033 #pragma message 1034 #undef 1035 #warning 1036In addition, these new command line options are supported: 1037 -D <symbol> Define symbol for preprocessor use 1038 -li Create preprocessed output file (*.i) 1039 -P Preprocess only and create preprocessor output file (*.i) 1040 1041Table Compiler: Fixed a problem where the equals operator within an 1042expression 1043did not work properly. 1044 1045Updated iASL to use the current versions of Bison/Flex. Updated the 1046Windows 1047project file to invoke these tools from the standard location. ACPICA BZ 1048904. 1049Versions supported: 1050 Flex for Windows: V2.5.4 1051 Bison for Windows: V2.4.1 1052 1053---------------------------------------- 105415 February 2012. Summary of changes for version 20120215: 1055 1056 10571) ACPICA Core Subsystem: 1058 1059There have been some major changes to the sleep/wake support code, as 1060described below (a - e). 1061 1062a) The AcpiLeaveSleepState has been split into two interfaces, similar to 1063AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 1064AcpiLeaveSleepStatePrep. This allows the host to perform actions between 1065the 1066time the _BFS method is called and the _WAK method is called. NOTE: all 1067hosts 1068must update their wake/resume code or else sleep/wake will not work 1069properly. 1070Rafael Wysocki. 1071 1072b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 1073_WAK 1074method. Some machines require that the GPEs are enabled before the _WAK 1075method 1076is executed. Thomas Renninger. 1077 1078c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) bit. 1079Some BIOS code assumes that WAK_STS will be cleared on resume and use it 1080to 1081determine whether the system is rebooting or resuming. Matthew Garrett. 1082 1083d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 1084Sleep) to 1085match the ACPI specification requirement. Rafael Wysocki. 1086 1087e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 1088registers within the V5 FADT. This support adds two new files: 1089hardware/hwesleep.c implements the support for the new registers. Moved 1090all 1091sleep/wake external interfaces to hardware/hwxfsleep.c. 1092 1093 1094Added a new OSL interface for ACPI table overrides, 1095AcpiOsPhysicalTableOverride. This interface allows the host to override a 1096table via a physical address, instead of the logical address required by 1097AcpiOsTableOverride. This simplifies the host implementation. Initial 1098implementation by Thomas Renninger. The ACPICA implementation creates a 1099single 1100shared function for table overrides that attempts both a logical and a 1101physical override. 1102 1103Expanded the OSL memory read/write interfaces to 64-bit data 1104(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 1105transfer support for GAS register structures passed to AcpiRead and 1106AcpiWrite. 1107 1108Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 1109custom 1110build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 1111model. 1112See the ACPICA reference for details. ACPICA BZ 942. This option removes 1113about 111410% of the code and 5% of the static data, and the following hardware ACPI 1115features become unavailable: 1116 PM Event and Control registers 1117 SCI interrupt (and handler) 1118 Fixed Events 1119 General Purpose Events (GPEs) 1120 Global Lock 1121 ACPI PM timer 1122 FACS table (Waking vectors and Global Lock) 1123 1124Updated the unix tarball directory structure to match the ACPICA git 1125source 1126tree. This ensures that the generic unix makefiles work properly (in 1127generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 867. 1128 1129Updated the return value of the _REV predefined method to integer value 5 1130to 1131reflect ACPI 5.0 support. 1132 1133Moved the external ACPI PM timer interface prototypes to the public 1134acpixf.h 1135file where they belong. 1136 1137Example Code and Data Size: These are the sizes for the OS-independent 1138acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1139debug 1140version of the code includes the debug output trace mechanism and has a 1141much 1142larger code and data size. 1143 1144 Previous Release: 1145 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 1146 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 1147 Current Release: 1148 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 1149 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1150 1151 11522) iASL Compiler/Disassembler and Tools: 1153 1154Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 1155descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 1156incorrectly displayed. 1157 1158AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 1159specification. 1160 1161---------------------------------------- 116211 January 2012. Summary of changes for version 20120111: 1163 1164 11651) ACPICA Core Subsystem: 1166 1167Implemented a new mechanism to allow host device drivers to check for 1168address 1169range conflicts with ACPI Operation Regions. Both SystemMemory and 1170SystemIO 1171address spaces are supported. A new external interface, 1172AcpiCheckAddressRange, 1173allows drivers to check an address range against the ACPI namespace. See 1174the 1175ACPICA reference for additional details. Adds one new file, 1176utilities/utaddress.c. Lin Ming, Bob Moore. 1177 1178Fixed several issues with the ACPI 5.0 FADT support: Add the sleep Control 1179and 1180Status registers, update the ACPI 5.0 flags, and update internal data 1181structures to handle an FADT larger than 256 bytes. The size of the ACPI 11825.0 1183FADT is 268 bytes. 1184 1185Updated all ACPICA copyrights and signons to 2012. Added the 2012 1186copyright to 1187all module headers and signons, including the standard Linux header. This 1188affects virtually every file in the ACPICA core subsystem, iASL compiler, 1189and 1190all ACPICA utilities. 1191 1192Example Code and Data Size: These are the sizes for the OS-independent 1193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1194debug 1195version of the code includes the debug output trace mechanism and has a 1196much 1197larger code and data size. 1198 1199 Previous Release: 1200 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 1201 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 1202 Current Release: 1203 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 1204 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 1205 1206 12072) iASL Compiler/Disassembler and Tools: 1208 1209Disassembler: fixed a problem with the automatic resource tag generation 1210support. Fixes a problem where the resource tags are inadvertently not 1211constructed if the table being disassembled contains external references 1212to 1213control methods. Moved the actual construction of the tags to after the 1214final 1215namespace is constructed (after 2nd parse is invoked due to external 1216control 1217method references.) ACPICA BZ 941. 1218 1219Table Compiler: Make all "generic" operators caseless. These are the 1220operators 1221like UINT8, String, etc. Making these caseless improves ease-of-use. 1222ACPICA BZ 1223934. 1224 1225---------------------------------------- 122623 November 2011. Summary of changes for version 20111123: 1227 12280) ACPI 5.0 Support: 1229 1230This release contains full support for the ACPI 5.0 specification, as 1231summarized below. 1232 1233Reduced Hardware Support: 1234------------------------- 1235 1236This support allows for ACPI systems without the usual ACPI hardware. This 1237support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 1238will 1239not attempt to initialize or use any of the usual ACPI hardware. Note, 1240when 1241this flag is set, all of the following ACPI hardware is assumed to be not 1242present and is not initialized or accessed: 1243 1244 General Purpose Events (GPEs) 1245 Fixed Events (PM1a/PM1b and PM Control) 1246 Power Management Timer and Console Buttons (power/sleep) 1247 Real-time Clock Alarm 1248 Global Lock 1249 System Control Interrupt (SCI) 1250 The FACS is assumed to be non-existent 1251 1252ACPI Tables: 1253------------ 1254 1255All new tables and updates to existing tables are fully supported in the 1256ACPICA headers (for use by device drivers), the disassembler, and the iASL 1257Data Table Compiler. ACPI 5.0 defines these new tables: 1258 1259 BGRT /* Boot Graphics Resource Table */ 1260 DRTM /* Dynamic Root of Trust for Measurement table */ 1261 FPDT /* Firmware Performance Data Table */ 1262 GTDT /* Generic Timer Description Table */ 1263 MPST /* Memory Power State Table */ 1264 PCCT /* Platform Communications Channel Table */ 1265 PMTT /* Platform Memory Topology Table */ 1266 RASF /* RAS Feature table */ 1267 1268Operation Regions/SpaceIDs: 1269--------------------------- 1270 1271All new operation regions are fully supported by the iASL compiler, the 1272disassembler, and the ACPICA runtime code (for dispatch to region 1273handlers.) 1274The new operation region Space IDs are: 1275 1276 GeneralPurposeIo 1277 GenericSerialBus 1278 1279Resource Descriptors: 1280--------------------- 1281 1282All new ASL resource descriptors are fully supported by the iASL compiler, 1283the 1284ASL/AML disassembler, and the ACPICA runtime Resource Manager code 1285(including 1286all new predefined resource tags). New descriptors are: 1287 1288 FixedDma 1289 GpioIo 1290 GpioInt 1291 I2cSerialBus 1292 SpiSerialBus 1293 UartSerialBus 1294 1295ASL/AML Operators, New and Modified: 1296------------------------------------ 1297 1298One new operator is added, the Connection operator, which is used to 1299associate 1300a GeneralPurposeIo or GenericSerialBus resource descriptor with individual 1301field objects within an operation region. Several new protocols are 1302associated 1303with the AccessAs operator. All are fully supported by the iASL compiler, 1304disassembler, and runtime ACPICA AML interpreter: 1305 1306 Connection // Declare Field Connection attributes 1307 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 1308 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes Protocol 1309 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 1310 RawDataBuffer // Data type for Vendor Data 1311fields 1312 1313Predefined ASL/AML Objects: 1314--------------------------- 1315 1316All new predefined objects/control-methods are supported by the iASL 1317compiler 1318and the ACPICA runtime validation/repair (arguments and return values.) 1319New 1320predefined names include the following: 1321 1322Standard Predefined Names (Objects or Control Methods): 1323 _AEI, _CLS, _CPC, _CWS, _DEP, 1324 _DLM, _EVT, _GCP, _CRT, _GWS, 1325 _HRV, _PRE, _PSE, _SRT, _SUB. 1326 1327Resource Tags (Names used to access individual fields within resource 1328descriptors): 1329 _DBT, _DPL, _DRS, _END, _FLC, 1330 _IOR, _LIN, _MOD, _PAR, _PHA, 1331 _PIN, _PPI, _POL, _RXL, _SLV, 1332 _SPE, _STB, _TXL, _VEN. 1333 1334ACPICA External Interfaces: 1335--------------------------- 1336 1337Several new interfaces have been defined for use by ACPI-related device 1338drivers and other host OS services: 1339 1340AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 1341to 1342acquire and release AML mutexes that are defined in the DSDT/SSDT tables 1343provided by the BIOS. They are intended to be used in conjunction with the 1344ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 1345mutual exclusion with the AML code/interpreter. 1346 1347AcpiGetEventResources: Returns the (formatted) resource descriptors as 1348defined 1349by the ACPI 5.0 _AEI object (ACPI Event Information). This object 1350provides 1351resource descriptors associated with hardware-reduced platform events, 1352similar 1353to the AcpiGetCurrentResources interface. 1354 1355Operation Region Handlers: For General Purpose IO and Generic Serial Bus 1356operation regions, information about the Connection() object and any 1357optional 1358length information is passed to the region handler within the Context 1359parameter. 1360 1361AcpiBufferToResource: This interface converts a raw AML buffer containing 1362a 1363resource template or resource descriptor to the ACPI_RESOURCE internal 1364format 1365suitable for use by device drivers. Can be used by an operation region 1366handler 1367to convert the Connection() buffer object into a ACPI_RESOURCE. 1368 1369Miscellaneous/Tools/TestSuites: 1370------------------------------- 1371 1372Support for extended _HID names (Four alpha characters instead of three). 1373Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 1374Support for ACPI 5.0 features in the ASLTS test suite. 1375Fully updated documentation (ACPICA and iASL reference documents.) 1376 1377ACPI Table Definition Language: 1378------------------------------- 1379 1380Support for this language was implemented and released as a subsystem of 1381the 1382iASL compiler in 2010. (See the iASL compiler User Guide.) 1383 1384 1385Non-ACPI 5.0 changes for this release: 1386-------------------------------------- 1387 13881) ACPICA Core Subsystem: 1389 1390Fix a problem with operation region declarations where a failure can occur 1391if 1392the region name and an argument that evaluates to an object (such as the 1393region address) are in different namespace scopes. Lin Ming, ACPICA BZ 1394937. 1395 1396Do not abort an ACPI table load if an invalid space ID is found within. 1397This 1398will be caught later if the offending method is executed. ACPICA BZ 925. 1399 1400Fixed an issue with the FFixedHW space ID where the ID was not always 1401recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 1402 1403Fixed a problem with the 32-bit generation of the unix-specific OSL 1404(osunixxf.c). Lin Ming, ACPICA BZ 936. 1405 1406Several changes made to enable generation with the GCC 4.6 compiler. 1407ACPICA BZ 1408935. 1409 1410New error messages: Unsupported I/O requests (not 8/16/32 bit), and 1411Index/Bank 1412field registers out-of-range. 1413 14142) iASL Compiler/Disassembler and Tools: 1415 1416iASL: Implemented the __PATH__ operator, which returns the full pathname 1417of 1418the current source file. 1419 1420AcpiHelp: Automatically display expanded keyword information for all ASL 1421operators. 1422 1423Debugger: Add "Template" command to disassemble/dump resource template 1424buffers. 1425 1426Added a new master script to generate and execute the ASLTS test suite. 1427Automatically handles 32- and 64-bit generation. See tests/aslts.sh 1428 1429iASL: Fix problem with listing generation during processing of the 1430Switch() 1431operator where AML listing was disabled until the entire Switch block was 1432completed. 1433 1434iASL: Improve support for semicolon statement terminators. Fix "invalid 1435character" message for some cases when the semicolon is used. Semicolons 1436are 1437now allowed after every <Term> grammar element. ACPICA BZ 927. 1438 1439iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 1440923. 1441 1442Disassembler: Fix problem with disassembly of the DataTableRegion operator 1443where an inadvertent "Unhandled deferred opcode" message could be 1444generated. 1445 14463) Example Code and Data Size 1447 1448These are the sizes for the OS-independent acpica.lib produced by the 1449Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 1450includes the debug output trace mechanism and has a much larger code and 1451data 1452size. 1453 1454 Previous Release: 1455 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1456 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1457 Current Release: 1458 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 1459 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 1460 1461---------------------------------------- 146222 September 2011. Summary of changes for version 20110922: 1463 14640) ACPI 5.0 News: 1465 1466Support for ACPI 5.0 in ACPICA has been underway for several months and 1467will 1468be released at the same time that ACPI 5.0 is officially released. 1469 1470The ACPI 5.0 specification is on track for release in the next few months. 1471 14721) ACPICA Core Subsystem: 1473 1474Fixed a problem where the maximum sleep time for the Sleep() operator was 1475intended to be limited to two seconds, but was inadvertently limited to 20 1476seconds instead. 1477 1478Linux and Unix makefiles: Added header file dependencies to ensure correct 1479generation of ACPICA core code and utilities. Also simplified the 1480makefiles 1481considerably through the use of the vpath variable to specify search 1482paths. 1483ACPICA BZ 924. 1484 14852) iASL Compiler/Disassembler and Tools: 1486 1487iASL: Implemented support to check the access length for all fields 1488created to 1489access named Resource Descriptor fields. For example, if a resource field 1490is 1491defined to be two bits, a warning is issued if a CreateXxxxField() is used 1492with an incorrect bit length. This is implemented for all current resource 1493descriptor names. ACPICA BZ 930. 1494 1495Disassembler: Fixed a byte ordering problem with the output of 24-bit and 149656- 1497bit integers. 1498 1499iASL: Fixed a couple of issues associated with variable-length package 1500objects. 1) properly handle constants like One, Ones, Zero -- do not make 1501a 1502VAR_PACKAGE when these are used as a package length. 2) Allow the 1503VAR_PACKAGE 1504opcode (in addition to PACKAGE) when validating object types for 1505predefined 1506names. 1507 1508iASL: Emit statistics for all output files (instead of just the ASL input 1509and 1510AML output). Includes listings, hex files, etc. 1511 1512iASL: Added -G option to the table compiler to allow the compilation of 1513custom 1514ACPI tables. The only part of a table that is required is the standard 36- 1515byte 1516ACPI header. 1517 1518AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 1519headers), 1520which also adds correct 64-bit support. Also, now all output filenames are 1521completely lower case. 1522 1523AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 1524loading table files. A warning is issued for any such tables. The only 1525exception is an FADT. This also fixes a possible fault when attempting to 1526load 1527non-AML tables. ACPICA BZ 932. 1528 1529AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where a 1530missing table terminator could cause a fault when using the -p option. 1531 1532AcpiSrc: Fixed a possible divide-by-zero fault when generating file 1533statistics. 1534 15353) Example Code and Data Size 1536 1537These are the sizes for the OS-independent acpica.lib produced by the 1538Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 1539includes the debug output trace mechanism and has a much larger code and 1540data 1541size. 1542 1543 Previous Release (VC 9.0): 1544 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1545 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1546 Current Release (VC 9.0): 1547 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1548 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1549 1550 1551---------------------------------------- 155223 June 2011. Summary of changes for version 20110623: 1553 15541) ACPI CA Core Subsystem: 1555 1556Updated the predefined name repair mechanism to not attempt repair of a 1557_TSS 1558return object if a _PSS object is present. We can only sort the _TSS 1559return 1560package if there is no _PSS within the same scope. This is because if _PSS 1561is 1562present, the ACPI specification dictates that the _TSS Power Dissipation 1563field 1564is to be ignored, and therefore some BIOSs leave garbage values in the 1565_TSS 1566Power field(s). In this case, it is best to just return the _TSS package 1567as- 1568is. Reported by, and fixed with assistance from Fenghua Yu. 1569 1570Added an option to globally disable the control method return value 1571validation 1572and repair. This runtime option can be used to disable return value repair 1573if 1574this is causing a problem on a particular machine. Also added an option to 1575AcpiExec (-dr) to set this disable flag. 1576 1577All makefiles and project files: Major changes to improve generation of 1578ACPICA 1579tools. ACPICA BZ 912: 1580 Reduce default optimization levels to improve compatibility 1581 For Linux, add strict-aliasing=0 for gcc 4 1582 Cleanup and simplify use of command line defines 1583 Cleanup multithread library support 1584 Improve usage messages 1585 1586Linux-specific header: update handling of THREAD_ID and pthread. For the 158732- 1588bit case, improve casting to eliminate possible warnings, especially with 1589the 1590acpica tools. 1591 1592Example Code and Data Size: These are the sizes for the OS-independent 1593acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1594debug 1595version of the code includes the debug output trace mechanism and has a 1596much 1597larger code and data size. 1598 1599 Previous Release (VC 9.0): 1600 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 1601 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1602 Current Release (VC 9.0): 1603 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1604 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1605 16062) iASL Compiler/Disassembler and Tools: 1607 1608With this release, a new utility named "acpihelp" has been added to the 1609ACPICA 1610package. This utility summarizes the ACPI specification chapters for the 1611ASL 1612and AML languages. It generates under Linux/Unix as well as Windows, and 1613provides the following functionality: 1614 Find/display ASL operator(s) -- with description and syntax. 1615 Find/display ASL keyword(s) -- with exact spelling and descriptions. 1616 Find/display ACPI predefined name(s) -- with description, number 1617 of arguments, and the return value data type. 1618 Find/display AML opcode name(s) -- with opcode, arguments, and 1619grammar. 1620 Decode/display AML opcode -- with opcode name, arguments, and grammar. 1621 1622Service Layers: Make multi-thread support configurable. Conditionally 1623compile 1624the multi-thread support so that threading libraries will not be linked if 1625not 1626necessary. The only tool that requires multi-thread support is AcpiExec. 1627 1628iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 1629of 1630Bison appear to want the interface to yyerror to be a const char * (or at 1631least this is a problem when generating iASL on some systems.) ACPICA BZ 1632923 1633Pierre Lejeune. 1634 1635Tools: Fix for systems where O_BINARY is not defined. Only used for 1636Windows 1637versions of the tools. 1638 1639---------------------------------------- 164027 May 2011. Summary of changes for version 20110527: 1641 16421) ACPI CA Core Subsystem: 1643 1644ASL Load() operator: Reinstate most restrictions on the incoming ACPI 1645table 1646signature. Now, only allow SSDT, OEMx, and a null signature. History: 1647 1) Originally, we checked the table signature for "SSDT" or "PSDT". 1648 (PSDT is now obsolete.) 1649 2) We added support for OEMx tables, signature "OEM" plus a fourth 1650 "don't care" character. 1651 3) Valid tables were encountered with a null signature, so we just 1652 gave up on validating the signature, (05/2008). 1653 4) We encountered non-AML tables such as the MADT, which caused 1654 interpreter errors and kernel faults. So now, we once again allow 1655 only SSDT, OEMx, and now, also a null signature. (05/2011). 1656 1657Added the missing _TDL predefined name to the global name list in order to 1658enable validation. Affects both the core ACPICA code and the iASL 1659compiler. 1660 1661Example Code and Data Size: These are the sizes for the OS-independent 1662acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1663debug 1664version of the code includes the debug output trace mechanism and has a 1665much 1666larger code and data size. 1667 1668 Previous Release (VC 9.0): 1669 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 1670 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 1671 Current Release (VC 9.0): 1672 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 1673 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1674 16752) iASL Compiler/Disassembler and Tools: 1676 1677Debugger/AcpiExec: Implemented support for "complex" method arguments on 1678the 1679debugger command line. This adds support beyond simple integers -- 1680including 1681Strings, Buffers, and Packages. Includes support for nested packages. 1682Increased the default command line buffer size to accommodate these 1683arguments. 1684See the ACPICA reference for details and syntax. ACPICA BZ 917. 1685 1686Debugger/AcpiExec: Implemented support for "default" method arguments for 1687the 1688Execute/Debug command. Now, the debugger will always invoke a control 1689method 1690with the required number of arguments -- even if the command line 1691specifies 1692none or insufficient arguments. It uses default integer values for any 1693missing 1694arguments. Also fixes a bug where only six method arguments maximum were 1695supported instead of the required seven. 1696 1697Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 1698and 1699also return status in order to prevent buffer overruns. See the ACPICA 1700reference for details and syntax. ACPICA BZ 921 1701 1702iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 1703makefiles to simplify support for the two different but similar parser 1704generators, bison and yacc. 1705 1706Updated the generic unix makefile for gcc 4. The default gcc version is 1707now 1708expected to be 4 or greater, since options specific to gcc 4 are used. 1709 1710---------------------------------------- 171113 April 2011. Summary of changes for version 20110413: 1712 17131) ACPI CA Core Subsystem: 1714 1715Implemented support to execute a so-called "orphan" _REG method under the 1716EC 1717device. This change will force the execution of a _REG method underneath 1718the 1719EC 1720device even if there is no corresponding operation region of type 1721EmbeddedControl. Fixes a problem seen on some machines and apparently is 1722compatible with Windows behavior. ACPICA BZ 875. 1723 1724Added more predefined methods that are eligible for automatic NULL package 1725element removal. This change adds another group of predefined names to the 1726list 1727of names that can be repaired by having NULL package elements dynamically 1728removed. This group are those methods that return a single variable-length 1729package containing simple data types such as integers, buffers, strings. 1730This 1731includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 1732_PSL, 1733_Sx, 1734and _TZD. ACPICA BZ 914. 1735 1736Split and segregated all internal global lock functions to a new file, 1737evglock.c. 1738 1739Updated internal address SpaceID for DataTable regions. Moved this 1740internal 1741space 1742id in preparation for ACPI 5.0 changes that will include some new space 1743IDs. 1744This 1745change should not affect user/host code. 1746 1747Example Code and Data Size: These are the sizes for the OS-independent 1748acpica.lib 1749produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 1750version of 1751the code includes the debug output trace mechanism and has a much larger 1752code 1753and 1754data size. 1755 1756 Previous Release (VC 9.0): 1757 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 1758 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 1759 Current Release (VC 9.0): 1760 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 1761 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 1762 17632) iASL Compiler/Disassembler and Tools: 1764 1765iASL/DTC: Major update for new grammar features. Allow generic data types 1766in 1767custom ACPI tables. Field names are now optional. Any line can be split to 1768multiple lines using the continuation char (\). Large buffers now use 1769line- 1770continuation character(s) and no colon on the continuation lines. See the 1771grammar 1772update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 1773Moore. 1774 1775iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 1776statements. 1777Since the parser stuffs a "zero" as the return value for these statements 1778(due 1779to 1780the underlying AML grammar), they were seen as "return with value" by the 1781iASL 1782semantic checking. They are now seen correctly as "null" return 1783statements. 1784 1785iASL: Check if a_REG declaration has a corresponding Operation Region. 1786Adds a 1787check for each _REG to ensure that there is in fact a corresponding 1788operation 1789region declaration in the same scope. If not, the _REG method is not very 1790useful 1791since it probably won't be executed. ACPICA BZ 915. 1792 1793iASL/DTC: Finish support for expression evaluation. Added a new expression 1794parser 1795that implements c-style operator precedence and parenthesization. ACPICA 1796bugzilla 1797908. 1798 1799Disassembler/DTC: Remove support for () and <> style comments in data 1800tables. 1801Now 1802that DTC has full expression support, we don't want to have comment 1803strings 1804that 1805start with a parentheses or a less-than symbol. Now, only the standard /* 1806and 1807// 1808comments are supported, as well as the bracket [] comments. 1809 1810AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 1811"unusual" 1812headers in the acpidump file. Update the header validation to support 1813these 1814tables. Problem introduced in previous AcpiXtract version in the change to 1815support "wrong checksum" error messages emitted by acpidump utility. 1816 1817iASL: Add a * option to generate all template files (as a synonym for ALL) 1818as 1819in 1820"iasl -T *" or "iasl -T ALL". 1821 1822iASL/DTC: Do not abort compiler on fatal errors. We do not want to 1823completely 1824abort the compiler on "fatal" errors, simply should abort the current 1825compile. 1826This allows multiple compiles with a single (possibly wildcard) compiler 1827invocation. 1828 1829---------------------------------------- 183016 March 2011. Summary of changes for version 20110316: 1831 18321) ACPI CA Core Subsystem: 1833 1834Fixed a problem caused by a _PRW method appearing at the namespace root 1835scope 1836during the setup of wake GPEs. A fault could occur if a _PRW directly 1837under 1838the 1839root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 1840 1841Implemented support for "spurious" Global Lock interrupts. On some 1842systems, a 1843global lock interrupt can occur without the pending flag being set. Upon a 1844GL 1845interrupt, we now ensure that a thread is actually waiting for the lock 1846before 1847signaling GL availability. Rafael Wysocki, Bob Moore. 1848 1849Example Code and Data Size: These are the sizes for the OS-independent 1850acpica.lib 1851produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 1852version of 1853the code includes the debug output trace mechanism and has a much larger 1854code 1855and 1856data size. 1857 1858 Previous Release (VC 9.0): 1859 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 1860 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 1861 Current Release (VC 9.0): 1862 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 1863 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 1864 18652) iASL Compiler/Disassembler and Tools: 1866 1867Implemented full support for the "SLIC" ACPI table. Includes support in 1868the 1869header files, disassembler, table compiler, and template generator. Bob 1870Moore, 1871Lin Ming. 1872 1873AcpiXtract: Correctly handle embedded comments and messages from AcpiDump. 1874Apparently some or all versions of acpidump will occasionally emit a 1875comment 1876like 1877"Wrong checksum", etc., into the dump file. This was causing problems for 1878AcpiXtract. ACPICA BZ 905. 1879 1880iASL: Fix the Linux makefile by removing an inadvertent double file 1881inclusion. 1882ACPICA BZ 913. 1883 1884AcpiExec: Update installation of operation region handlers. Install one 1885handler 1886for a user-defined address space. This is used by the ASL test suite 1887(ASLTS). 1888 1889---------------------------------------- 189011 February 2011. Summary of changes for version 20110211: 1891 18921) ACPI CA Core Subsystem: 1893 1894Added a mechanism to defer _REG methods for some early-installed handlers. 1895Most user handlers should be installed before call to AcpiEnableSubsystem. 1896However, Event handlers and region handlers should be installed after 1897AcpiInitializeObjects. Override handlers for the "default" regions should 1898be 1899installed early, however. This change executes all _REG methods for the 1900default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 1901chicken/egg issues between them. ACPICA BZ 848. 1902 1903Implemented an optimization for GPE detection. This optimization will 1904simply 1905ignore GPE registers that contain no enabled GPEs -- there is no need to 1906read the register since this information is available internally. This 1907becomes more important on machines with a large GPE space. ACPICA bugzilla 1908884. Lin Ming. Suggestion from Joe Liu. 1909 1910Removed all use of the highly unreliable FADT revision field. The revision 1911number in the FADT has been found to be completely unreliable and cannot 1912be 1913trusted. Only the actual table length can be used to infer the version. 1914This 1915change updates the ACPICA core and the disassembler so that both no longer 1916even look at the FADT version and instead depend solely upon the FADT 1917length. 1918 1919Fix an unresolved name issue for the no-debug and no-error-message source 1920generation cases. The _AcpiModuleName was left undefined in these cases, 1921but 1922it is actually needed as a parameter to some interfaces. Define 1923_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 1924 1925Split several large files (makefiles and project files updated) 1926 utglobal.c -> utdecode.c 1927 dbcomds.c -> dbmethod.c dbnames.c 1928 dsopcode.c -> dsargs.c dscontrol.c 1929 dsload.c -> dsload2.c 1930 aslanalyze.c -> aslbtypes.c aslwalks.c 1931 1932Example Code and Data Size: These are the sizes for the OS-independent 1933acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1934debug version of the code includes the debug output trace mechanism and 1935has 1936a much larger code and data size. 1937 1938 Previous Release (VC 9.0): 1939 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 1940 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 1941 Current Release (VC 9.0): 1942 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 1943 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 1944 19452) iASL Compiler/Disassembler and Tools: 1946 1947iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 1948These are useful C-style macros with the standard definitions. ACPICA 1949bugzilla 898. 1950 1951iASL/DTC: Added support for integer expressions and labels. Support for 1952full 1953expressions for all integer fields in all ACPI tables. Support for labels 1954in 1955"generic" portions of tables such as UEFI. See the iASL reference manual. 1956 1957Debugger: Added a command to display the status of global handlers. The 1958"handlers" command will display op region, fixed event, and miscellaneous 1959global handlers. installation status -- and for op regions, whether 1960default 1961or user-installed handler will be used. 1962 1963iASL: Warn if reserved method incorrectly returns a value. Many predefined 1964names are defined such that they do not return a value. If implemented as 1965a 1966method, issue a warning if such a name explicitly returns a value. ACPICA 1967Bugzilla 855. 1968 1969iASL: Added detection of GPE method name conflicts. Detects a conflict 1970where 1971there are two GPE methods of the form _Lxy and _Exy in the same scope. 1972(For 1973example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 1974 1975iASL/DTC: Fixed a couple input scanner issues with comments and line 1976numbers. Comment remover could get confused and miss a comment ending. 1977Fixed 1978a problem with line counter maintenance. 1979 1980iASL/DTC: Reduced the severity of some errors from fatal to error. There 1981is 1982no need to abort on simple errors within a field definition. 1983 1984Debugger: Simplified the output of the help command. All help output now 1985in 1986a single screen, instead of help subcommands. ACPICA Bugzilla 897. 1987 1988---------------------------------------- 198912 January 2011. Summary of changes for version 20110112: 1990 19911) ACPI CA Core Subsystem: 1992 1993Fixed a race condition between method execution and namespace walks that 1994can 1995possibly cause a fault. The problem was apparently introduced in version 199620100528 as a result of a performance optimization that reduces the number 1997of 1998namespace walks upon method exit by using the delete_namespace_subtree 1999function instead of the delete_namespace_by_owner function used 2000previously. 2001Bug is a missing namespace lock in the delete_namespace_subtree function. 2002dana.myers@oracle.com 2003 2004Fixed several issues and a possible fault with the automatic "serialized" 2005method support. History: This support changes a method to "serialized" on 2006the 2007fly if the method generates an AE_ALREADY_EXISTS error, indicating the 2008possibility that it cannot handle reentrancy. This fix repairs a couple of 2009issues seen in the field, especially on machines with many cores: 2010 2011 1) Delete method children only upon the exit of the last thread, 2012 so as to not delete objects out from under other running threads 2013 (and possibly causing a fault.) 2014 2) Set the "serialized" bit for the method only upon the exit of the 2015 Last thread, so as to not cause deadlock when running threads 2016 attempt to exit. 2017 3) Cleanup the use of the AML "MethodFlags" and internal method flags 2018 so that there is no longer any confusion between the two. 2019 2020 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 2021 2022Debugger: Now lock the namespace for duration of a namespace dump. 2023Prevents 2024issues if the namespace is changing dynamically underneath the debugger. 2025Especially affects temporary namespace nodes, since the debugger displays 2026these also. 2027 2028Updated the ordering of include files. The ACPICA headers should appear 2029before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 2030set 2031any necessary compiler-specific defines, etc. Affects the ACPI-related 2032tools 2033and utilities. 2034 2035Updated all ACPICA copyrights and signons to 2011. Added the 2011 2036copyright 2037to all module headers and signons, including the Linux header. This 2038affects 2039virtually every file in the ACPICA core subsystem, iASL compiler, and all 2040utilities. 2041 2042Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 2043project files for VC++ 6.0 are now obsolete. New project files can be 2044found 2045under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 2046details. 2047 2048Example Code and Data Size: These are the sizes for the OS-independent 2049acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2050debug version of the code includes the debug output trace mechanism and 2051has a 2052much larger code and data size. 2053 2054 Previous Release (VC 6.0): 2055 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 2056 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 2057 Current Release (VC 9.0): 2058 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 2059 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 2060 20612) iASL Compiler/Disassembler and Tools: 2062 2063iASL: Added generic data types to the Data Table compiler. Add "generic" 2064data 2065types such as UINT32, String, Unicode, etc., to simplify the generation of 2066platform-defined tables such as UEFI. Lin Ming. 2067 2068iASL: Added listing support for the Data Table Compiler. Adds listing 2069support 2070(-l) to display actual binary output for each line of input code. 2071 2072---------------------------------------- 207309 December 2010. Summary of changes for version 20101209: 2074 20751) ACPI CA Core Subsystem: 2076 2077Completed the major overhaul of the GPE support code that was begun in 2078July 20792010. Major features include: removal of _PRW execution in ACPICA (host 2080executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 2081changes to existing interfaces, simplification of GPE handler operation, 2082and 2083a handful of new interfaces: 2084 2085 AcpiUpdateAllGpes 2086 AcpiFinishGpe 2087 AcpiSetupGpeForWake 2088 AcpiSetGpeWakeMask 2089 One new file, evxfgpe.c to consolidate all external GPE interfaces. 2090 2091See the ACPICA Programmer Reference for full details and programming 2092information. See the new section 4.4 "General Purpose Event (GPE) Support" 2093for a full overview, and section 8.7 "ACPI General Purpose Event 2094Management" 2095for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming, 2096Bob Moore, Rafael Wysocki. 2097 2098Implemented a new GPE feature for Windows compatibility, the "Implicit 2099Wake 2100GPE Notify". This feature will automatically issue a Notify(2) on a device 2101when a Wake GPE is received if there is no corresponding GPE method or 2102handler. ACPICA BZ 870. 2103 2104Fixed a problem with the Scope() operator during table parse and load 2105phase. 2106During load phase (table load or method execution), the scope operator 2107should 2108not enter the target into the namespace. Instead, it should open a new 2109scope 2110at the target location. Linux BZ 19462, ACPICA BZ 882. 2111 2112Example Code and Data Size: These are the sizes for the OS-independent 2113acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2114debug version of the code includes the debug output trace mechanism and 2115has a 2116much larger code and data size. 2117 2118 Previous Release: 2119 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 2120 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 2121 Current Release: 2122 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2123 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2124 21252) iASL Compiler/Disassembler and Tools: 2126 2127iASL: Relax the alphanumeric restriction on _CID strings. These strings 2128are 2129"bus-specific" per the ACPI specification, and therefore any characters 2130are 2131acceptable. The only checks that can be performed are for a null string 2132and 2133perhaps for a leading asterisk. ACPICA BZ 886. 2134 2135iASL: Fixed a problem where a syntax error that caused a premature EOF 2136condition on the source file emitted a very confusing error message. The 2137premature EOF is now detected correctly. ACPICA BZ 891. 2138 2139Disassembler: Decode the AccessSize within a Generic Address Structure 2140(byte 2141access, word access, etc.) Note, this field does not allow arbitrary bit 2142access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 2143 2144New: AcpiNames utility - Example namespace dump utility. Shows an example 2145of 2146ACPICA configuration for a minimal namespace dump utility. Uses table and 2147namespace managers, but no AML interpreter. Does not add any functionality 2148over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 2149partition and configure ACPICA. ACPICA BZ 883. 2150 2151AML Debugger: Increased the debugger buffer size for method return 2152objects. 2153Was 4K, increased to 16K. Also enhanced error messages for debugger method 2154execution, including the buffer overflow case. 2155 2156---------------------------------------- 215713 October 2010. Summary of changes for version 20101013: 2158 21591) ACPI CA Core Subsystem: 2160 2161Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 2162now 2163clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 2164HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 2165 2166Changed the type of the predefined namespace object _TZ from ThermalZone 2167to 2168Device. This was found to be confusing to the host software that processes 2169the various thermal zones, since _TZ is not really a ThermalZone. However, 2170a 2171Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 2172Zhang. 2173 2174Added Windows Vista SP2 to the list of supported _OSI strings. The actual 2175string is "Windows 2006 SP2". 2176 2177Eliminated duplicate code in AcpiUtExecute* functions. Now that the 2178nsrepair 2179code automatically repairs _HID-related strings, this type of code is no 2180longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878. 2181 2182Example Code and Data Size: These are the sizes for the OS-independent 2183acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2184debug version of the code includes the debug output trace mechanism and 2185has a 2186much larger code and data size. 2187 2188 Previous Release: 2189 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2190 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2191 Current Release: 2192 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2193 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2194 21952) iASL Compiler/Disassembler and Tools: 2196 2197iASL: Implemented additional compile-time validation for _HID strings. The 2198non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length 2199of 2200the string must be exactly seven or eight characters. For both _HID and 2201_CID 2202strings, all characters must be alphanumeric. ACPICA BZ 874. 2203 2204iASL: Allow certain "null" resource descriptors. Some BIOS code creates 2205descriptors that are mostly or all zeros, with the expectation that they 2206will 2207be filled in at runtime. iASL now allows this as long as there is a 2208"resource 2209tag" (name) associated with the descriptor, which gives the ASL a handle 2210needed to modify the descriptor. ACPICA BZ 873. 2211 2212Added single-thread support to the generic Unix application OSL. Primarily 2213for iASL support, this change removes the use of semaphores in the single- 2214threaded ACPICA tools/applications - increasing performance. The 2215_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 2216option. ACPICA BZ 879. 2217 2218AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 2219support 2220for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 2221 2222iASL: Moved all compiler messages to a new file, aslmessages.h. 2223 2224---------------------------------------- 222515 September 2010. Summary of changes for version 20100915: 2226 22271) ACPI CA Core Subsystem: 2228 2229Removed the AcpiOsDerivePciId OSL interface. The various host 2230implementations 2231of this function were not OS-dependent and are now obsolete and can be 2232removed from all host OSLs. This function has been replaced by 2233AcpiHwDerivePciId, which is now part of the ACPICA core code. 2234AcpiHwDerivePciId has been implemented without recursion. Adds one new 2235module, hwpci.c. ACPICA BZ 857. 2236 2237Implemented a dynamic repair for _HID and _CID strings. The following 2238problems are now repaired at runtime: 1) Remove a leading asterisk in the 2239string, and 2) the entire string is uppercased. Both repairs are in 2240accordance with the ACPI specification and will simplify host driver code. 2241ACPICA BZ 871. 2242 2243The ACPI_THREAD_ID type is no longer configurable, internally it is now 2244always UINT64. This simplifies the ACPICA code, especially any printf 2245output. 2246UINT64 is the only common data type for all thread_id types across all 2247operating systems. It is now up to the host OSL to cast the native 2248thread_id 2249type to UINT64 before returning the value to ACPICA (via 2250AcpiOsGetThreadId). 2251Lin Ming, Bob Moore. 2252 2253Added the ACPI_INLINE type to enhance the ACPICA configuration. The 2254"inline" 2255keyword is not standard across compilers, and this type allows inline to 2256be 2257configured on a per-compiler basis. Lin Ming. 2258 2259Made the system global AcpiGbl_SystemAwakeAndRunning publically available. 2260Added an extern for this boolean in acpixf.h. Some hosts utilize this 2261value 2262during suspend/restore operations. ACPICA BZ 869. 2263 2264All code that implements error/warning messages with the "ACPI:" prefix 2265has 2266been moved to a new module, utxferror.c. 2267 2268The UINT64_OVERLAY was moved to utmath.c, which is the only module where 2269it 2270is used. ACPICA BZ 829. Lin Ming, Bob Moore. 2271 2272Example Code and Data Size: These are the sizes for the OS-independent 2273acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2274debug version of the code includes the debug output trace mechanism and 2275has a 2276much larger code and data size. 2277 2278 Previous Release: 2279 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 2280 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 2281 Current Release: 2282 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2283 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2284 22852) iASL Compiler/Disassembler and Tools: 2286 2287iASL/Disassembler: Write ACPI errors to stderr instead of the output file. 2288This keeps the output files free of random error messages that may 2289originate 2290from within the namespace/interpreter code. Used this opportunity to merge 2291all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 2292866. Lin Ming, Bob Moore. 2293 2294Tools: update some printfs for ansi warnings on size_t. Handle width 2295change 2296of size_t on 32-bit versus 64-bit generations. Lin Ming. 2297 2298---------------------------------------- 229906 August 2010. Summary of changes for version 20100806: 2300 23011) ACPI CA Core Subsystem: 2302 2303Designed and implemented a new host interface to the _OSI support code. 2304This 2305will allow the host to dynamically add or remove multiple _OSI strings, as 2306well as install an optional handler that is called for each _OSI 2307invocation. 2308Also added a new AML debugger command, 'osi' to display and modify the 2309global 2310_OSI string table, and test support in the AcpiExec utility. See the 2311ACPICA 2312reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 2313New Functions: 2314 AcpiInstallInterface - Add an _OSI string. 2315 AcpiRemoveInterface - Delete an _OSI string. 2316 AcpiInstallInterfaceHandler - Install optional _OSI handler. 2317Obsolete Functions: 2318 AcpiOsValidateInterface - no longer used. 2319New Files: 2320 source/components/utilities/utosi.c 2321 2322Re-introduced the support to enable multi-byte transfers for Embedded 2323Controller (EC) operation regions. A reported problem was found to be a 2324bug 2325in the host OS, not in the multi-byte support. Previously, the maximum 2326data 2327size passed to the EC operation region handler was a single byte. There 2328are 2329often EC Fields larger than one byte that need to be transferred, and it 2330is 2331useful for the EC driver to lock these as a single transaction. This 2332change 2333enables single transfers larger than 8 bits. This effectively changes the 2334access to the EC space from ByteAcc to AnyAcc, and will probably require 2335changes to the host OS Embedded Controller driver to enable 16/32/64/256- 2336bit 2337transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 2338 2339Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 2340prototype in acpiosxf.h had the output value pointer as a (void *). 2341It should be a (UINT64 *). This may affect some host OSL code. 2342 2343Fixed a couple problems with the recently modified Linux makefiles for 2344iASL 2345and AcpiExec. These new makefiles place the generated object files in the 2346local directory so that there can be no collisions between the files that 2347are 2348shared between them that are compiled with different options. 2349 2350Example Code and Data Size: These are the sizes for the OS-independent 2351acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2352debug version of the code includes the debug output trace mechanism and 2353has a 2354much larger code and data size. 2355 2356 Previous Release: 2357 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2358 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 2359 Current Release: 2360 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 2361 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 2362 23632) iASL Compiler/Disassembler and Tools: 2364 2365iASL/Disassembler: Added a new option (-da, "disassemble all") to load the 2366namespace from and disassemble an entire group of AML files. Useful for 2367loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 2368and 2369disassembling with one simple command. ACPICA BZ 865. Lin Ming. 2370 2371iASL: Allow multiple invocations of -e option. This change allows multiple 2372uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 2373834. 2374Lin Ming. 2375 2376---------------------------------------- 237702 July 2010. Summary of changes for version 20100702: 2378 23791) ACPI CA Core Subsystem: 2380 2381Implemented several updates to the recently added GPE reference count 2382support. The model for "wake" GPEs is changing to give the host OS 2383complete 2384control of these GPEs. Eventually, the ACPICA core will not execute any 2385_PRW 2386methods, since the host already must execute them. Also, additional 2387changes 2388were made to help ensure that the reference counts are kept in proper 2389synchronization with reality. Rafael J. Wysocki. 2390 23911) Ensure that GPEs are not enabled twice during initialization. 23922) Ensure that GPE enable masks stay in sync with the reference count. 23933) Do not inadvertently enable GPEs when writing GPE registers. 23944) Remove the internal wake reference counter and add new AcpiGpeWakeup 2395interface. This interface will set or clear individual GPEs for wakeup. 23965) Remove GpeType argument from AcpiEnable and AcpiDisable. These 2397interfaces 2398are now used for "runtime" GPEs only. 2399 2400Changed the behavior of the GPE install/remove handler interfaces. The GPE 2401is 2402no longer disabled during this process, as it was found to cause problems 2403on 2404some machines. Rafael J. Wysocki. 2405 2406Reverted a change introduced in version 20100528 to enable Embedded 2407Controller multi-byte transfers. This change was found to cause problems 2408with 2409Index Fields and possibly Bank Fields. It will be reintroduced when these 2410problems have been resolved. 2411 2412Fixed a problem with references to Alias objects within Package Objects. A 2413reference to an Alias within the definition of a Package was not always 2414resolved properly. Aliases to objects like Processors, Thermal zones, etc. 2415were resolved to the actual object instead of a reference to the object as 2416it 2417should be. Package objects are only allowed to contain integer, string, 2418buffer, package, and reference objects. Redhat bugzilla 608648. 2419 2420Example Code and Data Size: These are the sizes for the OS-independent 2421acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2422debug version of the code includes the debug output trace mechanism and 2423has a 2424much larger code and data size. 2425 2426 Previous Release: 2427 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2428 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 2429 Current Release: 2430 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2431 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 2432 24332) iASL Compiler/Disassembler and Tools: 2434 2435iASL: Implemented a new compiler subsystem to allow definition and 2436compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 2437These 2438are called "ACPI Data Tables", and the new compiler is the "Data Table 2439Compiler". This compiler is intended to simplify the existing error-prone 2440process of creating these tables for the BIOS, as well as allowing the 2441disassembly, modification, recompilation, and override of existing ACPI 2442data 2443tables. See the iASL User Guide for detailed information. 2444 2445iASL: Implemented a new Template Generator option in support of the new 2446Data 2447Table Compiler. This option will create examples of all known ACPI tables 2448that can be used as the basis for table development. See the iASL 2449documentation and the -T option. 2450 2451Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 2452Descriptor Table). 2453 2454Updated the Linux makefiles for iASL and AcpiExec to place the generated 2455object files in the local directory so that there can be no collisions 2456between the shared files between them that are generated with different 2457options. 2458 2459Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use 2460the #define __APPLE__ to enable this support. 2461 2462---------------------------------------- 246328 May 2010. Summary of changes for version 20100528: 2464 2465Note: The ACPI 4.0a specification was released on April 5, 2010 and is 2466available at www.acpi.info. This is primarily an errata release. 2467 24681) ACPI CA Core Subsystem: 2469 2470Undefined ACPI tables: We are looking for the definitions for the 2471following 2472ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 2473 2474Implemented support to enable multi-byte transfers for Embedded Controller 2475(EC) operation regions. Previously, the maximum data size passed to the EC 2476operation region handler was a single byte. There are often EC Fields 2477larger 2478than one byte that need to be transferred, and it is useful for the EC 2479driver 2480to lock these as a single transaction. This change enables single 2481transfers 2482larger than 8 bits. This effectively changes the access to the EC space 2483from 2484ByteAcc to AnyAcc, and will probably require changes to the host OS 2485Embedded 2486Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 2487bit 2488transfers. Alexey Starikovskiy, Lin Ming 2489 2490Implemented a performance enhancement for namespace search and access. 2491This 2492change enhances the performance of namespace searches and walks by adding 2493a 2494backpointer to the parent in each namespace node. On large namespaces, 2495this 2496change can improve overall ACPI performance by up to 9X. Adding a pointer 2497to 2498each namespace node increases the overall size of the internal namespace 2499by 2500about 5%, since each namespace entry usually consists of both a namespace 2501node and an ACPI operand object. However, this is the first growth of the 2502namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 2503 2504Implemented a performance optimization that reduces the number of 2505namespace 2506walks. On control method exit, only walk the namespace if the method is 2507known 2508to have created namespace objects outside of its local scope. Previously, 2509the 2510entire namespace was traversed on each control method exit. This change 2511can 2512improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 2513Moore. 2514 2515Added support to truncate I/O addresses to 16 bits for Windows 2516compatibility. 2517Some ASL code has been seen in the field that inadvertently has bits set 2518above bit 15. This feature is optional and is enabled if the BIOS requests 2519any Windows OSI strings. It can also be enabled by the host OS. Matthew 2520Garrett, Bob Moore. 2521 2522Added support to limit the maximum time for the ASL Sleep() operator. To 2523prevent accidental deep sleeps, limit the maximum time that Sleep() will 2524actually sleep. Configurable, the default maximum is two seconds. ACPICA 2525bugzilla 854. 2526 2527Added run-time validation support for the _WDG and_WED Microsoft 2528predefined 2529methods. These objects are defined by "Windows Instrumentation", and are 2530not 2531part of the ACPI spec. ACPICA BZ 860. 2532 2533Expanded all statistic counters used during namespace and device 2534initialization from 16 to 32 bits in order to support very large 2535namespaces. 2536 2537Replaced all instances of %d in printf format specifiers with %u since 2538nearly 2539all integers in ACPICA are unsigned. 2540 2541Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 2542returned 2543as AE_NO_HANDLER. 2544 2545Example Code and Data Size: These are the sizes for the OS-independent 2546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2547debug version of the code includes the debug output trace mechanism and 2548has a 2549much larger code and data size. 2550 2551 Previous Release: 2552 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 2553 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 2554 Current Release: 2555 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2556 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 2557 25582) iASL Compiler/Disassembler and Tools: 2559 2560iASL: Added compiler support for the _WDG and_WED Microsoft predefined 2561methods. These objects are defined by "Windows Instrumentation", and are 2562not 2563part of the ACPI spec. ACPICA BZ 860. 2564 2565AcpiExec: added option to disable the memory tracking mechanism. The -dt 2566option will disable the tracking mechanism, which improves performance 2567considerably. 2568 2569AcpiExec: Restructured the command line options into -d (disable) and -e 2570(enable) options. 2571 2572---------------------------------------- 257328 April 2010. Summary of changes for version 20100428: 2574 25751) ACPI CA Core Subsystem: 2576 2577Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 2578including FADT-based and GPE Block Devices, execute any _PRW methods in 2579the 2580new table, and process any _Lxx/_Exx GPE methods in the new table. Any 2581runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 2582immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 2583Devices. Provides compatibility with other ACPI implementations. Two new 2584files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 2585Moore. 2586 2587Fixed a regression introduced in version 20100331 within the table manager 2588where initial table loading could fail. This was introduced in the fix for 2589AcpiReallocateRootTable. Also, renamed some of fields in the table manager 2590data structures to clarify their meaning and use. 2591 2592Fixed a possible allocation overrun during internal object copy in 2593AcpiUtCopySimpleObject. The original code did not correctly handle the 2594case 2595where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 2596847. 2597 2598Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 2599possible access beyond end-of-allocation. Also, now fully validate 2600descriptor 2601(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 2602 2603Example Code and Data Size: These are the sizes for the OS-independent 2604acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2605debug version of the code includes the debug output trace mechanism and 2606has a 2607much larger code and data size. 2608 2609 Previous Release: 2610 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 2611 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 2612 Current Release: 2613 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 2614 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 2615 26162) iASL Compiler/Disassembler and Tools: 2617 2618iASL: Implemented Min/Max/Len/Gran validation for address resource 2619descriptors. This change implements validation for the address fields that 2620are common to all address-type resource descriptors. These checks are 2621implemented: Checks for valid Min/Max, length within the Min/Max window, 2622valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per 2623table 6-40 in the ACPI 4.0a specification. Also split the large 2624aslrestype1.c 2625and aslrestype2.c files into five new files. ACPICA BZ 840. 2626 2627iASL: Added support for the _Wxx predefined names. This support was 2628missing 2629and these names were not recognized by the compiler as valid predefined 2630names. ACPICA BZ 851. 2631 2632iASL: Added an error for all predefined names that are defined to return 2633no 2634value and thus must be implemented as Control Methods. These include all 2635of 2636the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 2637names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 2638 2639iASL: Implemented the -ts option to emit hex AML data in ASL format, as an 2640ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 2641be 2642dynamically loaded via the Load() operator. Also cleaned up output for the 2643- 2644ta and -tc options. ACPICA BZ 853. 2645 2646Tests: Added a new file with examples of extended iASL error checking. 2647Demonstrates the advanced error checking ability of the iASL compiler. 2648Available at tests/misc/badcode.asl. 2649 2650---------------------------------------- 265131 March 2010. Summary of changes for version 20100331: 2652 26531) ACPI CA Core Subsystem: 2654 2655Completed a major update for the GPE support in order to improve support 2656for 2657shared GPEs and to simplify both host OS and ACPICA code. Added a 2658reference 2659count mechanism to support shared GPEs that require multiple device 2660drivers. 2661Several external interfaces have changed. One external interface has been 2662removed. One new external interface was added. Most of the GPE external 2663interfaces now use the GPE spinlock instead of the events mutex (and the 2664Flags parameter for many GPE interfaces has been removed.) See the updated 2665ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 2666Rafael 2667Wysocki. ACPICA BZ 831. 2668 2669Changed: 2670 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 2671Removed: 2672 AcpiSetGpeType 2673New: 2674 AcpiSetGpe 2675 2676Implemented write support for DataTable operation regions. These regions 2677are 2678defined via the DataTableRegion() operator. Previously, only read support 2679was 2680implemented. The ACPI specification allows DataTableRegions to be 2681read/write, 2682however. 2683 2684Implemented a new subsystem option to force a copy of the DSDT to local 2685memory. Optionally copy the entire DSDT to local memory (instead of simply 2686mapping it.) There are some (albeit very rare) BIOSs that corrupt or 2687replace 2688the original DSDT, creating the need for this option. Default is FALSE, do 2689not copy the DSDT. 2690 2691Implemented detection of a corrupted or replaced DSDT. This change adds 2692support to detect a DSDT that has been corrupted and/or replaced from 2693outside 2694the OS (by firmware). This is typically catastrophic for the system, but 2695has 2696been seen on some machines. Once this problem has been detected, the DSDT 2697copy option can be enabled via system configuration. Lin Ming, Bob Moore. 2698 2699Fixed two problems with AcpiReallocateRootTable during the root table 2700copy. 2701When copying the root table to the new allocation, the length used was 2702incorrect. The new size was used instead of the current table size, 2703meaning 2704too much data was copied. Also, the count of available slots for ACPI 2705tables 2706was not set correctly. Alexey Starikovskiy, Bob Moore. 2707 2708Example Code and Data Size: These are the sizes for the OS-independent 2709acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2710debug version of the code includes the debug output trace mechanism and 2711has a 2712much larger code and data size. 2713 2714 Previous Release: 2715 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 2716 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 2717 Current Release: 2718 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 2719 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 2720 27212) iASL Compiler/Disassembler and Tools: 2722 2723iASL: Implement limited typechecking for values returned from predefined 2724control methods. The type of any returned static (unnamed) object is now 2725validated. For example, Return(1). ACPICA BZ 786. 2726 2727iASL: Fixed a predefined name object verification regression. Fixes a 2728problem 2729introduced in version 20100304. An error is incorrectly generated if a 2730predefined name is declared as a static named object with a value defined 2731using the keywords "Zero", "One", or "Ones". Lin Ming. 2732 2733iASL: Added Windows 7 support for the -g option (get local ACPI tables) by 2734reducing the requested registry access rights. ACPICA BZ 842. 2735 2736Disassembler: fixed a possible fault when generating External() 2737statements. 2738Introduced in commit ae7d6fd: Properly handle externals with parent-prefix 2739(carat). Fixes a string length allocation calculation. Lin Ming. 2740 2741---------------------------------------- 274204 March 2010. Summary of changes for version 20100304: 2743 27441) ACPI CA Core Subsystem: 2745 2746Fixed a possible problem with the AML Mutex handling function 2747AcpiExReleaseMutex where the function could fault under the very rare 2748condition when the interpreter has blocked, the interpreter lock is 2749released, 2750the interpreter is then reentered via the same thread, and attempts to 2751acquire an AML mutex that was previously acquired. FreeBSD report 140979. 2752Lin 2753Ming. 2754 2755Implemented additional configuration support for the AML "Debug Object". 2756Output from the debug object can now be enabled via a global variable, 2757AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 2758debugging. 2759This debug output is now available in the release version of ACPICA 2760instead 2761of just the debug version. Also, the entire debug output module can now be 2762configured out of the ACPICA build if desired. One new file added, 2763executer/exdebug.c. Lin Ming, Bob Moore. 2764 2765Added header support for the ACPI MCHI table (Management Controller Host 2766Interface Table). This table was added in ACPI 4.0, but the defining 2767document 2768has only recently become available. 2769 2770Standardized output of integer values for ACPICA warnings/errors. Always 2771use 27720x prefix for hex output, always use %u for unsigned integer decimal 2773output. 2774Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400 2775invocations.) These invocations were converted from the original 2776ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 2777 2778Example Code and Data Size: These are the sizes for the OS-independent 2779acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2780debug version of the code includes the debug output trace mechanism and 2781has a 2782much larger code and data size. 2783 2784 Previous Release: 2785 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 2786 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 2787 Current Release: 2788 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 2789 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 2790 27912) iASL Compiler/Disassembler and Tools: 2792 2793iASL: Implemented typechecking support for static (non-control method) 2794predefined named objects that are declared with the Name() operator. For 2795example, the type of this object is now validated to be of type Integer: 2796Name(_BBN, 1). This change migrates the compiler to using the core 2797predefined 2798name table instead of maintaining a local version. Added a new file, 2799aslpredef.c. ACPICA BZ 832. 2800 2801Disassembler: Added support for the ACPI 4.0 MCHI table. 2802 2803---------------------------------------- 280421 January 2010. Summary of changes for version 20100121: 2805 28061) ACPI CA Core Subsystem: 2807 2808Added the 2010 copyright to all module headers and signons. This affects 2809virtually every file in the ACPICA core subsystem, the iASL compiler, the 2810tools/utilities, and the test suites. 2811 2812Implemented a change to the AcpiGetDevices interface to eliminate 2813unnecessary 2814invocations of the _STA method. In the case where a specific _HID is 2815requested, do not run _STA until a _HID match is found. This eliminates 2816potentially dozens of _STA calls during a search for a particular 2817device/HID, 2818which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 2819 2820Implemented an additional repair for predefined method return values. 2821Attempt 2822to repair unexpected NULL elements within returned Package objects. Create 2823an 2824Integer of value zero, a NULL String, or a zero-length Buffer as 2825appropriate. 2826ACPICA BZ 818. Lin Ming, Bob Moore. 2827 2828Removed the obsolete ACPI_INTEGER data type. This type was introduced as 2829the 2830code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 2831(with 283264-bit AML integers). It is now obsolete and this change removes it from 2833the 2834ACPICA code base, replaced by UINT64. The original typedef has been 2835retained 2836for now for compatibility with existing device driver code. ACPICA BZ 824. 2837 2838Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in 2839the parse tree object. 2840 2841Added additional warning options for the gcc-4 generation. Updated the 2842source 2843accordingly. This includes some code restructuring to eliminate 2844unreachable 2845code, elimination of some gotos, elimination of unused return values, some 2846additional casting, and removal of redundant declarations. 2847 2848Example Code and Data Size: These are the sizes for the OS-independent 2849acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2850debug version of the code includes the debug output trace mechanism and 2851has a 2852much larger code and data size. 2853 2854 Previous Release: 2855 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 2856 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 2857 Current Release: 2858 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 2859 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 2860 28612) iASL Compiler/Disassembler and Tools: 2862 2863No functional changes for this release. 2864 2865---------------------------------------- 286614 December 2009. Summary of changes for version 20091214: 2867 28681) ACPI CA Core Subsystem: 2869 2870Enhanced automatic data type conversions for predefined name repairs. This 2871change expands the automatic repairs/conversions for predefined name 2872return 2873values to make Integers, Strings, and Buffers fully interchangeable. Also, 2874a 2875Buffer can be converted to a Package of Integers if necessary. The 2876nsrepair.c 2877module was completely restructured. Lin Ming, Bob Moore. 2878 2879Implemented automatic removal of null package elements during predefined 2880name 2881repairs. This change will automatically remove embedded and trailing NULL 2882package elements from returned package objects that are defined to contain 2883a 2884variable number of sub-packages. The driver is then presented with a 2885package 2886with no null elements to deal with. ACPICA BZ 819. 2887 2888Implemented a repair for the predefined _FDE and _GTM names. The expected 2889return value for both names is a Buffer of 5 DWORDs. This repair fixes two 2890possible problems (both seen in the field), where a package of integers is 2891returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 2892Kim. 2893 2894Implemented additional module-level code support. This change will 2895properly 2896execute module-level code that is not at the root of the namespace (under 2897a 2898Device object, etc.). Now executes the code within the current scope 2899instead 2900of the root. ACPICA BZ 762. Lin Ming. 2901 2902Fixed possible mutex acquisition errors when running _REG methods. Fixes a 2903problem where mutex errors can occur when running a _REG method that is in 2904the same scope as a method-defined operation region or an operation region 2905under a module-level IF block. This type of code is rare, so the problem 2906has 2907not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 2908 2909Fixed a possible memory leak during module-level code execution. An object 2910could be leaked for each block of executed module-level code if the 2911interpreter slack mode is enabled This change deletes any implicitly 2912returned 2913object from the module-level code block. Lin Ming. 2914 2915Removed messages for successful predefined repair(s). The repair mechanism 2916was considered too wordy. Now, messages are only unconditionally emitted 2917if 2918the return object cannot be repaired. Existing messages for successful 2919repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 2920827. 2921 2922Example Code and Data Size: These are the sizes for the OS-independent 2923acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2924debug version of the code includes the debug output trace mechanism and 2925has a 2926much larger code and data size. 2927 2928 Previous Release: 2929 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 2930 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 2931 Current Release: 2932 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 2933 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 2934 29352) iASL Compiler/Disassembler and Tools: 2936 2937iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 2938files 2939were no longer automatically removed at the termination of the compile. 2940 2941acpiexec: Implemented the -f option to specify default region fill value. 2942This option specifies the value used to initialize buffers that simulate 2943operation regions. Default value is zero. Useful for debugging problems 2944that 2945depend on a specific initial value for a region or field. 2946 2947---------------------------------------- 294812 November 2009. Summary of changes for version 20091112: 2949 29501) ACPI CA Core Subsystem: 2951 2952Implemented a post-order callback to AcpiWalkNamespace. The existing 2953interface only has a pre-order callback. This change adds an additional 2954parameter for a post-order callback which will be more useful for bus 2955scans. 2956ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 2957 2958Modified the behavior of the operation region memory mapping cache for 2959SystemMemory. Ensure that the memory mappings created for operation 2960regions 2961do not cross 4K page boundaries. Crossing a page boundary while mapping 2962regions can cause kernel warnings on some hosts if the pages have 2963different 2964attributes. Such regions are probably BIOS bugs, and this is the 2965workaround. 2966Linux BZ 14445. Lin Ming. 2967 2968Implemented an automatic repair for predefined methods that must return 2969sorted lists. This change will repair (by sorting) packages returned by 2970_ALR, 2971_PSS, and _TSS. Drivers can now assume that the packages are correctly 2972sorted 2973and do not contain NULL package elements. Adds one new file, 2974namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 2975 2976Fixed a possible fault during predefined name validation if a return 2977Package 2978object contains NULL elements. Also adds a warning if a NULL element is 2979followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 2980may 2981include repair or removal of all such NULL elements where possible. 2982 2983Implemented additional module-level executable AML code support. This 2984change 2985will execute module-level code that is not at the root of the namespace 2986(under a Device object, etc.) at table load time. Module-level executable 2987AML 2988code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 2989 2990Implemented a new internal function to create Integer objects. This 2991function 2992simplifies miscellaneous object creation code. ACPICA BZ 823. 2993 2994Reduced the severity of predefined repair messages, Warning to Info. Since 2995the object was successfully repaired, a warning is too severe. Reduced to 2996an 2997info message for now. These messages may eventually be changed to debug- 2998only. 2999ACPICA BZ 812. 3000 3001Example Code and Data Size: These are the sizes for the OS-independent 3002acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3003debug version of the code includes the debug output trace mechanism and 3004has a 3005much larger code and data size. 3006 3007 Previous Release: 3008 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 3009 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 3010 Current Release: 3011 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 3012 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 3013 30142) iASL Compiler/Disassembler and Tools: 3015 3016iASL: Implemented Switch() with While(1) so that Break works correctly. 3017This 3018change correctly implements the Switch operator with a surrounding 3019While(1) 3020so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 3021 3022iASL: Added a message if a package initializer list is shorter than 3023package 3024length. Adds a new remark for a Package() declaration if an initializer 3025list 3026exists, but is shorter than the declared length of the package. Although 3027technically legal, this is probably a coding error and it is seen in the 3028field. ACPICA BZ 815. Lin Ming, Bob Moore. 3029 3030iASL: Fixed a problem where the compiler could fault after the maximum 3031number 3032of errors was reached (200). 3033 3034acpixtract: Fixed a possible warning for pointer cast if the compiler 3035warning 3036level set very high. 3037 3038---------------------------------------- 303913 October 2009. Summary of changes for version 20091013: 3040 30411) ACPI CA Core Subsystem: 3042 3043Fixed a problem where an Operation Region _REG method could be executed 3044more 3045than once. If a custom address space handler is installed by the host 3046before 3047the "initialize operation regions" phase of the ACPICA initialization, any 3048_REG methods for that address space could be executed twice. This change 3049fixes the problem. ACPICA BZ 427. Lin Ming. 3050 3051Fixed a possible memory leak for the Scope() ASL operator. When the exact 3052invocation of "Scope(\)" is executed (change scope to root), one internal 3053operand object was leaked. Lin Ming. 3054 3055Implemented a run-time repair for the _MAT predefined method. If the _MAT 3056return value is defined as a Field object in the AML, and the field 3057size is less than or equal to the default width of an integer (32 or 305864),_MAT 3059can incorrectly return an Integer instead of a Buffer. ACPICA now 3060automatically repairs this problem. ACPICA BZ 810. 3061 3062Implemented a run-time repair for the _BIF and _BIX predefined methods. 3063The 3064"OEM Information" field is often incorrectly returned as an Integer with 3065value zero if the field is not supported by the platform. This is due to 3066an 3067ambiguity in the ACPI specification. The field should always be a string. 3068ACPICA now automatically repairs this problem by returning a NULL string 3069within the returned Package. ACPICA BZ 807. 3070 3071Example Code and Data Size: These are the sizes for the OS-independent 3072acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3073debug version of the code includes the debug output trace mechanism and 3074has a 3075much larger code and data size. 3076 3077 Previous Release: 3078 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 3079 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 3080 Current Release: 3081 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 3082 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 3083 30842) iASL Compiler/Disassembler and Tools: 3085 3086Disassembler: Fixed a problem where references to external symbols that 3087contained one or more parent-prefixes (carats) were not handled correctly, 3088possibly causing a fault. ACPICA BZ 806. Lin Ming. 3089 3090Disassembler: Restructured the code so that all functions that handle 3091external symbols are in a single module. One new file is added, 3092common/dmextern.c. 3093 3094AML Debugger: Added a max count argument for the Batch command (which 3095executes multiple predefined methods within the namespace.) 3096 3097iASL: Updated the compiler documentation (User Reference.) Available at 3098http://www.acpica.org/documentation/. ACPICA BZ 750. 3099 3100AcpiXtract: Updated for Lint and other formatting changes. Close all open 3101files. 3102 3103---------------------------------------- 310403 September 2009. Summary of changes for version 20090903: 3105 31061) ACPI CA Core Subsystem: 3107 3108For Windows Vista compatibility, added the automatic execution of an _INI 3109method located at the namespace root (\_INI). This method is executed at 3110table load time. This support is in addition to the automatic execution of 3111\_SB._INI. Lin Ming. 3112 3113Fixed a possible memory leak in the interpreter for AML package objects if 3114the package initializer list is longer than the defined size of the 3115package. 3116This apparently can only happen if the BIOS changes the package size on 3117the 3118fly (seen in a _PSS object), as ASL compilers do not allow this. The 3119interpreter will truncate the package to the defined size (and issue an 3120error 3121message), but previously could leave the extra objects undeleted if they 3122were 3123pre-created during the argument processing (such is the case if the 3124package 3125consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 3126 3127Fixed a problem seen when a Buffer or String is stored to itself via ASL. 3128This has been reported in the field. Previously, ACPICA would zero out the 3129buffer/string. Now, the operation is treated as a noop. Provides Windows 3130compatibility. ACPICA BZ 803. Lin Ming. 3131 3132Removed an extraneous error message for ASL constructs of the form 3133Store(LocalX,LocalX) when LocalX is uninitialized. These curious 3134statements 3135are seen in many BIOSs and are once again treated as NOOPs and no error is 3136emitted when they are encountered. ACPICA BZ 785. 3137 3138Fixed an extraneous warning message if a _DSM reserved method returns a 3139Package object. _DSM can return any type of object, so validation on the 3140return type cannot be performed. ACPICA BZ 802. 3141 3142Example Code and Data Size: These are the sizes for the OS-independent 3143acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3144debug version of the code includes the debug output trace mechanism and 3145has a 3146much larger code and data size. 3147 3148 Previous Release: 3149 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 3150 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 3151 Current Release: 3152 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 3153 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 3154 31552) iASL Compiler/Disassembler and Tools: 3156 3157iASL: Fixed a problem with the use of the Alias operator and Resource 3158Templates. The correct alias is now constructed and no error is emitted. 3159ACPICA BZ 738. 3160 3161iASL: Implemented the -I option to specify additional search directories 3162for 3163include files. Allows multiple additional search paths for include files. 3164Directories are searched in the order specified on the command line (after 3165the local directory is searched.) ACPICA BZ 800. 3166 3167iASL: Fixed a problem where the full pathname for include files was not 3168emitted for warnings/errors. This caused the IDE support to not work 3169properly. ACPICA BZ 765. 3170 3171iASL: Implemented the -@ option to specify a Windows-style response file 3172containing additional command line options. ACPICA BZ 801. 3173 3174AcpiExec: Added support to load multiple AML files simultaneously (such as 3175a 3176DSDT and multiple SSDTs). Also added support for wildcards within the AML 3177pathname. These features allow all machine tables to be easily loaded and 3178debugged together. ACPICA BZ 804. 3179 3180Disassembler: Added missing support for disassembly of HEST table Error 3181Bank 3182subtables. 3183 3184---------------------------------------- 318530 July 2009. Summary of changes for version 20090730: 3186 3187The ACPI 4.0 implementation for ACPICA is complete with this release. 3188 31891) ACPI CA Core Subsystem: 3190 3191ACPI 4.0: Added header file support for all new and changed ACPI tables. 3192Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new 3193for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 3194BERT, 3195EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 3196There 3197have been some ACPI 4.0 changes to other existing tables. Split the large 3198actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 3199 3200ACPI 4.0: Implemented predefined name validation for all new names. There 3201are 320231 new names in ACPI 4.0. The predefined validation module was split into 3203two 3204files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 3205 3206Implemented support for so-called "module-level executable code". This is 3207executable AML code that exists outside of any control method and is 3208intended 3209to be executed at table load time. Although illegal since ACPI 2.0, this 3210type 3211of code still exists and is apparently still being created. Blocks of this 3212code are now detected and executed as intended. Currently, the code blocks 3213must exist under either an If, Else, or While construct; these are the 3214typical cases seen in the field. ACPICA BZ 762. Lin Ming. 3215 3216Implemented an automatic dynamic repair for predefined names that return 3217nested Package objects. This applies to predefined names that are defined 3218to 3219return a variable-length Package of sub-packages. If the number of sub- 3220packages is one, BIOS code is occasionally seen that creates a simple 3221single 3222package with no sub-packages. This code attempts to fix the problem by 3223wrapping a new package object around the existing package. These methods 3224can 3225be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ 3226790. 3227 3228Fixed a regression introduced in 20090625 for the AcpiGetDevices 3229interface. 3230The _HID/_CID matching was broken and no longer matched IDs correctly. 3231ACPICA 3232BZ 793. 3233 3234Fixed a problem with AcpiReset where the reset would silently fail if the 3235register was one of the protected I/O ports. AcpiReset now bypasses the 3236port 3237validation mechanism. This may eventually be driven into the 3238AcpiRead/Write 3239interfaces. 3240 3241Fixed a regression related to the recent update of the AcpiRead/Write 3242interfaces. A sleep/suspend could fail if the optional PM2 Control 3243register 3244does not exist during an attempt to write the Bus Master Arbitration bit. 3245(However, some hosts already delete the code that writes this bit, and the 3246code may in fact be obsolete at this date.) ACPICA BZ 799. 3247 3248Fixed a problem where AcpiTerminate could fault if inadvertently called 3249twice 3250in succession. ACPICA BZ 795. 3251 3252Example Code and Data Size: These are the sizes for the OS-independent 3253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3254debug version of the code includes the debug output trace mechanism and 3255has a 3256much larger code and data size. 3257 3258 Previous Release: 3259 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 3260 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 3261 Current Release: 3262 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 3263 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 3264 32652) iASL Compiler/Disassembler and Tools: 3266 3267ACPI 4.0: Implemented disassembler support for all new ACPI tables and 3268changes to existing tables. ACPICA BZ 775. 3269 3270---------------------------------------- 327125 June 2009. Summary of changes for version 20090625: 3272 3273The ACPI 4.0 Specification was released on June 16 and is available at 3274www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 3275continue for the next few releases. 3276 32771) ACPI CA Core Subsystem: 3278 3279ACPI 4.0: Implemented interpreter support for the IPMI operation region 3280address space. Includes support for bi-directional data buffers and an 3281IPMI 3282address space handler (to be installed by an IPMI device driver.) ACPICA 3283BZ 3284773. Lin Ming. 3285 3286ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes 3287support in both the header files and the disassembler. 3288 3289Completed a major update for the AcpiGetObjectInfo external interface. 3290Changes include: 3291 - Support for variable, unlimited length HID, UID, and CID strings. 3292 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 3293etc.) 3294 - Call the _SxW power methods on behalf of a device object. 3295 - Determine if a device is a PCI root bridge. 3296 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 3297These changes will require an update to all callers of this interface. See 3298the updated ACPICA Programmer Reference for details. One new source file 3299has 3300been added - utilities/utids.c. ACPICA BZ 368, 780. 3301 3302Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 3303transfers. The Value parameter has been extended from 32 bits to 64 bits 3304in 3305order to support new ACPI 4.0 tables. These changes will require an update 3306to 3307all callers of these interfaces. See the ACPICA Programmer Reference for 3308details. ACPICA BZ 768. 3309 3310Fixed several problems with AcpiAttachData. The handler was not invoked 3311when 3312the host node was deleted. The data sub-object was not automatically 3313deleted 3314when the host node was deleted. The interface to the handler had an unused 3315parameter, this was removed. ACPICA BZ 778. 3316 3317Enhanced the function that dumps ACPI table headers. All non-printable 3318characters in the string fields are now replaced with '?' (Signature, 3319OemId, 3320OemTableId, and CompilerId.) ACPI tables with non-printable characters in 3321these fields are occasionally seen in the field. ACPICA BZ 788. 3322 3323Fixed a problem with predefined method repair code where the code that 3324attempts to repair/convert an object of incorrect type is only executed on 3325the first time the predefined method is called. The mechanism that 3326disables 3327warnings on subsequent calls was interfering with the repair mechanism. 3328ACPICA BZ 781. 3329 3330Fixed a possible memory leak in the predefined validation/repair code when 3331a 3332buffer is automatically converted to an expected string object. 3333 3334Removed obsolete 16-bit files from the distribution and from the current 3335git 3336tree head. ACPICA BZ 776. 3337 3338Example Code and Data Size: These are the sizes for the OS-independent 3339acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3340debug version of the code includes the debug output trace mechanism and 3341has a 3342much larger code and data size. 3343 3344 Previous Release: 3345 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 3346 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 3347 Current Release: 3348 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 3349 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 3350 33512) iASL Compiler/Disassembler and Tools: 3352 3353ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 3354operation region keyword. ACPICA BZ 771, 772. Lin Ming. 3355 3356ACPI 4.0: iASL - implemented compile-time validation support for all new 3357predefined names and control methods (31 total). ACPICA BZ 769. 3358 3359---------------------------------------- 336021 May 2009. Summary of changes for version 20090521: 3361 33621) ACPI CA Core Subsystem: 3363 3364Disabled the preservation of the SCI enable bit in the PM1 control 3365register. 3366The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to 3367be 3368a "preserved" bit - "OSPM always preserves this bit position", section 33694.7.3.2.1. However, some machines fail if this bit is in fact preserved 3370because the bit needs to be explicitly set by the OS as a workaround. No 3371machines fail if the bit is not preserved. Therefore, ACPICA no longer 3372attempts to preserve this bit. 3373 3374Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 3375incorrectly formed _PRT package could cause a fault. Added validation to 3376ensure that each package element is actually a sub-package. 3377 3378Implemented a new interface to install or override a single control 3379method, 3380AcpiInstallMethod. This interface is useful when debugging in order to 3381repair 3382an existing method or to install a missing method without having to 3383override 3384the entire ACPI table. See the ACPICA Programmer Reference for use and 3385examples. Lin Ming, Bob Moore. 3386 3387Fixed several reference count issues with the DdbHandle object that is 3388created from a Load or LoadTable operator. Prevent premature deletion of 3389the 3390object. Also, mark the object as invalid once the table has been unloaded. 3391This is needed because the handle itself may not be deleted after the 3392table 3393unload, depending on whether it has been stored in a named object by the 3394caller. Lin Ming. 3395 3396Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 3397mutexes of the same sync level are acquired but then not released in 3398strict 3399opposite order, the internally maintained Current Sync Level becomes 3400confused 3401and can cause subsequent execution errors. ACPICA BZ 471. 3402 3403Changed the allowable release order for ASL mutex objects. The ACPI 4.0 3404specification has been changed to make the SyncLevel for mutex objects 3405more 3406useful. When releasing a mutex, the SyncLevel of the mutex must now be the 3407same as the current sync level. This makes more sense than the previous 3408rule 3409(SyncLevel less than or equal). This change updates the code to match the 3410specification. 3411 3412Fixed a problem with the local version of the AcpiOsPurgeCache function. 3413The 3414(local) cache must be locked during all cache object deletions. Andrew 3415Baumann. 3416 3417Updated the Load operator to use operation region interfaces. This 3418replaces 3419direct memory mapping with region access calls. Now, all region accesses 3420go 3421through the installed region handler as they should. 3422 3423Simplified and optimized the NsGetNextNode function. Reduced parameter 3424count 3425and reduced code for this frequently used function. 3426 3427Example Code and Data Size: These are the sizes for the OS-independent 3428acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3429debug version of the code includes the debug output trace mechanism and 3430has a 3431much larger code and data size. 3432 3433 Previous Release: 3434 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 3435 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 3436 Current Release: 3437 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 3438 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 3439 34402) iASL Compiler/Disassembler and Tools: 3441 3442Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 3443problems 3444with sub-table disassembly and handling invalid sub-tables. Attempt 3445recovery 3446after an invalid sub-table ID. 3447 3448---------------------------------------- 344922 April 2009. Summary of changes for version 20090422: 3450 34511) ACPI CA Core Subsystem: 3452 3453Fixed a compatibility issue with the recently released I/O port protection 3454mechanism. For windows compatibility, 1) On a port protection violation, 3455simply ignore the request and do not return an exception (allow the 3456control 3457method to continue execution.) 2) If only part of the request overlaps a 3458protected port, read/write the individual ports that are not protected. 3459Linux 3460BZ 13036. Lin Ming 3461 3462Enhanced the execution of the ASL/AML BreakPoint operator so that it 3463actually 3464breaks into the AML debugger if the debugger is present. This matches the 3465ACPI-defined behavior. 3466 3467Fixed several possible warnings related to the use of the configurable 3468ACPI_THREAD_ID. This type can now be configured as either an integer or a 3469pointer with no warnings. Also fixes several warnings in printf-like 3470statements for the 64-bit build when the type is configured as a pointer. 3471ACPICA BZ 766, 767. 3472 3473Fixed a number of possible warnings when compiling with gcc 4+ (depending 3474on 3475warning options.) Examples include printf formats, aliasing, unused 3476globals, 3477missing prototypes, missing switch default statements, use of non-ANSI 3478library functions, use of non-ANSI constructs. See generate/unix/Makefile 3479for 3480a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 3481 3482Example Code and Data Size: These are the sizes for the OS-independent 3483acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3484debug version of the code includes the debug output trace mechanism and 3485has a 3486much larger code and data size. 3487 3488 Previous Release: 3489 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 3490 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 3491 Current Release: 3492 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 3493 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 3494 34952) iASL Compiler/Disassembler and Tools: 3496 3497iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings 3498on 3499the 64-bit build. 3500 3501iASL: Fixed a problem where the Unix/Linux versions of the compiler could 3502not 3503correctly digest Windows/DOS formatted files (with CR/LF). 3504 3505iASL: Added a new option for "quiet mode" (-va) that produces only the 3506compilation summary, not individual errors and warnings. Useful for large 3507batch compilations. 3508 3509AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex 3510timeout that can be used to detect hang conditions during execution of AML 3511code (includes both internal semaphores and AML-defined mutexes and 3512events.) 3513 3514Added new makefiles for the generation of acpica in a generic unix-like 3515environment. These makefiles are intended to generate the acpica tools and 3516utilities from the original acpica git source tree structure. 3517 3518Test Suites: Updated and cleaned up the documentation files. Updated the 3519copyrights to 2009, affecting all source files. Use the new version of 3520iASL 3521with quiet mode. Increased the number of available semaphores in the 3522Windows 3523OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 3524added 3525an alternate implementation of the semaphore timeout to allow aslts to 3526execute fully on Cygwin. 3527 3528---------------------------------------- 352920 March 2009. Summary of changes for version 20090320: 3530 35311) ACPI CA Core Subsystem: 3532 3533Fixed a possible race condition between AcpiWalkNamespace and dynamic 3534table 3535unloads. Added a reader/writer locking mechanism to allow multiple 3536concurrent 3537namespace walks (readers), but block a dynamic table unload until it can 3538gain 3539exclusive write access to the namespace. This fixes a problem where a 3540table 3541unload could (possibly catastrophically) delete the portion of the 3542namespace 3543that is currently being examined by a walk. Adds a new file, utlock.c, 3544that 3545implements the reader/writer lock mechanism. ACPICA BZ 749. 3546 3547Fixed a regression introduced in version 20090220 where a change to the 3548FADT 3549handling could cause the ACPICA subsystem to access non-existent I/O 3550ports. 3551 3552Modified the handling of FADT register and table (FACS/DSDT) addresses. 3553The 3554FADT can contain both 32-bit and 64-bit versions of these addresses. 3555Previously, the 64-bit versions were favored, meaning that if both 32 and 355664 3557versions were valid, but not equal, the 64-bit version was used. This was 3558found to cause some machines to fail. Now, in this case, the 32-bit 3559version 3560is used instead. This now matches the Windows behavior. 3561 3562Implemented a new mechanism to protect certain I/O ports. Provides 3563Microsoft 3564compatibility and protects the standard PC I/O ports from access via AML 3565code. Adds a new file, hwvalid.c 3566 3567Fixed a possible extraneous warning message from the FADT support. The 3568message warns of a 32/64 length mismatch between the legacy and GAS 3569definitions for a register. 3570 3571Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 3572is 3573made obsolete by the port protection mechanism above. It was previously 3574used 3575to validate the entire address range of an operation region, which could 3576be 3577incorrect if the range included illegal ports, but fields within the 3578operation region did not actually access those ports. Validation is now 3579performed on a per-field basis instead of the entire region. 3580 3581Modified the handling of the PM1 Status Register ignored bit (bit 11.) 3582Ignored bits must be "preserved" according to the ACPI spec. Usually, this 3583means a read/modify/write when writing to the register. However, for 3584status 3585registers, writing a one means clear the event. Writing a zero means 3586preserve 3587the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, 3588and the ACPICA code now simply always writes a zero to the ignored bit. 3589 3590Modified the handling of ignored bits for the PM1 A/B Control Registers. 3591As 3592per the ACPI specification, for the control registers, preserve 3593(read/modify/write) all bits that are defined as either reserved or 3594ignored. 3595 3596Updated the handling of write-only bits in the PM1 A/B Control Registers. 3597When reading the register, zero the write-only bits as per the ACPI spec. 3598ACPICA BZ 443. Lin Ming. 3599 3600Removed "Linux" from the list of supported _OSI strings. Linux no longer 3601wants to reply true to this request. The Windows strings are the only 3602paths 3603through the AML that are tested and known to work properly. 3604 3605 Previous Release: 3606 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 3607 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 3608 Current Release: 3609 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 3610 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 3611 36122) iASL Compiler/Disassembler and Tools: 3613 3614Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 3615and 3616aetables.c 3617 3618---------------------------------------- 361920 February 2009. Summary of changes for version 20090220: 3620 36211) ACPI CA Core Subsystem: 3622 3623Optimized the ACPI register locking. Removed locking for reads from the 3624ACPI 3625bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is 3626not required when reading the single-bit registers. The 3627AcpiGetRegisterUnlocked function is no longer needed and has been removed. 3628This will improve performance for reads on these registers. ACPICA BZ 760. 3629 3630Fixed the parameter validation for AcpiRead/Write. Now return 3631AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS 3632if 3633the register has an address of zero. Previously, these cases simply 3634returned 3635AE_OK. For optional registers such as PM1B status/enable/control, the 3636caller 3637should check for a valid register address before calling. ACPICA BZ 748. 3638 3639Renamed the external ACPI bit register access functions. Renamed 3640AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 3641functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. 3642Also, restructured the code for these functions by simplifying the code 3643path 3644and condensing duplicate code to reduce code size. 3645 3646Added new functions to transparently handle the possibly split PM1 A/B 3647registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions 3648now handle the split registers for PM1 Status, Enable, and Control. ACPICA 3649BZ 3650746. 3651 3652Added a function to handle the PM1 control registers, 3653AcpiHwWritePm1Control. 3654This function writes both of the PM1 control registers (A/B). These 3655registers 3656are different than the PM1 A/B status and enable registers in that 3657different 3658values can be written to the A/B registers. Most notably, the SLP_TYP bits 3659can be different, as per the values returned from the _Sx predefined 3660methods. 3661 3662Removed an extra register write within AcpiHwClearAcpiStatus. This 3663function 3664was writing an optional PM1B status register twice. The existing call to 3665the 3666low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 3667A/B 3668register. ACPICA BZ 751. 3669 3670Split out the PM1 Status registers from the FADT. Added new globals for 3671these 3672registers (A/B), similar to the way the PM1 Enable registers are handled. 3673Instead of overloading the FADT Event Register blocks. This makes the code 3674clearer and less prone to error. 3675 3676Fixed the warning message for when the platform contains too many ACPI 3677tables 3678for the default size of the global root table data structure. The 3679calculation 3680for the truncation value was incorrect. 3681 3682Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 3683obsolete macro, since it is now a simple reference to ->common.type. There 3684were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 3685 3686Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 3687TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 3688simply SLEEP_TYPE. ACPICA BZ 754. 3689 3690Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 3691function is only needed on 64-bit host operating systems and is thus not 3692included for 32-bit hosts. 3693 3694Debug output: print the input and result for invocations of the _OSI 3695reserved 3696control method via the ACPI_LV_INFO debug level. Also, reduced some of the 3697verbosity of this debug level. Len Brown. 3698 3699Example Code and Data Size: These are the sizes for the OS-independent 3700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3701debug version of the code includes the debug output trace mechanism and 3702has a 3703much larger code and data size. 3704 3705 Previous Release: 3706 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 3707 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 3708 Current Release: 3709 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 3710 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 3711 37122) iASL Compiler/Disassembler and Tools: 3713 3714Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 3715various legal performance profiles. 3716 3717---------------------------------------- 371823 January 2009. Summary of changes for version 20090123: 3719 37201) ACPI CA Core Subsystem: 3721 3722Added the 2009 copyright to all module headers and signons. This affects 3723virtually every file in the ACPICA core subsystem, the iASL compiler, and 3724the tools/utilities. 3725 3726Implemented a change to allow the host to override any ACPI table, 3727including 3728dynamically loaded tables. Previously, only the DSDT could be replaced by 3729the 3730host. With this change, the AcpiOsTableOverride interface is called for 3731each 3732table found in the RSDT/XSDT during ACPICA initialization, and also 3733whenever 3734a table is dynamically loaded via the AML Load operator. 3735 3736Updated FADT flag definitions, especially the Boot Architecture flags. 3737 3738Debugger: For the Find command, automatically pad the input ACPI name with 3739underscores if the name is shorter than 4 characters. This enables a match 3740with the actual namespace entry which is itself padded with underscores. 3741 3742Example Code and Data Size: These are the sizes for the OS-independent 3743acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3744debug version of the code includes the debug output trace mechanism and 3745has a 3746much larger code and data size. 3747 3748 Previous Release: 3749 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 3750 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 3751 Current Release: 3752 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 3753 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 3754 37552) iASL Compiler/Disassembler and Tools: 3756 3757Fix build error under Bison-2.4. 3758 3759Dissasembler: Enhanced FADT support. Added decoding of the Boot 3760Architecture 3761flags. Now decode all flags, regardless of the FADT version. Flag output 3762includes the FADT version which first defined each flag. 3763 3764The iASL -g option now dumps the RSDT to a file (in addition to the FADT 3765and 3766DSDT). Windows only. 3767 3768---------------------------------------- 376904 December 2008. Summary of changes for version 20081204: 3770 37711) ACPI CA Core Subsystem: 3772 3773The ACPICA Programmer Reference has been completely updated and revamped 3774for 3775this release. This includes updates to the external interfaces, OSL 3776interfaces, the overview sections, and the debugger reference. 3777 3778Several new ACPICA interfaces have been implemented and documented in the 3779programmer reference: 3780AcpiReset - Writes the reset value to the FADT-defined reset register. 3781AcpiDisableAllGpes - Disable all available GPEs. 3782AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 3783AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 3784AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 3785AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 3786AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 3787 3788Most of the public ACPI hardware-related interfaces have been moved to a 3789new 3790file, components/hardware/hwxface.c 3791 3792Enhanced the FADT parsing and low-level ACPI register access: The ACPI 3793register lengths within the FADT are now used, and the low level ACPI 3794register access no longer hardcodes the ACPI register lengths. Given that 3795there may be some risk in actually trusting the FADT register lengths, a 3796run- 3797time option was added to fall back to the default hardcoded lengths if the 3798FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 3799option is set to true for now, and a warning is issued if a suspicious 3800FADT 3801register length is overridden with the default value. 3802 3803Fixed a reference count issue in NsRepairObject. This problem was 3804introduced 3805in version 20081031 as part of a fix to repair Buffer objects within 3806Packages. Lin Ming. 3807 3808Added semaphore support to the Linux/Unix application OS-services layer 3809(OSL). ACPICA BZ 448. Lin Ming. 3810 3811Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 3812will 3813be implemented in the OSL, or will binary semaphores be used instead. 3814 3815Example Code and Data Size: These are the sizes for the OS-independent 3816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3817debug version of the code includes the debug output trace mechanism and 3818has a 3819much larger code and data size. 3820 3821 Previous Release: 3822 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 3823 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 3824 Current Release: 3825 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 3826 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 3827 38282) iASL Compiler/Disassembler and Tools: 3829 3830iASL: Completed the '-e' option to include additional ACPI tables in order 3831to 3832aid with disassembly and External statement generation. ACPICA BZ 742. Lin 3833Ming. 3834 3835iASL: Removed the "named object in while loop" error. The compiler cannot 3836determine how many times a loop will execute. ACPICA BZ 730. 3837 3838Disassembler: Implemented support for FADT revision 2 (MS extension). 3839ACPICA 3840BZ 743. 3841 3842Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). 3843 3844---------------------------------------- 384531 October 2008. Summary of changes for version 20081031: 3846 38471) ACPI CA Core Subsystem: 3848 3849Restructured the ACPICA header files into public/private. acpi.h now 3850includes 3851only the "public" acpica headers. All other acpica headers are "private" 3852and 3853should not be included by acpica users. One new file, accommon.h is used 3854to 3855include the commonly used private headers for acpica code generation. 3856Future 3857plans include moving all private headers to a new subdirectory. 3858 3859Implemented an automatic Buffer->String return value conversion for 3860predefined ACPI methods. For these methods (such as _BIF), added automatic 3861conversion for return objects that are required to be a String, but a 3862Buffer 3863was found instead. This can happen when reading string battery data from 3864an 3865operation region, because it used to be difficult to convert the data from 3866buffer to string from within the ASL. Ensures that the host OS is provided 3867with a valid null-terminated string. Linux BZ 11822. 3868 3869Updated the FACS waking vector interfaces. Split 3870AcpiSetFirmwareWakingVector 3871into two: one for the 32-bit vector, another for the 64-bit vector. This 3872is 3873required because the host OS must setup the wake much differently for each 3874vector (real vs. protected mode, etc.) and the interface itself should not 3875be 3876deciding which vector to use. Also, eliminated the GetFirmwareWakingVector 3877interface, as it served no purpose (only the firmware reads the vector, OS 3878only writes the vector.) ACPICA BZ 731. 3879 3880Implemented a mechanism to escape infinite AML While() loops. Added a loop 3881counter to force exit from AML While loops if the count becomes too large. 3882This can occur in poorly written AML when the hardware does not respond 3883within a while loop and the loop does not implement a timeout. The maximum 3884loop count is configurable. A new exception code is returned when a loop 3885is 3886broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 3887 3888Optimized the execution of AML While loops. Previously, a control state 3889object was allocated and freed for each execution of the loop. The 3890optimization is to simply reuse the control state for each iteration. This 3891speeds up the raw loop execution time by about 5%. 3892 3893Enhanced the implicit return mechanism. For Windows compatibility, return 3894an 3895implicit integer of value zero for methods that contain no executable 3896code. 3897Such methods are seen in the field as stubs (presumably), and can cause 3898drivers to fail if they expect a return value. Lin Ming. 3899 3900Allow multiple backslashes as root prefixes in namepaths. In a fully 3901qualified namepath, allow multiple backslash prefixes. This can happen 3902(and 3903is seen in the field) because of the use of a double-backslash in strings 3904(since backslash is the escape character) causing confusion. ACPICA BZ 739 3905Lin Ming. 3906 3907Emit a warning if two different FACS or DSDT tables are discovered in the 3908FADT. Checks if there are two valid but different addresses for the FACS 3909and 3910DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 3911 3912Consolidated the method argument count validation code. Merged the code 3913that 3914validates control method argument counts into the predefined validation 3915module. Eliminates possible multiple warnings for incorrect argument 3916counts. 3917 3918Implemented ACPICA example code. Includes code for ACPICA initialization, 3919handler installation, and calling a control method. Available at 3920source/tools/examples. 3921 3922Added a global pointer for FACS table to simplify internal FACS access. 3923Use 3924the global pointer instead of using AcpiGetTableByIndex for each FACS 3925access. 3926This simplifies the code for the Global Lock and the Firmware Waking 3927Vector(s). 3928 3929Example Code and Data Size: These are the sizes for the OS-independent 3930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3931debug version of the code includes the debug output trace mechanism and 3932has a 3933much larger code and data size. 3934 3935 Previous Release: 3936 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 3937 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 3938 Current Release: 3939 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 3940 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 3941 39422) iASL Compiler/Disassembler and Tools: 3943 3944iASL: Improved disassembly of external method calls. Added the -e option 3945to 3946allow the inclusion of additional ACPI tables to help with the disassembly 3947of 3948method invocations and the generation of external declarations during the 3949disassembly. Certain external method invocations cannot be disassembled 3950properly without the actual declaration of the method. Use the -e option 3951to 3952include the table where the external method(s) are actually declared. Most 3953useful for disassembling SSDTs that make method calls back to the master 3954DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 3955-d 3956-e dsdt.aml ssdt1.aml 3957 3958iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 3959problem where the use of an alias within a namepath would result in a not 3960found error or cause the compiler to fault. Also now allows forward 3961references from the Alias operator itself. ACPICA BZ 738. 3962 3963---------------------------------------- 396426 September 2008. Summary of changes for version 20080926: 3965 39661) ACPI CA Core Subsystem: 3967 3968Designed and implemented a mechanism to validate predefined ACPI methods 3969and 3970objects. This code validates the predefined ACPI objects (objects whose 3971names 3972start with underscore) that appear in the namespace, at the time they are 3973evaluated. The argument count and the type of the returned object are 3974validated against the ACPI specification. The purpose of this validation 3975is 3976to detect problems with the BIOS-implemented predefined ACPI objects 3977before 3978the results are returned to the ACPI-related drivers. Future enhancements 3979may 3980include actual repair of incorrect return objects where possible. Two new 3981files are nspredef.c and acpredef.h. 3982 3983Fixed a fault in the AML parser if a memory allocation fails during the Op 3984completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 3985 3986Fixed an issue with implicit return compatibility. This change improves 3987the 3988implicit return mechanism to be more compatible with the MS interpreter. 3989Lin 3990Ming, ACPICA BZ 349. 3991 3992Implemented support for zero-length buffer-to-string conversions. Allow 3993zero 3994length strings during interpreter buffer-to-string conversions. For 3995example, 3996during the ToDecimalString and ToHexString operators, as well as implicit 3997conversions. Fiodor Suietov, ACPICA BZ 585. 3998 3999Fixed two possible memory leaks in the error exit paths of 4000AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are 4001similar in that they use a stack of state objects in order to eliminate 4002recursion. The stack must be fully unwound and deallocated if an error 4003occurs. Lin Ming. ACPICA BZ 383. 4004 4005Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 4006global 4007ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 4008Moore ACPICA BZ 442. 4009 4010Removed the obsolete version number in module headers. Removed the 4011"$Revision" number that appeared in each module header. This version 4012number 4013was useful under SourceSafe and CVS, but has no meaning under git. It is 4014not 4015only incorrect, it could also be misleading. 4016 4017Example Code and Data Size: These are the sizes for the OS-independent 4018acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4019debug version of the code includes the debug output trace mechanism and 4020has a 4021much larger code and data size. 4022 4023 Previous Release: 4024 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4025 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 4026 Current Release: 4027 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 4028 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 4029 4030---------------------------------------- 403129 August 2008. Summary of changes for version 20080829: 4032 40331) ACPI CA Core Subsystem: 4034 4035Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 4036Reference. Changes include the elimination of cheating on the Object field 4037for the DdbHandle subtype, addition of a reference class field to 4038differentiate the various reference types (instead of an AML opcode), and 4039the 4040cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 4041 4042Reduce an error to a warning for an incorrect method argument count. 4043Previously aborted with an error if too few arguments were passed to a 4044control method via the external ACPICA interface. Now issue a warning 4045instead 4046and continue. Handles the case where the method inadvertently declares too 4047many arguments, but does not actually use the extra ones. Applies mainly 4048to 4049the predefined methods. Lin Ming. Linux BZ 11032. 4050 4051Disallow the evaluation of named object types with no intrinsic value. 4052Return 4053AE_TYPE for objects that have no value and therefore evaluation is 4054undefined: 4055Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 4056of 4057these types were allowed, but an exception would be generated at some 4058point 4059during the evaluation. Now, the error is generated up front. 4060 4061Fixed a possible memory leak in the AcpiNsGetExternalPathname function 4062(nsnames.c). Fixes a leak in the error exit path. 4063 4064Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 4065debug 4066levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 4067ACPI_EXCEPTION 4068interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 4069ACPI_LV_EVENTS. 4070 4071Removed obsolete and/or unused exception codes from the acexcep.h header. 4072There is the possibility that certain device drivers may be affected if 4073they 4074use any of these exceptions. 4075 4076The ACPICA documentation has been added to the public git source tree, 4077under 4078acpica/documents. Included are the ACPICA programmer reference, the iASL 4079compiler reference, and the changes.txt release logfile. 4080 4081Example Code and Data Size: These are the sizes for the OS-independent 4082acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4083debug version of the code includes the debug output trace mechanism and 4084has a 4085much larger code and data size. 4086 4087 Previous Release: 4088 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4089 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 4090 Current Release: 4091 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4092 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 4093 40942) iASL Compiler/Disassembler and Tools: 4095 4096Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 4097defines _SCP with 3 arguments. Previous versions defined it with only 1 4098argument. iASL now allows both definitions. 4099 4100iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- 4101length subtables when disassembling ACPI tables. Also fixed a couple of 4102errors where a full 16-bit table type field was not extracted from the 4103input 4104properly. 4105 4106acpisrc: Improve comment counting mechanism for generating source code 4107statistics. Count first and last lines of multi-line comments as 4108whitespace, 4109not comment lines. Handle Linux legal header in addition to standard 4110acpica 4111header. 4112 4113---------------------------------------- 4114 411529 July 2008. Summary of changes for version 20080729: 4116 41171) ACPI CA Core Subsystem: 4118 4119Fix a possible deadlock in the GPE dispatch. Remove call to 4120AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 4121attempt 4122to acquire the GPE lock but can deadlock since the GPE lock is already 4123held 4124at dispatch time. This code was introduced in version 20060831 as a 4125response 4126to Linux BZ 6881 and has since been removed from Linux. 4127 4128Add a function to dereference returned reference objects. Examines the 4129return 4130object from a call to AcpiEvaluateObject. Any Index or RefOf references 4131are 4132automatically dereferenced in an attempt to return something useful (these 4133reference types cannot be converted into an external ACPI_OBJECT.) 4134Provides 4135MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 4136 4137x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 4138subtables for the MADT and one new subtable for the SRAT. Includes 4139disassembler and AcpiSrc support. Data from the Intel 64 Architecture 4140x2APIC 4141Specification, June 2008. 4142 4143Additional error checking for pathname utilities. Add error check after 4144all 4145calls to AcpiNsGetPathnameLength. Add status return from 4146AcpiNsBuildExternalPath and check after all calls. Add parameter 4147validation 4148to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 4149 4150Return status from the global init function AcpiUtGlobalInitialize. This 4151is 4152used by both the kernel subsystem and the utilities such as iASL compiler. 4153The function could possibly fail when the caches are initialized. Yang Yi. 4154 4155Add a function to decode reference object types to strings. Created for 4156improved error messages. 4157 4158Improve object conversion error messages. Better error messages during 4159object 4160conversion from internal to the external ACPI_OBJECT. Used for external 4161calls 4162to AcpiEvaluateObject. 4163 4164Example Code and Data Size: These are the sizes for the OS-independent 4165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4166debug version of the code includes the debug output trace mechanism and 4167has a 4168much larger code and data size. 4169 4170 Previous Release: 4171 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 4172 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 4173 Current Release: 4174 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4175 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 4176 41772) iASL Compiler/Disassembler and Tools: 4178 4179Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 4180introduced in version 20080701. If the object being evaluated (via execute 4181command) is not a method, the debugger can hang while trying to obtain 4182non- 4183existent parameters. 4184 4185iASL: relax error for using reserved "_T_x" identifiers. These names can 4186appear in a disassembled ASL file if they were emitted by the original 4187compiler. Instead of issuing an error or warning and forcing the user to 4188manually change these names, issue a remark instead. 4189 4190iASL: error if named object created in while loop. Emit an error if any 4191named 4192object is created within a While loop. If allowed, this code will generate 4193a 4194run-time error on the second iteration of the loop when an attempt is made 4195to 4196create the same named object twice. ACPICA bugzilla 730. 4197 4198iASL: Support absolute pathnames for include files. Add support for 4199absolute 4200pathnames within the Include operator. previously, only relative pathnames 4201were supported. 4202 4203iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 4204Descriptor. 4205The ACPI spec requires one interrupt minimum. BZ 423 4206 4207iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 4208Handles the case for the Interrupt Resource Descriptor where 4209the ResourceSource argument is omitted but ResourceSourceIndex 4210is present. Now leave room for the Index. BZ 426 4211 4212iASL: Prevent error message if CondRefOf target does not exist. Fixes 4213cases 4214where an error message is emitted if the target does not exist. BZ 516 4215 4216iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 4217(get ACPI tables on Windows). This was apparently broken in version 421820070919. 4219 4220AcpiXtract: Handle EOF while extracting data. Correctly handle the case 4221where 4222the EOF happens immediately after the last table in the input file. Print 4223completion message. Previously, no message was displayed in this case. 4224 4225---------------------------------------- 422601 July 2008. Summary of changes for version 20080701: 4227 42280) Git source tree / acpica.org 4229 4230Fixed a problem where a git-clone from http would not transfer the entire 4231source tree. 4232 42331) ACPI CA Core Subsystem: 4234 4235Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 4236enable bit. Now performs a read-change-write of the enable register 4237instead 4238of simply writing out the cached enable mask. This will prevent 4239inadvertent 4240enabling of GPEs if a rogue GPE is received during initialization (before 4241GPE 4242handlers are installed.) 4243 4244Implemented a copy for dynamically loaded tables. Previously, dynamically 4245loaded tables were simply mapped - but on some machines this memory is 4246corrupted after suspend. Now copy the table to a local buffer. For the 4247OpRegion case, added checksum verify. Use the table length from the table 4248header, not the region length. For the Buffer case, use the table length 4249also. Dennis Noordsij, Bob Moore. BZ 10734 4250 4251Fixed a problem where the same ACPI table could not be dynamically loaded 4252and 4253unloaded more than once. Without this change, a table cannot be loaded 4254again 4255once it has been loaded/unloaded one time. The current mechanism does not 4256unregister a table upon an unload. During a load, if the same table is 4257found, 4258this no longer returns an exception. BZ 722 4259 4260Fixed a problem where the wrong descriptor length was calculated for the 4261EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag 4262are calculated as 12 bytes long, but the actual length in the internal 4263descriptor is 16 because of the round-up to 8 on the 64-bit build. 4264Reported 4265by Linn Crosetto. BZ 728 4266 4267Fixed a possible memory leak in the Unload operator. The DdbHandle 4268returned 4269by Load() did not have its reference count decremented during unload, 4270leading 4271to a memory leak. Lin Ming. BZ 727 4272 4273Fixed a possible memory leak when deleting thermal/processor objects. Any 4274associated notify handlers (and objects) were not being deleted. Fiodor 4275Suietov. BZ 506 4276 4277Fixed the ordering of the ASCII names in the global mutex table to match 4278the 4279actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 4280only. 4281Vegard Nossum. BZ 726 4282 4283Enhanced the AcpiGetObjectInfo interface to return the number of required 4284arguments if the object is a control method. Added this call to the 4285debugger 4286so the proper number of default arguments are passed to a method. This 4287prevents a warning when executing methods from AcpiExec. 4288 4289Added a check for an invalid handle in AcpiGetObjectInfo. Return 4290AE_BAD_PARAMETER if input handle is invalid. BZ 474 4291 4292Fixed an extraneous warning from exconfig.c on the 64-bit build. 4293 4294Example Code and Data Size: These are the sizes for the OS-independent 4295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4296debug version of the code includes the debug output trace mechanism and 4297has a 4298much larger code and data size. 4299 4300 Previous Release: 4301 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 4302 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 4303 Current Release: 4304 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 4305 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 4306 43072) iASL Compiler/Disassembler and Tools: 4308 4309iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 4310resource descriptor names. 4311 4312iASL: Detect invalid ASCII characters in input (windows version). Removed 4313the 4314"-CF" flag from the flex compile, enables correct detection of non-ASCII 4315characters in the input. BZ 441 4316 4317iASL: Eliminate warning when result of LoadTable is not used. Eliminate 4318the 4319"result of operation not used" warning when the DDB handle returned from 4320LoadTable is not used. The warning is not needed. BZ 590 4321 4322AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method 4323to 4324pass address of table to the AML. Added option to disable OpRegion 4325simulation 4326to allow creation of an OpRegion with a real address that was passed to 4327_CFG. 4328All of this allows testing of the Load and Unload operators from AcpiExec. 4329 4330Debugger: update tables command for unloaded tables. Handle unloaded 4331tables 4332and use the standard table header output routine. 4333 4334---------------------------------------- 433509 June 2008. Summary of changes for version 20080609: 4336 43371) ACPI CA Core Subsystem: 4338 4339Implemented a workaround for reversed _PRT entries. A significant number 4340of 4341BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 4342change dynamically detects and repairs this problem. Provides 4343compatibility 4344with MS ACPI. BZ 6859 4345 4346Simplified the internal ACPI hardware interfaces to eliminate the locking 4347flag parameter from Register Read/Write. Added a new external interface, 4348AcpiGetRegisterUnlocked. 4349 4350Fixed a problem where the invocation of a GPE control method could hang. 4351This 4352was a regression introduced in 20080514. The new method argument count 4353validation mechanism can enter an infinite loop when a GPE method is 4354dispatched. Problem fixed by removing the obsolete code that passed GPE 4355block 4356information to the notify handler via the control method parameter 4357pointer. 4358 4359Fixed a problem where the _SST execution status was incorrectly returned 4360to 4361the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 436220080514. _SST is optional and a NOT_FOUND exception should never be 4363returned. BZ 716 4364 4365Fixed a problem where a deleted object could be accessed from within the 4366AML 4367parser. This was a regression introduced in version 20080123 as a fix for 4368the 4369Unload operator. Lin Ming. BZ 10669 4370 4371Cleaned up the debug operand dump mechanism. Eliminated unnecessary 4372operands 4373and eliminated the use of a negative index in a loop. Operands are now 4374displayed in the correct order, not backwards. This also fixes a 4375regression 4376introduced in 20080514 on 64-bit systems where the elimination of 4377ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 4378715 4379 4380Fixed a possible memory leak in EvPciConfigRegionSetup where the error 4381exit 4382path did not delete a locally allocated structure. 4383 4384Updated definitions for the DMAR and SRAT tables to synchronize with the 4385current specifications. Includes disassembler support. 4386 4387Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 4388loop termination value was used. Loop terminated on iteration early, 4389missing 4390one mutex. Linn Crosetto 4391 4392Example Code and Data Size: These are the sizes for the OS-independent 4393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4394debug version of the code includes the debug output trace mechanism and 4395has a 4396much larger code and data size. 4397 4398 Previous Release: 4399 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 4400 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 4401 Current Release: 4402 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 4403 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 4404 44052) iASL Compiler/Disassembler and Tools: 4406 4407Disassembler: Implemented support for EisaId() within _CID objects. Now 4408disassemble integer _CID objects back to EisaId invocations, including 4409multiple integers within _CID packages. Includes single-step support for 4410debugger also. 4411 4412Disassembler: Added support for DMAR and SRAT table definition changes. 4413 4414---------------------------------------- 441514 May 2008. Summary of changes for version 20080514: 4416 44171) ACPI CA Core Subsystem: 4418 4419Fixed a problem where GPEs were enabled too early during the ACPICA 4420initialization. This could lead to "handler not installed" errors on some 4421machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 4422This 4423ensures that all operation regions and devices throughout the namespace 4424have 4425been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 4426 4427Implemented a change to the enter sleep code. Moved execution of the _GTS 4428method to just before setting sleep enable bit. The execution was moved 4429from 4430AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 4431immediately before the SLP_EN bit is set, as per the ACPI specification. 4432Luming Yu, BZ 1653. 4433 4434Implemented a fix to disable unknown GPEs (2nd version). Now always 4435disable 4436the GPE, even if ACPICA thinks that that it is already disabled. It is 4437possible that the AML or some other code has enabled the GPE unbeknownst 4438to 4439the ACPICA code. 4440 4441Fixed a problem with the Field operator where zero-length fields would 4442return 4443an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 4444ASL 4445field declarations in Field(), BankField(), and IndexField(). BZ 10606. 4446 4447Implemented a fix for the Load operator, now load the table at the 4448namespace 4449root. This reverts a change introduced in version 20071019. The table is 4450now 4451loaded at the namespace root even though this goes against the ACPI 4452specification. This provides compatibility with other ACPI 4453implementations. 4454The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 4455Ming. 4456 4457Fixed a problem where ACPICA would not Load() tables with unusual 4458signatures. 4459Now ignore ACPI table signature for Load() operator. Only "SSDT" is 4460acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 4461Therefore, signature validation is worthless. Apparently MS ACPI accepts 4462such 4463signatures, ACPICA must be compatible. BZ 10454. 4464 4465Fixed a possible negative array index in AcpiUtValidateException. Added 4466NULL 4467fields to the exception string arrays to eliminate a -1 subtraction on the 4468SubStatus field. 4469 4470Updated the debug tracking macros to reduce overall code and data size. 4471Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 4472instead of pointers to static strings. Jan Beulich and Bob Moore. 4473 4474Implemented argument count checking in control method invocation via 4475AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 4476many. This applies only to extern programmatic control method execution, 4477not 4478method-to-method calls within the AML. Lin Ming. 4479 4480Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 4481no 4482longer needed, especially with the removal of 16-bit support. It was 4483replaced 4484mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit 4485on 448632/64-bit platforms is required. 4487 4488Added the C const qualifier for appropriate string constants -- mostly 4489MODULE_NAME and printf format strings. Jan Beulich. 4490 4491Example Code and Data Size: These are the sizes for the OS-independent 4492acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4493debug version of the code includes the debug output trace mechanism and 4494has a 4495much larger code and data size. 4496 4497 Previous Release: 4498 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 4499 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 4500 Current Release: 4501 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 4502 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 4503 45042) iASL Compiler/Disassembler and Tools: 4505 4506Implemented ACPI table revision ID validation in the disassembler. Zero is 4507always invalid. For DSDTs, the ID controls the interpreter integer width. 45081 4509means 32-bit and this is unusual. 2 or greater is 64-bit. 4510 4511---------------------------------------- 451221 March 2008. Summary of changes for version 20080321: 4513 45141) ACPI CA Core Subsystem: 4515 4516Implemented an additional change to the GPE support in order to suppress 4517spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 4518disable incoming GPEs that are neither enabled nor disabled -- meaning 4519that 4520the GPE is unknown to the system. This should prevent future interrupt 4521floods 4522from that GPE. BZ 6217 (Zhang Rui) 4523 4524Fixed a problem where NULL package elements were not returned to the 4525AcpiEvaluateObject interface correctly. The element was simply ignored 4526instead of returning a NULL ACPI_OBJECT package element, potentially 4527causing 4528a buffer overflow and/or confusing the caller who expected a fixed number 4529of 4530elements. BZ 10132 (Lin Ming, Bob Moore) 4531 4532Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 4533Dword, 4534Qword), Field, BankField, and IndexField operators when invoked from 4535inside 4536an executing control method. In this case, these operators created 4537namespace 4538nodes that were incorrectly left marked as permanent nodes instead of 4539temporary nodes. This could cause a problem if there is race condition 4540between an exiting control method and a running namespace walk. (Reported 4541by 4542Linn Crosetto) 4543 4544Fixed a problem where the CreateField and CreateXXXField operators would 4545incorrectly allow duplicate names (the name of the field) with no 4546exception 4547generated. 4548 4549Implemented several changes for Notify handling. Added support for new 4550Notify 4551values (ACPI 2.0+) and improved the Notify debug output. Notify on 4552PowerResource objects is no longer allowed, as per the ACPI specification. 4553(Bob Moore, Zhang Rui) 4554 4555All Reference Objects returned via the AcpiEvaluateObject interface are 4556now 4557marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 4558for 4559NULL objects - either NULL package elements or unresolved named 4560references. 4561 4562Fixed a problem where an extraneous debug message was produced for package 4563objects (when debugging enabled). The message "Package List length larger 4564than NumElements count" is now produced in the correct case, and is now an 4565error message rather than a debug message. Added a debug message for the 4566opposite case, where NumElements is larger than the Package List (the 4567package 4568will be padded out with NULL elements as per the ACPI spec.) 4569 4570Implemented several improvements for the output of the ASL "Debug" object 4571to 4572clarify and keep all data for a given object on one output line. 4573 4574Fixed two size calculation issues with the variable-length Start Dependent 4575resource descriptor. 4576 4577Example Code and Data Size: These are the sizes for the OS-independent 4578acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4579debug version of the code includes the debug output trace mechanism and 4580has 4581a much larger code and data size. 4582 4583 Previous Release: 4584 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 4585 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 4586 Current Release: 4587 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 4588 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 4589 45902) iASL Compiler/Disassembler and Tools: 4591 4592Fixed a problem with the use of the Switch operator where execution of the 4593containing method by multiple concurrent threads could cause an 4594AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 4595actual Switch opcode, it must be simulated with local named temporary 4596variables and if/else pairs. The solution chosen was to mark any method 4597that 4598uses Switch as Serialized, thus preventing multiple thread entries. BZ 4599469. 4600 4601---------------------------------------- 460213 February 2008. Summary of changes for version 20080213: 4603 46041) ACPI CA Core Subsystem: 4605 4606Implemented another MS compatibility design change for GPE/Notify 4607handling. 4608GPEs are now cleared/enabled asynchronously to allow all pending notifies 4609to 4610complete first. It is expected that the OSL will queue the enable request 4611behind all pending notify requests (may require changes to the local host 4612OSL 4613in AcpiOsExecute). Alexey Starikovskiy. 4614 4615Fixed a problem where buffer and package objects passed as arguments to a 4616control method via the external AcpiEvaluateObject interface could cause 4617an 4618AE_AML_INTERNAL exception depending on the order and type of operators 4619executed by the target control method. 4620 4621Fixed a problem where resource descriptor size optimization could cause a 4622problem when a _CRS resource template is passed to a _SRS method. The _SRS 4623resource template must use the same descriptors (with the same size) as 4624returned from _CRS. This change affects the following resource 4625descriptors: 4626IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 46279487) 4628 4629Fixed a problem where a CopyObject to RegionField, BankField, and 4630IndexField 4631objects did not perform an implicit conversion as it should. These types 4632must 4633retain their initial type permanently as per the ACPI specification. 4634However, 4635a CopyObject to all other object types should not perform an implicit 4636conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 4637 4638Fixed a problem with the AcpiGetDevices interface where the mechanism to 4639match device CIDs did not examine the entire list of available CIDs, but 4640instead aborted on the first non-matching CID. Andrew Patterson. 4641 4642Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 4643was 4644inadvertently changed to return a 16-bit value instead of a 32-bit value, 4645truncating the upper dword of a 64-bit value. This macro is only used to 4646display debug output, so no incorrect calculations were made. Also, 4647reimplemented the macro so that a 64-bit shift is not performed by 4648inefficient compilers. 4649 4650Added missing va_end statements that should correspond with each va_start 4651statement. 4652 4653Example Code and Data Size: These are the sizes for the OS-independent 4654acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4655debug version of the code includes the debug output trace mechanism and 4656has 4657a much larger code and data size. 4658 4659 Previous Release: 4660 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 4661 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 4662 Current Release: 4663 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 4664 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 4665 46662) iASL Compiler/Disassembler and Tools: 4667 4668Implemented full disassembler support for the following new ACPI tables: 4669BERT, EINJ, and ERST. Implemented partial disassembler support for the 4670complicated HEST table. These tables support the Windows Hardware Error 4671Architecture (WHEA). 4672 4673---------------------------------------- 467423 January 2008. Summary of changes for version 20080123: 4675 46761) ACPI CA Core Subsystem: 4677 4678Added the 2008 copyright to all module headers and signons. This affects 4679virtually every file in the ACPICA core subsystem, the iASL compiler, and 4680the tools/utilities. 4681 4682Fixed a problem with the SizeOf operator when used with Package and Buffer 4683objects. These objects have deferred execution for some arguments, and the 4684execution is now completed before the SizeOf is executed. This problem 4685caused 4686unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 4687BZ 46889558 4689 4690Implemented an enhancement to the interpreter "slack mode". In the absence 4691of 4692an explicit return or an implicitly returned object from the last executed 4693opcode, a control method will now implicitly return an integer of value 0 4694for 4695Microsoft compatibility. (Lin Ming) BZ 392 4696 4697Fixed a problem with the Load operator where an exception was not returned 4698in 4699the case where the table is already loaded. (Lin Ming) BZ 463 4700 4701Implemented support for the use of DDBHandles as an Indexed Reference, as 4702per 4703the ACPI spec. (Lin Ming) BZ 486 4704 4705Implemented support for UserTerm (Method invocation) for the Unload 4706operator 4707as per the ACPI spec. (Lin Ming) BZ 580 4708 4709Fixed a problem with the LoadTable operator where the OemId and OemTableId 4710input strings could cause unexpected failures if they were shorter than 4711the 4712maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 4713 4714Implemented support for UserTerm (Method invocation) for the Unload 4715operator 4716as per the ACPI spec. (Lin Ming) BZ 580 4717 4718Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 4719HEST, 4720IBFT, UEFI, WDAT. Disassembler support is forthcoming. 4721 4722Example Code and Data Size: These are the sizes for the OS-independent 4723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4724debug version of the code includes the debug output trace mechanism and 4725has 4726a much larger code and data size. 4727 4728 Previous Release: 4729 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 4730 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 4731 Current Release: 4732 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 4733 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 4734 47352) iASL Compiler/Disassembler and Tools: 4736 4737Implemented support in the disassembler for checksum validation on 4738incoming 4739binary DSDTs and SSDTs. If incorrect, a message is displayed within the 4740table 4741header dump at the start of the disassembly. 4742 4743Implemented additional debugging information in the namespace listing file 4744created during compilation. In addition to the namespace hierarchy, the 4745full 4746pathname to each namespace object is displayed. 4747 4748Fixed a problem with the disassembler where invalid ACPI tables could 4749cause 4750faults or infinite loops. 4751 4752Fixed an unexpected parse error when using the optional "parameter types" 4753list in a control method declaration. (Lin Ming) BZ 397 4754 4755Fixed a problem where two External declarations with the same name did not 4756cause an error (Lin Ming) BZ 509 4757 4758Implemented support for full TermArgs (adding Argx, Localx and method 4759invocation) for the ParameterData parameter to the LoadTable operator. 4760(Lin 4761Ming) BZ 583,587 4762 4763---------------------------------------- 476419 December 2007. Summary of changes for version 20071219: 4765 47661) ACPI CA Core Subsystem: 4767 4768Implemented full support for deferred execution for the TermArg string 4769arguments for DataTableRegion. This enables forward references and full 4770operand resolution for the three string arguments. Similar to 4771OperationRegion 4772deferred argument execution.) Lin Ming. BZ 430 4773 4774Implemented full argument resolution support for the BankValue argument to 4775BankField. Previously, only constants were supported, now any TermArg may 4776be 4777used. Lin Ming BZ 387, 393 4778 4779Fixed a problem with AcpiGetDevices where the search of a branch of the 4780device tree could be terminated prematurely. In accordance with the ACPI 4781specification, the search down the current branch is terminated if a 4782device 4783is both not present and not functional (instead of just not present.) 4784Yakui 4785Zhao. 4786 4787Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 4788if 4789the underlying AML code changed the GPE enable registers. Now, any unknown 4790incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 4791disabled 4792instead of simply ignored. Rui Zhang. 4793 4794Fixed a problem with Index Fields where the Index register was incorrectly 4795limited to a maximum of 32 bits. Now any size may be used. 4796 4797Fixed a couple memory leaks associated with "implicit return" objects when 4798the AML Interpreter slack mode is enabled. Lin Ming BZ 349 4799 4800Example Code and Data Size: These are the sizes for the OS-independent 4801acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4802debug version of the code includes the debug output trace mechanism and 4803has 4804a much larger code and data size. 4805 4806 Previous Release: 4807 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 4808 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 4809 Current Release: 4810 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 4811 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 4812 4813---------------------------------------- 481414 November 2007. Summary of changes for version 20071114: 4815 48161) ACPI CA Core Subsystem: 4817 4818Implemented event counters for each of the Fixed Events, the ACPI SCI 4819(interrupt) itself, and control methods executed. Named 4820AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 4821These 4822should be useful for debugging and statistics. 4823 4824Implemented a new external interface, AcpiGetStatistics, to retrieve the 4825contents of the various event counters. Returns the current values for 4826AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 4827AcpiMethodCount. The interface can be expanded in the future if new 4828counters 4829are added. Device drivers should use this interface rather than access the 4830counters directly. 4831 4832Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 4833the ShortDivide function worked incorrectly, causing problems with the BCD 4834functions with large input values. A truncation from 64-bit to 32-bit 4835inadvertently occurred. Internal BZ 435. Lin Ming 4836 4837Fixed a problem with Index references passed as method arguments. 4838References 4839passed as arguments to control methods were dereferenced immediately 4840(before 4841control was passed to the called method). The references are now correctly 4842passed directly to the called method. BZ 5389. Lin Ming 4843 4844Fixed a problem with CopyObject used in conjunction with the Index 4845operator. 4846The reference was incorrectly dereferenced before the copy. The reference 4847is 4848now correctly copied. BZ 5391. Lin Ming 4849 4850Fixed a problem with Control Method references within Package objects. 4851These 4852references are now correctly generated. This completes the package 4853construction overhaul that began in version 20071019. 4854 4855Example Code and Data Size: These are the sizes for the OS-independent 4856acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4857debug version of the code includes the debug output trace mechanism and 4858has 4859a much larger code and data size. 4860 4861 Previous Release: 4862 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 4863 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 4864 Current Release: 4865 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 4866 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 4867 4868 48692) iASL Compiler/Disassembler and Tools: 4870 4871The AcpiExec utility now installs handlers for all of the predefined 4872Operation Region types. New types supported are: PCI_Config, CMOS, and 4873PCIBARTarget. 4874 4875Fixed a problem with the 64-bit version of AcpiExec where the extended 4876(64- 4877bit) address fields for the DSDT and FACS within the FADT were not being 4878used, causing truncation of the upper 32-bits of these addresses. Lin Ming 4879and Bob Moore 4880 4881---------------------------------------- 488219 October 2007. Summary of changes for version 20071019: 4883 48841) ACPI CA Core Subsystem: 4885 4886Fixed a problem with the Alias operator when the target of the alias is a 4887named ASL operator that opens a new scope -- Scope, Device, PowerResource, 4888Processor, and ThermalZone. In these cases, any children of the original 4889operator could not be accessed via the alias, potentially causing 4890unexpected 4891AE_NOT_FOUND exceptions. (BZ 9067) 4892 4893Fixed a problem with the Package operator where all named references were 4894created as object references and left otherwise unresolved. According to 4895the 4896ACPI specification, a Package can only contain Data Objects or references 4897to 4898control methods. The implication is that named references to Data Objects 4899(Integer, Buffer, String, Package, BufferField, Field) should be resolved 4900immediately upon package creation. This is the approach taken with this 4901change. References to all other named objects (Methods, Devices, Scopes, 4902etc.) are all now properly created as reference objects. (BZ 5328) 4903 4904Reverted a change to Notify handling that was introduced in version 490520070508. This version changed the Notify handling from asynchronous to 4906fully synchronous (Device driver Notify handling with respect to the 4907Notify 4908ASL operator). It was found that this change caused more problems than it 4909solved and was removed by most users. 4910 4911Fixed a problem with the Increment and Decrement operators where the type 4912of 4913the target object could be unexpectedly and incorrectly changed. (BZ 353) 4914Lin Ming. 4915 4916Fixed a problem with the Load and LoadTable operators where the table 4917location within the namespace was ignored. Instead, the table was always 4918loaded into the root or current scope. Lin Ming. 4919 4920Fixed a problem with the Load operator when loading a table from a buffer 4921object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 4922 4923Fixed a problem with the Debug object where a store of a DdbHandle 4924reference 4925object to the Debug object could cause a fault. 4926 4927Added a table checksum verification for the Load operator, in the case 4928where 4929the load is from a buffer. (BZ 578). 4930 4931Implemented additional parameter validation for the LoadTable operator. 4932The 4933length of the input strings SignatureString, OemIdString, and OemTableId 4934are 4935now checked for maximum lengths. (BZ 582) Lin Ming. 4936 4937Example Code and Data Size: These are the sizes for the OS-independent 4938acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4939debug version of the code includes the debug output trace mechanism and 4940has 4941a much larger code and data size. 4942 4943 Previous Release: 4944 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 4945 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 4946 Current Release: 4947 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 4948 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 4949 4950 49512) iASL Compiler/Disassembler: 4952 4953Fixed a problem where if a single file was specified and the file did not 4954exist, no error message was emitted. (Introduced with wildcard support in 4955version 20070917.) 4956 4957---------------------------------------- 495819 September 2007. Summary of changes for version 20070919: 4959 49601) ACPI CA Core Subsystem: 4961 4962Designed and implemented new external interfaces to install and remove 4963handlers for ACPI table-related events. Current events that are defined 4964are 4965LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 4966they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 4967AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 4968 4969Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 4970(acpi_serialized option on Linux) could cause some systems to hang during 4971initialization. (Bob Moore) BZ 8171 4972 4973Fixed a problem where objects of certain types (Device, ThermalZone, 4974Processor, PowerResource) can be not found if they are declared and 4975referenced from within the same control method (Lin Ming) BZ 341 4976 4977Example Code and Data Size: These are the sizes for the OS-independent 4978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4979debug version of the code includes the debug output trace mechanism and 4980has 4981a much larger code and data size. 4982 4983 Previous Release: 4984 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 4985 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 4986 Current Release: 4987 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 4988 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 4989 4990 49912) iASL Compiler/Disassembler: 4992 4993Implemented support to allow multiple files to be compiled/disassembled in 4994a 4995single invocation. This includes command line wildcard support for both 4996the 4997Windows and Unix versions of the compiler. This feature simplifies the 4998disassembly and compilation of multiple ACPI tables in a single directory. 4999 5000---------------------------------------- 500108 May 2007. Summary of changes for version 20070508: 5002 50031) ACPI CA Core Subsystem: 5004 5005Implemented a Microsoft compatibility design change for the handling of 5006the 5007Notify AML operator. Previously, notify handlers were dispatched and 5008executed completely asynchronously in a deferred thread. The new design 5009still executes the notify handlers in a different thread, but the original 5010thread that executed the Notify() now waits at a synchronization point for 5011the notify handler to complete. Some machines depend on a synchronous 5012Notify 5013operator in order to operate correctly. 5014 5015Implemented support to allow Package objects to be passed as method 5016arguments to the external AcpiEvaluateObject interface. Previously, this 5017would return the AE_NOT_IMPLEMENTED exception. This feature had not been 5018implemented since there were no reserved control methods that required it 5019until recently. 5020 5021Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 5022that 5023contained invalid non-zero values in reserved fields could cause later 5024failures because these fields have meaning in later revisions of the FADT. 5025For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 5026fields 5027are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 5028 5029Fixed a problem where the Global Lock handle was not properly updated if a 5030thread that acquired the Global Lock via executing AML code then attempted 5031to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 5032Joe 5033Liu. 5034 5035Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 5036could be corrupted if the interrupt being removed was at the head of the 5037list. Reported by Linn Crosetto. 5038 5039Example Code and Data Size: These are the sizes for the OS-independent 5040acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5041debug version of the code includes the debug output trace mechanism and 5042has 5043a much larger code and data size. 5044 5045 Previous Release: 5046 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5047 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 5048 Current Release: 5049 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 5050 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 5051 5052---------------------------------------- 505320 March 2007. Summary of changes for version 20070320: 5054 50551) ACPI CA Core Subsystem: 5056 5057Implemented a change to the order of interpretation and evaluation of AML 5058operand objects within the AML interpreter. The interpreter now evaluates 5059operands in the order that they appear in the AML stream (and the 5060corresponding ASL code), instead of in the reverse order (after the entire 5061operand list has been parsed). The previous behavior caused several subtle 5062incompatibilities with the Microsoft AML interpreter as well as being 5063somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 5064 5065Implemented a change to the ACPI Global Lock support. All interfaces to 5066the 5067global lock now allow the same thread to acquire the lock multiple times. 5068This affects the AcpiAcquireGlobalLock external interface to the global 5069lock 5070as well as the internal use of the global lock to support AML fields -- a 5071control method that is holding the global lock can now simultaneously 5072access 5073AML fields that require global lock protection. Previously, in both cases, 5074this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 5075to 5076AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 5077Controller. There is no change to the behavior of the AML Acquire 5078operator, 5079as this can already be used to acquire a mutex multiple times by the same 5080thread. BZ 8066. With assistance from Alexey Starikovskiy. 5081 5082Fixed a problem where invalid objects could be referenced in the AML 5083Interpreter after error conditions. During operand evaluation, ensure that 5084the internal "Return Object" field is cleared on error and only valid 5085pointers are stored there. Caused occasional access to deleted objects 5086that 5087resulted in "large reference count" warning messages. Valery Podrezov. 5088 5089Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 5090on 5091deeply nested control method invocations. BZ 7873, local BZ 487. Valery 5092Podrezov. 5093 5094Fixed an internal problem with the handling of result objects on the 5095interpreter result stack. BZ 7872. Valery Podrezov. 5096 5097Removed obsolete code that handled the case where AML_NAME_OP is the 5098target 5099of a reference (Reference.Opcode). This code was no longer necessary. BZ 51007874. Valery Podrezov. 5101 5102Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was 5103a 5104remnant from the previously discontinued 16-bit support. 5105 5106Example Code and Data Size: These are the sizes for the OS-independent 5107acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5108debug version of the code includes the debug output trace mechanism and 5109has 5110a much larger code and data size. 5111 5112 Previous Release: 5113 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5114 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5115 Current Release: 5116 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5117 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 5118 5119---------------------------------------- 512026 January 2007. Summary of changes for version 20070126: 5121 51221) ACPI CA Core Subsystem: 5123 5124Added the 2007 copyright to all module headers and signons. This affects 5125virtually every file in the ACPICA core subsystem, the iASL compiler, and 5126the utilities. 5127 5128Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 5129during a table load. A bad pointer was passed in the case where the DSDT 5130is 5131overridden, causing a fault in this case. 5132 5133Example Code and Data Size: These are the sizes for the OS-independent 5134acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5135debug version of the code includes the debug output trace mechanism and 5136has 5137a much larger code and data size. 5138 5139 Previous Release: 5140 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5141 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5142 Current Release: 5143 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5144 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5145 5146---------------------------------------- 514715 December 2006. Summary of changes for version 20061215: 5148 51491) ACPI CA Core Subsystem: 5150 5151Support for 16-bit ACPICA has been completely removed since it is no 5152longer 5153necessary and it clutters the code. All 16-bit macros, types, and 5154conditional compiles have been removed, cleaning up and simplifying the 5155code 5156across the entire subsystem. DOS support is no longer needed since the 5157bootable Linux firmware kit is now available. 5158 5159The handler for the Global Lock is now removed during AcpiTerminate to 5160enable a clean subsystem restart, via the implementation of the 5161AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 5162HP) 5163 5164Implemented enhancements to the multithreading support within the debugger 5165to enable improved multithreading debugging and evaluation of the 5166subsystem. 5167(Valery Podrezov) 5168 5169Debugger: Enhanced the Statistics/Memory command to emit the total 5170(maximum) 5171memory used during the execution, as well as the maximum memory consumed 5172by 5173each of the various object types. (Valery Podrezov) 5174 5175Example Code and Data Size: These are the sizes for the OS-independent 5176acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5177debug version of the code includes the debug output trace mechanism and 5178has 5179a much larger code and data size. 5180 5181 Previous Release: 5182 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 5183 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 5184 Current Release: 5185 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5186 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5187 5188 51892) iASL Compiler/Disassembler and Tools: 5190 5191AcpiExec: Implemented a new option (-m) to display full memory use 5192statistics upon subsystem/program termination. (Valery Podrezov) 5193 5194---------------------------------------- 519509 November 2006. Summary of changes for version 20061109: 5196 51971) ACPI CA Core Subsystem: 5198 5199Optimized the Load ASL operator in the case where the source operand is an 5200operation region. Simply map the operation region memory, instead of 5201performing a bytewise read. (Region must be of type SystemMemory, see 5202below.) 5203 5204Fixed the Load ASL operator for the case where the source operand is a 5205region field. A buffer object is also allowed as the source operand. BZ 5206480 5207 5208Fixed a problem where the Load ASL operator allowed the source operand to 5209be 5210an operation region of any type. It is now restricted to regions of type 5211SystemMemory, as per the ACPI specification. BZ 481 5212 5213Additional cleanup and optimizations for the new Table Manager code. 5214 5215AcpiEnable will now fail if all of the required ACPI tables are not loaded 5216(FADT, FACS, DSDT). BZ 477 5217 5218Added #pragma pack(8/4) to acobject.h to ensure that the structures in 5219this 5220header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 5221manually optimized to be aligned and will not work if it is byte-packed. 5222 5223Example Code and Data Size: These are the sizes for the OS-independent 5224acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5225debug version of the code includes the debug output trace mechanism and 5226has 5227a much larger code and data size. 5228 5229 Previous Release: 5230 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 5231 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 5232 Current Release: 5233 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 5234 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 5235 5236 52372) iASL Compiler/Disassembler and Tools: 5238 5239Fixed a problem where the presence of the _OSI predefined control method 5240within complex expressions could cause an internal compiler error. 5241 5242AcpiExec: Implemented full region support for multiple address spaces. 5243SpaceId is now part of the REGION object. BZ 429 5244 5245---------------------------------------- 524611 October 2006. Summary of changes for version 20061011: 5247 52481) ACPI CA Core Subsystem: 5249 5250Completed an AML interpreter performance enhancement for control method 5251execution. Previously a 2-pass parse/execution, control methods are now 5252completely parsed and executed in a single pass. This improves overall 5253interpreter performance by ~25%, reduces code size, and reduces CPU stack 5254use. (Valery Podrezov + interpreter changes in version 20051202 that 5255eliminated namespace loading during the pass one parse.) 5256 5257Implemented _CID support for PCI Root Bridge detection. If the _HID does 5258not 5259match the predefined PCI Root Bridge IDs, the _CID list (if present) is 5260now 5261obtained and also checked for an ID match. 5262 5263Implemented additional support for the PCI _ADR execution: upsearch until 5264a 5265device scope is found before executing _ADR. This allows PCI_Config 5266operation regions to be declared locally within control methods underneath 5267PCI device objects. 5268 5269Fixed a problem with a possible race condition between threads executing 5270AcpiWalkNamespace and the AML interpreter. This condition was removed by 5271modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 5272entries created during any concurrent control method execution. An 5273additional namespace race condition is known to exist between 5274AcpiWalkNamespace and the Load/Unload ASL operators and is still under 5275investigation. 5276 5277Restructured the AML ParseLoop function, breaking it into several 5278subfunctions in order to reduce CPU stack use and improve maintainability. 5279(Mikhail Kouzmich) 5280 5281AcpiGetHandle: Fix for parameter validation to detect invalid combinations 5282of prefix handle and pathname. BZ 478 5283 5284Example Code and Data Size: These are the sizes for the OS-independent 5285acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5286debug version of the code includes the debug output trace mechanism and 5287has 5288a much larger code and data size. 5289 5290 Previous Release: 5291 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5292 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 5293 Current Release: 5294 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 5295 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 5296 52972) iASL Compiler/Disassembler and Tools: 5298 5299Ported the -g option (get local ACPI tables) to the new ACPICA Table 5300Manager 5301to restore original behavior. 5302 5303---------------------------------------- 530427 September 2006. Summary of changes for version 20060927: 5305 53061) ACPI CA Core Subsystem: 5307 5308Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 5309These functions now use a spinlock for mutual exclusion and the interrupt 5310level indication flag is not needed. 5311 5312Fixed a problem with the Global Lock where the lock could appear to be 5313obtained before it is actually obtained. The global lock semaphore was 5314inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 5315Suietov. 5316 5317Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 5318during 5319a read from a buffer or region field. (BZ 458) Fiodor Suietov. 5320 5321Example Code and Data Size: These are the sizes for the OS-independent 5322acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5323debug version of the code includes the debug output trace mechanism and 5324has 5325a much larger code and data size. 5326 5327 Previous Release: 5328 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5329 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 5330 Current Release: 5331 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5332 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 5333 5334 53352) iASL Compiler/Disassembler and Tools: 5336 5337Fixed a compilation problem with the pre-defined Resource Descriptor field 5338names where an "object does not exist" error could be incorrectly 5339generated 5340if the parent ResourceTemplate pathname places the template within a 5341different namespace scope than the current scope. (BZ 7212) 5342 5343Fixed a problem where the compiler could hang after syntax errors detected 5344in an ElseIf construct. (BZ 453) 5345 5346Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 5347operator. An incorrect output filename was produced when this parameter 5348was 5349a null string (""). Now, the original input filename is used as the AML 5350output filename, with an ".aml" extension. 5351 5352Implemented a generic batch command mode for the AcpiExec utility (execute 5353any AML debugger command) (Valery Podrezov). 5354 5355---------------------------------------- 535612 September 2006. Summary of changes for version 20060912: 5357 53581) ACPI CA Core Subsystem: 5359 5360Enhanced the implementation of the "serialized mode" of the interpreter 5361(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 5362specified, instead of creating a serialization semaphore per control 5363method, 5364the interpreter lock is simply no longer released before a blocking 5365operation during control method execution. This effectively makes the AML 5366Interpreter single-threaded. The overhead of a semaphore per-method is 5367eliminated. 5368 5369Fixed a regression where an error was no longer emitted if a control 5370method 5371attempts to create 2 objects of the same name. This once again returns 5372AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 5373that 5374will dynamically serialize the control method to possible prevent future 5375errors. (BZ 440) 5376 5377Integrated a fix for a problem with PCI Express HID detection in the PCI 5378Config Space setup procedure. (BZ 7145) 5379 5380Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 5381AcpiHwInitialize function - the FADT registers are now validated when the 5382table is loaded. 5383 5384Added two new warnings during FADT verification - 1) if the FADT is larger 5385than the largest known FADT version, and 2) if there is a mismatch between 5386a 538732-bit block address and the 64-bit X counterpart (when both are non- 5388zero.) 5389 5390Example Code and Data Size: These are the sizes for the OS-independent 5391acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5392debug version of the code includes the debug output trace mechanism and 5393has 5394a much larger code and data size. 5395 5396 Previous Release: 5397 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 5398 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 5399 Current Release: 5400 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5401 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 5402 5403 54042) iASL Compiler/Disassembler and Tools: 5405 5406Fixed a problem with the implementation of the Switch() operator where the 5407temporary variable was declared too close to the actual Switch, instead of 5408at method level. This could cause a problem if the Switch() operator is 5409within a while loop, causing an error on the second iteration. (BZ 460) 5410 5411Disassembler - fix for error emitted for unknown type for target of scope 5412operator. Now, ignore it and continue. 5413 5414Disassembly of an FADT now verifies the input FADT and reports any errors 5415found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 5416 5417Disassembly of raw data buffers with byte initialization data now prefixes 5418each output line with the current buffer offset. 5419 5420Disassembly of ASF! table now includes all variable-length data fields at 5421the end of some of the subtables. 5422 5423The disassembler now emits a comment if a buffer appears to be a 5424ResourceTemplate, but cannot be disassembled as such because the EndTag 5425does 5426not appear at the very end of the buffer. 5427 5428AcpiExec - Added the "-t" command line option to enable the serialized 5429mode 5430of the AML interpreter. 5431 5432---------------------------------------- 543331 August 2006. Summary of changes for version 20060831: 5434 54351) ACPI CA Core Subsystem: 5436 5437Miscellaneous fixes for the Table Manager: 5438- Correctly initialize internal common FADT for all 64-bit "X" fields 5439- Fixed a couple table mapping issues during table load 5440- Fixed a couple alignment issues for IA64 5441- Initialize input array to zero in AcpiInitializeTables 5442- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 5443AcpiGetTableByIndex 5444 5445Change for GPE support: when a "wake" GPE is received, all wake GPEs are 5446now 5447immediately disabled to prevent the waking GPE from firing again and to 5448prevent other wake GPEs from interrupting the wake process. 5449 5450Added the AcpiGpeCount global that tracks the number of processed GPEs, to 5451be used for debugging systems with a large number of ACPI interrupts. 5452 5453Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 5454both the ACPICA headers and the disassembler. 5455 5456Example Code and Data Size: These are the sizes for the OS-independent 5457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5458debug version of the code includes the debug output trace mechanism and 5459has 5460a much larger code and data size. 5461 5462 Previous Release: 5463 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 5464 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 5465 Current Release: 5466 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 5467 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 5468 5469 54702) iASL Compiler/Disassembler and Tools: 5471 5472Disassembler support for the DMAR ACPI table. 5473 5474---------------------------------------- 547523 August 2006. Summary of changes for version 20060823: 5476 54771) ACPI CA Core Subsystem: 5478 5479The Table Manager component has been completely redesigned and 5480reimplemented. The new design is much simpler, and reduces the overall 5481code 5482and data size of the kernel-resident ACPICA by approximately 5%. Also, it 5483is 5484now possible to obtain the ACPI tables very early during kernel 5485initialization, even before dynamic memory management is initialized. 5486(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 5487 5488Obsolete ACPICA interfaces: 5489 5490- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 5491init 5492time). 5493- AcpiLoadTable: Not needed. 5494- AcpiUnloadTable: Not needed. 5495 5496New ACPICA interfaces: 5497 5498- AcpiInitializeTables: Must be called before the table manager can be 5499used. 5500- AcpiReallocateRootTable: Used to transfer the root table to dynamically 5501allocated memory after it becomes available. 5502- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 5503in the RSDT/XSDT. 5504 5505Other ACPICA changes: 5506 5507- AcpiGetTableHeader returns the actual mapped table header, not a copy. 5508Use 5509AcpiOsUnmapMemory to free this mapping. 5510- AcpiGetTable returns the actual mapped table. The mapping is managed 5511internally and must not be deleted by the caller. Use of this interface 5512causes no additional dynamic memory allocation. 5513- AcpiFindRootPointer: Support for physical addressing has been 5514eliminated, 5515it appeared to be unused. 5516- The interface to AcpiOsMapMemory has changed to be consistent with the 5517other allocation interfaces. 5518- The interface to AcpiOsGetRootPointer has changed to eliminate 5519unnecessary 5520parameters. 5521- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64- 5522bit platforms. Was previously 64 bits on all platforms. 5523- The interface to the ACPI Global Lock acquire/release macros have 5524changed 5525slightly since ACPICA no longer keeps a local copy of the FACS with a 5526constructed pointer to the actual global lock. 5527 5528Porting to the new table manager: 5529 5530- AcpiInitializeTables: Must be called once, and can be called anytime 5531during the OS initialization process. It allows the host to specify an 5532area 5533of memory to be used to store the internal version of the RSDT/XSDT (root 5534table). This allows the host to access ACPI tables before memory 5535management 5536is initialized and running. 5537- AcpiReallocateRootTable: Can be called after memory management is 5538running 5539to copy the root table to a dynamically allocated array, freeing up the 5540scratch memory specified in the call to AcpiInitializeTables. 5541- AcpiSubsystemInitialize: This existing interface is independent of the 5542Table Manager, and does not have to be called before the Table Manager can 5543be used, it only must be called before the rest of ACPICA can be used. 5544- ACPI Tables: Some changes have been made to the names and structure of 5545the 5546actbl.h and actbl1.h header files and may require changes to existing 5547code. 5548For example, bitfields have been completely removed because of their lack 5549of 5550portability across C compilers. 5551- Update interfaces to the Global Lock acquire/release macros if local 5552versions are used. (see acwin.h) 5553 5554Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 5555 5556New files: tbfind.c 5557 5558Example Code and Data Size: These are the sizes for the OS-independent 5559acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5560debug version of the code includes the debug output trace mechanism and 5561has 5562a much larger code and data size. 5563 5564 Previous Release: 5565 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 5566 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 5567 Current Release: 5568 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 5569 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 5570 5571 55722) iASL Compiler/Disassembler and Tools: 5573 5574No changes for this release. 5575 5576---------------------------------------- 557721 July 2006. Summary of changes for version 20060721: 5578 55791) ACPI CA Core Subsystem: 5580 5581The full source code for the ASL test suite used to validate the iASL 5582compiler and the ACPICA core subsystem is being released with the ACPICA 5583source for the first time. The source is contained in a separate package 5584and 5585consists of over 1100 files that exercise all ASL/AML operators. The 5586package 5587should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 5588Suietov) 5589 5590Completed a new design and implementation for support of the ACPI Global 5591Lock. On the OS side, the global lock is now treated as a standard AML 5592mutex. Previously, multiple OS threads could "acquire" the global lock 5593simultaneously. However, this could cause the BIOS to be starved out of 5594the 5595lock - especially in cases such as the Embedded Controller driver where 5596there is a tight coupling between the OS and the BIOS. 5597 5598Implemented an optimization for the ACPI Global Lock interrupt mechanism. 5599The Global Lock interrupt handler no longer queues the execution of a 5600separate thread to signal the global lock semaphore. Instead, the 5601semaphore 5602is signaled directly from the interrupt handler. 5603 5604Implemented support within the AML interpreter for package objects that 5605contain a larger AML length (package list length) than the package element 5606count. In this case, the length of the package is truncated to match the 5607package element count. Some BIOS code apparently modifies the package 5608length 5609on the fly, and this change supports this behavior. Provides compatibility 5610with the MS AML interpreter. (With assistance from Fiodor Suietov) 5611 5612Implemented a temporary fix for the BankValue parameter of a Bank Field to 5613support all constant values, now including the Zero and One opcodes. 5614Evaluation of this parameter must eventually be converted to a full 5615TermArg 5616evaluation. A not-implemented error is now returned (temporarily) for non- 5617constant values for this parameter. 5618 5619Fixed problem reports (Fiodor Suietov) integrated: 5620- Fix for premature object deletion after CopyObject on Operation Region 5621(BZ 5622350) 5623 5624Example Code and Data Size: These are the sizes for the OS-independent 5625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5626debug version of the code includes the debug output trace mechanism and 5627has 5628a much larger code and data size. 5629 5630 Previous Release: 5631 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 5632 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 5633 Current Release: 5634 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 5635 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 5636 5637 56382) iASL Compiler/Disassembler and Tools: 5639 5640No changes for this release. 5641 5642---------------------------------------- 564307 July 2006. Summary of changes for version 20060707: 5644 56451) ACPI CA Core Subsystem: 5646 5647Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 5648that do not allow the initialization of address pointers within packed 5649structures - even though the hardware itself may support misaligned 5650transfers. Some of the debug data structures are packed by default to 5651minimize size. 5652 5653Added an error message for the case where AcpiOsGetThreadId() returns 5654zero. 5655A non-zero value is required by the core ACPICA code to ensure the proper 5656operation of AML mutexes and recursive control methods. 5657 5658The DSDT is now the only ACPI table that determines whether the AML 5659interpreter is in 32-bit or 64-bit mode. Not really a functional change, 5660but 5661the hooks for per-table 32/64 switching have been removed from the code. A 5662clarification to the ACPI specification is forthcoming in ACPI 3.0B. 5663 5664Fixed a possible leak of an OwnerID in the error path of 5665AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 5666deletion to a single place in AcpiTbUninstallTable to correct possible 5667leaks 5668when using the AcpiTbDeleteTablesByType interface (with assistance from 5669Lance Ortiz.) 5670 5671Fixed a problem with Serialized control methods where the semaphore 5672associated with the method could be over-signaled after multiple method 5673invocations. 5674 5675Fixed two issues with the locking of the internal namespace data 5676structure. 5677Both the Unload() operator and AcpiUnloadTable interface now lock the 5678namespace during the namespace deletion associated with the table unload 5679(with assistance from Linn Crosetto.) 5680 5681Fixed problem reports (Valery Podrezov) integrated: 5682- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 5683 5684Fixed problem reports (Fiodor Suietov) integrated: 5685- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 5686- On Address Space handler deletion, needless deactivation call (BZ 374) 5687- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375) 5688- Possible memory leak, Notify sub-objects of Processor, Power, 5689ThermalZone 5690(BZ 376) 5691- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 5692- Minimum Length of RSDT should be validated (BZ 379) 5693- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 5694Handler (BZ (380) 5695- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 5696loaded 5697(BZ 381) 5698 5699Example Code and Data Size: These are the sizes for the OS-independent 5700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5701debug version of the code includes the debug output trace mechanism and 5702has 5703a much larger code and data size. 5704 5705 Previous Release: 5706 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 5707 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 5708 Current Release: 5709 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 5710 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 5711 5712 57132) iASL Compiler/Disassembler and Tools: 5714 5715Fixed problem reports: 5716Compiler segfault when ASL contains a long (>1024) String declaration (BZ 5717436) 5718 5719---------------------------------------- 572023 June 2006. Summary of changes for version 20060623: 5721 57221) ACPI CA Core Subsystem: 5723 5724Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 5725allows the type to be customized to the host OS for improved efficiency 5726(since a spinlock is usually a very small object.) 5727 5728Implemented support for "ignored" bits in the ACPI registers. According to 5729the ACPI specification, these bits should be preserved when writing the 5730registers via a read/modify/write cycle. There are 3 bits preserved in 5731this 5732manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 5733 5734Implemented the initial deployment of new OSL mutex interfaces. Since some 5735host operating systems have separate mutex and semaphore objects, this 5736feature was requested. The base code now uses mutexes (and the new mutex 5737interfaces) wherever a binary semaphore was used previously. However, for 5738the current release, the mutex interfaces are defined as macros to map 5739them 5740to the existing semaphore interfaces. Therefore, no OSL changes are 5741required 5742at this time. (See acpiosxf.h) 5743 5744Fixed several problems with the support for the control method SyncLevel 5745parameter. The SyncLevel now works according to the ACPI specification and 5746in concert with the Mutex SyncLevel parameter, since the current SyncLevel 5747is a property of the executing thread. Mutual exclusion for control 5748methods 5749is now implemented with a mutex instead of a semaphore. 5750 5751Fixed three instances of the use of the C shift operator in the bitfield 5752support code (exfldio.c) to avoid the use of a shift value larger than the 5753target data width. The behavior of C compilers is undefined in this case 5754and 5755can cause unpredictable results, and therefore the case must be detected 5756and 5757avoided. (Fiodor Suietov) 5758 5759Added an info message whenever an SSDT or OEM table is loaded dynamically 5760via the Load() or LoadTable() ASL operators. This should improve debugging 5761capability since it will show exactly what tables have been loaded (beyond 5762the tables present in the RSDT/XSDT.) 5763 5764Example Code and Data Size: These are the sizes for the OS-independent 5765acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5766debug version of the code includes the debug output trace mechanism and 5767has 5768a much larger code and data size. 5769 5770 Previous Release: 5771 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 5772 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 5773 Current Release: 5774 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 5775 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 5776 5777 57782) iASL Compiler/Disassembler and Tools: 5779 5780No changes for this release. 5781 5782---------------------------------------- 578308 June 2006. Summary of changes for version 20060608: 5784 57851) ACPI CA Core Subsystem: 5786 5787Converted the locking mutex used for the ACPI hardware to a spinlock. This 5788change should eliminate all problems caused by attempting to acquire a 5789semaphore at interrupt level, and it means that all ACPICA external 5790interfaces that directly access the ACPI hardware can be safely called 5791from 5792interrupt level. OSL code that implements the semaphore interfaces should 5793be 5794able to eliminate any workarounds for being called at interrupt level. 5795 5796Fixed a regression introduced in 20060526 where the ACPI device 5797initialization could be prematurely aborted with an AE_NOT_FOUND if a 5798device 5799did not have an optional _INI method. 5800 5801Fixed an IndexField issue where a write to the Data Register should be 5802limited in size to the AccessSize (width) of the IndexField itself. (BZ 5803433, 5804Fiodor Suietov) 5805 5806Fixed problem reports (Valery Podrezov) integrated: 5807- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 5808 5809Fixed problem reports (Fiodor Suietov) integrated: 5810- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 5811 5812Removed four global mutexes that were obsolete and were no longer being 5813used. 5814 5815Example Code and Data Size: These are the sizes for the OS-independent 5816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5817debug version of the code includes the debug output trace mechanism and 5818has 5819a much larger code and data size. 5820 5821 Previous Release: 5822 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 5823 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 5824 Current Release: 5825 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 5826 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 5827 5828 58292) iASL Compiler/Disassembler and Tools: 5830 5831Fixed a fault when using -g option (get tables from registry) on Windows 5832machines. 5833 5834Fixed problem reports integrated: 5835- Generate error if CreateField NumBits parameter is zero. (BZ 405) 5836- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 5837Suietov) 5838- Global table revision override (-r) is ignored (BZ 413) 5839 5840---------------------------------------- 584126 May 2006. Summary of changes for version 20060526: 5842 58431) ACPI CA Core Subsystem: 5844 5845Restructured, flattened, and simplified the internal interfaces for 5846namespace object evaluation - resulting in smaller code, less CPU stack 5847use, 5848and fewer interfaces. (With assistance from Mikhail Kouzmich) 5849 5850Fixed a problem with the CopyObject operator where the first parameter was 5851not typed correctly for the parser, interpreter, compiler, and 5852disassembler. 5853Caused various errors and unexpected behavior. 5854 5855Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 5856produced incorrect results with some C compilers. Since the behavior of C 5857compilers when the shift value is larger than the datatype width is 5858apparently not well defined, the interpreter now detects this condition 5859and 5860simply returns zero as expected in all such cases. (BZ 395) 5861 5862Fixed problem reports (Valery Podrezov) integrated: 5863- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 5864- Allow interpreter to handle nested method declarations (BZ 5361) 5865 5866Fixed problem reports (Fiodor Suietov) integrated: 5867- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355) 5868- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 5869356) 5870- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 5871- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 5872- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 5873- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 5874- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 5875- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 5876- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 5877365) 5878- Status of the Global Initialization Handler call not used (BZ 366) 5879- Incorrect object parameter to Global Initialization Handler (BZ 367) 5880 5881Example Code and Data Size: These are the sizes for the OS-independent 5882acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5883debug version of the code includes the debug output trace mechanism and 5884has 5885a much larger code and data size. 5886 5887 Previous Release: 5888 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 5889 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 5890 Current Release: 5891 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 5892 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 5893 5894 58952) iASL Compiler/Disassembler and Tools: 5896 5897Modified the parser to allow the names IO, DMA, and IRQ to be used as 5898namespace identifiers with no collision with existing resource descriptor 5899macro names. This provides compatibility with other ASL compilers and is 5900most useful for disassembly/recompilation of existing tables without parse 5901errors. (With assistance from Thomas Renninger) 5902 5903Disassembler: fixed an incorrect disassembly problem with the 5904DataTableRegion and CopyObject operators. Fixed a possible fault during 5905disassembly of some Alias operators. 5906 5907---------------------------------------- 590812 May 2006. Summary of changes for version 20060512: 5909 59101) ACPI CA Core Subsystem: 5911 5912Replaced the AcpiOsQueueForExecution interface with a new interface named 5913AcpiOsExecute. The major difference is that the new interface does not 5914have 5915a Priority parameter, this appeared to be useless and has been replaced by 5916a 5917Type parameter. The Type tells the host what type of execution is being 5918requested, such as global lock handler, notify handler, GPE handler, etc. 5919This allows the host to queue and execute the request as appropriate for 5920the 5921request type, possibly using different work queues and different 5922priorities 5923for the various request types. This enables fixes for multithreading 5924deadlock problems such as BZ #5534, and will require changes to all 5925existing 5926OS interface layers. (Alexey Starikovskiy and Bob Moore) 5927 5928Fixed a possible memory leak associated with the support for the so-called 5929"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 5930Suietov) 5931 5932Fixed a problem with the Load() operator where a table load from an 5933operation region could overwrite an internal table buffer by up to 7 bytes 5934and cause alignment faults on IPF systems. (With assistance from Luming 5935Yu) 5936 5937Example Code and Data Size: These are the sizes for the OS-independent 5938acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5939debug version of the code includes the debug output trace mechanism and 5940has 5941a much larger code and data size. 5942 5943 Previous Release: 5944 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 5945 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 5946 Current Release: 5947 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 5948 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 5949 5950 5951 59522) iASL Compiler/Disassembler and Tools: 5953 5954Disassembler: Implemented support to cross reference the internal 5955namespace 5956and automatically generate ASL External() statements for symbols not 5957defined 5958within the current table being disassembled. This will simplify the 5959disassembly and recompilation of interdependent tables such as SSDTs since 5960these statements will no longer have to be added manually. 5961 5962Disassembler: Implemented experimental support to automatically detect 5963invocations of external control methods and generate appropriate 5964External() 5965statements. This is problematic because the AML cannot be correctly parsed 5966until the number of arguments for each control method is known. Currently, 5967standalone method invocations and invocations as the source operand of a 5968Store() statement are supported. 5969 5970Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 5971LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 5972LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 5973more readable and likely closer to the original ASL source. 5974 5975---------------------------------------- 597621 April 2006. Summary of changes for version 20060421: 5977 59781) ACPI CA Core Subsystem: 5979 5980Removed a device initialization optimization introduced in 20051216 where 5981the _STA method was not run unless an _INI was also present for the same 5982device. This optimization could cause problems because it could allow _INI 5983methods to be run within a not-present device subtree. (If a not-present 5984device had no _INI, _STA would not be run, the not-present status would 5985not 5986be discovered, and the children of the device would be incorrectly 5987traversed.) 5988 5989Implemented a new _STA optimization where namespace subtrees that do not 5990contain _INI are identified and ignored during device initialization. 5991Selectively running _STA can significantly improve boot time on large 5992machines (with assistance from Len Brown.) 5993 5994Implemented support for the device initialization case where the returned 5995_STA flags indicate a device not-present but functioning. In this case, 5996_INI 5997is not run, but the device children are examined for presence, as per the 5998ACPI specification. 5999 6000Implemented an additional change to the IndexField support in order to 6001conform to MS behavior. The value written to the Index Register is not 6002simply a byte offset, it is a byte offset in units of the access width of 6003the parent Index Field. (Fiodor Suietov) 6004 6005Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 6006interface is called during the creation of all AML operation regions, and 6007allows the host OS to exert control over what addresses it will allow the 6008AML code to access. Operation Regions whose addresses are disallowed will 6009cause a runtime exception when they are actually accessed (will not affect 6010or abort table loading.) See oswinxf or osunixxf for an example 6011implementation. 6012 6013Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 6014interface allows the host OS to match the various "optional" 6015interface/behavior strings for the _OSI predefined control method as 6016appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 6017for an example implementation. 6018 6019Restructured and corrected various problems in the exception handling code 6020paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 6021(with assistance from Takayoshi Kochi.) 6022 6023Modified the Linux source converter to ignore quoted string literals while 6024converting identifiers from mixed to lower case. This will correct 6025problems 6026with the disassembler and other areas where such strings must not be 6027modified. 6028 6029The ACPI_FUNCTION_* macros no longer require quotes around the function 6030name. This allows the Linux source converter to convert the names, now 6031that 6032the converter ignores quoted strings. 6033 6034Example Code and Data Size: These are the sizes for the OS-independent 6035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6036debug version of the code includes the debug output trace mechanism and 6037has 6038a much larger code and data size. 6039 6040 Previous Release: 6041 6042 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 6043 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 6044 Current Release: 6045 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 6046 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 6047 6048 60492) iASL Compiler/Disassembler and Tools: 6050 6051Implemented 3 new warnings for iASL, and implemented multiple warning 6052levels 6053(w2 flag). 6054 60551) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 6056not 6057WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 6058check for the possible timeout, a warning is issued. 6059 60602) Useless operators: If an ASL operator does not specify an optional 6061target 6062operand and it also does not use the function return value from the 6063operator, a warning is issued since the operator effectively does nothing. 6064 60653) Unreferenced objects: If a namespace object is created, but never 6066referenced, a warning is issued. This is a warning level 2 since there are 6067cases where this is ok, such as when a secondary table is loaded that uses 6068the unreferenced objects. Even so, care is taken to only flag objects that 6069don't look like they will ever be used. For example, the reserved methods 6070(starting with an underscore) are usually not referenced because it is 6071expected that the OS will invoke them. 6072 6073---------------------------------------- 607431 March 2006. Summary of changes for version 20060331: 6075 60761) ACPI CA Core Subsystem: 6077 6078Implemented header file support for the following additional ACPI tables: 6079ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 6080support, 6081all current and known ACPI tables are now defined in the ACPICA headers 6082and 6083are available for use by device drivers and other software. 6084 6085Implemented support to allow tables that contain ACPI names with invalid 6086characters to be loaded. Previously, this would cause the table load to 6087fail, but since there are several known cases of such tables on existing 6088machines, this change was made to enable ACPI support for them. Also, this 6089matches the behavior of the Microsoft ACPI implementation. 6090 6091Fixed a couple regressions introduced during the memory optimization in 6092the 609320060317 release. The namespace node definition required additional 6094reorganization and an internal datatype that had been changed to 8-bit was 6095restored to 32-bit. (Valery Podrezov) 6096 6097Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 6098could be passed through to AcpiOsReleaseObject which is unexpected. Such 6099null pointers are now trapped and ignored, matching the behavior of the 6100previous implementation before the deployment of AcpiOsReleaseObject. 6101(Valery Podrezov, Fiodor Suietov) 6102 6103Fixed a memory mapping leak during the deletion of a SystemMemory 6104operation 6105region where a cached memory mapping was not deleted. This became a 6106noticeable problem for operation regions that are defined within 6107frequently 6108used control methods. (Dana Meyers) 6109 6110Reorganized the ACPI table header files into two main files: one for the 6111ACPI tables consumed by the ACPICA core, and another for the miscellaneous 6112ACPI tables that are consumed by the drivers and other software. The 6113various 6114FADT definitions were merged into one common section and three different 6115tables (ACPI 1.0, 1.0+, and 2.0) 6116 6117Example Code and Data Size: These are the sizes for the OS-independent 6118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6119debug version of the code includes the debug output trace mechanism and 6120has 6121a much larger code and data size. 6122 6123 Previous Release: 6124 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 6125 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 6126 Current Release: 6127 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 6128 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 6129 6130 61312) iASL Compiler/Disassembler and Tools: 6132 6133Disassembler: Implemented support to decode and format all non-AML ACPI 6134tables (tables other than DSDTs and SSDTs.) This includes the new tables 6135added to the ACPICA headers, therefore all current and known ACPI tables 6136are 6137supported. 6138 6139Disassembler: The change to allow ACPI names with invalid characters also 6140enables the disassembly of such tables. Invalid characters within names 6141are 6142changed to '*' to make the name printable; the iASL compiler will still 6143generate an error for such names, however, since this is an invalid ACPI 6144character. 6145 6146Implemented an option for AcpiXtract (-a) to extract all tables found in 6147the 6148input file. The default invocation extracts only the DSDTs and SSDTs. 6149 6150Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 6151makefile for the AcpiXtract utility. 6152 6153---------------------------------------- 615417 March 2006. Summary of changes for version 20060317: 6155 61561) ACPI CA Core Subsystem: 6157 6158Implemented the use of a cache object for all internal namespace nodes. 6159Since there are about 1000 static nodes in a typical system, this will 6160decrease memory use for cache implementations that minimize per-allocation 6161overhead (such as a slab allocator.) 6162 6163Removed the reference count mechanism for internal namespace nodes, since 6164it 6165was deemed unnecessary. This reduces the size of each namespace node by 6166about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 6167and 32 bytes for the 64-bit case. 6168 6169Optimized several internal data structures to reduce object size on 64-bit 6170platforms by packing data within the 64-bit alignment. This includes the 6171frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 6172instances corresponding to the namespace objects. 6173 6174Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 6175and "Windows 2006". 6176 6177Split the allocation tracking mechanism out to a separate file, from 6178utalloc.c to uttrack.c. This mechanism appears to be only useful for 6179application-level code. Kernels may wish to not include uttrack.c in 6180distributions. 6181 6182Removed all remnants of the obsolete ACPI_REPORT_* macros and the 6183associated 6184code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 6185macros.) 6186 6187Code and Data Size: These are the sizes for the acpica.lib produced by the 6188Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 6189ACPI 6190driver or OSPM code. The debug version of the code includes the debug 6191output 6192trace mechanism and has a much larger code and data size. Note that these 6193values will vary depending on the efficiency of the compiler and the 6194compiler options used during generation. 6195 6196 Previous Release: 6197 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6198 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 6199 Current Release: 6200 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 6201 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 6202 6203 62042) iASL Compiler/Disassembler and Tools: 6205 6206Implemented an ANSI C version of the acpixtract utility. This version will 6207automatically extract the DSDT and all SSDTs from the input acpidump text 6208file and dump the binary output to separate files. It can also display a 6209summary of the input file including the headers for each table found and 6210will extract any single ACPI table, with any signature. (See 6211source/tools/acpixtract) 6212 6213---------------------------------------- 621410 March 2006. Summary of changes for version 20060310: 6215 62161) ACPI CA Core Subsystem: 6217 6218Tagged all external interfaces to the subsystem with the new 6219ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 6220kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 6221macro. The default definition is NULL. 6222 6223Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 6224This allows the host to define this as necessary to simplify kernel 6225integration. The default definition is ACPI_NATIVE_UINT. 6226 6227Fixed two interpreter problems related to error processing, the deletion 6228of 6229objects, and placing invalid pointers onto the internal operator result 6230stack. BZ 6028, 6151 (Valery Podrezov) 6231 6232Increased the reference count threshold where a warning is emitted for 6233large 6234reference counts in order to eliminate unnecessary warnings on systems 6235with 6236large namespaces (especially 64-bit.) Increased the value from 0x400 to 62370x800. 6238 6239Due to universal disagreement as to the meaning of the 'c' in the calloc() 6240function, the ACPI_MEM_CALLOCATE macro has been renamed to 6241ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 6242ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 6243ACPI_FREE. 6244 6245Code and Data Size: These are the sizes for the acpica.lib produced by the 6246Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 6247ACPI 6248driver or OSPM code. The debug version of the code includes the debug 6249output 6250trace mechanism and has a much larger code and data size. Note that these 6251values will vary depending on the efficiency of the compiler and the 6252compiler options used during generation. 6253 6254 Previous Release: 6255 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 6256 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 6257 Current Release: 6258 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6259 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 6260 6261 62622) iASL Compiler/Disassembler: 6263 6264Disassembler: implemented support for symbolic resource descriptor 6265references. If a CreateXxxxField operator references a fixed offset within 6266a 6267resource descriptor, a name is assigned to the descriptor and the offset 6268is 6269translated to the appropriate resource tag and pathname. The addition of 6270this support brings the disassembled code very close to the original ASL 6271source code and helps eliminate run-time errors when the disassembled code 6272is modified (and recompiled) in such a way as to invalidate the original 6273fixed offsets. 6274 6275Implemented support for a Descriptor Name as the last parameter to the ASL 6276Register() macro. This parameter was inadvertently left out of the ACPI 6277specification, and will be added for ACPI 3.0b. 6278 6279Fixed a problem where the use of the "_OSI" string (versus the full path 6280"\_OSI") caused an internal compiler error. ("No back ptr to op") 6281 6282Fixed a problem with the error message that occurs when an invalid string 6283is 6284used for a _HID object (such as one with an embedded asterisk: 6285"*PNP010A".) 6286The correct message is now displayed. 6287 6288---------------------------------------- 628917 February 2006. Summary of changes for version 20060217: 6290 62911) ACPI CA Core Subsystem: 6292 6293Implemented a change to the IndexField support to match the behavior of 6294the 6295Microsoft AML interpreter. The value written to the Index register is now 6296a 6297byte offset, no longer an index based upon the width of the Data register. 6298This should fix IndexField problems seen on some machines where the Data 6299register is not exactly one byte wide. The ACPI specification will be 6300clarified on this point. 6301 6302Fixed a problem where several resource descriptor types could overrun the 6303internal descriptor buffer due to size miscalculation: VendorShort, 6304VendorLong, and Interrupt. This was noticed on IA64 machines, but could 6305affect all platforms. 6306 6307Fixed a problem where individual resource descriptors were misaligned 6308within 6309the internal buffer, causing alignment faults on IA64 platforms. 6310 6311Code and Data Size: These are the sizes for the acpica.lib produced by the 6312Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 6313ACPI 6314driver or OSPM code. The debug version of the code includes the debug 6315output 6316trace mechanism and has a much larger code and data size. Note that these 6317values will vary depending on the efficiency of the compiler and the 6318compiler options used during generation. 6319 6320 Previous Release: 6321 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6322 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 6323 Current Release: 6324 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 6325 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 6326 6327 63282) iASL Compiler/Disassembler: 6329 6330Implemented support for new reserved names: _WDG and _WED are Microsoft 6331extensions for Windows Instrumentation Management, _TDL is a new ACPI- 6332defined method (Throttling Depth Limit.) 6333 6334Fixed a problem where a zero-length VendorShort or VendorLong resource 6335descriptor was incorrectly emitted as a descriptor of length one. 6336 6337---------------------------------------- 633810 February 2006. Summary of changes for version 20060210: 6339 63401) ACPI CA Core Subsystem: 6341 6342Removed a couple of extraneous ACPI_ERROR messages that appeared during 6343normal execution. These became apparent after the conversion from 6344ACPI_DEBUG_PRINT. 6345 6346Fixed a problem where the CreateField operator could hang if the BitIndex 6347or 6348NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 6349 6350Fixed a problem where a DeRefOf operation on a buffer object incorrectly 6351failed with an exception. This also fixes a couple of related RefOf and 6352DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 6353 6354Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 6355of 6356AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 6357BZ 63585480) 6359 6360Implemented a memory cleanup at the end of the execution of each iteration 6361of an AML While() loop, preventing the accumulation of outstanding 6362objects. 6363(Valery Podrezov, BZ 5427) 6364 6365Eliminated a chunk of duplicate code in the object resolution code. 6366(Valery 6367Podrezov, BZ 5336) 6368 6369Fixed several warnings during the 64-bit code generation. 6370 6371The AcpiSrc source code conversion tool now inserts one line of whitespace 6372after an if() statement that is followed immediately by a comment, 6373improving 6374readability of the Linux code. 6375 6376Code and Data Size: The current and previous library sizes for the core 6377subsystem are shown below. These are the code and data sizes for the 6378acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6379values do not include any ACPI driver or OSPM code. The debug version of 6380the 6381code includes the debug output trace mechanism and has a much larger code 6382and data size. Note that these values will vary depending on the 6383efficiency 6384of the compiler and the compiler options used during generation. 6385 6386 Previous Release: 6387 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 6388 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 6389 Current Release: 6390 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6391 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 6392 6393 63942) iASL Compiler/Disassembler: 6395 6396Fixed a problem with the disassembly of a BankField operator with a 6397complex 6398expression for the BankValue parameter. 6399 6400---------------------------------------- 640127 January 2006. Summary of changes for version 20060127: 6402 64031) ACPI CA Core Subsystem: 6404 6405Implemented support in the Resource Manager to allow unresolved namestring 6406references within resource package objects for the _PRT method. This 6407support 6408is in addition to the previously implemented unresolved reference support 6409within the AML parser. If the interpreter slack mode is enabled, these 6410unresolved references will be passed through to the caller as a NULL 6411package 6412entry. 6413 6414Implemented and deployed new macros and functions for error and warning 6415messages across the subsystem. These macros are simpler and generate less 6416code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 6417ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 6418macros remain defined to allow ACPI drivers time to migrate to the new 6419macros. 6420 6421Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 6422Acquire/Release Lock OSL interfaces. 6423 6424Fixed a problem where Alias ASL operators are sometimes not correctly 6425resolved, in both the interpreter and the iASL compiler. 6426 6427Fixed several problems with the implementation of the 6428ConcatenateResTemplate 6429ASL operator. As per the ACPI specification, zero length buffers are now 6430treated as a single EndTag. One-length buffers always cause a fatal 6431exception. Non-zero length buffers that do not end with a full 2-byte 6432EndTag 6433cause a fatal exception. 6434 6435Fixed a possible structure overwrite in the AcpiGetObjectInfo external 6436interface. (With assistance from Thomas Renninger) 6437 6438Code and Data Size: The current and previous library sizes for the core 6439subsystem are shown below. These are the code and data sizes for the 6440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6441values do not include any ACPI driver or OSPM code. The debug version of 6442the 6443code includes the debug output trace mechanism and has a much larger code 6444and data size. Note that these values will vary depending on the 6445efficiency 6446of the compiler and the compiler options used during generation. 6447 6448 Previous Release: 6449 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 6450 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 6451 Current Release: 6452 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 6453 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 6454 6455 64562) iASL Compiler/Disassembler: 6457 6458Fixed an internal error that was generated for any forward references to 6459ASL 6460Alias objects. 6461 6462---------------------------------------- 646313 January 2006. Summary of changes for version 20060113: 6464 64651) ACPI CA Core Subsystem: 6466 6467Added 2006 copyright to all module headers and signons. This affects 6468virtually every file in the ACPICA core subsystem, iASL compiler, and the 6469utilities. 6470 6471Enhanced the ACPICA error reporting in order to simplify user migration to 6472the non-debug version of ACPICA. Replaced all instances of the 6473ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 6474levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 6475respectively. This preserves all error and warning messages in the non- 6476debug 6477version of the ACPICA code (this has been referred to as the "debug lite" 6478option.) Over 200 cases were converted to create a total of over 380 6479error/warning messages across the ACPICA code. This increases the code and 6480data size of the default non-debug version of the code somewhat (about 648113K), 6482but all error/warning reporting may be disabled if desired (and code 6483eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 6484configuration option. The size of the debug version of ACPICA remains 6485about 6486the same. 6487 6488Fixed a memory leak within the AML Debugger "Set" command. One object was 6489not properly deleted for every successful invocation of the command. 6490 6491Code and Data Size: The current and previous library sizes for the core 6492subsystem are shown below. These are the code and data sizes for the 6493acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6494values do not include any ACPI driver or OSPM code. The debug version of 6495the 6496code includes the debug output trace mechanism and has a much larger code 6497and data size. Note that these values will vary depending on the 6498efficiency 6499of the compiler and the compiler options used during generation. 6500 6501 Previous Release: 6502 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 6503 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 6504 Current Release: 6505 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 6506 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 6507 6508 65092) iASL Compiler/Disassembler: 6510 6511The compiler now officially supports the ACPI 3.0a specification that was 6512released on December 30, 2005. (Specification is available at 6513www.acpi.info) 6514 6515---------------------------------------- 651616 December 2005. Summary of changes for version 20051216: 6517 65181) ACPI CA Core Subsystem: 6519 6520Implemented optional support to allow unresolved names within ASL Package 6521objects. A null object is inserted in the package when a named reference 6522cannot be located in the current namespace. Enabled via the interpreter 6523slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 6524that contain such code. 6525 6526Implemented an optimization to the initialization sequence that can 6527improve 6528boot time. During ACPI device initialization, the _STA method is now run 6529if 6530and only if the _INI method exists. The _STA method is used to determine 6531if 6532the device is present; An _INI can only be run if _STA returns present, 6533but 6534it is a waste of time to run the _STA method if the _INI does not exist. 6535(Prototype and assistance from Dong Wei) 6536 6537Implemented use of the C99 uintptr_t for the pointer casting macros if it 6538is 6539available in the current compiler. Otherwise, the default (void *) cast is 6540used as before. 6541 6542Fixed some possible memory leaks found within the execution path of the 6543Break, Continue, If, and CreateField operators. (Valery Podrezov) 6544 6545Fixed a problem introduced in the 20051202 release where an exception is 6546generated during method execution if a control method attempts to declare 6547another method. 6548 6549Moved resource descriptor string constants that are used by both the AML 6550disassembler and AML debugger to the common utilities directory so that 6551these components are independent. 6552 6553Implemented support in the AcpiExec utility (-e switch) to globally ignore 6554exceptions during control method execution (method is not aborted.) 6555 6556Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 6557generation. 6558 6559Code and Data Size: The current and previous library sizes for the core 6560subsystem are shown below. These are the code and data sizes for the 6561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6562values do not include any ACPI driver or OSPM code. The debug version of 6563the 6564code includes the debug output trace mechanism and has a much larger code 6565and data size. Note that these values will vary depending on the 6566efficiency 6567of the compiler and the compiler options used during generation. 6568 6569 Previous Release: 6570 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6571 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 6572 Current Release: 6573 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 6574 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 6575 6576 65772) iASL Compiler/Disassembler: 6578 6579Fixed a problem where a CPU stack overflow fault could occur if a 6580recursive 6581method call was made from within a Return statement. 6582 6583---------------------------------------- 658402 December 2005. Summary of changes for version 20051202: 6585 65861) ACPI CA Core Subsystem: 6587 6588Modified the parsing of control methods to no longer create namespace 6589objects during the first pass of the parse. Objects are now created only 6590during the execute phase, at the moment the namespace creation operator is 6591encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 6592should eliminate ALREADY_EXISTS exceptions seen on some machines where 6593reentrant control methods are protected by an AML mutex. The mutex will 6594now 6595correctly block multiple threads from attempting to create the same object 6596more than once. 6597 6598Increased the number of available Owner Ids for namespace object tracking 6599from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 6600on 6601some machines with a large number of ACPI tables (either static or 6602dynamic). 6603 6604Fixed a problem with the AcpiExec utility where a fault could occur when 6605the 6606-b switch (batch mode) is used. 6607 6608Enhanced the namespace dump routine to output the owner ID for each 6609namespace object. 6610 6611Code and Data Size: The current and previous library sizes for the core 6612subsystem are shown below. These are the code and data sizes for the 6613acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6614values do not include any ACPI driver or OSPM code. The debug version of 6615the 6616code includes the debug output trace mechanism and has a much larger code 6617and data size. Note that these values will vary depending on the 6618efficiency 6619of the compiler and the compiler options used during generation. 6620 6621 Previous Release: 6622 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6623 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6624 Current Release: 6625 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6626 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 6627 6628 66292) iASL Compiler/Disassembler: 6630 6631Fixed a parse error during compilation of certain Switch/Case constructs. 6632To 6633simplify the parse, the grammar now allows for multiple Default statements 6634and this error is now detected and flagged during the analysis phase. 6635 6636Disassembler: The disassembly now includes the contents of the original 6637table header within a comment at the start of the file. This includes the 6638name and version of the original ASL compiler. 6639 6640---------------------------------------- 664117 November 2005. Summary of changes for version 20051117: 6642 66431) ACPI CA Core Subsystem: 6644 6645Fixed a problem in the AML parser where the method thread count could be 6646decremented below zero if any errors occurred during the method parse 6647phase. 6648This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 6649machines. 6650This also fixed a related regression with the mechanism that detects and 6651corrects methods that cannot properly handle reentrancy (related to the 6652deployment of the new OwnerId mechanism.) 6653 6654Eliminated the pre-parsing of control methods (to detect errors) during 6655table load. Related to the problem above, this was causing unwind issues 6656if 6657any errors occurred during the parse, and it seemed to be overkill. A 6658table 6659load should not be aborted if there are problems with any single control 6660method, thus rendering this feature rather pointless. 6661 6662Fixed a problem with the new table-driven resource manager where an 6663internal 6664buffer overflow could occur for small resource templates. 6665 6666Implemented a new external interface, AcpiGetVendorResource. This 6667interface 6668will find and return a vendor-defined resource descriptor within a _CRS or 6669_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 6670Helgaas. 6671 6672Removed the length limit (200) on string objects as per the upcoming ACPI 66733.0A specification. This affects the following areas of the interpreter: 66741) 6675any implicit conversion of a Buffer to a String, 2) a String object result 6676of the ASL Concatentate operator, 3) the String object result of the ASL 6677ToString operator. 6678 6679Fixed a problem in the Windows OS interface layer (OSL) where a 6680WAIT_FOREVER 6681on a semaphore object would incorrectly timeout. This allows the 6682multithreading features of the AcpiExec utility to work properly under 6683Windows. 6684 6685Updated the Linux makefiles for the iASL compiler and AcpiExec to include 6686the recently added file named "utresrc.c". 6687 6688Code and Data Size: The current and previous library sizes for the core 6689subsystem are shown below. These are the code and data sizes for the 6690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6691values do not include any ACPI driver or OSPM code. The debug version of 6692the 6693code includes the debug output trace mechanism and has a much larger code 6694and data size. Note that these values will vary depending on the 6695efficiency 6696of the compiler and the compiler options used during generation. 6697 6698 Previous Release: 6699 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 6700 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6701 Current Release: 6702 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6703 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6704 6705 67062) iASL Compiler/Disassembler: 6707 6708Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 6709specification. For the iASL compiler, this means that string literals 6710within 6711the source ASL can be of any length. 6712 6713Enhanced the listing output to dump the AML code for resource descriptors 6714immediately after the ASL code for each descriptor, instead of in a block 6715at 6716the end of the entire resource template. 6717 6718Enhanced the compiler debug output to dump the entire original parse tree 6719constructed during the parse phase, before any transforms are applied to 6720the 6721tree. The transformed tree is dumped also. 6722 6723---------------------------------------- 672402 November 2005. Summary of changes for version 20051102: 6725 67261) ACPI CA Core Subsystem: 6727 6728Modified the subsystem initialization sequence to improve GPE support. The 6729GPE initialization has been split into two parts in order to defer 6730execution 6731of the _PRW methods (Power Resources for Wake) until after the hardware is 6732fully initialized and the SCI handler is installed. This allows the _PRW 6733methods to access fields protected by the Global Lock. This will fix 6734systems 6735where a NO_GLOBAL_LOCK exception has been seen during initialization. 6736 6737Converted the ACPI internal object disassemble and display code within the 6738AML debugger to fully table-driven operation, reducing code size and 6739increasing maintainability. 6740 6741Fixed a regression with the ConcatenateResTemplate() ASL operator 6742introduced 6743in the 20051021 release. 6744 6745Implemented support for "local" internal ACPI object types within the 6746debugger "Object" command and the AcpiWalkNamespace external interfaces. 6747These local types include RegionFields, BankFields, IndexFields, Alias, 6748and 6749reference objects. 6750 6751Moved common AML resource handling code into a new file, "utresrc.c". This 6752code is shared by both the Resource Manager and the AML Debugger. 6753 6754Code and Data Size: The current and previous library sizes for the core 6755subsystem are shown below. These are the code and data sizes for the 6756acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6757values do not include any ACPI driver or OSPM code. The debug version of 6758the 6759code includes the debug output trace mechanism and has a much larger code 6760and data size. Note that these values will vary depending on the 6761efficiency 6762of the compiler and the compiler options used during generation. 6763 6764 Previous Release: 6765 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 6766 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 6767 Current Release: 6768 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 6769 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6770 6771 67722) iASL Compiler/Disassembler: 6773 6774Fixed a problem with very large initializer lists (more than 4000 6775elements) 6776for both Buffer and Package objects where the parse stack could overflow. 6777 6778Enhanced the pre-compile source code scan for non-ASCII characters to 6779ignore 6780characters within comment fields. The scan is now always performed and is 6781no 6782longer optional, detecting invalid characters within a source file 6783immediately rather than during the parse phase or later. 6784 6785Enhanced the ASL grammar definition to force early reductions on all list- 6786style grammar elements so that the overall parse stack usage is greatly 6787reduced. This should improve performance and reduce the possibility of 6788parse 6789stack overflow. 6790 6791Eliminated all reduce/reduce conflicts in the iASL parser generation. 6792Also, 6793with the addition of a %expected statement, the compiler generates from 6794source with no warnings. 6795 6796Fixed a possible segment fault in the disassembler if the input filename 6797does not contain a "dot" extension (Thomas Renninger). 6798 6799---------------------------------------- 680021 October 2005. Summary of changes for version 20051021: 6801 68021) ACPI CA Core Subsystem: 6803 6804Implemented support for the EM64T and other x86-64 processors. This 6805essentially entails recognizing that these processors support non-aligned 6806memory transfers. Previously, all 64-bit processors were assumed to lack 6807hardware support for non-aligned transfers. 6808 6809Completed conversion of the Resource Manager to nearly full table-driven 6810operation. Specifically, the resource conversion code (convert AML to 6811internal format and the reverse) and the debug code to dump internal 6812resource descriptors are fully table-driven, reducing code and data size 6813and 6814improving maintainability. 6815 6816The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 6817on 64-bit processors instead of a fixed 32-bit word. (With assistance from 6818Alexey Starikovskiy) 6819 6820Implemented support within the resource conversion code for the Type- 6821Specific byte within the various ACPI 3.0 *WordSpace macros. 6822 6823Fixed some issues within the resource conversion code for the type- 6824specific 6825flags for both Memory and I/O address resource descriptors. For Memory, 6826implemented support for the MTP and TTP flags. For I/O, split the TRS and 6827TTP flags into two separate fields. 6828 6829Code and Data Size: The current and previous library sizes for the core 6830subsystem are shown below. These are the code and data sizes for the 6831acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6832values do not include any ACPI driver or OSPM code. The debug version of 6833the 6834code includes the debug output trace mechanism and has a much larger code 6835and data size. Note that these values will vary depending on the 6836efficiency 6837of the compiler and the compiler options used during generation. 6838 6839 Previous Release: 6840 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 6841 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 6842 Current Release: 6843 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 6844 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 6845 6846 6847 68482) iASL Compiler/Disassembler: 6849 6850Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 6851corresponding ResourceSource string was not also present in a resource 6852descriptor declaration. This restriction caused problems with existing 6853AML/ASL code that includes the Index byte without the string. When such 6854AML 6855was disassembled, it could not be compiled without modification. Further, 6856the modified code created a resource template with a different size than 6857the 6858original, breaking code that used fixed offsets into the resource template 6859buffer. 6860 6861Removed a recent feature of the disassembler to ignore a lone 6862ResourceIndex 6863byte. This byte is now emitted if present so that the exact AML can be 6864reproduced when the disassembled code is recompiled. 6865 6866Improved comments and text alignment for the resource descriptor code 6867emitted by the disassembler. 6868 6869Implemented disassembler support for the ACPI 3.0 AccessSize field within 6870a 6871Register() resource descriptor. 6872 6873---------------------------------------- 687430 September 2005. Summary of changes for version 20050930: 6875 68761) ACPI CA Core Subsystem: 6877 6878Completed a major overhaul of the Resource Manager code - specifically, 6879optimizations in the area of the AML/internal resource conversion code. 6880The 6881code has been optimized to simplify and eliminate duplicated code, CPU 6882stack 6883use has been decreased by optimizing function parameters and local 6884variables, and naming conventions across the manager have been 6885standardized 6886for clarity and ease of maintenance (this includes function, parameter, 6887variable, and struct/typedef names.) The update may force changes in some 6888driver code, depending on how resources are handled by the host OS. 6889 6890All Resource Manager dispatch and information tables have been moved to a 6891single location for clarity and ease of maintenance. One new file was 6892created, named "rsinfo.c". 6893 6894The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 6895guarantee that the argument is not evaluated twice, making them less prone 6896to macro side-effects. However, since there exists the possibility of 6897additional stack use if a particular compiler cannot optimize them (such 6898as 6899in the debug generation case), the original macros are optionally 6900available. 6901Note that some invocations of the return_VALUE macro may now cause size 6902mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 6903to 6904eliminate these. (From Randy Dunlap) 6905 6906Implemented a new mechanism to enable debug tracing for individual control 6907methods. A new external interface, AcpiDebugTrace, is provided to enable 6908this mechanism. The intent is to allow the host OS to easily enable and 6909disable tracing for problematic control methods. This interface can be 6910easily exposed to a user or debugger interface if desired. See the file 6911psxface.c for details. 6912 6913AcpiUtCallocate will now return a valid pointer if a length of zero is 6914specified - a length of one is used and a warning is issued. This matches 6915the behavior of AcpiUtAllocate. 6916 6917Code and Data Size: The current and previous library sizes for the core 6918subsystem are shown below. These are the code and data sizes for the 6919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6920values do not include any ACPI driver or OSPM code. The debug version of 6921the 6922code includes the debug output trace mechanism and has a much larger code 6923and data size. Note that these values will vary depending on the 6924efficiency 6925of the compiler and the compiler options used during generation. 6926 6927 Previous Release: 6928 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 6929 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 6930 Current Release: 6931 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 6932 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 6933 6934 69352) iASL Compiler/Disassembler: 6936 6937A remark is issued if the effective compile-time length of a package or 6938buffer is zero. Previously, this was a warning. 6939 6940---------------------------------------- 694116 September 2005. Summary of changes for version 20050916: 6942 69431) ACPI CA Core Subsystem: 6944 6945Fixed a problem within the Resource Manager where support for the Generic 6946Register descriptor was not fully implemented. This descriptor is now 6947fully 6948recognized, parsed, disassembled, and displayed. 6949 6950Completely restructured the Resource Manager code to utilize table-driven 6951dispatch and lookup, eliminating many of the large switch() statements. 6952This 6953reduces overall subsystem code size and code complexity. Affects the 6954resource parsing and construction, disassembly, and debug dump output. 6955 6956Cleaned up and restructured the debug dump output for all resource 6957descriptors. Improved readability of the output and reduced code size. 6958 6959Fixed a problem where changes to internal data structures caused the 6960optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 6961 6962Code and Data Size: The current and previous library sizes for the core 6963subsystem are shown below. These are the code and data sizes for the 6964acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6965values do not include any ACPI driver or OSPM code. The debug version of 6966the 6967code includes the debug output trace mechanism and has a much larger code 6968and data size. Note that these values will vary depending on the 6969efficiency 6970of the compiler and the compiler options used during generation. 6971 6972 Previous Release: 6973 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 6974 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 6975 Current Release: 6976 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 6977 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 6978 6979 69802) iASL Compiler/Disassembler: 6981 6982Updated the disassembler to automatically insert an EndDependentFn() macro 6983into the ASL stream if this macro is missing in the original AML code, 6984simplifying compilation of the resulting ASL module. 6985 6986Fixed a problem in the disassembler where a disassembled ResourceSource 6987string (within a large resource descriptor) was not surrounded by quotes 6988and 6989not followed by a comma, causing errors when the resulting ASL module was 6990compiled. Also, escape sequences within a ResourceSource string are now 6991handled correctly (especially "\\") 6992 6993---------------------------------------- 699402 September 2005. Summary of changes for version 20050902: 6995 69961) ACPI CA Core Subsystem: 6997 6998Fixed a problem with the internal Owner ID allocation and deallocation 6999mechanisms for control method execution and recursive method invocation. 7000This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 7001messages seen on some systems. Recursive method invocation depth is 7002currently limited to 255. (Alexey Starikovskiy) 7003 7004Completely eliminated all vestiges of support for the "module-level 7005executable code" until this support is fully implemented and debugged. 7006This 7007should eliminate the NO_RETURN_VALUE exceptions seen during table load on 7008some systems that invoke this support. 7009 7010Fixed a problem within the resource manager code where the transaction 7011flags 7012for a 64-bit address descriptor were handled incorrectly in the type- 7013specific flag byte. 7014 7015Consolidated duplicate code within the address descriptor resource manager 7016code, reducing overall subsystem code size. 7017 7018Fixed a fault when using the AML debugger "disassemble" command to 7019disassemble individual control methods. 7020 7021Removed references to the "release_current" directory within the Unix 7022release package. 7023 7024Code and Data Size: The current and previous core subsystem library sizes 7025are shown below. These are the code and data sizes for the acpica.lib 7026produced by the Microsoft Visual C++ 6.0 compiler. These values do not 7027include any ACPI driver or OSPM code. The debug version of the code 7028includes 7029the debug output trace mechanism and has a much larger code and data size. 7030Note that these values will vary depending on the efficiency of the 7031compiler 7032and the compiler options used during generation. 7033 7034 Previous Release: 7035 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7036 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 7037 Current Release: 7038 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 7039 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 7040 7041 70422) iASL Compiler/Disassembler: 7043 7044Implemented an error check for illegal duplicate values in the interrupt 7045and 7046dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 7047Interrupt(). 7048 7049Implemented error checking for the Irq() and IrqNoFlags() macros to detect 7050too many values in the interrupt list (16 max) and invalid values in the 7051list (range 0 - 15) 7052 7053The maximum length string literal within an ASL file is now restricted to 7054200 characters as per the ACPI specification. 7055 7056Fixed a fault when using the -ln option (generate namespace listing). 7057 7058Implemented an error check to determine if a DescriptorName within a 7059resource descriptor has already been used within the current scope. 7060 7061---------------------------------------- 706215 August 2005. Summary of changes for version 20050815: 7063 70641) ACPI CA Core Subsystem: 7065 7066Implemented a full bytewise compare to determine if a table load request 7067is 7068attempting to load a duplicate table. The compare is performed if the 7069table 7070signatures and table lengths match. This will allow different tables with 7071the same OEM Table ID and revision to be loaded - probably against the 7072ACPI 7073specification, but discovered in the field nonetheless. 7074 7075Added the changes.txt logfile to each of the zipped release packages. 7076 7077Code and Data Size: Current and previous core subsystem library sizes are 7078shown below. These are the code and data sizes for the acpica.lib produced 7079by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7080any ACPI driver or OSPM code. The debug version of the code includes the 7081debug output trace mechanism and has a much larger code and data size. 7082Note 7083that these values will vary depending on the efficiency of the compiler 7084and 7085the compiler options used during generation. 7086 7087 Previous Release: 7088 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7089 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 7090 Current Release: 7091 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7092 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 7093 7094 70952) iASL Compiler/Disassembler: 7096 7097Fixed a problem where incorrect AML code could be generated for Package 7098objects if optimization is disabled (via the -oa switch). 7099 7100Fixed a problem with where incorrect AML code is generated for variable- 7101length packages when the package length is not specified and the number of 7102initializer values is greater than 255. 7103 7104 7105---------------------------------------- 710629 July 2005. Summary of changes for version 20050729: 7107 71081) ACPI CA Core Subsystem: 7109 7110Implemented support to ignore an attempt to install/load a particular ACPI 7111table more than once. Apparently there exists BIOS code that repeatedly 7112attempts to load the same SSDT upon certain events. With assistance from 7113Venkatesh Pallipadi. 7114 7115Restructured the main interface to the AML parser in order to correctly 7116handle all exceptional conditions. This will prevent leakage of the 7117OwnerId 7118resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 7119some 7120machines. With assistance from Alexey Starikovskiy. 7121 7122Support for "module level code" has been disabled in this version due to a 7123number of issues that have appeared on various machines. The support can 7124be 7125enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 7126compilation. When the issues are fully resolved, the code will be enabled 7127by 7128default again. 7129 7130Modified the internal functions for debug print support to define the 7131FunctionName parameter as a (const char *) for compatibility with compiler 7132built-in macros such as __FUNCTION__, etc. 7133 7134Linted the entire ACPICA source tree for both 32-bit and 64-bit. 7135 7136Implemented support to display an object count summary for the AML 7137Debugger 7138commands Object and Methods. 7139 7140Code and Data Size: Current and previous core subsystem library sizes are 7141shown below. These are the code and data sizes for the acpica.lib produced 7142by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7143any ACPI driver or OSPM code. The debug version of the code includes the 7144debug output trace mechanism and has a much larger code and data size. 7145Note 7146that these values will vary depending on the efficiency of the compiler 7147and 7148the compiler options used during generation. 7149 7150 Previous Release: 7151 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 7152 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 7153 Current Release: 7154 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7155 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 7156 7157 71582) iASL Compiler/Disassembler: 7159 7160Fixed a regression that appeared in the 20050708 version of the compiler 7161where an error message was inadvertently emitted for invocations of the 7162_OSI 7163reserved control method. 7164 7165---------------------------------------- 716608 July 2005. Summary of changes for version 20050708: 7167 71681) ACPI CA Core Subsystem: 7169 7170The use of the CPU stack in the debug version of the subsystem has been 7171considerably reduced. Previously, a debug structure was declared in every 7172function that used the debug macros. This structure has been removed in 7173favor of declaring the individual elements as parameters to the debug 7174functions. This reduces the cumulative stack use during nested execution 7175of 7176ACPI function calls at the cost of a small increase in the code size of 7177the 7178debug version of the subsystem. With assistance from Alexey Starikovskiy 7179and 7180Len Brown. 7181 7182Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 7183headers to define a macro that will return the current function name at 7184runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 7185by 7186the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 7187compiler-dependent header, the function name is saved on the CPU stack 7188(one 7189pointer per function.) This mechanism is used because apparently there 7190exists no standard ANSI-C defined macro that that returns the function 7191name. 7192 7193Redesigned and reimplemented the "Owner ID" mechanism used to track 7194namespace objects created/deleted by ACPI tables and control method 7195execution. A bitmap is now used to allocate and free the IDs, thus solving 7196the wraparound problem present in the previous implementation. The size of 7197the namespace node descriptor was reduced by 2 bytes as a result (Alexey 7198Starikovskiy). 7199 7200Removed the UINT32_BIT and UINT16_BIT types that were used for the 7201bitfield 7202flag definitions within the headers for the predefined ACPI tables. These 7203have been replaced by UINT8_BIT in order to increase the code portability 7204of 7205the subsystem. If the use of UINT8 remains a problem, we may be forced to 7206eliminate bitfields entirely because of a lack of portability. 7207 7208Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 7209This 7210is a frequently used function and this improvement increases the 7211performance 7212of the entire subsystem (Alexey Starikovskiy). 7213 7214Fixed several possible memory leaks and the inverse - premature object 7215deletion (Alexey Starikovskiy). 7216 7217Code and Data Size: Current and previous core subsystem library sizes are 7218shown below. These are the code and data sizes for the acpica.lib produced 7219by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7220any ACPI driver or OSPM code. The debug version of the code includes the 7221debug output trace mechanism and has a much larger code and data size. 7222Note 7223that these values will vary depending on the efficiency of the compiler 7224and 7225the compiler options used during generation. 7226 7227 Previous Release: 7228 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 7229 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 7230 Current Release: 7231 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 7232 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 7233 7234---------------------------------------- 723524 June 2005. Summary of changes for version 20050624: 7236 72371) ACPI CA Core Subsystem: 7238 7239Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 7240the host-defined cache object. This allows the OSL implementation to 7241define 7242and type this object in any manner desired, simplifying the OSL 7243implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 7244Linux, and should be defined in the OS-specific header file for other 7245operating systems as required. 7246 7247Changed the interface to AcpiOsAcquireObject to directly return the 7248requested object as the function return (instead of ACPI_STATUS.) This 7249change was made for performance reasons, since this is the purpose of the 7250interface in the first place. AcpiOsAcquireObject is now similar to the 7251AcpiOsAllocate interface. 7252 7253Implemented a new AML debugger command named Businfo. This command 7254displays 7255information about all devices that have an associate _PRT object. The 7256_ADR, 7257_HID, _UID, and _CID are displayed for these devices. 7258 7259Modified the initialization sequence in AcpiInitializeSubsystem to call 7260the 7261OSL interface AcpiOslInitialize first, before any local initialization. 7262This 7263change was required because the global initialization now calls OSL 7264interfaces. 7265 7266Enhanced the Dump command to display the entire contents of Package 7267objects 7268(including all sub-objects and their values.) 7269 7270Restructured the code base to split some files because of size and/or 7271because the code logically belonged in a separate file. New files are 7272listed 7273below. All makefiles and project files included in the ACPI CA release 7274have 7275been updated. 7276 utilities/utcache.c /* Local cache interfaces */ 7277 utilities/utmutex.c /* Local mutex support */ 7278 utilities/utstate.c /* State object support */ 7279 interpreter/parser/psloop.c /* Main AML parse loop */ 7280 7281Code and Data Size: Current and previous core subsystem library sizes are 7282shown below. These are the code and data sizes for the acpica.lib produced 7283by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7284any ACPI driver or OSPM code. The debug version of the code includes the 7285debug output trace mechanism and has a much larger code and data size. 7286Note 7287that these values will vary depending on the efficiency of the compiler 7288and 7289the compiler options used during generation. 7290 7291 Previous Release: 7292 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 7293 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 7294 Current Release: 7295 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 7296 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 7297 7298 72992) iASL Compiler/Disassembler: 7300 7301Fixed a regression introduced in version 20050513 where the use of a 7302Package 7303object within a Case() statement caused a compile time exception. The 7304original behavior has been restored (a Match() operator is emitted.) 7305 7306---------------------------------------- 730717 June 2005. Summary of changes for version 20050617: 7308 73091) ACPI CA Core Subsystem: 7310 7311Moved the object cache operations into the OS interface layer (OSL) to 7312allow 7313the host OS to handle these operations if desired (for example, the Linux 7314OSL will invoke the slab allocator). This support is optional; the compile 7315time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 7316code in the ACPI CA core. The new OSL interfaces are shown below. See 7317utalloc.c for an example implementation, and acpiosxf.h for the exact 7318interface definitions. With assistance from Alexey Starikovskiy. 7319 AcpiOsCreateCache 7320 AcpiOsDeleteCache 7321 AcpiOsPurgeCache 7322 AcpiOsAcquireObject 7323 AcpiOsReleaseObject 7324 7325Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 7326return 7327and restore a flags parameter. This fits better with many OS lock models. 7328Note: the current execution state (interrupt handler or not) is no longer 7329passed to these interfaces. If necessary, the OSL must determine this 7330state 7331by itself, a simple and fast operation. With assistance from Alexey 7332Starikovskiy. 7333 7334Fixed a problem in the ACPI table handling where a valid XSDT was assumed 7335present if the revision of the RSDP was 2 or greater. According to the 7336ACPI 7337specification, the XSDT is optional in all cases, and the table manager 7338therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 7339Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 7340only the RSDT. 7341 7342Fixed an interpreter problem with the Mid() operator in the case of an 7343input 7344string where the resulting output string is of zero length. It now 7345correctly 7346returns a valid, null terminated string object instead of a string object 7347with a null pointer. 7348 7349Fixed a problem with the control method argument handling to allow a store 7350to an Arg object that already contains an object of type Device. The 7351Device 7352object is now correctly overwritten. Previously, an error was returned. 7353 7354 7355Enhanced the debugger Find command to emit object values in addition to 7356the 7357found object pathnames. The output format is the same as the dump 7358namespace 7359command. 7360 7361Enhanced the debugger Set command. It now has the ability to set the value 7362of any Named integer object in the namespace (Previously, only method 7363locals 7364and args could be set.) 7365 7366Code and Data Size: Current and previous core subsystem library sizes are 7367shown below. These are the code and data sizes for the acpica.lib produced 7368by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7369any ACPI driver or OSPM code. The debug version of the code includes the 7370debug output trace mechanism and has a much larger code and data size. 7371Note 7372that these values will vary depending on the efficiency of the compiler 7373and 7374the compiler options used during generation. 7375 7376 Previous Release: 7377 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 7378 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 7379 Current Release: 7380 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 7381 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 7382 7383 73842) iASL Compiler/Disassembler: 7385 7386Fixed a regression in the disassembler where if/else/while constructs were 7387output incorrectly. This problem was introduced in the previous release 7388(20050526). This problem also affected the single-step disassembly in the 7389debugger. 7390 7391Fixed a problem where compiling the reserved _OSI method would randomly 7392(but 7393rarely) produce compile errors. 7394 7395Enhanced the disassembler to emit compilable code in the face of incorrect 7396AML resource descriptors. If the optional ResourceSourceIndex is present, 7397but the ResourceSource is not, do not emit the ResourceSourceIndex in the 7398disassembly. Otherwise, the resulting code cannot be compiled without 7399errors. 7400 7401---------------------------------------- 740226 May 2005. Summary of changes for version 20050526: 7403 74041) ACPI CA Core Subsystem: 7405 7406Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 7407the module level (not within a control method.) These opcodes are executed 7408exactly once at the time the table is loaded. This type of code was legal 7409up 7410until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 7411in 7412order to provide backwards compatibility with earlier BIOS 7413implementations. 7414This eliminates the "Encountered executable code at module level" warning 7415that was previously generated upon detection of such code. 7416 7417Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 7418inadvertently be generated during the lookup of namespace objects in the 7419second pass parse of ACPI tables and control methods. It appears that this 7420problem could occur during the resolution of forward references to 7421namespace 7422objects. 7423 7424Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 7425corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 7426allows the deadlock detection debug code to be compiled out in the normal 7427case, improving mutex performance (and overall subsystem performance) 7428considerably. 7429 7430Implemented a handful of miscellaneous fixes for possible memory leaks on 7431error conditions and error handling control paths. These fixes were 7432suggested by FreeBSD and the Coverity Prevent source code analysis tool. 7433 7434Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 7435to prevent a fault in this error case. 7436 7437Code and Data Size: Current and previous core subsystem library sizes are 7438shown below. These are the code and data sizes for the acpica.lib produced 7439by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7440any ACPI driver or OSPM code. The debug version of the code includes the 7441debug output trace mechanism and has a much larger code and data size. 7442Note 7443that these values will vary depending on the efficiency of the compiler 7444and 7445the compiler options used during generation. 7446 7447 Previous Release: 7448 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7449 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7450 Current Release: 7451 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 7452 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 7453 7454 74552) iASL Compiler/Disassembler: 7456 7457Implemented support to allow Type 1 and Type 2 ASL operators to appear at 7458the module level (not within a control method.) These operators will be 7459executed once at the time the table is loaded. This type of code was legal 7460up until the release of ACPI 2.0B (2002) and is now supported by the iASL 7461compiler in order to provide backwards compatibility with earlier BIOS ASL 7462code. 7463 7464The ACPI integer width (specified via the table revision ID or the -r 7465override, 32 or 64 bits) is now used internally during compile-time 7466constant 7467folding to ensure that constants are truncated to 32 bits if necessary. 7468Previously, the revision ID value was only emitted in the AML table 7469header. 7470 7471An error message is now generated for the Mutex and Method operators if 7472the 7473SyncLevel parameter is outside the legal range of 0 through 15. 7474 7475Fixed a problem with the Method operator ParameterTypes list handling 7476(ACPI 74773.0). Previously, more than 2 types or 2 arguments generated a syntax 7478error. 7479The actual underlying implementation of method argument typechecking is 7480still under development, however. 7481 7482---------------------------------------- 748313 May 2005. Summary of changes for version 20050513: 7484 74851) ACPI CA Core Subsystem: 7486 7487Implemented support for PCI Express root bridges -- added support for 7488device 7489PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 7490 7491The interpreter now automatically truncates incoming 64-bit constants to 749232 7493bits if currently executing out of a 32-bit ACPI table (Revision < 2). 7494This 7495also affects the iASL compiler constant folding. (Note: as per below, the 7496iASL compiler no longer allows 64-bit constants within 32-bit tables.) 7497 7498Fixed a problem where string and buffer objects with "static" pointers 7499(pointers to initialization data within an ACPI table) were not handled 7500consistently. The internal object copy operation now always copies the 7501data 7502to a newly allocated buffer, regardless of whether the source object is 7503static or not. 7504 7505Fixed a problem with the FromBCD operator where an implicit result 7506conversion was improperly performed while storing the result to the target 7507operand. Since this is an "explicit conversion" operator, the implicit 7508conversion should never be performed on the output. 7509 7510Fixed a problem with the CopyObject operator where a copy to an existing 7511named object did not always completely overwrite the existing object 7512stored 7513at name. Specifically, a buffer-to-buffer copy did not delete the existing 7514buffer. 7515 7516Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 7517structs for consistency. 7518 7519Code and Data Size: Current and previous core subsystem library sizes are 7520shown below. These are the code and data sizes for the acpica.lib produced 7521by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7522any ACPI driver or OSPM code. The debug version of the code includes the 7523debug output trace mechanism and has a much larger code and data size. 7524Note 7525that these values will vary depending on the efficiency of the compiler 7526and 7527the compiler options used during generation. 7528 7529 Previous Release: 7530 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7531 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7532 Current Release: (Same sizes) 7533 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7534 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7535 7536 75372) iASL Compiler/Disassembler: 7538 7539The compiler now emits a warning if an attempt is made to generate a 64- 7540bit 7541integer constant from within a 32-bit ACPI table (Revision < 2). The 7542integer 7543is truncated to 32 bits. 7544 7545Fixed a problem with large package objects: if the static length of the 7546package is greater than 255, the "variable length package" opcode is 7547emitted. Previously, this caused an error. This requires an update to the 7548ACPI spec, since it currently (incorrectly) states that packages larger 7549than 7550255 elements are not allowed. 7551 7552The disassembler now correctly handles variable length packages and 7553packages 7554larger than 255 elements. 7555 7556---------------------------------------- 755708 April 2005. Summary of changes for version 20050408: 7558 75591) ACPI CA Core Subsystem: 7560 7561Fixed three cases in the interpreter where an "index" argument to an ASL 7562function was still (internally) 32 bits instead of the required 64 bits. 7563This was the Index argument to the Index, Mid, and Match operators. 7564 7565The "strupr" function is now permanently local (AcpiUtStrupr), since this 7566is 7567not a POSIX-defined function and not present in most kernel-level C 7568libraries. All references to the C library strupr function have been 7569removed 7570from the headers. 7571 7572Completed the deployment of static functions/prototypes. All prototypes 7573with 7574the static attribute have been moved from the headers to the owning C 7575file. 7576 7577Implemented an extract option (-e) for the AcpiBin utility (AML binary 7578utility). This option allows the utility to extract individual ACPI tables 7579from the output of AcpiDmp. It provides the same functionality of the 7580acpixtract.pl perl script without the worry of setting the correct perl 7581options. AcpiBin runs on Windows and has not yet been generated/validated 7582in 7583the Linux/Unix environment (but should be soon). 7584 7585Updated and fixed the table dump option for AcpiBin (-d). This option 7586converts a single ACPI table to a hex/ascii file, similar to the output of 7587AcpiDmp. 7588 7589Code and Data Size: Current and previous core subsystem library sizes are 7590shown below. These are the code and data sizes for the acpica.lib produced 7591by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7592any ACPI driver or OSPM code. The debug version of the code includes the 7593debug output trace mechanism and has a much larger code and data size. 7594Note 7595that these values will vary depending on the efficiency of the compiler 7596and 7597the compiler options used during generation. 7598 7599 Previous Release: 7600 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 7601 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 7602 Current Release: 7603 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7604 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7605 7606 76072) iASL Compiler/Disassembler: 7608 7609Disassembler fix: Added a check to ensure that the table length found in 7610the 7611ACPI table header within the input file is not longer than the actual 7612input 7613file size. This indicates some kind of file or table corruption. 7614 7615---------------------------------------- 761629 March 2005. Summary of changes for version 20050329: 7617 76181) ACPI CA Core Subsystem: 7619 7620An error is now generated if an attempt is made to create a Buffer Field 7621of 7622length zero (A CreateField with a length operand of zero.) 7623 7624The interpreter now issues a warning whenever executable code at the 7625module 7626level is detected during ACPI table load. This will give some idea of the 7627prevalence of this type of code. 7628 7629Implemented support for references to named objects (other than control 7630methods) within package objects. 7631 7632Enhanced package object output for the debug object. Package objects are 7633now 7634completely dumped, showing all elements. 7635 7636Enhanced miscellaneous object output for the debug object. Any object can 7637now be written to the debug object (for example, a device object can be 7638written, and the type of the object will be displayed.) 7639 7640The "static" qualifier has been added to all local functions across both 7641the 7642core subsystem and the iASL compiler. 7643 7644The number of "long" lines (> 80 chars) within the source has been 7645significantly reduced, by about 1/3. 7646 7647Cleaned up all header files to ensure that all CA/iASL functions are 7648prototyped (even static functions) and the formatting is consistent. 7649 7650Two new header files have been added, acopcode.h and acnames.h. 7651 7652Removed several obsolete functions that were no longer used. 7653 7654Code and Data Size: Current and previous core subsystem library sizes are 7655shown below. These are the code and data sizes for the acpica.lib produced 7656by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7657any ACPI driver or OSPM code. The debug version of the code includes the 7658debug output trace mechanism and has a much larger code and data size. 7659Note 7660that these values will vary depending on the efficiency of the compiler 7661and 7662the compiler options used during generation. 7663 7664 Previous Release: 7665 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7666 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 7667 Current Release: 7668 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 7669 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 7670 7671 7672 76732) iASL Compiler/Disassembler: 7674 7675Fixed a problem with the resource descriptor generation/support. For the 7676ResourceSourceIndex and the ResourceSource fields, both must be present, 7677or 7678both must be not present - can't have one without the other. 7679 7680The compiler now returns non-zero from the main procedure if any errors 7681have 7682occurred during the compilation. 7683 7684 7685---------------------------------------- 768609 March 2005. Summary of changes for version 20050309: 7687 76881) ACPI CA Core Subsystem: 7689 7690The string-to-buffer implicit conversion code has been modified again 7691after 7692a change to the ACPI specification. In order to match the behavior of the 7693other major ACPI implementation, the target buffer is no longer truncated 7694if 7695the source string is smaller than an existing target buffer. This change 7696requires an update to the ACPI spec, and should eliminate the recent 7697AE_AML_BUFFER_LIMIT issues. 7698 7699The "implicit return" support was rewritten to a new algorithm that solves 7700the general case. Rather than attempt to determine when a method is about 7701to 7702exit, the result of every ASL operator is saved momentarily until the very 7703next ASL operator is executed. Therefore, no matter how the method exits, 7704there will always be a saved implicit return value. This feature is only 7705enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 7706AE_AML_NO_RETURN_VALUE errors when enabled. 7707 7708Implemented implicit conversion support for the predicate (operand) of the 7709If, Else, and While operators. String and Buffer arguments are 7710automatically 7711converted to Integers. 7712 7713Changed the string-to-integer conversion behavior to match the new ACPI 7714errata: "If no integer object exists, a new integer is created. The ASCII 7715string is interpreted as a hexadecimal constant. Each string character is 7716interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 7717with the first character as the most significant digit, and ending with 7718the 7719first non-hexadecimal character or end-of-string." This means that the 7720first 7721non-hex character terminates the conversion and this is the code that was 7722changed. 7723 7724Fixed a problem where the ObjectType operator would fail (fault) when used 7725on an Index of a Package which pointed to a null package element. The 7726operator now properly returns zero (Uninitialized) in this case. 7727 7728Fixed a problem where the While operator used excessive memory by not 7729properly popping the result stack during execution. There was no memory 7730leak 7731after execution, however. (Code provided by Valery Podrezov.) 7732 7733Fixed a problem where references to control methods within Package objects 7734caused the method to be invoked, instead of producing a reference object 7735pointing to the method. 7736 7737Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 7738improve performance and reduce code size. (Code provided by Alexey 7739Starikovskiy.) 7740 7741Code and Data Size: Current and previous core subsystem library sizes are 7742shown below. These are the code and data sizes for the acpica.lib produced 7743by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7744any ACPI driver or OSPM code. The debug version of the code includes the 7745debug output trace mechanism and has a much larger code and data size. 7746Note 7747that these values will vary depending on the efficiency of the compiler 7748and 7749the compiler options used during generation. 7750 7751 Previous Release: 7752 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7753 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 7754 Current Release: 7755 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7756 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 7757 7758 77592) iASL Compiler/Disassembler: 7760 7761Fixed a problem with the Return operator with no arguments. Since the AML 7762grammar for the byte encoding requires an operand for the Return opcode, 7763the 7764compiler now emits a Return(Zero) for this case. An ACPI specification 7765update has been written for this case. 7766 7767For tables other than the DSDT, namepath optimization is automatically 7768disabled. This is because SSDTs can be loaded anywhere in the namespace, 7769the 7770compiler has no knowledge of where, and thus cannot optimize namepaths. 7771 7772Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 7773inadvertently omitted from the ACPI specification, and will require an 7774update to the spec. 7775 7776The source file scan for ASCII characters is now optional (-a). This 7777change 7778was made because some vendors place non-ascii characters within comments. 7779However, the scan is simply a brute-force byte compare to ensure all 7780characters in the file are in the range 0x00 to 0x7F. 7781 7782Fixed a problem with the CondRefOf operator where the compiler was 7783inappropriately checking for the existence of the target. Since the point 7784of 7785the operator is to check for the existence of the target at run-time, the 7786compiler no longer checks for the target existence. 7787 7788Fixed a problem where errors generated from the internal AML interpreter 7789during constant folding were not handled properly, causing a fault. 7790 7791Fixed a problem with overly aggressive range checking for the Stall 7792operator. The valid range (max 255) is now only checked if the operand is 7793of 7794type Integer. All other operand types cannot be statically checked. 7795 7796Fixed a problem where control method references within the RefOf, DeRefOf, 7797and ObjectType operators were not treated properly. They are now treated 7798as 7799actual references, not method invocations. 7800 7801Fixed and enhanced the "list namespace" option (-ln). This option was 7802broken 7803a number of releases ago. 7804 7805Improved error handling for the Field, IndexField, and BankField 7806operators. 7807The compiler now cleanly reports and recovers from errors in the field 7808component (FieldUnit) list. 7809 7810Fixed a disassembler problem where the optional ResourceDescriptor fields 7811TRS and TTP were not always handled correctly. 7812 7813Disassembler - Comments in output now use "//" instead of "/*" 7814 7815---------------------------------------- 781628 February 2005. Summary of changes for version 20050228: 7817 78181) ACPI CA Core Subsystem: 7819 7820Fixed a problem where the result of an Index() operator (an object 7821reference) must increment the reference count on the target object for the 7822life of the object reference. 7823 7824Implemented AML Interpreter and Debugger support for the new ACPI 3.0 7825Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 7826WordSpace 7827resource descriptors. 7828 7829Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 7830Space Descriptor" string, indicating interpreter support for the 7831descriptors 7832above. 7833 7834Implemented header support for the new ACPI 3.0 FADT flag bits. 7835 7836Implemented header support for the new ACPI 3.0 PCI Express bits for the 7837PM1 7838status/enable registers. 7839 7840Updated header support for the MADT processor local Apic struct and MADT 7841platform interrupt source struct for new ACPI 3.0 fields. 7842 7843Implemented header support for the SRAT and SLIT ACPI tables. 7844 7845Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 7846flag 7847at runtime. 7848 7849Code and Data Size: Current and previous core subsystem library sizes are 7850shown below. These are the code and data sizes for the acpica.lib produced 7851by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7852any ACPI driver or OSPM code. The debug version of the code includes the 7853debug output trace mechanism and has a much larger code and data size. 7854Note 7855that these values will vary depending on the efficiency of the compiler 7856and 7857the compiler options used during generation. 7858 7859 Previous Release: 7860 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 7861 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 7862 Current Release: 7863 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7864 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 7865 7866 78672) iASL Compiler/Disassembler: 7868 7869Fixed a problem with the internal 64-bit String-to-integer conversion with 7870strings less than two characters long. 7871 7872Fixed a problem with constant folding where the result of the Index() 7873operator can not be considered a constant. This means that Index() cannot 7874be 7875a type3 opcode and this will require an update to the ACPI specification. 7876 7877Disassembler: Implemented support for the TTP, MTP, and TRS resource 7878descriptor fields. These fields were inadvertently ignored and not output 7879in 7880the disassembly of the resource descriptor. 7881 7882 7883 ---------------------------------------- 788411 February 2005. Summary of changes for version 20050211: 7885 78861) ACPI CA Core Subsystem: 7887 7888Implemented ACPI 3.0 support for implicit conversion within the Match() 7889operator. MatchObjects can now be of type integer, buffer, or string 7890instead 7891of just type integer. Package elements are implicitly converted to the 7892type 7893of the MatchObject. This change aligns the behavior of Match() with the 7894behavior of the other logical operators (LLess(), etc.) It also requires 7895an 7896errata change to the ACPI specification as this support was intended for 7897ACPI 3.0, but was inadvertently omitted. 7898 7899Fixed a problem with the internal implicit "to buffer" conversion. Strings 7900that are converted to buffers will cause buffer truncation if the string 7901is 7902smaller than the target buffer. Integers that are converted to buffers 7903will 7904not cause buffer truncation, only zero extension (both as per the ACPI 7905spec.) The problem was introduced when code was added to truncate the 7906buffer, but this should not be performed in all cases, only the string 7907case. 7908 7909Fixed a problem with the Buffer and Package operators where the 7910interpreter 7911would get confused if two such operators were used as operands to an ASL 7912operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 7913stack was not being popped after the execution of these operators, 7914resulting 7915in an AE_NO_RETURN_VALUE exception. 7916 7917Fixed a problem with constructs of the form Store(Index(...),...). The 7918reference object returned from Index was inadvertently resolved to an 7919actual 7920value. This problem was introduced in version 20050114 when the behavior 7921of 7922Store() was modified to restrict the object types that can be used as the 7923source operand (to match the ACPI specification.) 7924 7925Reduced excessive stack use within the AcpiGetObjectInfo procedure. 7926 7927Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 7928 7929Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 7930 7931Code and Data Size: Current and previous core subsystem library sizes are 7932shown below. These are the code and data sizes for the acpica.lib produced 7933by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7934any ACPI driver or OSPM code. The debug version of the code includes the 7935debug output trace mechanism and has a much larger code and data size. 7936Note 7937that these values will vary depending on the efficiency of the compiler 7938and 7939the compiler options used during generation. 7940 7941 Previous Release: 7942 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 7943 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 7944 Current Release: 7945 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 7946 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 7947 7948 79492) iASL Compiler/Disassembler: 7950 7951Fixed a code generation problem in the constant folding optimization code 7952where incorrect code was generated if a constant was reduced to a buffer 7953object (i.e., a reduced type 5 opcode.) 7954 7955Fixed a typechecking problem for the ToBuffer operator. Caused by an 7956incorrect return type in the internal opcode information table. 7957 7958---------------------------------------- 795925 January 2005. Summary of changes for version 20050125: 7960 79611) ACPI CA Core Subsystem: 7962 7963Fixed a recently introduced problem with the Global Lock where the 7964underlying semaphore was not created. This problem was introduced in 7965version 20050114, and caused an AE_AML_NO_OPERAND exception during an 7966Acquire() operation on _GL. 7967 7968The local object cache is now optional, and is disabled by default. Both 7969AcpiExec and the iASL compiler enable the cache because they run in user 7970mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 7971to enable the local cache. 7972 7973Fixed an issue in the internal function AcpiUtEvaluateObject concerning 7974the 7975optional "implicit return" support where an error was returned if no 7976return 7977object was expected, but one was implicitly returned. AE_OK is now 7978returned 7979in this case and the implicitly returned object is deleted. 7980AcpiUtEvaluateObject is only occasionally used, and only to execute 7981reserved 7982methods such as _STA and _INI where the return type is known up front. 7983 7984Fixed a few issues with the internal convert-to-integer code. It now 7985returns 7986an error if an attempt is made to convert a null string, a string of only 7987blanks/tabs, or a zero-length buffer. This affects both implicit 7988conversion 7989and explicit conversion via the ToInteger() operator. 7990 7991The internal debug code in AcpiUtAcquireMutex has been commented out. It 7992is 7993not needed for normal operation and should increase the performance of the 7994entire subsystem. The code remains in case it is needed for debug purposes 7995again. 7996 7997The AcpiExec source and makefile are included in the Unix/Linux package 7998for 7999the first time. 8000 8001Code and Data Size: Current and previous core subsystem library sizes are 8002shown below. These are the code and data sizes for the acpica.lib produced 8003by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8004any ACPI driver or OSPM code. The debug version of the code includes the 8005debug output trace mechanism and has a much larger code and data size. 8006Note 8007that these values will vary depending on the efficiency of the compiler 8008and 8009the compiler options used during generation. 8010 8011 Previous Release: 8012 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 8013 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 8014 Current Release: 8015 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 8016 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 8017 80182) iASL Compiler/Disassembler: 8019 8020Switch/Case support: A warning is now issued if the type of the Switch 8021value 8022cannot be determined at compile time. For example, Switch(Arg0) will 8023generate the warning, and the type is assumed to be an integer. As per the 8024ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 8025the 8026warning. 8027 8028Switch/Case support: Implemented support for buffer and string objects as 8029the switch value. This is an ACPI 3.0 feature, now that LEqual supports 8030buffers and strings. 8031 8032Switch/Case support: The emitted code for the LEqual() comparisons now 8033uses 8034the switch value as the first operand, not the second. The case value is 8035now 8036the second operand, and this allows the case value to be implicitly 8037converted to the type of the switch value, not the other way around. 8038 8039Switch/Case support: Temporary variables are now emitted immediately 8040within 8041the control method, not at the global level. This means that there are now 804236 temps available per-method, not 36 temps per-module as was the case 8043with 8044the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 8045 8046---------------------------------------- 804714 January 2005. Summary of changes for version 20050114: 8048 8049Added 2005 copyright to all module headers. This affects every module in 8050the core subsystem, iASL compiler, and the utilities. 8051 80521) ACPI CA Core Subsystem: 8053 8054Fixed an issue with the String-to-Buffer conversion code where the string 8055null terminator was not included in the buffer after conversion, but there 8056is existing ASL that assumes the string null terminator is included. This 8057is 8058the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 8059introduced in the previous version when the code was updated to correctly 8060set the converted buffer size as per the ACPI specification. The ACPI spec 8061is ambiguous and will be updated to specify that the null terminator must 8062be 8063included in the converted buffer. This also affects the ToBuffer() ASL 8064operator. 8065 8066Fixed a problem with the Mid() ASL/AML operator where it did not work 8067correctly on Buffer objects. Newly created sub-buffers were not being 8068marked 8069as initialized. 8070 8071 8072Fixed a problem in AcpiTbFindTable where incorrect string compares were 8073performed on the OemId and OemTableId table header fields. These fields 8074are 8075not null terminated, so strncmp is now used instead of strcmp. 8076 8077Implemented a restriction on the Store() ASL/AML operator to align the 8078behavior with the ACPI specification. Previously, any object could be 8079used 8080as the source operand. Now, the only objects that may be used are 8081Integers, 8082Buffers, Strings, Packages, Object References, and DDB Handles. If 8083necessary, the original behavior can be restored by enabling the 8084EnableInterpreterSlack flag. 8085 8086Enhanced the optional "implicit return" support to allow an implicit 8087return 8088value from methods that are invoked externally via the AcpiEvaluateObject 8089interface. This enables implicit returns from the _STA and _INI methods, 8090for example. 8091 8092Changed the Revision() ASL/AML operator to return the current version of 8093the 8094AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 8095returned 8096the supported ACPI version (This is the function of the _REV method). 8097 8098Updated the _REV predefined method to return the currently supported 8099version 8100of ACPI, now 3. 8101 8102Implemented batch mode option for the AcpiExec utility (-b). 8103 8104Code and Data Size: Current and previous core subsystem library sizes are 8105shown below. These are the code and data sizes for the acpica.lib produced 8106by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8107any ACPI driver or OSPM code. The debug version of the code includes the 8108debug output trace mechanism and has a much larger code and data size. 8109Note 8110that these values will vary depending on the efficiency of the compiler 8111and 8112the compiler options used during generation. 8113 8114 Previous Release: 8115 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8116 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 8117 Current Release: 8118 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 8119 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 8120 8121---------------------------------------- 812210 December 2004. Summary of changes for version 20041210: 8123 8124ACPI 3.0 support is nearing completion in both the iASL compiler and the 8125ACPI CA core subsystem. 8126 81271) ACPI CA Core Subsystem: 8128 8129Fixed a problem in the ToDecimalString operator where the resulting string 8130length was incorrectly calculated. The length is now calculated exactly, 8131eliminating incorrect AE_STRING_LIMIT exceptions. 8132 8133Fixed a problem in the ToHexString operator to allow a maximum 200 8134character 8135string to be produced. 8136 8137Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 8138routine where the length of the resulting buffer was not truncated to the 8139new size (if the target buffer already existed). 8140 8141Code and Data Size: Current and previous core subsystem library sizes are 8142shown below. These are the code and data sizes for the acpica.lib produced 8143by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8144any ACPI driver or OSPM code. The debug version of the code includes the 8145debug output trace mechanism and has a much larger code and data size. 8146Note 8147that these values will vary depending on the efficiency of the compiler 8148and 8149the compiler options used during generation. 8150 8151 Previous Release: 8152 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8153 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 8154 Current Release: 8155 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8156 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 8157 8158 81592) iASL Compiler/Disassembler: 8160 8161Implemented the new ACPI 3.0 resource template macros - DWordSpace, 8162ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 8163Includes support in the disassembler. 8164 8165Implemented support for the new (ACPI 3.0) parameter to the Register 8166macro, 8167AccessSize. 8168 8169Fixed a problem where the _HE resource name for the Interrupt macro was 8170referencing bit 0 instead of bit 1. 8171 8172Implemented check for maximum 255 interrupts in the Interrupt macro. 8173 8174Fixed a problem with the predefined resource descriptor names where 8175incorrect AML code was generated if the offset within the resource buffer 8176was 0 or 1. The optimizer shortened the AML code to a single byte opcode 8177but did not update the surrounding package lengths. 8178 8179Changes to the Dma macro: All channels within the channel list must be in 8180the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 8181optional (default is BusMaster). 8182 8183Implemented check for maximum 7 data bytes for the VendorShort macro. 8184 8185The ReadWrite parameter is now optional for the Memory32 and similar 8186macros. 8187 8188---------------------------------------- 818903 December 2004. Summary of changes for version 20041203: 8190 81911) ACPI CA Core Subsystem: 8192 8193The low-level field insertion/extraction code (exfldio) has been 8194completely 8195rewritten to eliminate unnecessary complexity, bugs, and boundary 8196conditions. 8197 8198Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 8199ToDecimalString 8200operators where the input operand could be inadvertently deleted if no 8201conversion was necessary (e.g., if the input to ToInteger was an Integer 8202object.) 8203 8204Fixed a problem with the ToDecimalString and ToHexString where an 8205incorrect 8206exception code was returned if the resulting string would be > 200 chars. 8207AE_STRING_LIMIT is now returned. 8208 8209Fixed a problem with the Concatenate operator where AE_OK was always 8210returned, even if the operation failed. 8211 8212Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 8213semaphores to be allocated. 8214 8215Code and Data Size: Current and previous core subsystem library sizes are 8216shown below. These are the code and data sizes for the acpica.lib produced 8217by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8218any ACPI driver or OSPM code. The debug version of the code includes the 8219debug output trace mechanism and has a much larger code and data size. 8220Note 8221that these values will vary depending on the efficiency of the compiler 8222and 8223the compiler options used during generation. 8224 8225 Previous Release: 8226 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8227 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8228 Current Release: 8229 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8230 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 8231 8232 82332) iASL Compiler/Disassembler: 8234 8235Fixed typechecking for the ObjectType and SizeOf operators. Problem was 8236recently introduced in 20041119. 8237 8238Fixed a problem with the ToUUID macro where the upper nybble of each 8239buffer 8240byte was inadvertently set to zero. 8241 8242---------------------------------------- 824319 November 2004. Summary of changes for version 20041119: 8244 82451) ACPI CA Core Subsystem: 8246 8247Fixed a problem in the internal ConvertToInteger routine where new 8248integers 8249were not truncated to 32 bits for 32-bit ACPI tables. This routine 8250converts 8251buffers and strings to integers. 8252 8253Implemented support to store a value to an Index() on a String object. 8254This 8255is an ACPI 2.0 feature that had not yet been implemented. 8256 8257Implemented new behavior for storing objects to individual package 8258elements 8259(via the Index() operator). The previous behavior was to invoke the 8260implicit 8261conversion rules if an object was already present at the index. The new 8262behavior is to simply delete any existing object and directly store the 8263new 8264object. Although the ACPI specification seems unclear on this subject, 8265other 8266ACPI implementations behave in this manner. (This is the root of the 8267AE_BAD_HEX_CONSTANT issue.) 8268 8269Modified the RSDP memory scan mechanism to support the extended checksum 8270for 8271ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 8272RSDP signature is found with a valid checksum. 8273 8274Code and Data Size: Current and previous core subsystem library sizes are 8275shown below. These are the code and data sizes for the acpica.lib produced 8276by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8277any ACPI driver or OSPM code. The debug version of the code includes the 8278debug output trace mechanism and has a much larger code and data size. 8279Note 8280that these values will vary depending on the efficiency of the compiler 8281and 8282the compiler options used during generation. 8283 8284 Previous Release: 8285 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8286 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8287 Current Release: 8288 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8289 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8290 8291 82922) iASL Compiler/Disassembler: 8293 8294Fixed a missing semicolon in the aslcompiler.y file. 8295 8296---------------------------------------- 829705 November 2004. Summary of changes for version 20041105: 8298 82991) ACPI CA Core Subsystem: 8300 8301Implemented support for FADT revision 2. This was an interim table 8302(between 8303ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 8304 8305Implemented optional support to allow uninitialized LocalX and ArgX 8306variables in a control method. The variables are initialized to an 8307Integer 8308object with a value of zero. This support is enabled by setting the 8309AcpiGbl_EnableInterpreterSlack flag to TRUE. 8310 8311Implemented support for Integer objects for the SizeOf operator. Either 4 8312or 8 is returned, depending on the current integer size (32-bit or 64-bit, 8313depending on the parent table revision). 8314 8315Fixed a problem in the implementation of the SizeOf and ObjectType 8316operators 8317where the operand was resolved to a value too early, causing incorrect 8318return values for some objects. 8319 8320Fixed some possible memory leaks during exceptional conditions. 8321 8322Code and Data Size: Current and previous core subsystem library sizes are 8323shown below. These are the code and data sizes for the acpica.lib produced 8324by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8325any ACPI driver or OSPM code. The debug version of the code includes the 8326debug output trace mechanism and has a much larger code and data size. 8327Note 8328that these values will vary depending on the efficiency of the compiler 8329and 8330the compiler options used during generation. 8331 8332 Previous Release: 8333 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8334 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 8335 Current Release: 8336 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8337 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8338 8339 83402) iASL Compiler/Disassembler: 8341 8342Implemented support for all ACPI 3.0 reserved names and methods. 8343 8344Implemented all ACPI 3.0 grammar elements in the front-end, including 8345support for semicolons. 8346 8347Implemented the ACPI 3.0 Function() and ToUUID() macros 8348 8349Fixed a problem in the disassembler where a Scope() operator would not be 8350emitted properly if the target of the scope was in another table. 8351 8352---------------------------------------- 835315 October 2004. Summary of changes for version 20041015: 8354 8355Note: ACPI CA is currently undergoing an in-depth and complete formal 8356evaluation to test/verify the following areas. Other suggestions are 8357welcome. This will result in an increase in the frequency of releases and 8358the number of bug fixes in the next few months. 8359 - Functional tests for all ASL/AML operators 8360 - All implicit/explicit type conversions 8361 - Bit fields and operation regions 8362 - 64-bit math support and 32-bit-only "truncated" math support 8363 - Exceptional conditions, both compiler and interpreter 8364 - Dynamic object deletion and memory leaks 8365 - ACPI 3.0 support when implemented 8366 - External interfaces to the ACPI subsystem 8367 8368 83691) ACPI CA Core Subsystem: 8370 8371Fixed two alignment issues on 64-bit platforms - within debug statements 8372in 8373AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 8374Address 8375field within the non-aligned ACPI generic address structure. 8376 8377Fixed a problem in the Increment and Decrement operators where incorrect 8378operand resolution could result in the inadvertent modification of the 8379original integer when the integer is passed into another method as an 8380argument and the arg is then incremented/decremented. 8381 8382Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 8383bit 8384BCD number were truncated during conversion. 8385 8386Fixed a problem in the ToDecimal operator where the length of the 8387resulting 8388string could be set incorrectly too long if the input operand was a Buffer 8389object. 8390 8391Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 8392(0) 8393within a buffer would prematurely terminate a compare between buffer 8394objects. 8395 8396Added a check for string overflow (>200 characters as per the ACPI 8397specification) during the Concatenate operator with two string operands. 8398 8399Code and Data Size: Current and previous core subsystem library sizes are 8400shown below. These are the code and data sizes for the acpica.lib produced 8401by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8402any ACPI driver or OSPM code. The debug version of the code includes the 8403debug output trace mechanism and has a much larger code and data size. 8404Note 8405that these values will vary depending on the efficiency of the compiler 8406and 8407the compiler options used during generation. 8408 8409 Previous Release: 8410 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8411 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 8412 Current Release: 8413 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8414 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 8415 8416 8417 84182) iASL Compiler/Disassembler: 8419 8420Allow the use of the ObjectType operator on uninitialized Locals and Args 8421(returns 0 as per the ACPI specification). 8422 8423Fixed a problem where the compiler would fault if there was a syntax error 8424in the FieldName of all of the various CreateXXXField operators. 8425 8426Disallow the use of lower case letters within the EISAID macro, as per the 8427ACPI specification. All EISAID strings must be of the form "UUUNNNN" 8428Where 8429U is an uppercase letter and N is a hex digit. 8430 8431 8432---------------------------------------- 843306 October 2004. Summary of changes for version 20041006: 8434 84351) ACPI CA Core Subsystem: 8436 8437Implemented support for the ACPI 3.0 Timer operator. This ASL function 8438implements a 64-bit timer with 100 nanosecond granularity. 8439 8440Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 8441implement the ACPI 3.0 Timer operator. This allows the host OS to 8442implement 8443the timer with the best clock available. Also, it keeps the core subsystem 8444out of the clock handling business, since the host OS (usually) performs 8445this function. 8446 8447Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 8448functions use a 64-bit address which is part of the packed ACPI Generic 8449Address Structure. Since the structure is non-aligned, the alignment 8450macros 8451are now used to extract the address to a local variable before use. 8452 8453Fixed a problem where the ToInteger operator assumed all input strings 8454were 8455hexadecimal. The operator now handles both decimal strings and hex strings 8456(prefixed with "0x"). 8457 8458Fixed a problem where the string length in the string object created as a 8459result of the internal ConvertToString procedure could be incorrect. This 8460potentially affected all implicit conversions and also the ToDecimalString 8461and ToHexString operators. 8462 8463Fixed two problems in the ToString operator. If the length parameter was 8464zero, an incorrect string object was created and the value of the input 8465length parameter was inadvertently changed from zero to Ones. 8466 8467Fixed a problem where the optional ResourceSource string in the 8468ExtendedIRQ 8469resource macro was ignored. 8470 8471Simplified the interfaces to the internal division functions, reducing 8472code 8473size and complexity. 8474 8475Code and Data Size: Current and previous core subsystem library sizes are 8476shown below. These are the code and data sizes for the acpica.lib produced 8477by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8478any ACPI driver or OSPM code. The debug version of the code includes the 8479debug output trace mechanism and has a much larger code and data size. 8480Note 8481that these values will vary depending on the efficiency of the compiler 8482and 8483the compiler options used during generation. 8484 8485 Previous Release: 8486 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 8487 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 8488 Current Release: 8489 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8490 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 8491 8492 84932) iASL Compiler/Disassembler: 8494 8495Implemented support for the ACPI 3.0 Timer operator. 8496 8497Fixed a problem where the Default() operator was inadvertently ignored in 8498a 8499Switch/Case block. This was a problem in the translation of the Switch 8500statement to If...Else pairs. 8501 8502Added support to allow a standalone Return operator, with no parentheses 8503(or 8504operands). 8505 8506Fixed a problem with code generation for the ElseIf operator where the 8507translated Else...If parse tree was improperly constructed leading to the 8508loss of some code. 8509 8510---------------------------------------- 851122 September 2004. Summary of changes for version 20040922: 8512 85131) ACPI CA Core Subsystem: 8514 8515Fixed a problem with the implementation of the LNot() operator where 8516"Ones" 8517was not returned for the TRUE case. Changed the code to return Ones 8518instead 8519of (!Arg) which was usually 1. This change affects iASL constant folding 8520for 8521this operator also. 8522 8523Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 8524initialized properly -- Now zero the entire buffer in this case where the 8525buffer already exists. 8526 8527Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 8528Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 8529related code considerably. This will require changes/updates to all OS 8530interface layers (OSLs.) 8531 8532Implemented a new external interface, AcpiInstallExceptionHandler, to 8533allow 8534a system exception handler to be installed. This handler is invoked upon 8535any 8536run-time exception that occurs during control method execution. 8537 8538Added support for the DSDT in AcpiTbFindTable. This allows the 8539DataTableRegion() operator to access the local copy of the DSDT. 8540 8541Code and Data Size: Current and previous core subsystem library sizes are 8542shown below. These are the code and data sizes for the acpica.lib produced 8543by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8544any ACPI driver or OSPM code. The debug version of the code includes the 8545debug output trace mechanism and has a much larger code and data size. 8546Note 8547that these values will vary depending on the efficiency of the compiler 8548and 8549the compiler options used during generation. 8550 8551 Previous Release: 8552 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 8553 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 8554 Current Release: 8555 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 8556 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 8557 8558 85592) iASL Compiler/Disassembler: 8560 8561Fixed a problem with constant folding and the LNot operator. LNot was 8562returning 1 in the TRUE case, not Ones as per the ACPI specification. This 8563could result in the generation of an incorrect folded/reduced constant. 8564 8565End-Of-File is now allowed within a "//"-style comment. A parse error no 8566longer occurs if such a comment is at the very end of the input ASL source 8567file. 8568 8569Implemented the "-r" option to override the Revision in the table header. 8570The initial use of this option will be to simplify the evaluation of the 8571AML 8572interpreter by allowing a single ASL source module to be compiled for 8573either 857432-bit or 64-bit integers. 8575 8576 8577---------------------------------------- 857827 August 2004. Summary of changes for version 20040827: 8579 85801) ACPI CA Core Subsystem: 8581 8582- Implemented support for implicit object conversion in the non-numeric 8583logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 8584LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 8585the second operand is implicitly converted on the fly to match the type of 8586the first operand. For example: 8587 8588 LEqual (Source1, Source2) 8589 8590Source1 and Source2 must each evaluate to an integer, a string, or a 8591buffer. 8592The data type of Source1 dictates the required type of Source2. Source2 is 8593implicitly converted if necessary to match the type of Source1. 8594 8595- Updated and corrected the behavior of the string conversion support. 8596The 8597rules concerning conversion of buffers to strings (according to the ACPI 8598specification) are as follows: 8599 8600ToDecimalString - explicit byte-wise conversion of buffer to string of 8601decimal values (0-255) separated by commas. ToHexString - explicit byte- 8602wise 8603conversion of buffer to string of hex values (0-FF) separated by commas. 8604ToString - explicit byte-wise conversion of buffer to string. Byte-by- 8605byte 8606copy with no transform except NULL terminated. Any other implicit buffer- 8607to- 8608string conversion - byte-wise conversion of buffer to string of hex values 8609(0-FF) separated by spaces. 8610 8611- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 8612 8613- Fixed a problem in AcpiNsGetPathnameLength where the returned length was 8614one byte too short in the case of a node in the root scope. This could 8615cause a fault during debug output. 8616 8617- Code and Data Size: Current and previous core subsystem library sizes 8618are 8619shown below. These are the code and data sizes for the acpica.lib 8620produced 8621by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8622any ACPI driver or OSPM code. The debug version of the code includes the 8623debug output trace mechanism and has a much larger code and data size. 8624Note 8625that these values will vary depending on the efficiency of the compiler 8626and 8627the compiler options used during generation. 8628 8629 Previous Release: 8630 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 8631 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 8632 Current Release: 8633 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 8634 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 8635 8636 86372) iASL Compiler/Disassembler: 8638 8639- Fixed a Linux generation error. 8640 8641 8642---------------------------------------- 864316 August 2004. Summary of changes for version 20040816: 8644 86451) ACPI CA Core Subsystem: 8646 8647Designed and implemented support within the AML interpreter for the so- 8648called "implicit return". This support returns the result of the last ASL 8649operation within a control method, in the absence of an explicit Return() 8650operator. A few machines depend on this behavior, even though it is not 8651explicitly supported by the ASL language. It is optional support that can 8652be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 8653 8654Removed support for the PCI_Config address space from the internal low 8655level 8656hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 8657support was not used internally, and would not work correctly anyway 8658because 8659the PCI bus number and segment number were not supported. There are 8660separate interfaces for PCI configuration space access because of the 8661unique 8662interface. 8663 8664Code and Data Size: Current and previous core subsystem library sizes are 8665shown below. These are the code and data sizes for the acpica.lib 8666produced 8667by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8668any ACPI driver or OSPM code. The debug version of the code includes the 8669debug output trace mechanism and has a much larger code and data size. 8670Note 8671that these values will vary depending on the efficiency of the compiler 8672and 8673the compiler options used during generation. 8674 8675 Previous Release: 8676 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8677 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 8678 Current Release: 8679 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 8680 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 8681 8682 86832) iASL Compiler/Disassembler: 8684 8685Fixed a problem where constants in ASL expressions at the root level (not 8686within a control method) could be inadvertently truncated during code 8687generation. This problem was introduced in the 20040715 release. 8688 8689 8690---------------------------------------- 869115 July 2004. Summary of changes for version 20040715: 8692 86931) ACPI CA Core Subsystem: 8694 8695Restructured the internal HW GPE interfaces to pass/track the current 8696state 8697of interrupts (enabled/disabled) in order to avoid possible deadlock and 8698increase flexibility of the interfaces. 8699 8700Implemented a "lexicographical compare" for String and Buffer objects 8701within 8702the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 8703as per further clarification to the ACPI specification. Behavior is 8704similar 8705to C library "strcmp". 8706 8707Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 8708external function. In the 32-bit non-debug case, the stack use has been 8709reduced from 168 bytes to 32 bytes. 8710 8711Deployed a new run-time configuration flag, 8712AcpiGbl_EnableInterpreterSlack, 8713whose purpose is to allow the AML interpreter to forgive certain bad AML 8714constructs. Default setting is FALSE. 8715 8716Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 8717IO 8718support code. If enabled, it allows field access to go beyond the end of 8719a 8720region definition if the field is within the region length rounded up to 8721the 8722next access width boundary (a common coding error.) 8723 8724Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 8725ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 8726these 8727symbols are lowercased by the latest version of the AcpiSrc tool. 8728 8729The prototypes for the PCI interfaces in acpiosxf.h have been updated to 8730rename "Register" to simply "Reg" to prevent certain compilers from 8731complaining. 8732 8733Code and Data Size: Current and previous core subsystem library sizes are 8734shown below. These are the code and data sizes for the acpica.lib 8735produced 8736by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8737any ACPI driver or OSPM code. The debug version of the code includes the 8738debug output trace mechanism and has a much larger code and data size. 8739Note 8740that these values will vary depending on the efficiency of the compiler 8741and 8742the compiler options used during generation. 8743 8744 Previous Release: 8745 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8746 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 8747 Current Release: 8748 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8749 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 8750 8751 87522) iASL Compiler/Disassembler: 8753 8754Implemented full support for Package objects within the Case() operator. 8755Note: The Break() operator is currently not supported within Case blocks 8756(TermLists) as there is some question about backward compatibility with 8757ACPI 87581.0 interpreters. 8759 8760 8761Fixed a problem where complex terms were not supported properly within the 8762Switch() operator. 8763 8764Eliminated extraneous warning for compiler-emitted reserved names of the 8765form "_T_x". (Used in Switch/Case operators.) 8766 8767Eliminated optimization messages for "_T_x" objects and small constants 8768within the DefinitionBlock operator. 8769 8770 8771---------------------------------------- 877215 June 2004. Summary of changes for version 20040615: 8773 87741) ACPI CA Core Subsystem: 8775 8776Implemented support for Buffer and String objects (as per ACPI 2.0) for 8777the 8778following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 8779LLessEqual. 8780 8781All directory names in the entire source package are lower case, as they 8782were in earlier releases. 8783 8784Implemented "Disassemble" command in the AML debugger that will 8785disassemble 8786a single control method. 8787 8788Code and Data Size: Current and previous core subsystem library sizes are 8789shown below. These are the code and data sizes for the acpica.lib 8790produced 8791by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8792any ACPI driver or OSPM code. The debug version of the code includes the 8793debug output trace mechanism and has a much larger code and data size. 8794Note 8795that these values will vary depending on the efficiency of the compiler 8796and 8797the compiler options used during generation. 8798 8799 Previous Release: 8800 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 8801 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 8802 8803 Current Release: 8804 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8805 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 8806 8807 88082) iASL Compiler/Disassembler: 8809 8810Implemented support for Buffer and String objects (as per ACPI 2.0) for 8811the 8812following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 8813LLessEqual. 8814 8815All directory names in the entire source package are lower case, as they 8816were in earlier releases. 8817 8818Fixed a fault when using the -g or -d<nofilename> options if the FADT was 8819not found. 8820 8821Fixed an issue with the Windows version of the compiler where later 8822versions 8823of Windows place the FADT in the registry under the name "FADT" and not 8824"FACP" as earlier versions did. This applies when using the -g or - 8825d<nofilename> options. The compiler now looks for both strings as 8826necessary. 8827 8828Fixed a problem with compiler namepath optimization where a namepath 8829within 8830the Scope() operator could not be optimized if the namepath was a subpath 8831of 8832the current scope path. 8833 8834---------------------------------------- 883527 May 2004. Summary of changes for version 20040527: 8836 88371) ACPI CA Core Subsystem: 8838 8839Completed a new design and implementation for EBDA (Extended BIOS Data 8840Area) 8841support in the RSDP scan code. The original code improperly scanned for 8842the 8843EBDA by simply scanning from memory location 0 to 0x400. The correct 8844method 8845is to first obtain the EBDA pointer from within the BIOS data area, then 8846scan 1K of memory starting at the EBDA pointer. There appear to be few if 8847any machines that place the RSDP in the EBDA, however. 8848 8849Integrated a fix for a possible fault during evaluation of BufferField 8850arguments. Obsolete code that was causing the problem was removed. 8851 8852Found and fixed a problem in the Field Support Code where data could be 8853corrupted on a bit field read that starts on an aligned boundary but does 8854not end on an aligned boundary. Merged the read/write "datum length" 8855calculation code into a common procedure. 8856 8857Rolled in a couple of changes to the FreeBSD-specific header. 8858 8859 8860Code and Data Size: Current and previous core subsystem library sizes are 8861shown below. These are the code and data sizes for the acpica.lib 8862produced 8863by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8864any ACPI driver or OSPM code. The debug version of the code includes the 8865debug output trace mechanism and has a much larger code and data size. 8866Note 8867that these values will vary depending on the efficiency of the compiler 8868and 8869the compiler options used during generation. 8870 8871 Previous Release: 8872 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 8873 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 8874 Current Release: 8875 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 8876 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 8877 8878 88792) iASL Compiler/Disassembler: 8880 8881Fixed a generation warning produced by some overly-verbose compilers for a 888264-bit constant. 8883 8884---------------------------------------- 888514 May 2004. Summary of changes for version 20040514: 8886 88871) ACPI CA Core Subsystem: 8888 8889Fixed a problem where hardware GPE enable bits sometimes not set properly 8890during and after GPE method execution. Result of 04/27 changes. 8891 8892Removed extra "clear all GPEs" when sleeping/waking. 8893 8894Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 8895AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 8896to 8897the new AcpiEv* calls as appropriate. 8898 8899ACPI_OS_NAME was removed from the OS-specific headers. The default name 8900is 8901now "Microsoft Windows NT" for maximum compatibility. However this can be 8902changed by modifying the acconfig.h file. 8903 8904Allow a single invocation of AcpiInstallNotifyHandler for a handler that 8905traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 8906 8907Run _INI methods on ThermalZone objects. This is against the ACPI 8908specification, but there is apparently ASL code in the field that has 8909these 8910_INI methods, and apparently "other" AML interpreters execute them. 8911 8912Performed a full 16/32/64 bit lint that resulted in some small changes. 8913 8914Added a sleep simulation command to the AML debugger to test sleep code. 8915 8916Code and Data Size: Current and previous core subsystem library sizes are 8917shown below. These are the code and data sizes for the acpica.lib 8918produced 8919by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8920any ACPI driver or OSPM code. The debug version of the code includes the 8921debug output trace mechanism and has a much larger code and data size. 8922Note 8923that these values will vary depending on the efficiency of the compiler 8924and 8925the compiler options used during generation. 8926 8927 Previous Release: 8928 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 8929 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 8930 Current Release: 8931 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 8932 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 8933 8934---------------------------------------- 893527 April 2004. Summary of changes for version 20040427: 8936 89371) ACPI CA Core Subsystem: 8938 8939Completed a major overhaul of the GPE handling within ACPI CA. There are 8940now three types of GPEs: wake-only, runtime-only, and combination 8941wake/run. 8942The only GPEs allowed to be combination wake/run are for button-style 8943devices such as a control-method power button, control-method sleep 8944button, 8945or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 8946not 8947referenced by any _PRW methods are marked for "runtime" and hardware 8948enabled. Any GPE that is referenced by a _PRW method is marked for "wake" 8949(and disabled at runtime). However, at sleep time, only those GPEs that 8950have been specifically enabled for wake via the AcpiEnableGpe interface 8951will 8952actually be hardware enabled. 8953 8954A new external interface has been added, AcpiSetGpeType(), that is meant 8955to 8956be used by device drivers to force a GPE to a particular type. It will be 8957especially useful for the drivers for the button devices mentioned above. 8958 8959Completed restructuring of the ACPI CA initialization sequence so that 8960default operation region handlers are installed before GPEs are 8961initialized 8962and the _PRW methods are executed. This will prevent errors when the _PRW 8963methods attempt to access system memory or I/O space. 8964 8965GPE enable/disable no longer reads the GPE enable register. We now keep 8966the 8967enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 8968thus no longer depend on the hardware to maintain these bits. 8969 8970Always clear the wake status and fixed/GPE status bits before sleep, even 8971for state S5. 8972 8973Improved the AML debugger output for displaying the GPE blocks and their 8974current status. 8975 8976Added new strings for the _OSI method, of the form "Windows 2001 SPx" 8977where 8978x = 0,1,2,3,4. 8979 8980Fixed a problem where the physical address was incorrectly calculated when 8981the Load() operator was used to directly load from an Operation Region 8982(vs. 8983loading from a Field object.) Also added check for minimum table length 8984for 8985this case. 8986 8987Fix for multiple mutex acquisition. Restore original thread SyncLevel on 8988mutex release. 8989 8990Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 8991consistency with the other fields returned. 8992 8993Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 8994structure for each GPE in the system, so the size of this structure is 8995important. 8996 8997CPU stack requirement reduction: Cleaned up the method execution and 8998object 8999evaluation paths so that now a parameter structure is passed, instead of 9000copying the various method parameters over and over again. 9001 9002In evregion.c: Correctly exit and reenter the interpreter region if and 9003only if dispatching an operation region request to a user-installed 9004handler. 9005Do not exit/reenter when dispatching to a default handler (e.g., default 9006system memory or I/O handlers) 9007 9008 9009Notes for updating drivers for the new GPE support. The following changes 9010must be made to ACPI-related device drivers that are attached to one or 9011more 9012GPEs: (This information will be added to the ACPI CA Programmer 9013Reference.) 9014 90151) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 9016explicitly call AcpiEnableGpe. 90172) There is a new interface called AcpiSetGpeType. This should be called 9018before enabling the GPE. Also, this interface will automatically disable 9019the GPE if it is currently enabled. 90203) AcpiEnableGpe no longer supports a GPE type flag. 9021 9022Specific drivers that must be changed: 90231) EC driver: 9024 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 9025AeGpeHandler, NULL); 9026 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 9027 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 9028 90292) Button Drivers (Power, Lid, Sleep): 9030Run _PRW method under parent device 9031If _PRW exists: /* This is a control-method button */ 9032 Extract GPE number and possibly GpeDevice 9033 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 9034 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 9035 9036For all other devices that have _PRWs, we automatically set the GPE type 9037to 9038ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. This 9039must be done on a selective basis, usually requiring some kind of user app 9040to allow the user to pick the wake devices. 9041 9042 9043Code and Data Size: Current and previous core subsystem library sizes are 9044shown below. These are the code and data sizes for the acpica.lib 9045produced 9046by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9047any ACPI driver or OSPM code. The debug version of the code includes the 9048debug output trace mechanism and has a much larger code and data size. 9049Note 9050that these values will vary depending on the efficiency of the compiler 9051and 9052the compiler options used during generation. 9053 9054 Previous Release: 9055 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 9056 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 9057 Current Release: 9058 9059 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 9060 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 9061 9062 9063 9064---------------------------------------- 906502 April 2004. Summary of changes for version 20040402: 9066 90671) ACPI CA Core Subsystem: 9068 9069Fixed an interpreter problem where an indirect store through an ArgX 9070parameter was incorrectly applying the "implicit conversion rules" during 9071the store. From the ACPI specification: "If the target is a method local 9072or 9073argument (LocalX or ArgX), no conversion is performed and the result is 9074stored directly to the target". The new behavior is to disable implicit 9075conversion during ALL stores to an ArgX. 9076 9077Changed the behavior of the _PRW method scan to ignore any and all errors 9078returned by a given _PRW. This prevents the scan from aborting from the 9079failure of any single _PRW. 9080 9081Moved the runtime configuration parameters from the global init procedure 9082to 9083static variables in acglobal.h. This will allow the host to override the 9084default values easily. 9085 9086Code and Data Size: Current and previous core subsystem library sizes are 9087shown below. These are the code and data sizes for the acpica.lib 9088produced 9089by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9090any ACPI driver or OSPM code. The debug version of the code includes the 9091debug output trace mechanism and has a much larger code and data size. 9092Note 9093that these values will vary depending on the efficiency of the compiler 9094and 9095the compiler options used during generation. 9096 9097 Previous Release: 9098 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 9099 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 9100 Current Release: 9101 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 9102 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 9103 9104 91052) iASL Compiler/Disassembler: 9106 9107iASL now fully disassembles SSDTs. However, External() statements are not 9108generated automatically for unresolved symbols at this time. This is a 9109planned feature for future implementation. 9110 9111Fixed a scoping problem in the disassembler that occurs when the type of 9112the 9113target of a Scope() operator is overridden. This problem caused an 9114incorrectly nested internal namespace to be constructed. 9115 9116Any warnings or errors that are emitted during disassembly are now 9117commented 9118out automatically so that the resulting file can be recompiled without any 9119hand editing. 9120 9121---------------------------------------- 912226 March 2004. Summary of changes for version 20040326: 9123 91241) ACPI CA Core Subsystem: 9125 9126Implemented support for "wake" GPEs via interaction between GPEs and the 9127_PRW methods. Every GPE that is pointed to by one or more _PRWs is 9128identified as a WAKE GPE and by default will no longer be enabled at 9129runtime. Previously, we were blindly enabling all GPEs with a 9130corresponding 9131_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 9132We 9133believe this has been the cause of thousands of "spurious" GPEs on some 9134systems. 9135 9136This new GPE behavior is can be reverted to the original behavior (enable 9137ALL GPEs at runtime) via a runtime flag. 9138 9139Fixed a problem where aliased control methods could not access objects 9140properly. The proper scope within the namespace was not initialized 9141(transferred to the target of the aliased method) before executing the 9142target method. 9143 9144Fixed a potential race condition on internal object deletion on the return 9145object in AcpiEvaluateObject. 9146 9147Integrated a fix for resource descriptors where both _MEM and _MTP were 9148being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 9149wide, 0x0F instead of 0x03.) 9150 9151Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing 9152a 9153fault in some cases. 9154 9155Updated Notify() values for debug statements in evmisc.c 9156 9157Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 9158 9159Code and Data Size: Current and previous core subsystem library sizes are 9160shown below. These are the code and data sizes for the acpica.lib 9161produced 9162by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9163any ACPI driver or OSPM code. The debug version of the code includes the 9164debug output trace mechanism and has a much larger code and data size. 9165Note 9166that these values will vary depending on the efficiency of the compiler 9167and 9168the compiler options used during generation. 9169 9170 Previous Release: 9171 9172 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 9173 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 9174 Current Release: 9175 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 9176 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 9177 9178---------------------------------------- 917911 March 2004. Summary of changes for version 20040311: 9180 91811) ACPI CA Core Subsystem: 9182 9183Fixed a problem where errors occurring during the parse phase of control 9184method execution did not abort cleanly. For example, objects created and 9185installed in the namespace were not deleted. This caused all subsequent 9186invocations of the method to return the AE_ALREADY_EXISTS exception. 9187 9188Implemented a mechanism to force a control method to "Serialized" 9189execution 9190if the method attempts to create namespace objects. (The root of the 9191AE_ALREADY_EXISTS problem.) 9192 9193Implemented support for the predefined _OSI "internal" control method. 9194Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 9195"Windows 2001.1", and can be easily upgraded for new strings as necessary. 9196This feature will allow "other" operating systems to execute the fully 9197tested, "Windows" code path through the ASL code 9198 9199Global Lock Support: Now allows multiple acquires and releases with any 9200internal thread. Removed concept of "owning thread" for this special 9201mutex. 9202 9203Fixed two functions that were inappropriately declaring large objects on 9204the 9205CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 9206during 9207method execution considerably. 9208 9209Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 9210S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 9211 9212Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 9213defined on the machine. 9214 9215Implemented two runtime options: One to force all control method 9216execution 9217to "Serialized" to mimic Windows behavior, another to disable _OSI support 9218if it causes problems on a given machine. 9219 9220Code and Data Size: Current and previous core subsystem library sizes are 9221shown below. These are the code and data sizes for the acpica.lib 9222produced 9223by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9224any ACPI driver or OSPM code. The debug version of the code includes the 9225debug output trace mechanism and has a much larger code and data size. 9226Note 9227that these values will vary depending on the efficiency of the compiler 9228and 9229the compiler options used during generation. 9230 9231 Previous Release: 9232 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 9233 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 9234 Current Release: 9235 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 9236 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 9237 92382) iASL Compiler/Disassembler: 9239 9240Fixed an array size problem for FreeBSD that would cause the compiler to 9241fault. 9242 9243---------------------------------------- 924420 February 2004. Summary of changes for version 20040220: 9245 9246 92471) ACPI CA Core Subsystem: 9248 9249Implemented execution of _SxD methods for Device objects in the 9250GetObjectInfo interface. 9251 9252Fixed calls to _SST method to pass the correct arguments. 9253 9254Added a call to _SST on wake to restore to "working" state. 9255 9256Check for End-Of-Buffer failure case in the WalkResources interface. 9257 9258Integrated fix for 64-bit alignment issue in acglobal.h by moving two 9259structures to the beginning of the file. 9260 9261After wake, clear GPE status register(s) before enabling GPEs. 9262 9263After wake, clear/enable power button. (Perhaps we should clear/enable 9264all 9265fixed events upon wake.) 9266 9267Fixed a couple of possible memory leaks in the Namespace manager. 9268 9269Integrated latest acnetbsd.h file. 9270 9271---------------------------------------- 927211 February 2004. Summary of changes for version 20040211: 9273 9274 92751) ACPI CA Core Subsystem: 9276 9277Completed investigation and implementation of the call-by-reference 9278mechanism for control method arguments. 9279 9280Fixed a problem where a store of an object into an indexed package could 9281fail if the store occurs within a different method than the method that 9282created the package. 9283 9284Fixed a problem where the ToDecimal operator could return incorrect 9285results. 9286 9287Fixed a problem where the CopyObject operator could fail on some of the 9288more 9289obscure objects (e.g., Reference objects.) 9290 9291Improved the output of the Debug object to display buffer, package, and 9292index objects. 9293 9294Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 9295the expected result. 9296 9297Added permanent ACPI_REPORT_ERROR macros for all instances of the 9298ACPI_AML_INTERNAL exception. 9299 9300Integrated latest version of acfreebsd.h 9301 9302---------------------------------------- 930316 January 2004. Summary of changes for version 20040116: 9304 9305The purpose of this release is primarily to update the copyright years in 9306each module, thus causing a huge number of diffs. There are a few small 9307functional changes, however. 9308 93091) ACPI CA Core Subsystem: 9310 9311Improved error messages when there is a problem finding one or more of the 9312required base ACPI tables 9313 9314Reintroduced the definition of APIC_HEADER in actbl.h 9315 9316Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 9317 9318Removed extraneous reference to NewObj in dsmthdat.c 9319 93202) iASL compiler 9321 9322Fixed a problem introduced in December that disabled the correct 9323disassembly 9324of Resource Templates 9325 9326 9327---------------------------------------- 932803 December 2003. Summary of changes for version 20031203: 9329 93301) ACPI CA Core Subsystem: 9331 9332Changed the initialization of Operation Regions during subsystem 9333init to perform two entire walks of the ACPI namespace; The first 9334to initialize the regions themselves, the second to execute the 9335_REG methods. This fixed some interdependencies across _REG 9336methods found on some machines. 9337 9338Fixed a problem where a Store(Local0, Local1) could simply update 9339the object reference count, and not create a new copy of the 9340object if the Local1 is uninitialized. 9341 9342Implemented support for the _SST reserved method during sleep 9343transitions. 9344 9345Implemented support to clear the SLP_TYP and SLP_EN bits when 9346waking up, this is apparently required by some machines. 9347 9348When sleeping, clear the wake status only if SleepState is not S5. 9349 9350Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 9351pointer arithmetic advanced a string pointer too far. 9352 9353Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 9354could be returned if the requested table has not been loaded. 9355 9356Within the support for IRQ resources, restructured the handling of 9357the active and edge/level bits. 9358 9359Fixed a few problems in AcpiPsxExecute() where memory could be 9360leaked under certain error conditions. 9361 9362Improved error messages for the cases where the ACPI mode could 9363not be entered. 9364 9365Code and Data Size: Current and previous core subsystem library 9366sizes are shown below. These are the code and data sizes for the 9367acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9368these values do not include any ACPI driver or OSPM code. The 9369debug version of the code includes the debug output trace 9370mechanism and has a much larger code and data size. Note that 9371these values will vary depending on the efficiency of the compiler 9372and the compiler options used during generation. 9373 9374 Previous Release (20031029): 9375 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 9376 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 9377 Current Release: 9378 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 9379 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 9380 93812) iASL Compiler/Disassembler: 9382 9383Implemented a fix for the iASL disassembler where a bad index was 9384generated. This was most noticeable on 64-bit platforms 9385 9386 9387---------------------------------------- 938829 October 2003. Summary of changes for version 20031029: 9389 93901) ACPI CA Core Subsystem: 9391 9392 9393Fixed a problem where a level-triggered GPE with an associated 9394_Lxx control method was incorrectly cleared twice. 9395 9396Fixed a problem with the Field support code where an access can 9397occur beyond the end-of-region if the field is non-aligned but 9398extends to the very end of the parent region (resulted in an 9399AE_AML_REGION_LIMIT exception.) 9400 9401Fixed a problem with ACPI Fixed Events where an RT Clock handler 9402would not get invoked on an RTC event. The RTC event bitmasks for 9403the PM1 registers were not being initialized properly. 9404 9405Implemented support for executing _STA and _INI methods for 9406Processor objects. Although this is currently not part of the 9407ACPI specification, there is existing ASL code that depends on the 9408init-time execution of these methods. 9409 9410Implemented and deployed a GetDescriptorName function to decode 9411the various types of internal descriptors. Guards against null 9412descriptors during debug output also. 9413 9414Implemented and deployed a GetNodeName function to extract the 4- 9415character namespace node name. This function simplifies the debug 9416and error output, as well as guarding against null pointers during 9417output. 9418 9419Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 9420simplify the debug and error output of 64-bit integers. This 9421macro replaces the HIDWORD and LODWORD macros for dumping these 9422integers. 9423 9424Updated the implementation of the Stall() operator to only call 9425AcpiOsStall(), and also return an error if the operand is larger 9426than 255. This preserves the required behavior of not 9427relinquishing the processor, as would happen if AcpiOsSleep() was 9428called for "long stalls". 9429 9430Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 9431initialized are now treated as NOOPs. 9432 9433Cleaned up a handful of warnings during 64-bit generation. 9434 9435Fixed a reported error where and incorrect GPE number was passed 9436to the GPE dispatch handler. This value is only used for error 9437output, however. Used this opportunity to clean up and streamline 9438the GPE dispatch code. 9439 9440Code and Data Size: Current and previous core subsystem library 9441sizes are shown below. These are the code and data sizes for the 9442acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9443these values do not include any ACPI driver or OSPM code. The 9444 9445debug version of the code includes the debug output trace 9446mechanism and has a much larger code and data size. Note that 9447these values will vary depending on the efficiency of the compiler 9448and the compiler options used during generation. 9449 9450 Previous Release (20031002): 9451 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 9452 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 9453 Current Release: 9454 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 9455 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 9456 9457 94582) iASL Compiler/Disassembler: 9459 9460Updated the iASL compiler to return an error if the operand to the 9461Stall() operator is larger than 255. 9462 9463 9464---------------------------------------- 946502 October 2003. Summary of changes for version 20031002: 9466 9467 94681) ACPI CA Core Subsystem: 9469 9470Fixed a problem with Index Fields where the index was not 9471incremented for fields that require multiple writes to the 9472index/data registers (Fields that are wider than the data 9473register.) 9474 9475Fixed a problem with all Field objects where a write could go 9476beyond the end-of-field if the field was larger than the access 9477granularity and therefore required multiple writes to complete the 9478request. An extra write beyond the end of the field could happen 9479inadvertently. 9480 9481Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 9482would incorrectly be returned if the width of the Data Register 9483was larger than the specified field access width. 9484 9485Completed fixes for LoadTable() and Unload() and verified their 9486operation. Implemented full support for the "DdbHandle" object 9487throughout the ACPI CA subsystem. 9488 9489Implemented full support for the MADT and ECDT tables in the ACPI 9490CA header files. Even though these tables are not directly 9491consumed by ACPI CA, the header definitions are useful for ACPI 9492device drivers. 9493 9494Integrated resource descriptor fixes posted to the Linux ACPI 9495list. This included checks for minimum descriptor length, and 9496support for trailing NULL strings within descriptors that have 9497optional string elements. 9498 9499Code and Data Size: Current and previous core subsystem library 9500sizes are shown below. These are the code and data sizes for the 9501acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9502these values do not include any ACPI driver or OSPM code. The 9503debug version of the code includes the debug output trace 9504mechanism and has a much larger code and data size. Note that 9505these values will vary depending on the efficiency of the compiler 9506and the compiler options used during generation. 9507 9508 Previous Release (20030918): 9509 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 9510 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 9511 Current Release: 9512 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 9513 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 9514 9515 95162) iASL Compiler: 9517 9518Implemented detection of non-ASCII characters within the input 9519source ASL file. This catches attempts to compile binary (AML) 9520files early in the compile, with an informative error message. 9521 9522Fixed a problem where the disassembler would fault if the output 9523filename could not be generated or if the output file could not be 9524opened. 9525 9526---------------------------------------- 952718 September 2003. Summary of changes for version 20030918: 9528 9529 95301) ACPI CA Core Subsystem: 9531 9532Found and fixed a longstanding problem with the late execution of 9533the various deferred AML opcodes (such as Operation Regions, 9534Buffer Fields, Buffers, and Packages). If the name string 9535specified for the name of the new object placed the object in a 9536scope other than the current scope, the initialization/execution 9537of the opcode failed. The solution to this problem was to 9538implement a mechanism where the late execution of such opcodes 9539does not attempt to lookup/create the name a second time in an 9540incorrect scope. This fixes the "region size computed 9541incorrectly" problem. 9542 9543Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 9544Global Lock AE_BAD_PARAMETER error. 9545 9546Fixed several 64-bit issues with prototypes, casting and data 9547types. 9548 9549Removed duplicate prototype from acdisasm.h 9550 9551Fixed an issue involving EC Operation Region Detach (Shaohua Li) 9552 9553Code and Data Size: Current and previous core subsystem library 9554sizes are shown below. These are the code and data sizes for the 9555acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9556these values do not include any ACPI driver or OSPM code. The 9557debug version of the code includes the debug output trace 9558mechanism and has a much larger code and data size. Note that 9559these values will vary depending on the efficiency of the compiler 9560and the compiler options used during generation. 9561 9562 Previous Release: 9563 9564 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 9565 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 9566 Current Release: 9567 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 9568 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 9569 9570 95712) Linux: 9572 9573Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 9574correct sleep time in seconds. 9575 9576---------------------------------------- 957714 July 2003. Summary of changes for version 20030619: 9578 95791) ACPI CA Core Subsystem: 9580 9581Parse SSDTs in order discovered, as opposed to reverse order 9582(Hrvoje Habjanic) 9583 9584Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 9585Klausner, 9586 Nate Lawson) 9587 9588 95892) Linux: 9590 9591Dynamically allocate SDT list (suggested by Andi Kleen) 9592 9593proc function return value cleanups (Andi Kleen) 9594 9595Correctly handle NMI watchdog during long stalls (Andrew Morton) 9596 9597Make it so acpismp=force works (reported by Andrew Morton) 9598 9599 9600---------------------------------------- 960119 June 2003. Summary of changes for version 20030619: 9602 96031) ACPI CA Core Subsystem: 9604 9605Fix To/FromBCD, eliminating the need for an arch-specific #define. 9606 9607Do not acquire a semaphore in the S5 shutdown path. 9608 9609Fix ex_digits_needed for 0. (Takayoshi Kochi) 9610 9611Fix sleep/stall code reversal. (Andi Kleen) 9612 9613Revert a change having to do with control method calling 9614semantics. 9615 96162) Linux: 9617 9618acpiphp update (Takayoshi Kochi) 9619 9620Export acpi_disabled for sonypi (Stelian Pop) 9621 9622Mention acpismp=force in config help 9623 9624Re-add acpitable.c and acpismp=force. This improves backwards 9625 9626compatibility and also cleans up the code to a significant degree. 9627 9628Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 9629 9630---------------------------------------- 963122 May 2003. Summary of changes for version 20030522: 9632 96331) ACPI CA Core Subsystem: 9634 9635Found and fixed a reported problem where an AE_NOT_FOUND error 9636occurred occasionally during _BST evaluation. This turned out to 9637be an Owner ID allocation issue where a called method did not get 9638a new ID assigned to it. Eventually, (after 64k calls), the Owner 9639ID UINT16 would wraparound so that the ID would be the same as the 9640caller's and the called method would delete the caller's 9641namespace. 9642 9643Implemented extended error reporting for control methods that are 9644aborted due to a run-time exception. Output includes the exact 9645AML instruction that caused the method abort, a dump of the method 9646locals and arguments at the time of the abort, and a trace of all 9647nested control method calls. 9648 9649Modified the interpreter to allow the creation of buffers of zero 9650length from the AML code. Implemented new code to ensure that no 9651attempt is made to actually allocate a memory buffer (of length 9652zero) - instead, a simple buffer object with a NULL buffer pointer 9653and length zero is created. A warning is no longer issued when 9654the AML attempts to create a zero-length buffer. 9655 9656Implemented a workaround for the "leading asterisk issue" in 9657_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 9658asterisk is automatically removed if present in any HID, UID, or 9659CID strings. The iASL compiler will still flag this asterisk as 9660an error, however. 9661 9662Implemented full support for _CID methods that return a package of 9663multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 9664now additionally returns a device _CID list if present. This 9665required a change to the external interface in order to pass an 9666ACPI_BUFFER object as a parameter since the _CID list is of 9667variable length. 9668 9669Fixed a problem with the new AE_SAME_HANDLER exception where 9670handler initialization code did not know about this exception. 9671 9672Code and Data Size: Current and previous core subsystem library 9673sizes are shown below. These are the code and data sizes for the 9674acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9675these values do not include any ACPI driver or OSPM code. The 9676debug version of the code includes the debug output trace 9677mechanism and has a much larger code and data size. Note that 9678these values will vary depending on the efficiency of the compiler 9679and the compiler options used during generation. 9680 9681 Previous Release (20030509): 9682 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 9683 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 9684 Current Release: 9685 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 9686 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 9687 9688 96892) Linux: 9690 9691Fixed a bug in which we would reinitialize the ACPI interrupt 9692after it was already working, thus disabling all ACPI and the IRQs 9693for any other device sharing the interrupt. (Thanks to Stian 9694Jordet) 9695 9696Toshiba driver update (John Belmonte) 9697 9698Return only 0 or 1 for our interrupt handler status (Andrew 9699Morton) 9700 9701 97023) iASL Compiler: 9703 9704Fixed a reported problem where multiple (nested) ElseIf() 9705statements were not handled correctly by the compiler, resulting 9706in incorrect warnings and incorrect AML code. This was a problem 9707in both the ASL parser and the code generator. 9708 9709 97104) Documentation: 9711 9712Added changes to existing interfaces, new exception codes, and new 9713text concerning reference count object management versus garbage 9714collection. 9715 9716---------------------------------------- 971709 May 2003. Summary of changes for version 20030509. 9718 9719 97201) ACPI CA Core Subsystem: 9721 9722Changed the subsystem initialization sequence to hold off 9723installation of address space handlers until the hardware has been 9724initialized and the system has entered ACPI mode. This is because 9725the installation of space handlers can cause _REG methods to be 9726run. Previously, the _REG methods could potentially be run before 9727ACPI mode was enabled. 9728 9729Fixed some memory leak issues related to address space handler and 9730notify handler installation. There were some problems with the 9731reference count mechanism caused by the fact that the handler 9732objects are shared across several namespace objects. 9733 9734Fixed a reported problem where reference counts within the 9735namespace were not properly updated when named objects created by 9736method execution were deleted. 9737 9738Fixed a reported problem where multiple SSDTs caused a deletion 9739issue during subsystem termination. Restructured the table data 9740structures to simplify the linked lists and the related code. 9741 9742Fixed a problem where the table ID associated with secondary 9743tables (SSDTs) was not being propagated into the namespace objects 9744created by those tables. This would only present a problem for 9745tables that are unloaded at run-time, however. 9746 9747Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 9748type as the length parameter (instead of UINT32). 9749 9750Solved a long-standing problem where an ALREADY_EXISTS error 9751appears on various systems. This problem could happen when there 9752are multiple PCI_Config operation regions under a single PCI root 9753bus. This doesn't happen very frequently, but there are some 9754systems that do this in the ASL. 9755 9756Fixed a reported problem where the internal DeleteNode function 9757was incorrectly handling the case where a namespace node was the 9758first in the parent's child list, and had additional peers (not 9759the only child, but first in the list of children.) 9760 9761Code and Data Size: Current core subsystem library sizes are shown 9762below. These are the code and data sizes for the acpica.lib 9763produced by the Microsoft Visual C++ 6.0 compiler, and these 9764values do not include any ACPI driver or OSPM code. The debug 9765version of the code includes the debug output trace mechanism and 9766has a much larger code and data size. Note that these values will 9767vary depending on the efficiency of the compiler and the compiler 9768options used during generation. 9769 9770 Previous Release 9771 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 9772 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 9773 Current Release: 9774 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 9775 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 9776 9777 97782) Linux: 9779 9780Allow ":" in OS override string (Ducrot Bruno) 9781 9782Kobject fix (Greg KH) 9783 9784 97853 iASL Compiler/Disassembler: 9786 9787Fixed a problem in the generation of the C source code files (AML 9788is emitted in C source statements for BIOS inclusion) where the 9789Ascii dump that appears within a C comment at the end of each line 9790could cause a compile time error if the AML sequence happens to 9791have an open comment or close comment sequence embedded. 9792 9793 9794---------------------------------------- 979524 April 2003. Summary of changes for version 20030424. 9796 9797 97981) ACPI CA Core Subsystem: 9799 9800Support for big-endian systems has been implemented. Most of the 9801support has been invisibly added behind big-endian versions of the 9802ACPI_MOVE_* macros. 9803 9804Fixed a problem in AcpiHwDisableGpeBlock() and 9805AcpiHwClearGpeBlock() where an incorrect offset was passed to the 9806low level hardware write routine. The offset parameter was 9807actually eliminated from the low level read/write routines because 9808they had become obsolete. 9809 9810Fixed a problem where a handler object was deleted twice during 9811the removal of a fixed event handler. 9812 9813 98142) Linux: 9815 9816A fix for SMP systems with link devices was contributed by 9817 9818Compaq's Dan Zink. 9819 9820(2.5) Return whether we handled the interrupt in our IRQ handler. 9821(Linux ISRs no longer return void, so we can propagate the handler 9822return value from the ACPI CA core back to the OS.) 9823 9824 9825 98263) Documentation: 9827 9828The ACPI CA Programmer Reference has been updated to reflect new 9829interfaces and changes to existing interfaces. 9830 9831---------------------------------------- 983228 March 2003. Summary of changes for version 20030328. 9833 98341) ACPI CA Core Subsystem: 9835 9836The GPE Block Device support has been completed. New interfaces 9837are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 9838interfaces (enable, disable, clear, getstatus) have been split 9839into separate interfaces for Fixed Events and General Purpose 9840Events (GPEs) in order to support GPE Block Devices properly. 9841 9842Fixed a problem where the error message "Failed to acquire 9843semaphore" would appear during operations on the embedded 9844controller (EC). 9845 9846Code and Data Size: Current core subsystem library sizes are shown 9847below. These are the code and data sizes for the acpica.lib 9848produced by the Microsoft Visual C++ 6.0 compiler, and these 9849values do not include any ACPI driver or OSPM code. The debug 9850version of the code includes the debug output trace mechanism and 9851has a much larger code and data size. Note that these values will 9852vary depending on the efficiency of the compiler and the compiler 9853options used during generation. 9854 9855 Previous Release 9856 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 9857 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 9858 Current Release: 9859 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 9860 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 9861 9862 9863---------------------------------------- 986428 February 2003. Summary of changes for version 20030228. 9865 9866 98671) ACPI CA Core Subsystem: 9868 9869The GPE handling and dispatch code has been completely overhauled 9870in preparation for support of GPE Block Devices (ID ACPI0006). 9871This affects internal data structures and code only; there should 9872be no differences visible externally. One new file has been 9873added, evgpeblk.c 9874 9875The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 9876fields that are used to determine the GPE block lengths. The 9877REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 9878structures are ignored. This is per the ACPI specification but it 9879isn't very clear. The full 256 Block 0/1 GPEs are now supported 9880(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 9881 9882In the SCI interrupt handler, removed the read of the PM1_CONTROL 9883register to look at the SCI_EN bit. On some machines, this read 9884causes an SMI event and greatly slows down SCI events. (This may 9885in fact be the cause of slow battery status response on some 9886systems.) 9887 9888Fixed a problem where a store of a NULL string to a package object 9889could cause the premature deletion of the object. This was seen 9890during execution of the battery _BIF method on some systems, 9891resulting in no battery data being returned. 9892 9893Added AcpiWalkResources interface to simplify parsing of resource 9894lists. 9895 9896Code and Data Size: Current core subsystem library sizes are shown 9897below. These are the code and data sizes for the acpica.lib 9898produced by the Microsoft Visual C++ 6.0 compiler, and these 9899values do not include any ACPI driver or OSPM code. The debug 9900version of the code includes the debug output trace mechanism and 9901has a much larger code and data size. Note that these values will 9902vary depending on the efficiency of the compiler and the compiler 9903options used during generation. 9904 9905 Previous Release 9906 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 9907 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 9908 Current Release: 9909 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 9910 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 9911 9912 99132) Linux 9914 9915S3 fixes (Ole Rohne) 9916 9917Update ACPI PHP driver with to use new acpi_walk_resource API 9918(Bjorn Helgaas) 9919 9920Add S4BIOS support (Pavel Machek) 9921 9922Map in entire table before performing checksum (John Stultz) 9923 9924Expand the mem= cmdline to allow the specification of reserved and 9925ACPI DATA blocks (Pavel Machek) 9926 9927Never use ACPI on VISWS 9928 9929Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 9930 9931Revert a change that allowed P_BLK lengths to be 4 or 5. This is 9932causing us to think that some systems support C2 when they really 9933don't. 9934 9935Do not count processor objects for non-present CPUs (Thanks to 9936Dominik Brodowski) 9937 9938 99393) iASL Compiler: 9940 9941Fixed a problem where ASL include files could not be found and 9942opened. 9943 9944Added support for the _PDC reserved name. 9945 9946 9947---------------------------------------- 994822 January 2003. Summary of changes for version 20030122. 9949 9950 99511) ACPI CA Core Subsystem: 9952 9953Added a check for constructs of the form: Store (Local0, Local0) 9954where Local0 is not initialized. Apparently, some BIOS 9955programmers believe that this is a NOOP. Since this store doesn't 9956do anything anyway, the new prototype behavior will ignore this 9957error. This is a case where we can relax the strict checking in 9958the interpreter in the name of compatibility. 9959 9960 99612) Linux 9962 9963The AcpiSrc Source Conversion Utility has been released with the 9964Linux package for the first time. This is the utility that is 9965used to convert the ACPI CA base source code to the Linux version. 9966 9967(Both) Handle P_BLK lengths shorter than 6 more gracefully 9968 9969(Both) Move more headers to include/acpi, and delete an unused 9970header. 9971 9972(Both) Move drivers/acpi/include directory to include/acpi 9973 9974(Both) Boot functions don't use cmdline, so don't pass it around 9975 9976(Both) Remove include of unused header (Adrian Bunk) 9977 9978(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 9979the 9980former now also includes the latter, acpiphp.h only needs the one, 9981now. 9982 9983(2.5) Make it possible to select method of bios restoring after S3 9984resume. [=> no more ugly ifdefs] (Pavel Machek) 9985 9986(2.5) Make proc write interfaces work (Pavel Machek) 9987 9988(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 9989 9990(2.5) Break out ACPI Perf code into its own module, under cpufreq 9991(Dominik Brodowski) 9992 9993(2.4) S4BIOS support (Ducrot Bruno) 9994 9995(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 9996Visinoni) 9997 9998 99993) iASL Compiler: 10000 10001Added support to disassemble SSDT and PSDTs. 10002 10003Implemented support to obtain SSDTs from the Windows registry if 10004available. 10005 10006 10007---------------------------------------- 1000809 January 2003. Summary of changes for version 20030109. 10009 100101) ACPI CA Core Subsystem: 10011 10012Changed the behavior of the internal Buffer-to-String conversion 10013function. The current ACPI specification states that the contents 10014of the buffer are "converted to a string of two-character 10015hexadecimal numbers, each separated by a space". Unfortunately, 10016this definition is not backwards compatible with existing ACPI 1.0 10017implementations (although the behavior was not defined in the ACPI 100181.0 specification). The new behavior simply copies data from the 10019buffer to the string until a null character is found or the end of 10020the buffer is reached. The new String object is always null 10021terminated. This problem was seen during the generation of _BIF 10022battery data where incorrect strings were returned for battery 10023type, etc. This will also require an errata to the ACPI 10024specification. 10025 10026Renamed all instances of NATIVE_UINT and NATIVE_INT to 10027ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 10028 10029Copyright in all module headers (both Linux and non-Linux) has be 10030updated to 2003. 10031 10032Code and Data Size: Current core subsystem library sizes are shown 10033below. These are the code and data sizes for the acpica.lib 10034produced by the Microsoft Visual C++ 6.0 compiler, and these 10035values do not include any ACPI driver or OSPM code. The debug 10036version of the code includes the debug output trace mechanism and 10037has a much larger code and data size. Note that these values will 10038vary depending on the efficiency of the compiler and the compiler 10039options used during generation. 10040 10041 Previous Release 10042 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10043 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10044 Current Release: 10045 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10046 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10047 10048 100492) Linux 10050 10051Fixed an oops on module insertion/removal (Matthew Tippett) 10052 10053(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 10054 10055(2.5) Replace pr_debug (Randy Dunlap) 10056 10057(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 10058 10059(Both) Eliminate spawning of thread from timer callback, in favor 10060of schedule_work() 10061 10062(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 10063 10064(Both) Added define for Fixed Function HW region (Matthew Wilcox) 10065 10066(Both) Add missing statics to button.c (Pavel Machek) 10067 10068Several changes have been made to the source code translation 10069utility that generates the Linux Code in order to make the code 10070more "Linux-like": 10071 10072All typedefs on structs and unions have been removed in keeping 10073with the Linux coding style. 10074 10075Removed the non-Linux SourceSafe module revision number from each 10076module header. 10077 10078Completed major overhaul of symbols to be lowercased for linux. 10079Doubled the number of symbols that are lowercased. 10080 10081Fixed a problem where identifiers within procedure headers and 10082within quotes were not fully lower cased (they were left with a 10083starting capital.) 10084 10085Some C macros whose only purpose is to allow the generation of 16- 10086bit code are now completely removed in the Linux code, increasing 10087readability and maintainability. 10088 10089---------------------------------------- 10090 1009112 December 2002. Summary of changes for version 20021212. 10092 10093 100941) ACPI CA Core Subsystem: 10095 10096Fixed a problem where the creation of a zero-length AML Buffer 10097would cause a fault. 10098 10099Fixed a problem where a Buffer object that pointed to a static AML 10100buffer (in an ACPI table) could inadvertently be deleted, causing 10101memory corruption. 10102 10103Fixed a problem where a user buffer (passed in to the external 10104ACPI CA interfaces) could be overwritten if the buffer was too 10105small to complete the operation, causing memory corruption. 10106 10107Fixed a problem in the Buffer-to-String conversion code where a 10108string of length one was always returned, regardless of the size 10109of the input Buffer object. 10110 10111Removed the NATIVE_CHAR data type across the entire source due to 10112lack of need and lack of consistent use. 10113 10114Code and Data Size: Current core subsystem library sizes are shown 10115below. These are the code and data sizes for the acpica.lib 10116produced by the Microsoft Visual C++ 6.0 compiler, and these 10117values do not include any ACPI driver or OSPM code. The debug 10118version of the code includes the debug output trace mechanism and 10119has a much larger code and data size. Note that these values will 10120vary depending on the efficiency of the compiler and the compiler 10121options used during generation. 10122 10123 Previous Release 10124 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 10125 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 10126 Current Release: 10127 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10128 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10129 10130 10131---------------------------------------- 1013205 December 2002. Summary of changes for version 20021205. 10133 101341) ACPI CA Core Subsystem: 10135 10136Fixed a problem where a store to a String or Buffer object could 10137cause corruption of the DSDT if the object type being stored was 10138the same as the target object type and the length of the object 10139being stored was equal to or smaller than the original (existing) 10140target object. This was seen to cause corruption of battery _BIF 10141buffers if the _BIF method modified the buffer on the fly. 10142 10143Fixed a problem where an internal error was generated if a control 10144method invocation was used in an OperationRegion, Buffer, or 10145Package declaration. This was caused by the deferred parsing of 10146the control method and thus the deferred creation of the internal 10147method object. The solution to this problem was to create the 10148internal method object at the moment the method is encountered in 10149the first pass - so that subsequent references to the method will 10150able to obtain the required parameter count and thus properly 10151parse the method invocation. This problem presented itself as an 10152AE_AML_INTERNAL during the pass 1 parse phase during table load. 10153 10154Fixed a problem where the internal String object copy routine did 10155not always allocate sufficient memory for the target String object 10156and caused memory corruption. This problem was seen to cause 10157"Allocation already present in list!" errors as memory allocation 10158became corrupted. 10159 10160Implemented a new function for the evaluation of namespace objects 10161that allows the specification of the allowable return object 10162types. This simplifies a lot of code that checks for a return 10163object of one or more specific objects returned from the 10164evaluation (such as _STA, etc.) This may become and external 10165function if it would be useful to ACPI-related drivers. 10166 10167Completed another round of prefixing #defines with "ACPI_" for 10168clarity. 10169 10170Completed additional code restructuring to allow more modular 10171linking for iASL compiler and AcpiExec. Several files were split 10172creating new files. New files: nsparse.c dsinit.c evgpe.c 10173 10174Implemented an abort mechanism to terminate an executing control 10175method via the AML debugger. This feature is useful for debugging 10176control methods that depend (wait) for specific hardware 10177responses. 10178 10179Code and Data Size: Current core subsystem library sizes are shown 10180below. These are the code and data sizes for the acpica.lib 10181produced by the Microsoft Visual C++ 6.0 compiler, and these 10182values do not include any ACPI driver or OSPM code. The debug 10183version of the code includes the debug output trace mechanism and 10184has a much larger code and data size. Note that these values will 10185vary depending on the efficiency of the compiler and the compiler 10186options used during generation. 10187 10188 Previous Release 10189 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10190 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 10191 Current Release: 10192 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 10193 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 10194 10195 101962) iASL Compiler/Disassembler 10197 10198Fixed a compiler code generation problem for "Interrupt" Resource 10199Descriptors. If specified in the ASL, the optional "Resource 10200Source Index" and "Resource Source" fields were not inserted into 10201the correct location within the AML resource descriptor, creating 10202an invalid descriptor. 10203 10204Fixed a disassembler problem for "Interrupt" resource descriptors. 10205The optional "Resource Source Index" and "Resource Source" fields 10206were ignored. 10207 10208 10209---------------------------------------- 1021022 November 2002. Summary of changes for version 20021122. 10211 10212 102131) ACPI CA Core Subsystem: 10214 10215Fixed a reported problem where an object stored to a Method Local 10216or Arg was not copied to a new object during the store - the 10217object pointer was simply copied to the Local/Arg. This caused 10218all subsequent operations on the Local/Arg to also affect the 10219original source of the store operation. 10220 10221Fixed a problem where a store operation to a Method Local or Arg 10222was not completed properly if the Local/Arg contained a reference 10223(from RefOf) to a named field. The general-purpose store-to- 10224namespace-node code is now used so that this case is handled 10225automatically. 10226 10227Fixed a problem where the internal object copy routine would cause 10228a protection fault if the object being copied was a Package and 10229contained either 1) a NULL package element or 2) a nested sub- 10230package. 10231 10232Fixed a problem with the GPE initialization that resulted from an 10233ambiguity in the ACPI specification. One section of the 10234specification states that both the address and length of the GPE 10235block must be zero if the block is not supported. Another section 10236implies that only the address need be zero if the block is not 10237supported. The code has been changed so that both the address and 10238the length must be non-zero to indicate a valid GPE block (i.e., 10239if either the address or the length is zero, the GPE block is 10240invalid.) 10241 10242Code and Data Size: Current core subsystem library sizes are shown 10243below. These are the code and data sizes for the acpica.lib 10244produced by the Microsoft Visual C++ 6.0 compiler, and these 10245values do not include any ACPI driver or OSPM code. The debug 10246version of the code includes the debug output trace mechanism and 10247has a much larger code and data size. Note that these values will 10248vary depending on the efficiency of the compiler and the compiler 10249options used during generation. 10250 10251 Previous Release 10252 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 10253 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 10254 Current Release: 10255 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10256 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 10257 10258 102592) Linux 10260 10261Cleaned up EC driver. Exported an external EC read/write 10262interface. By going through this, other drivers (most notably 10263sonypi) will be able to serialize access to the EC. 10264 10265 102663) iASL Compiler/Disassembler 10267 10268Implemented support to optionally generate include files for both 10269ASM and C (the -i switch). This simplifies BIOS development by 10270automatically creating include files that contain external 10271declarations for the symbols that are created within the 10272 10273(optionally generated) ASM and C AML source files. 10274 10275 10276---------------------------------------- 1027715 November 2002. Summary of changes for version 20021115. 10278 102791) ACPI CA Core Subsystem: 10280 10281Fixed a memory leak problem where an error during resolution of 10282 10283method arguments during a method invocation from another method 10284failed to cleanup properly by deleting all successfully resolved 10285argument objects. 10286 10287Fixed a problem where the target of the Index() operator was not 10288correctly constructed if the source object was a package. This 10289problem has not been detected because the use of a target operand 10290with Index() is very rare. 10291 10292Fixed a problem with the Index() operator where an attempt was 10293made to delete the operand objects twice. 10294 10295Fixed a problem where an attempt was made to delete an operand 10296twice during execution of the CondRefOf() operator if the target 10297did not exist. 10298 10299Implemented the first of perhaps several internal create object 10300functions that create and initialize a specific object type. This 10301consolidates duplicated code wherever the object is created, thus 10302shrinking the size of the subsystem. 10303 10304Implemented improved debug/error messages for errors that occur 10305during nested method invocations. All executing method pathnames 10306are displayed (with the error) as the call stack is unwound - thus 10307simplifying debug. 10308 10309Fixed a problem introduced in the 10/02 release that caused 10310premature deletion of a buffer object if a buffer was used as an 10311ASL operand where an integer operand is required (Thus causing an 10312implicit object conversion from Buffer to Integer.) The change in 10313the 10/02 release was attempting to fix a memory leak (albeit 10314incorrectly.) 10315 10316Code and Data Size: Current core subsystem library sizes are shown 10317below. These are the code and data sizes for the acpica.lib 10318produced by the Microsoft Visual C++ 6.0 compiler, and these 10319values do not include any ACPI driver or OSPM code. The debug 10320version of the code includes the debug output trace mechanism and 10321has a much larger code and data size. Note that these values will 10322vary depending on the efficiency of the compiler and the compiler 10323options used during generation. 10324 10325 Previous Release 10326 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 10327 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 10328 Current Release: 10329 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 10330 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 10331 10332 103332) Linux 10334 10335Changed the implementation of the ACPI semaphores to use down() 10336instead of down_interruptable(). It is important that the 10337execution of ACPI control methods not be interrupted by signals. 10338Methods must run to completion, or the system may be left in an 10339unknown/unstable state. 10340 10341Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 10342(Shawn Starr) 10343 10344 103453) iASL Compiler/Disassembler 10346 10347 10348Changed the default location of output files. All output files 10349are now placed in the current directory by default instead of in 10350the directory of the source file. This change may affect some 10351existing makefiles, but it brings the behavior of the compiler in 10352line with other similar tools. The location of the output files 10353can be overridden with the -p command line switch. 10354 10355 10356---------------------------------------- 1035711 November 2002. Summary of changes for version 20021111. 10358 10359 103600) ACPI Specification 2.0B is released and is now available at: 10361http://www.acpi.info/index.html 10362 10363 103641) ACPI CA Core Subsystem: 10365 10366Implemented support for the ACPI 2.0 SMBus Operation Regions. 10367This includes the early detection and handoff of the request to 10368the SMBus region handler (avoiding all of the complex field 10369support code), and support for the bidirectional return packet 10370from an SMBus write operation. This paves the way for the 10371development of SMBus drivers in each host operating system. 10372 10373Fixed a problem where the semaphore WAIT_FOREVER constant was 10374defined as 32 bits, but must be 16 bits according to the ACPI 10375specification. This had the side effect of causing ASL 10376Mutex/Event timeouts even though the ASL code requested a wait 10377forever. Changed all internal references to the ACPI timeout 10378parameter to 16 bits to prevent future problems. Changed the name 10379of WAIT_FOREVER to ACPI_WAIT_FOREVER. 10380 10381Code and Data Size: Current core subsystem library sizes are shown 10382below. These are the code and data sizes for the acpica.lib 10383produced by the Microsoft Visual C++ 6.0 compiler, and these 10384values do not include any ACPI driver or OSPM code. The debug 10385version of the code includes the debug output trace mechanism and 10386has a much larger code and data size. Note that these values will 10387vary depending on the efficiency of the compiler and the compiler 10388options used during generation. 10389 10390 Previous Release 10391 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10392 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 10393 Current Release: 10394 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 10395 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 10396 10397 103982) Linux 10399 10400Module loading/unloading fixes (John Cagle) 10401 10402 104033) iASL Compiler/Disassembler 10404 10405Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 10406 10407Implemented support for the disassembly of all SMBus protocol 10408keywords (SMBQuick, SMBWord, etc.) 10409 10410---------------------------------------- 1041101 November 2002. Summary of changes for version 20021101. 10412 10413 104141) ACPI CA Core Subsystem: 10415 10416Fixed a problem where platforms that have a GPE1 block but no GPE0 10417block were not handled correctly. This resulted in a "GPE 10418overlap" error message. GPE0 is no longer required. 10419 10420Removed code added in the previous release that inserted nodes 10421into the namespace in alphabetical order. This caused some side- 10422effects on various machines. The root cause of the problem is 10423still under investigation since in theory, the internal ordering 10424of the namespace nodes should not matter. 10425 10426 10427Enhanced error reporting for the case where a named object is not 10428found during control method execution. The full ACPI namepath 10429(name reference) of the object that was not found is displayed in 10430this case. 10431 10432Note: as a result of the overhaul of the namespace object types in 10433the previous release, the namespace nodes for the predefined 10434scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 10435instead of ACPI_TYPE_ANY. This simplifies the namespace 10436management code but may affect code that walks the namespace tree 10437looking for specific object types. 10438 10439Code and Data Size: Current core subsystem library sizes are shown 10440below. These are the code and data sizes for the acpica.lib 10441produced by the Microsoft Visual C++ 6.0 compiler, and these 10442values do not include any ACPI driver or OSPM code. The debug 10443version of the code includes the debug output trace mechanism and 10444has a much larger code and data size. Note that these values will 10445vary depending on the efficiency of the compiler and the compiler 10446options used during generation. 10447 10448 Previous Release 10449 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 10450 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 10451 Current Release: 10452 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10453 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 10454 10455 104562) Linux 10457 10458Fixed a problem introduced in the previous release where the 10459Processor and Thermal objects were not recognized and installed in 10460/proc. This was related to the scope type change described above. 10461 10462 104633) iASL Compiler/Disassembler 10464 10465Implemented the -g option to get all of the required ACPI tables 10466from the registry and save them to files (Windows version of the 10467compiler only.) The required tables are the FADT, FACS, and DSDT. 10468 10469Added ACPI table checksum validation during table disassembly in 10470order to catch corrupted tables. 10471 10472 10473---------------------------------------- 1047422 October 2002. Summary of changes for version 20021022. 10475 104761) ACPI CA Core Subsystem: 10477 10478Implemented a restriction on the Scope operator that the target 10479must already exist in the namespace at the time the operator is 10480encountered (during table load or method execution). In other 10481words, forward references are not allowed and Scope() cannot 10482create a new object. This changes the previous behavior where the 10483interpreter would create the name if not found. This new behavior 10484correctly enables the search-to-root algorithm during namespace 10485lookup of the target name. Because of this upsearch, this fixes 10486the known Compaq _SB_.OKEC problem and makes both the AML 10487interpreter and iASL compiler compatible with other ACPI 10488implementations. 10489 10490Completed a major overhaul of the internal ACPI object types for 10491the ACPI Namespace and the associated operand objects. Many of 10492these types had become obsolete with the introduction of the two- 10493pass namespace load. This cleanup simplifies the code and makes 10494the entire namespace load mechanism much clearer and easier to 10495understand. 10496 10497Improved debug output for tracking scope opening/closing to help 10498diagnose scoping issues. The old scope name as well as the new 10499scope name are displayed. Also improved error messages for 10500problems with ASL Mutex objects and error messages for GPE 10501problems. 10502 10503Cleaned up the namespace dump code, removed obsolete code. 10504 10505All string output (for all namespace/object dumps) now uses the 10506common ACPI string output procedure which handles escapes properly 10507and does not emit non-printable characters. 10508 10509Fixed some issues with constants in the 64-bit version of the 10510local C library (utclib.c) 10511 10512 105132) Linux 10514 10515EC Driver: No longer attempts to acquire the Global Lock at 10516interrupt level. 10517 10518 105193) iASL Compiler/Disassembler 10520 10521Implemented ACPI 2.0B grammar change that disallows all Type 1 and 105222 opcodes outside of a control method. This means that the 10523"executable" operators (versus the "namespace" operators) cannot 10524be used at the table level; they can only be used within a control 10525method. 10526 10527Implemented the restriction on the Scope() operator where the 10528target must already exist in the namespace at the time the 10529operator is encountered (during ASL compilation). In other words, 10530forward references are not allowed and Scope() cannot create a new 10531object. This makes the iASL compiler compatible with other ACPI 10532implementations and makes the Scope() implementation adhere to the 10533ACPI specification. 10534 10535Fixed a problem where namepath optimization for the Alias operator 10536was optimizing the wrong path (of the two namepaths.) This caused 10537a "Missing alias link" error message. 10538 10539Fixed a problem where an "unknown reserved name" warning could be 10540incorrectly generated for names like "_SB" when the trailing 10541underscore is not used in the original ASL. 10542 10543Fixed a problem where the reserved name check did not handle 10544NamePaths with multiple NameSegs correctly. The first nameseg of 10545the NamePath was examined instead of the last NameSeg. 10546 10547 10548---------------------------------------- 10549 1055002 October 2002. Summary of changes for this release. 10551 10552 105531) ACPI CA Core Subsystem version 20021002: 10554 10555Fixed a problem where a store/copy of a string to an existing 10556string did not always set the string length properly in the String 10557object. 10558 10559Fixed a reported problem with the ToString operator where the 10560behavior was identical to the ToHexString operator instead of just 10561simply converting a raw buffer to a string data type. 10562 10563Fixed a problem where CopyObject and the other "explicit" 10564conversion operators were not updating the internal namespace node 10565type as part of the store operation. 10566 10567Fixed a memory leak during implicit source operand conversion 10568where the original object was not deleted if it was converted to a 10569new object of a different type. 10570 10571Enhanced error messages for all problems associated with namespace 10572lookups. Common procedure generates and prints the lookup name as 10573well as the formatted status. 10574 10575Completed implementation of a new design for the Alias support 10576within the namespace. The existing design did not handle the case 10577where a new object was assigned to one of the two names due to the 10578use of an explicit conversion operator, resulting in the two names 10579pointing to two different objects. The new design simply points 10580the Alias name to the original name node - not to the object. 10581This results in a level of indirection that must be handled in the 10582name resolution mechanism. 10583 10584Code and Data Size: Current core subsystem library sizes are shown 10585below. These are the code and data sizes for the acpica.lib 10586produced by the Microsoft Visual C++ 6.0 compiler, and these 10587values do not include any ACPI driver or OSPM code. The debug 10588version of the code includes the debug output trace mechanism and 10589has a larger code and data size. Note that these values will vary 10590depending on the efficiency of the compiler and the compiler 10591options used during generation. 10592 10593 Previous Release 10594 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 10595 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 10596 Current Release: 10597 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 10598 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 10599 10600 106012) Linux 10602 10603Initialize thermal driver's timer before it is used. (Knut 10604Neumann) 10605 10606Allow handling negative celsius values. (Kochi Takayoshi) 10607 10608Fix thermal management and make trip points. R/W (Pavel Machek) 10609 10610Fix /proc/acpi/sleep. (P. Christeas) 10611 10612IA64 fixes. (David Mosberger) 10613 10614Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 10615 10616Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 10617Brodowski) 10618 10619 106203) iASL Compiler/Disassembler 10621 10622Clarified some warning/error messages. 10623 10624 10625---------------------------------------- 1062618 September 2002. Summary of changes for this release. 10627 10628 106291) ACPI CA Core Subsystem version 20020918: 10630 10631Fixed a reported problem with reference chaining (via the Index() 10632and RefOf() operators) in the ObjectType() and SizeOf() operators. 10633The definition of these operators includes the dereferencing of 10634all chained references to return information on the base object. 10635 10636Fixed a problem with stores to indexed package elements - the 10637existing code would not complete the store if an "implicit 10638conversion" was not performed. In other words, if the existing 10639object (package element) was to be replaced completely, the code 10640didn't handle this case. 10641 10642Relaxed typechecking on the ASL "Scope" operator to allow the 10643target name to refer to an object of type Integer, String, or 10644Buffer, in addition to the scoping object types (Device, 10645predefined Scopes, Processor, PowerResource, and ThermalZone.) 10646This allows existing AML code that has workarounds for a bug in 10647Windows to function properly. A warning is issued, however. This 10648affects both the AML interpreter and the iASL compiler. Below is 10649an example of this type of ASL code: 10650 10651 Name(DEB,0x00) 10652 Scope(DEB) 10653 { 10654 10655Fixed some reported problems with 64-bit integer support in the 10656local implementation of C library functions (clib.c) 10657 10658 106592) Linux 10660 10661Use ACPI fix map region instead of IOAPIC region, since it is 10662undefined in non-SMP. 10663 10664Ensure that the SCI has the proper polarity and trigger, even on 10665systems that do not have an interrupt override entry in the MADT. 10666 106672.5 big driver reorganization (Pat Mochel) 10668 10669Use early table mapping code from acpitable.c (Andi Kleen) 10670 10671New blacklist entries (Andi Kleen) 10672 10673Blacklist improvements. Split blacklist code out into a separate 10674file. Move checking the blacklist to very early. Previously, we 10675would use ACPI tables, and then halfway through init, check the 10676blacklist -- too late. Now, it's early enough to completely fall- 10677back to non-ACPI. 10678 10679 106803) iASL Compiler/Disassembler version 20020918: 10681 10682Fixed a problem where the typechecking code didn't know that an 10683alias could point to a method. In other words, aliases were not 10684being dereferenced during typechecking. 10685 10686 10687---------------------------------------- 1068829 August 2002. Summary of changes for this release. 10689 106901) ACPI CA Core Subsystem Version 20020829: 10691 10692If the target of a Scope() operator already exists, it must be an 10693object type that actually opens a scope -- such as a Device, 10694Method, Scope, etc. This is a fatal runtime error. Similar error 10695check has been added to the iASL compiler also. 10696 10697Tightened up the namespace load to disallow multiple names in the 10698same scope. This previously was allowed if both objects were of 10699the same type. (i.e., a lookup was the same as entering a new 10700name). 10701 10702 107032) Linux 10704 10705Ensure that the ACPI interrupt has the proper trigger and 10706polarity. 10707 10708local_irq_disable is extraneous. (Matthew Wilcox) 10709 10710Make "acpi=off" actually do what it says, and not use the ACPI 10711interpreter *or* the tables. 10712 10713Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 10714Takayoshi) 10715 10716 107173) iASL Compiler/Disassembler Version 20020829: 10718 10719Implemented namepath optimization for name declarations. For 10720example, a declaration like "Method (\_SB_.ABCD)" would get 10721optimized to "Method (ABCD)" if the declaration is within the 10722\_SB_ scope. This optimization is in addition to the named 10723reference path optimization first released in the previous 10724version. This would seem to complete all possible optimizations 10725for namepaths within the ASL/AML. 10726 10727If the target of a Scope() operator already exists, it must be an 10728object type that actually opens a scope -- such as a Device, 10729Method, Scope, etc. 10730 10731Implemented a check and warning for unreachable code in the same 10732block below a Return() statement. 10733 10734Fixed a problem where the listing file was not generated if the 10735compiler aborted if the maximum error count was exceeded (200). 10736 10737Fixed a problem where the typechecking of method return values was 10738broken. This includes the check for a return value when the 10739method is invoked as a TermArg (a return value is expected.) 10740 10741Fixed a reported problem where EOF conditions during a quoted 10742string or comment caused a fault. 10743 10744 10745---------------------------------------- 1074615 August 2002. Summary of changes for this release. 10747 107481) ACPI CA Core Subsystem Version 20020815: 10749 10750Fixed a reported problem where a Store to a method argument that 10751contains a reference did not perform the indirect store correctly. 10752This problem was created during the conversion to the new 10753reference object model - the indirect store to a method argument 10754code was not updated to reflect the new model. 10755 10756Reworked the ACPI mode change code to better conform to ACPI 2.0, 10757handle corner cases, and improve code legibility (Kochi Takayoshi) 10758 10759Fixed a problem with the pathname parsing for the carat (^) 10760prefix. The heavy use of the carat operator by the new namepath 10761optimization in the iASL compiler uncovered a problem with the AML 10762interpreter handling of this prefix. In the case where one or 10763more carats precede a single nameseg, the nameseg was treated as 10764standalone and the search rule (to root) was inadvertently 10765applied. This could cause both the iASL compiler and the 10766interpreter to find the wrong object or to miss the error that 10767should occur if the object does not exist at that exact pathname. 10768 10769Found and fixed the problem where the HP Pavilion DSDT would not 10770load. This was a relatively minor tweak to the table loading code 10771(a problem caused by the unexpected encounter with a method 10772invocation not within a control method), but it does not solve the 10773overall issue of the execution of AML code at the table level. 10774This investigation is still ongoing. 10775 10776Code and Data Size: Current core subsystem library sizes are shown 10777below. These are the code and data sizes for the acpica.lib 10778produced by the Microsoft Visual C++ 6.0 compiler, and these 10779values do not include any ACPI driver or OSPM code. The debug 10780version of the code includes the debug output trace mechanism and 10781has a larger code and data size. Note that these values will vary 10782depending on the efficiency of the compiler and the compiler 10783options used during generation. 10784 10785 Previous Release 10786 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 10787 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 10788 Current Release: 10789 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 10790 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 10791 10792 107932) Linux 10794 10795Remove redundant slab.h include (Brad Hards) 10796 10797Fix several bugs in thermal.c (Herbert Nachtnebel) 10798 10799Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 10800 10801Change acpi_system_suspend to use updated irq functions (Pavel 10802Machek) 10803 10804Export acpi_get_firmware_table (Matthew Wilcox) 10805 10806Use proper root proc entry for ACPI (Kochi Takayoshi) 10807 10808Fix early-boot table parsing (Bjorn Helgaas) 10809 10810 108113) iASL Compiler/Disassembler 10812 10813Reworked the compiler options to make them more consistent and to 10814use two-letter options where appropriate. We were running out of 10815sensible letters. This may break some makefiles, so check the 10816current options list by invoking the compiler with no parameters. 10817 10818Completed the design and implementation of the ASL namepath 10819optimization option for the compiler. This option optimizes all 10820references to named objects to the shortest possible path. The 10821first attempt tries to utilize a single nameseg (4 characters) and 10822the "search-to-root" algorithm used by the interpreter. If that 10823cannot be used (because either the name is not in the search path 10824or there is a conflict with another object with the same name), 10825the pathname is optimized using the carat prefix (usually a 10826shorter string than specifying the entire path from the root.) 10827 10828Implemented support to obtain the DSDT from the Windows registry 10829(when the disassembly option is specified with no input file). 10830Added this code as the implementation for AcpiOsTableOverride in 10831the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 10832utility) to scan memory for the DSDT to the AcpiOsTableOverride 10833function in the DOS OSL to make the disassembler truly OS 10834independent. 10835 10836Implemented a new option to disassemble and compile in one step. 10837When used without an input filename, this option will grab the 10838DSDT from the local machine, disassemble it, and compile it in one 10839step. 10840 10841Added a warning message for invalid escapes (a backslash followed 10842by any character other than the allowable escapes). This catches 10843the quoted string error "\_SB_" (which should be "\\_SB_" ). 10844 10845Also, there are numerous instances in the ACPI specification where 10846this error occurs. 10847 10848Added a compiler option to disable all optimizations. This is 10849basically the "compatibility mode" because by using this option, 10850the AML code will come out exactly the same as other ASL 10851compilers. 10852 10853Added error messages for incorrectly ordered dependent resource 10854functions. This includes: missing EndDependentFn macro at end of 10855dependent resource list, nested dependent function macros (both 10856start and end), and missing StartDependentFn macro. These are 10857common errors that should be caught at compile time. 10858 10859Implemented _OSI support for the disassembler and compiler. _OSI 10860must be included in the namespace for proper disassembly (because 10861the disassembler must know the number of arguments.) 10862 10863Added an "optimization" message type that is optional (off by 10864default). This message is used for all optimizations - including 10865constant folding, integer optimization, and namepath optimization. 10866 10867---------------------------------------- 1086825 July 2002. Summary of changes for this release. 10869 10870 108711) ACPI CA Core Subsystem Version 20020725: 10872 10873The AML Disassembler has been enhanced to produce compilable ASL 10874code and has been integrated into the iASL compiler (see below) as 10875well as the single-step disassembly for the AML debugger and the 10876disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 10877resource templates and macros are fully supported. The 10878disassembler has been tested on over 30 different AML files, 10879producing identical AML when the resulting disassembled ASL file 10880is recompiled with the same ASL compiler. 10881 10882Modified the Resource Manager to allow zero interrupts and zero 10883dma channels during the GetCurrentResources call. This was 10884causing problems on some platforms. 10885 10886Added the AcpiOsRedirectOutput interface to the OSL to simplify 10887output redirection for the AcpiOsPrintf and AcpiOsVprintf 10888interfaces. 10889 10890Code and Data Size: Current core subsystem library sizes are shown 10891below. These are the code and data sizes for the acpica.lib 10892produced by the Microsoft Visual C++ 6.0 compiler, and these 10893values do not include any ACPI driver or OSPM code. The debug 10894version of the code includes the debug output trace mechanism and 10895has a larger code and data size. Note that these values will vary 10896depending on the efficiency of the compiler and the compiler 10897options used during generation. 10898 10899 Previous Release 10900 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 10901 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 10902 Current Release: 10903 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 10904 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 10905 10906 109072) Linux 10908 10909Fixed a panic in the EC driver (Dominik Brodowski) 10910 10911Implemented checksum of the R/XSDT itself during Linux table scan 10912(Richard Schaal) 10913 10914 109153) iASL compiler 10916 10917The AML disassembler is integrated into the compiler. The "-d" 10918option invokes the disassembler to completely disassemble an 10919input AML file, producing as output a text ASL file with the 10920extension ".dsl" (to avoid name collisions with existing .asl 10921source files.) A future enhancement will allow the disassembler 10922to obtain the BIOS DSDT from the registry under Windows. 10923 10924Fixed a problem with the VendorShort and VendorLong resource 10925descriptors where an invalid AML sequence was created. 10926 10927Implemented a fix for BufferData term in the ASL parser. It was 10928inadvertently defined twice, allowing invalid syntax to pass and 10929causing reduction conflicts. 10930 10931Fixed a problem where the Ones opcode could get converted to a 10932value of zero if "Ones" was used where a byte, word or dword value 10933was expected. The 64-bit value is now truncated to the correct 10934size with the correct value. 10935 10936 10937 10938---------------------------------------- 1093902 July 2002. Summary of changes for this release. 10940 10941 109421) ACPI CA Core Subsystem Version 20020702: 10943 10944The Table Manager code has been restructured to add several new 10945features. Tables that are not required by the core subsystem 10946(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 10947validated in any way and are returned from AcpiGetFirmwareTable if 10948requested. The AcpiOsTableOverride interface is now called for 10949each table that is loaded by the subsystem in order to allow the 10950host to override any table it chooses. Previously, only the DSDT 10951could be overridden. Added one new files, tbrsdt.c and 10952tbgetall.c. 10953 10954Fixed a problem with the conversion of internal package objects to 10955external objects (when a package is returned from a control 10956method.) The return buffer length was set to zero instead of the 10957proper length of the package object. 10958 10959Fixed a reported problem with the use of the RefOf and DeRefOf 10960operators when passing reference arguments to control methods. A 10961new type of Reference object is used internally for references 10962produced by the RefOf operator. 10963 10964Added additional error messages in the Resource Manager to explain 10965AE_BAD_DATA errors when they occur during resource parsing. 10966 10967Split the AcpiEnableSubsystem into two primitives to enable a 10968finer granularity initialization sequence. These two calls should 10969be called in this order: AcpiEnableSubsystem (flags), 10970AcpiInitializeObjects (flags). The flags parameter remains the 10971same. 10972 10973 109742) Linux 10975 10976Updated the ACPI utilities module to understand the new style of 10977fully resolved package objects that are now returned from the core 10978subsystem. This eliminates errors of the form: 10979 10980 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 10981 acpi_utils-0430 [145] acpi_evaluate_reference: 10982 Invalid element in package (not a device reference) 10983 10984The method evaluation utility uses the new buffer allocation 10985scheme instead of calling AcpiEvaluate Object twice. 10986 10987Added support for ECDT. This allows the use of the Embedded 10988 10989Controller before the namespace has been fully initialized, which 10990is necessary for ACPI 2.0 support, and for some laptops to 10991initialize properly. (Laptops using ECDT are still rare, so only 10992limited testing was performed of the added functionality.) 10993 10994Fixed memory leaks in the EC driver. 10995 10996Eliminated a brittle code structure in acpi_bus_init(). 10997 10998Eliminated the acpi_evaluate() helper function in utils.c. It is 10999no longer needed since acpi_evaluate_object can optionally 11000allocate memory for the return object. 11001 11002Implemented fix for keyboard hang when getting battery readings on 11003some systems (Stephen White) 11004 11005PCI IRQ routing update (Dominik Brodowski) 11006 11007Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 11008support 11009 11010---------------------------------------- 1101111 June 2002. Summary of changes for this release. 11012 11013 110141) ACPI CA Core Subsystem Version 20020611: 11015 11016Fixed a reported problem where constants such as Zero and One 11017appearing within _PRT packages were not handled correctly within 11018the resource manager code. Originally reported against the ASL 11019compiler because the code generator now optimizes integers to 11020their minimal AML representation (i.e. AML constants if possible.) 11021The _PRT code now handles all AML constant opcodes correctly 11022(Zero, One, Ones, Revision). 11023 11024Fixed a problem with the Concatenate operator in the AML 11025interpreter where a buffer result object was incorrectly marked as 11026not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 11027 11028All package sub-objects are now fully resolved before they are 11029returned from the external ACPI interfaces. This means that name 11030strings are resolved to object handles, and constant operators 11031(Zero, One, Ones, Revision) are resolved to Integers. 11032 11033Implemented immediate resolution of the AML Constant opcodes 11034(Zero, One, Ones, Revision) to Integer objects upon detection 11035within the AML stream. This has simplified and reduced the 11036generated code size of the subsystem by eliminating about 10 11037switch statements for these constants (which previously were 11038contained in Reference objects.) The complicating issues are that 11039the Zero opcode is used as a "placeholder" for unspecified 11040optional target operands and stores to constants are defined to be 11041no-ops. 11042 11043Code and Data Size: Current core subsystem library sizes are shown 11044below. These are the code and data sizes for the acpica.lib 11045produced by the Microsoft Visual C++ 6.0 compiler, and these 11046values do not include any ACPI driver or OSPM code. The debug 11047version of the code includes the debug output trace mechanism and 11048has a larger code and data size. Note that these values will vary 11049depending on the efficiency of the compiler and the compiler 11050options used during generation. 11051 11052 Previous Release 11053 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 11054 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 11055 Current Release: 11056 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 11057 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 11058 11059 110602) Linux 11061 11062 11063Added preliminary support for obtaining _TRA data for PCI root 11064bridges (Bjorn Helgaas). 11065 11066 110673) iASL Compiler Version X2046: 11068 11069Fixed a problem where the "_DDN" reserved name was defined to be a 11070control method with one argument. There are no arguments, and 11071_DDN does not have to be a control method. 11072 11073Fixed a problem with the Linux version of the compiler where the 11074source lines printed with error messages were the wrong lines. 11075This turned out to be the "LF versus CR/LF" difference between 11076Windows and Unix. This appears to be the longstanding issue 11077concerning listing output and error messages. 11078 11079Fixed a problem with the Linux version of compiler where opcode 11080names within error messages were wrong. This was caused by a 11081slight difference in the output of the Flex tool on Linux versus 11082Windows. 11083 11084Fixed a problem with the Linux compiler where the hex output files 11085contained some garbage data caused by an internal buffer overrun. 11086 11087 11088---------------------------------------- 1108917 May 2002. Summary of changes for this release. 11090 11091 110921) ACPI CA Core Subsystem Version 20020517: 11093 11094Implemented a workaround to an BIOS bug discovered on the HP 11095OmniBook where the FADT revision number and the table size are 11096inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 11097behavior is to fallback to using only the ACPI 1.0 fields of the 11098FADT if the table is too small to be a ACPI 2.0 table as claimed 11099by the revision number. Although this is a BIOS bug, this is a 11100case where the workaround is simple enough and with no side 11101effects, so it seemed prudent to add it. A warning message is 11102issued, however. 11103 11104Implemented minimum size checks for the fixed-length ACPI tables - 11105- the FADT and FACS, as well as consistency checks between the 11106revision number and the table size. 11107 11108Fixed a reported problem in the table override support where the 11109new table pointer was incorrectly treated as a physical address 11110instead of a logical address. 11111 11112Eliminated the use of the AE_AML_ERROR exception and replaced it 11113with more descriptive codes. 11114 11115Fixed a problem where an exception would occur if an ASL Field was 11116defined with no named Field Units underneath it (used by some 11117index fields). 11118 11119Code and Data Size: Current core subsystem library sizes are shown 11120below. These are the code and data sizes for the acpica.lib 11121produced by the Microsoft Visual C++ 6.0 compiler, and these 11122values do not include any ACPI driver or OSPM code. The debug 11123version of the code includes the debug output trace mechanism and 11124has a larger code and data size. Note that these values will vary 11125depending on the efficiency of the compiler and the compiler 11126options used during generation. 11127 11128 Previous Release 11129 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 11130 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 11131 Current Release: 11132 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 11133 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 11134 11135 11136 111372) Linux 11138 11139Much work done on ACPI init (MADT and PCI IRQ routing support). 11140(Paul D. and Dominik Brodowski) 11141 11142Fix PCI IRQ-related panic on boot (Sam Revitch) 11143 11144Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 11145 11146Fix "MHz" typo (Dominik Brodowski) 11147 11148Fix RTC year 2000 issue (Dominik Brodowski) 11149 11150Preclude multiple button proc entries (Eric Brunet) 11151 11152Moved arch-specific code out of include/platform/aclinux.h 11153 111543) iASL Compiler Version X2044: 11155 11156Implemented error checking for the string used in the EISAID macro 11157(Usually used in the definition of the _HID object.) The code now 11158strictly enforces the PnP format - exactly 7 characters, 3 11159uppercase letters and 4 hex digits. 11160 11161If a raw string is used in the definition of the _HID object 11162(instead of the EISAID macro), the string must contain all 11163alphanumeric characters (e.g., "*PNP0011" is not allowed because 11164of the asterisk.) 11165 11166Implemented checking for invalid use of ACPI reserved names for 11167most of the name creation operators (Name, Device, Event, Mutex, 11168OperationRegion, PowerResource, Processor, and ThermalZone.) 11169Previously, this check was only performed for control methods. 11170 11171Implemented an additional check on the Name operator to emit an 11172error if a reserved name that must be implemented in ASL as a 11173control method is used. We know that a reserved name must be a 11174method if it is defined with input arguments. 11175 11176The warning emitted when a namespace object reference is not found 11177during the cross reference phase has been changed into an error. 11178The "External" directive should be used for names defined in other 11179modules. 11180 11181 111824) Tools and Utilities 11183 11184The 16-bit tools (adump16 and aexec16) have been regenerated and 11185tested. 11186 11187Fixed a problem with the output of both acpidump and adump16 where 11188the indentation of closing parentheses and brackets was not 11189 11190aligned properly with the parent block. 11191 11192 11193---------------------------------------- 1119403 May 2002. Summary of changes for this release. 11195 11196 111971) ACPI CA Core Subsystem Version 20020503: 11198 11199Added support a new OSL interface that allows the host operating 11200 11201system software to override the DSDT found in the firmware - 11202AcpiOsTableOverride. With this interface, the OSL can examine the 11203version of the firmware DSDT and replace it with a different one 11204if desired. 11205 11206Added new external interfaces for accessing ACPI registers from 11207device drivers and other system software - AcpiGetRegister and 11208AcpiSetRegister. This was simply an externalization of the 11209existing AcpiHwBitRegister interfaces. 11210 11211Fixed a regression introduced in the previous build where the 11212ASL/AML CreateField operator always returned an error, 11213"destination must be a NS Node". 11214 11215Extended the maximum time (before failure) to successfully enable 11216ACPI mode to 3 seconds. 11217 11218Code and Data Size: Current core subsystem library sizes are shown 11219below. These are the code and data sizes for the acpica.lib 11220produced by the Microsoft Visual C++ 6.0 compiler, and these 11221values do not include any ACPI driver or OSPM code. The debug 11222version of the code includes the debug output trace mechanism and 11223has a larger code and data size. Note that these values will vary 11224depending on the efficiency of the compiler and the compiler 11225options used during generation. 11226 11227 Previous Release 11228 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 11229 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 11230 Current Release: 11231 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 11232 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 11233 11234 112352) Linux 11236 11237Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 11238free. While 3 out of 4 of our in-house systems work fine, the last 11239one still hangs when testing the LAPIC timer. 11240 11241Renamed many files in 2.5 kernel release to omit "acpi_" from the 11242name. 11243 11244Added warning on boot for Presario 711FR. 11245 11246Sleep improvements (Pavel Machek) 11247 11248ACPI can now be built without CONFIG_PCI enabled. 11249 11250IA64: Fixed memory map functions (JI Lee) 11251 11252 112533) iASL Compiler Version X2043: 11254 11255Added support to allow the compiler to be integrated into the MS 11256VC++ development environment for one-button compilation of single 11257files or entire projects -- with error-to-source-line mapping. 11258 11259Implemented support for compile-time constant folding for the 11260Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 11261specification. This allows the ASL writer to use expressions 11262instead of Integer/Buffer/String constants in terms that must 11263evaluate to constants at compile time and will also simplify the 11264emitted AML in any such sub-expressions that can be folded 11265(evaluated at compile-time.) This increases the size of the 11266compiler significantly because a portion of the ACPI CA AML 11267interpreter is included within the compiler in order to pre- 11268evaluate constant expressions. 11269 11270 11271Fixed a problem with the "Unicode" ASL macro that caused the 11272compiler to fault. (This macro is used in conjunction with the 11273_STR reserved name.) 11274 11275Implemented an AML opcode optimization to use the Zero, One, and 11276Ones opcodes where possible to further reduce the size of integer 11277constants and thus reduce the overall size of the generated AML 11278code. 11279 11280Implemented error checking for new reserved terms for ACPI version 112812.0A. 11282 11283Implemented the -qr option to display the current list of ACPI 11284reserved names known to the compiler. 11285 11286Implemented the -qc option to display the current list of ASL 11287operators that are allowed within constant expressions and can 11288therefore be folded at compile time if the operands are constants. 11289 11290 112914) Documentation 11292 11293Updated the Programmer's Reference for new interfaces, data types, 11294and memory allocation model options. 11295 11296Updated the iASL Compiler User Reference to apply new format and 11297add information about new features and options. 11298 11299---------------------------------------- 1130019 April 2002. Summary of changes for this release. 11301 113021) ACPI CA Core Subsystem Version 20020419: 11303 11304The source code base for the Core Subsystem has been completely 11305cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 11306versions. The Lint option files used are included in the 11307/acpi/generate/lint directory. 11308 11309Implemented enhanced status/error checking across the entire 11310Hardware manager subsystem. Any hardware errors (reported from 11311the OSL) are now bubbled up and will abort a running control 11312method. 11313 11314 11315Fixed a problem where the per-ACPI-table integer width (32 or 64) 11316was stored only with control method nodes, causing a fault when 11317non-control method code was executed during table loading. The 11318solution implemented uses a global variable to indicate table 11319width across the entire ACPI subsystem. Therefore, ACPI CA does 11320not support mixed integer widths across different ACPI tables 11321(DSDT, SSDT). 11322 11323Fixed a problem where NULL extended fields (X fields) in an ACPI 113242.0 ACPI FADT caused the table load to fail. Although the 11325existing ACPI specification is a bit fuzzy on this topic, the new 11326behavior is to fall back on a ACPI 1.0 field if the corresponding 11327ACPI 2.0 X field is zero (even though the table revision indicates 11328a full ACPI 2.0 table.) The ACPI specification will be updated to 11329clarify this issue. 11330 11331Fixed a problem with the SystemMemory operation region handler 11332where memory was always accessed byte-wise even if the AML- 11333specified access width was larger than a byte. This caused 11334problems on systems with memory-mapped I/O. Memory is now 11335accessed with the width specified. On systems that do not support 11336non-aligned transfers, a check is made to guarantee proper address 11337alignment before proceeding in order to avoid an AML-caused 11338alignment fault within the kernel. 11339 11340 11341Fixed a problem with the ExtendedIrq resource where only one byte 11342of the 4-byte Irq field was extracted. 11343 11344Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 11345function was out of date and required a rewrite. 11346 11347Code and Data Size: Current core subsystem library sizes are shown 11348below. These are the code and data sizes for the acpica.lib 11349produced by the Microsoft Visual C++ 6.0 compiler, and these 11350values do not include any ACPI driver or OSPM code. The debug 11351version of the code includes the debug output trace mechanism and 11352has a larger code and data size. Note that these values will vary 11353depending on the efficiency of the compiler and the compiler 11354options used during generation. 11355 11356 Previous Release 11357 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 11358 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 11359 Current Release: 11360 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 11361 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 11362 11363 113642) Linux 11365 11366PCI IRQ routing fixes (Dominik Brodowski) 11367 11368 113693) iASL Compiler Version X2042: 11370 11371Implemented an additional compile-time error check for a field 11372unit whose size + minimum access width would cause a run-time 11373access beyond the end-of-region. Previously, only the field size 11374itself was checked. 11375 11376The Core subsystem and iASL compiler now share a common parse 11377object in preparation for compile-time evaluation of the type 113783/4/5 ASL operators. 11379 11380 11381---------------------------------------- 11382Summary of changes for this release: 03_29_02 11383 113841) ACPI CA Core Subsystem Version 20020329: 11385 11386Implemented support for late evaluation of TermArg operands to 11387Buffer and Package objects. This allows complex expressions to be 11388used in the declarations of these object types. 11389 11390Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 113911.0, if the field was larger than 32 bits, it was returned as a 11392buffer - otherwise it was returned as an integer. In ACPI 2.0, 11393the field is returned as a buffer only if the field is larger than 1139464 bits. The TableRevision is now considered when making this 11395conversion to avoid incompatibility with existing ASL code. 11396 11397Implemented logical addressing for AcpiOsGetRootPointer. This 11398allows an RSDP with either a logical or physical address. With 11399this support, the host OS can now override all ACPI tables with 11400one logical RSDP. Includes implementation of "typed" pointer 11401support to allow a common data type for both physical and logical 11402pointers internally. This required a change to the 11403AcpiOsGetRootPointer interface. 11404 11405Implemented the use of ACPI 2.0 Generic Address Structures for all 11406GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 11407mapped I/O for these ACPI features. 11408 11409Initialization now ignores not only non-required tables (All 11410tables other than the FADT, FACS, DSDT, and SSDTs), but also does 11411not validate the table headers of unrecognized tables. 11412 11413Fixed a problem where a notify handler could only be 11414installed/removed on an object of type Device. All "notify" 11415 11416objects are now supported -- Devices, Processor, Power, and 11417Thermal. 11418 11419Removed most verbosity from the ACPI_DB_INFO debug level. Only 11420critical information is returned when this debug level is enabled. 11421 11422Code and Data Size: Current core subsystem library sizes are shown 11423below. These are the code and data sizes for the acpica.lib 11424produced by the Microsoft Visual C++ 6.0 compiler, and these 11425values do not include any ACPI driver or OSPM code. The debug 11426version of the code includes the debug output trace mechanism and 11427has a larger code and data size. Note that these values will vary 11428depending on the efficiency of the compiler and the compiler 11429options used during generation. 11430 11431 Previous Release 11432 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 11433 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 11434 Current Release: 11435 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 11436 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 11437 11438 114392) Linux: 11440 11441The processor driver (acpi_processor.c) now fully supports ACPI 114422.0-based processor performance control (e.g. Intel(R) 11443SpeedStep(TM) technology) Note that older laptops that only have 11444the Intel "applet" interface are not supported through this. The 11445'limit' and 'performance' interface (/proc) are fully functional. 11446[Note that basic policy for controlling performance state 11447transitions will be included in the next version of ospmd.] The 11448idle handler was modified to more aggressively use C2, and PIIX4 11449errata handling underwent a complete overhaul (big thanks to 11450Dominik Brodowski). 11451 11452Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 11453based devices in the ACPI namespace are now dynamically bound 11454(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 11455This allows, among other things, ACPI to resolve bus numbers for 11456subordinate PCI bridges. 11457 11458Enhanced PCI IRQ routing to get the proper bus number for _PRT 11459entries defined underneath PCI bridges. 11460 11461Added IBM 600E to bad bios list due to invalid _ADR value for 11462PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 11463 11464In the process of adding full MADT support (e.g. IOAPIC) for IA32 11465(acpi.c, mpparse.c) -- stay tuned. 11466 11467Added back visual differentiation between fixed-feature and 11468control-method buttons in dmesg. Buttons are also subtyped (e.g. 11469button/power/PWRF) to simplify button identification. 11470 11471We no longer use -Wno-unused when compiling debug. Please ignore 11472any "_THIS_MODULE defined but not used" messages. 11473 11474Can now shut down the system using "magic sysrq" key. 11475 11476 114773) iASL Compiler version 2041: 11478 11479Fixed a problem where conversion errors for hex/octal/decimal 11480constants were not reported. 11481 11482Implemented a fix for the General Register template Address field. 11483This field was 8 bits when it should be 64. 11484 11485Fixed a problem where errors/warnings were no longer being emitted 11486within the listing output file. 11487 11488Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 11489exactly 4 characters, alphanumeric only. 11490 11491 11492 11493 11494---------------------------------------- 11495Summary of changes for this release: 03_08_02 11496 11497 114981) ACPI CA Core Subsystem Version 20020308: 11499 11500Fixed a problem with AML Fields where the use of the "AccessAny" 11501keyword could cause an interpreter error due to attempting to read 11502or write beyond the end of the parent Operation Region. 11503 11504Fixed a problem in the SystemMemory Operation Region handler where 11505an attempt was made to map memory beyond the end of the region. 11506This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 11507errors on some Linux systems. 11508 11509Fixed a problem where the interpreter/namespace "search to root" 11510algorithm was not functioning for some object types. Relaxed the 11511internal restriction on the search to allow upsearches for all 11512external object types as well as most internal types. 11513 11514 115152) Linux: 11516 11517We now use safe_halt() macro versus individual calls to sti | hlt. 11518 11519Writing to the processor limit interface should now work. "echo 1" 11520will increase the limit, 2 will decrease, and 0 will reset to the 11521 11522default. 11523 11524 115253) ASL compiler: 11526 11527Fixed segfault on Linux version. 11528 11529 11530---------------------------------------- 11531Summary of changes for this release: 02_25_02 11532 115331) ACPI CA Core Subsystem: 11534 11535 11536Fixed a problem where the GPE bit masks were not initialized 11537properly, causing erratic GPE behavior. 11538 11539Implemented limited support for multiple calling conventions. The 11540code can be generated with either the VPL (variable parameter 11541list, or "C") convention, or the FPL (fixed parameter list, or 11542"Pascal") convention. The core subsystem is about 3.4% smaller 11543when generated with FPL. 11544 11545 115462) Linux 11547 11548Re-add some /proc/acpi/event functionality that was lost during 11549the rewrite 11550 11551Resolved issue with /proc events for fixed-feature buttons showing 11552up as the system device. 11553 11554Fixed checks on C2/C3 latencies to be inclusive of maximum values. 11555 11556Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 11557 11558Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 11559 11560Fixed limit interface & usage to fix bugs with passive cooling 11561hysterisis. 11562 11563Restructured PRT support. 11564 11565 11566---------------------------------------- 11567Summary of changes for this label: 02_14_02 11568 11569 115701) ACPI CA Core Subsystem: 11571 11572Implemented support in AcpiLoadTable to allow loading of FACS and 11573FADT tables. 11574 11575Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 11576been removed. All 64-bit platforms should be migrated to the ACPI 115772.0 tables. The actbl71.h header has been removed from the source 11578tree. 11579 11580All C macros defined within the subsystem have been prefixed with 11581"ACPI_" to avoid collision with other system include files. 11582 11583Removed the return value for the two AcpiOsPrint interfaces, since 11584it is never used and causes lint warnings for ignoring the return 11585value. 11586 11587Added error checking to all internal mutex acquire and release 11588calls. Although a failure from one of these interfaces is 11589probably a fatal system error, these checks will cause the 11590immediate abort of the currently executing method or interface. 11591 11592Fixed a problem where the AcpiSetCurrentResources interface could 11593fault. This was a side effect of the deployment of the new memory 11594allocation model. 11595 11596Fixed a couple of problems with the Global Lock support introduced 11597in the last major build. The "common" (1.0/2.0) internal FACS was 11598being overwritten with the FACS signature and clobbering the 11599Global Lock pointer. Also, the actual firmware FACS was being 11600unmapped after construction of the "common" FACS, preventing 11601access to the actual Global Lock field within it. The "common" 11602internal FACS is no longer installed as an actual ACPI table; it 11603is used simply as a global. 11604 11605Code and Data Size: Current core subsystem library sizes are shown 11606below. These are the code and data sizes for the acpica.lib 11607produced by the Microsoft Visual C++ 6.0 compiler, and these 11608values do not include any ACPI driver or OSPM code. The debug 11609version of the code includes the debug output trace mechanism and 11610has a larger code and data size. Note that these values will vary 11611depending on the efficiency of the compiler and the compiler 11612options used during generation. 11613 11614 Previous Release (02_07_01) 11615 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 11616 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 11617 Current Release: 11618 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 11619 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 11620 11621 116222) Linux 11623 11624Updated Linux-specific code for core macro and OSL interface 11625changes described above. 11626 11627Improved /proc/acpi/event. It now can be opened only once and has 11628proper poll functionality. 11629 11630Fixed and restructured power management (acpi_bus). 11631 11632Only create /proc "view by type" when devices of that class exist. 11633 11634Fixed "charging/discharging" bug (and others) in acpi_battery. 11635 11636Improved thermal zone code. 11637 11638 116393) ASL Compiler, version X2039: 11640 11641 11642Implemented the new compiler restriction on ASL String hex/octal 11643escapes to non-null, ASCII values. An error results if an invalid 11644value is used. (This will require an ACPI 2.0 specification 11645change.) 11646 11647AML object labels that are output to the optional C and ASM source 11648are now prefixed with both the ACPI table signature and table ID 11649to help guarantee uniqueness within a large BIOS project. 11650 11651 11652---------------------------------------- 11653Summary of changes for this label: 02_01_02 11654 116551) ACPI CA Core Subsystem: 11656 11657ACPI 2.0 support is complete in the entire Core Subsystem and the 11658ASL compiler. All new ACPI 2.0 operators are implemented and all 11659other changes for ACPI 2.0 support are complete. With 11660simultaneous code and data optimizations throughout the subsystem, 11661ACPI 2.0 support has been implemented with almost no additional 11662cost in terms of code and data size. 11663 11664Implemented a new mechanism for allocation of return buffers. If 11665the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 11666be allocated on behalf of the caller. Consolidated all return 11667buffer validation and allocation to a common procedure. Return 11668buffers will be allocated via the primary OSL allocation interface 11669since it appears that a separate pool is not needed by most users. 11670If a separate pool is required for these buffers, the caller can 11671still use the original mechanism and pre-allocate the buffer(s). 11672 11673Implemented support for string operands within the DerefOf 11674operator. 11675 11676Restructured the Hardware and Event managers to be table driven, 11677simplifying the source code and reducing the amount of generated 11678code. 11679 11680Split the common read/write low-level ACPI register bitfield 11681procedure into a separate read and write, simplifying the code 11682considerably. 11683 11684Obsoleted the AcpiOsCallocate OSL interface. This interface was 11685used only a handful of times and didn't have enough critical mass 11686for a separate interface. Replaced with a common calloc procedure 11687in the core. 11688 11689Fixed a reported problem with the GPE number mapping mechanism 11690that allows GPE1 numbers to be non-contiguous with GPE0. 11691Reorganized the GPE information and shrunk a large array that was 11692originally large enough to hold info for all possible GPEs (256) 11693to simply large enough to hold all GPEs up to the largest GPE 11694number on the machine. 11695 11696Fixed a reported problem with resource structure alignment on 64- 11697bit platforms. 11698 11699Changed the AcpiEnableEvent and AcpiDisableEvent external 11700interfaces to not require any flags for the common case of 11701enabling/disabling a GPE. 11702 11703Implemented support to allow a "Notify" on a Processor object. 11704 11705Most TBDs in comments within the source code have been resolved 11706and eliminated. 11707 11708 11709Fixed a problem in the interpreter where a standalone parent 11710prefix (^) was not handled correctly in the interpreter and 11711debugger. 11712 11713Removed obsolete and unnecessary GPE save/restore code. 11714 11715Implemented Field support in the ASL Load operator. This allows a 11716table to be loaded from a named field, in addition to loading a 11717table directly from an Operation Region. 11718 11719Implemented timeout and handle support in the external Global Lock 11720interfaces. 11721 11722Fixed a problem in the AcpiDump utility where pathnames were no 11723longer being generated correctly during the dump of named objects. 11724 11725Modified the AML debugger to give a full display of if/while 11726predicates instead of just one AML opcode at a time. (The 11727predicate can have several nested ASL statements.) The old method 11728was confusing during single stepping. 11729 11730Code and Data Size: Current core subsystem library sizes are shown 11731below. These are the code and data sizes for the acpica.lib 11732produced by the Microsoft Visual C++ 6.0 compiler, and these 11733values do not include any ACPI driver or OSPM code. The debug 11734version of the code includes the debug output trace mechanism and 11735has a larger code and data size. Note that these values will vary 11736depending on the efficiency of the compiler and the compiler 11737options used during generation. 11738 11739 Previous Release (12_18_01) 11740 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 11741 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 11742 Current Release: 11743 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 11744 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 11745 117462) Linux 11747 11748 Implemented fix for PIIX reverse throttling errata (Processor 11749driver) 11750 11751Added new Limit interface (Processor and Thermal drivers) 11752 11753New thermal policy (Thermal driver) 11754 11755Many updates to /proc 11756 11757Battery "low" event support (Battery driver) 11758 11759Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 11760 11761IA32 - IA64 initialization unification, no longer experimental 11762 11763Menuconfig options redesigned 11764 117653) ASL Compiler, version X2037: 11766 11767Implemented several new output features to simplify integration of 11768AML code into firmware: 1) Output the AML in C source code with 11769labels for each named ASL object. The original ASL source code 11770is interleaved as C comments. 2) Output the AML in ASM source code 11771with labels and interleaved ASL source. 3) Output the AML in 11772raw hex table form, in either C or ASM. 11773 11774Implemented support for optional string parameters to the 11775LoadTable operator. 11776 11777Completed support for embedded escape sequences within string 11778literals. The compiler now supports all single character escapes 11779as well as the Octal and Hex escapes. Note: the insertion of a 11780null byte into a string literal (via the hex/octal escape) causes 11781the string to be immediately terminated. A warning is issued. 11782 11783Fixed a problem where incorrect AML was generated for the case 11784where an ASL namepath consists of a single parent prefix ( 11785 11786) with no trailing name segments. 11787 11788The compiler has been successfully generated with a 64-bit C 11789compiler. 11790 11791 11792 11793 11794---------------------------------------- 11795Summary of changes for this label: 12_18_01 11796 117971) Linux 11798 11799Enhanced blacklist with reason and severity fields. Any table's 11800signature may now be used to identify a blacklisted system. 11801 11802Call _PIC control method to inform the firmware which interrupt 11803model the OS is using. Turn on any disabled link devices. 11804 11805Cleaned up busmgr /proc error handling (Andreas Dilger) 11806 11807 2) ACPI CA Core Subsystem: 11808 11809Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 11810while loop) 11811 11812Completed implementation of the ACPI 2.0 "Continue", 11813"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 11814operators. All new ACPI 2.0 operators are now implemented in both 11815the ASL compiler and the AML interpreter. The only remaining ACPI 118162.0 task is support for the String data type in the DerefOf 11817operator. Fixed a problem with AcquireMutex where the status code 11818was lost if the caller had to actually wait for the mutex. 11819 11820Increased the maximum ASL Field size from 64K bits to 4G bits. 11821 11822Completed implementation of the external Global Lock interfaces -- 11823AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 11824Handler parameters were added. 11825 11826Completed another pass at removing warnings and issues when 11827compiling with 64-bit compilers. The code now compiles cleanly 11828with the Intel 64-bit C/C++ compiler. Most notably, the pointer 11829add and subtract (diff) macros have changed considerably. 11830 11831 11832Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1183364-bit platforms, 32-bits on all others. This type is used 11834wherever memory allocation and/or the C sizeof() operator is used, 11835and affects the OSL memory allocation interfaces AcpiOsAllocate 11836and AcpiOsCallocate. 11837 11838Implemented sticky user breakpoints in the AML debugger. 11839 11840Code and Data Size: Current core subsystem library sizes are shown 11841below. These are the code and data sizes for the acpica.lib 11842produced by the Microsoft Visual C++ 6.0 compiler, and these 11843values do not include any ACPI driver or OSPM code. The debug 11844version of the code includes the debug output trace mechanism and 11845has a larger code and data size. Note that these values will vary 11846depending on the efficiency of the compiler and the compiler 11847options used during generation. 11848 11849 Previous Release (12_05_01) 11850 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 11851 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 11852 Current Release: 11853 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 11854 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 11855 11856 3) ASL Compiler, version X2034: 11857 11858Now checks for (and generates an error if detected) the use of a 11859Break or Continue statement without an enclosing While statement. 11860 11861 11862Successfully generated the compiler with the Intel 64-bit C 11863compiler. 11864 11865 ---------------------------------------- 11866Summary of changes for this label: 12_05_01 11867 11868 1) ACPI CA Core Subsystem: 11869 11870The ACPI 2.0 CopyObject operator is fully implemented. This 11871operator creates a new copy of an object (and is also used to 11872bypass the "implicit conversion" mechanism of the Store operator.) 11873 11874The ACPI 2.0 semantics for the SizeOf operator are fully 11875implemented. The change is that performing a SizeOf on a 11876reference object causes an automatic dereference of the object to 11877tha actual value before the size is evaluated. This behavior was 11878undefined in ACPI 1.0. 11879 11880The ACPI 2.0 semantics for the Extended IRQ resource descriptor 11881have been implemented. The interrupt polarity and mode are now 11882independently set. 11883 11884Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 11885appearing in Package objects were not properly converted to 11886integers when the internal Package was converted to an external 11887object (via the AcpiEvaluateObject interface.) 11888 11889Fixed a problem with the namespace object deletion mechanism for 11890objects created by control methods. There were two parts to this 11891problem: 1) Objects created during the initialization phase method 11892parse were not being deleted, and 2) The object owner ID mechanism 11893to track objects was broken. 11894 11895Fixed a problem where the use of the ASL Scope operator within a 11896control method would result in an invalid opcode exception. 11897 11898Fixed a problem introduced in the previous label where the buffer 11899length required for the _PRT structure was not being returned 11900correctly. 11901 11902Code and Data Size: Current core subsystem library sizes are shown 11903below. These are the code and data sizes for the acpica.lib 11904produced by the Microsoft Visual C++ 6.0 compiler, and these 11905values do not include any ACPI driver or OSPM code. The debug 11906version of the code includes the debug output trace mechanism and 11907has a larger code and data size. Note that these values will vary 11908depending on the efficiency of the compiler and the compiler 11909options used during generation. 11910 11911 Previous Release (11_20_01) 11912 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 11913 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 11914 11915 Current Release: 11916 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 11917 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 11918 11919 2) Linux: 11920 11921Updated all files to apply cleanly against 2.4.16. 11922 11923Added basic PCI Interrupt Routing Table (PRT) support for IA32 11924(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 11925version supports both static and dyanmic PRT entries, but dynamic 11926entries are treated as if they were static (not yet 11927reconfigurable). Architecture- specific code to use this data is 11928absent on IA32 but should be available shortly. 11929 11930Changed the initialization sequence to start the ACPI interpreter 11931(acpi_init) prior to initialization of the PCI driver (pci_init) 11932in init/main.c. This ordering is required to support PRT and 11933facilitate other (future) enhancement. A side effect is that the 11934ACPI bus driver and certain device drivers can no longer be loaded 11935as modules. 11936 11937Modified the 'make menuconfig' options to allow PCI Interrupt 11938Routing support to be included without the ACPI Bus and other 11939device drivers. 11940 11941 3) ASL Compiler, version X2033: 11942 11943Fixed some issues with the use of the new CopyObject and 11944DataTableRegion operators. Both are fully functional. 11945 11946 ---------------------------------------- 11947Summary of changes for this label: 11_20_01 11948 11949 20 November 2001. Summary of changes for this release. 11950 11951 1) ACPI CA Core Subsystem: 11952 11953Updated Index support to match ACPI 2.0 semantics. Storing a 11954Integer, String, or Buffer to an Index of a Buffer will store only 11955the least-significant byte of the source to the Indexed buffer 11956byte. Multiple writes are not performed. 11957 11958Fixed a problem where the access type used in an AccessAs ASL 11959operator was not recorded correctly into the field object. 11960 11961Fixed a problem where ASL Event objects were created in a 11962signalled state. Events are now created in an unsignalled state. 11963 11964The internal object cache is now purged after table loading and 11965initialization to reduce the use of dynamic kernel memory -- on 11966the assumption that object use is greatest during the parse phase 11967of the entire table (versus the run-time use of individual control 11968methods.) 11969 11970ACPI 2.0 variable-length packages are now fully operational. 11971 11972Code and Data Size: Code and Data optimizations have permitted new 11973feature development with an actual reduction in the library size. 11974Current core subsystem library sizes are shown below. These are 11975the code and data sizes for the acpica.lib produced by the 11976Microsoft Visual C++ 6.0 compiler, and these values do not include 11977any ACPI driver or OSPM code. The debug version of the code 11978includes the debug output trace mechanism and has a larger code 11979and data size. Note that these values will vary depending on the 11980efficiency of the compiler and the compiler options used during 11981generation. 11982 11983 Previous Release (11_09_01): 11984 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 11985 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 11986 11987 Current Release: 11988 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 11989 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 11990 11991 2) Linux: 11992 11993Enhanced the ACPI boot-time initialization code to allow the use 11994of Local APIC tables for processor enumeration on IA-32, and to 11995pave the way for a fully MPS-free boot (on SMP systems) in the 11996near future. This functionality replaces 11997arch/i386/kernel/acpitables.c, which was introduced in an earlier 119982.4.15-preX release. To enable this feature you must add 11999"acpi_boot=on" to the kernel command line -- see the help entry 12000for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 12001the works... 12002 12003Restructured the configuration options to allow boot-time table 12004parsing support without inclusion of the ACPI Interpreter (and 12005other) code. 12006 12007NOTE: This release does not include fixes for the reported events, 12008power-down, and thermal passive cooling issues (coming soon). 12009 12010 3) ASL Compiler: 12011 12012Added additional typechecking for Fields within restricted access 12013Operation Regions. All fields within EC and CMOS regions must be 12014declared with ByteAcc. All fields withing SMBus regions must be 12015declared with the BufferAcc access type. 12016 12017Fixed a problem where the listing file output of control methods 12018no longer interleaved the actual AML code with the ASL source 12019code. 12020 12021 12022 12023 12024---------------------------------------- 12025Summary of changes for this label: 11_09_01 12026 120271) ACPI CA Core Subsystem: 12028 12029Implemented ACPI 2.0-defined support for writes to fields with a 12030Buffer, String, or Integer source operand that is smaller than the 12031target field. In these cases, the source operand is zero-extended 12032to fill the target field. 12033 12034Fixed a problem where a Field starting bit offset (within the 12035parent operation region) was calculated incorrectly if the 12036 12037alignment of the field differed from the access width. This 12038affected CreateWordField, CreateDwordField, CreateQwordField, and 12039possibly other fields that use the "AccessAny" keyword. 12040 12041Fixed a problem introduced in the 11_02_01 release where indirect 12042stores through method arguments did not operate correctly. 12043 120442) Linux: 12045 12046Implemented boot-time ACPI table parsing support 12047(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 12048facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 12049legacy BIOS interfaces (e.g. MPS) for the configuration of system 12050processors, memory, and interrupts during setup_arch(). Note that 12051this patch does not include the required architecture-specific 12052changes required to apply this information -- subsequent patches 12053will be posted for both IA32 and IA64 to achieve this. 12054 12055Added low-level sleep support for IA32 platforms, courtesy of Pat 12056Mochel. This allows IA32 systems to transition to/from various 12057sleeping states (e.g. S1, S3), although the lack of a centralized 12058driver model and power-manageable drivers will prevent its 12059(successful) use on most systems. 12060 12061Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 12062submenu, unified IA32 and IA64 options, added new "Boot using ACPI 12063tables" option, etc. 12064 12065Increased the default timeout for the EC driver from 1ms to 10ms 12066(1000 cycles of 10us) to try to address AE_TIME errors during EC 12067transactions. 12068 12069 ---------------------------------------- 12070Summary of changes for this label: 11_02_01 12071 120721) ACPI CA Core Subsystem: 12073 12074ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 12075(QWordAcc keyword). All ACPI 2.0 64-bit support is now 12076implemented. 12077 12078OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 12079changes to support ACPI 2.0 Qword field access. Read/Write 12080PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 12081accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 12082the value parameter for the address space handler interface is now 12083an ACPI_INTEGER. OSL implementations of these interfaces must now 12084handle the case where the Width parameter is 64. 12085 12086Index Fields: Fixed a problem where unaligned bit assembly and 12087disassembly for IndexFields was not supported correctly. 12088 12089Index and Bank Fields: Nested Index and Bank Fields are now 12090supported. During field access, a check is performed to ensure 12091that the value written to an Index or Bank register is not out of 12092the range of the register. The Index (or Bank) register is 12093written before each access to the field data. Future support will 12094include allowing individual IndexFields to be wider than the 12095DataRegister width. 12096 12097Fields: Fixed a problem where the AML interpreter was incorrectly 12098attempting to write beyond the end of a Field/OpRegion. This was 12099a boundary case that occurred when a DWORD field was written to a 12100BYTE access OpRegion, forcing multiple writes and causing the 12101interpreter to write one datum too many. 12102 12103Fields: Fixed a problem with Field/OpRegion access where the 12104starting bit address of a field was incorrectly calculated if the 12105current access type was wider than a byte (WordAcc, DwordAcc, or 12106QwordAcc). 12107 12108Fields: Fixed a problem where forward references to individual 12109FieldUnits (individual Field names within a Field definition) were 12110not resolved during the AML table load. 12111 12112Fields: Fixed a problem where forward references from a Field 12113definition to the parent Operation Region definition were not 12114resolved during the AML table load. 12115 12116Fields: Duplicate FieldUnit names within a scope are now detected 12117during AML table load. 12118 12119Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 12120returned an incorrect name for the root node. 12121 12122Code and Data Size: Code and Data optimizations have permitted new 12123feature development with an actual reduction in the library size. 12124Current core subsystem library sizes are shown below. These are 12125the code and data sizes for the acpica.lib produced by the 12126Microsoft Visual C++ 6.0 compiler, and these values do not include 12127any ACPI driver or OSPM code. The debug version of the code 12128includes the debug output trace mechanism and has a larger code 12129and data size. Note that these values will vary depending on the 12130efficiency of the compiler and the compiler options used during 12131generation. 12132 12133 Previous Release (10_18_01): 12134 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 12135 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 12136 12137 Current Release: 12138 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 12139 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 12140 12141 2) Linux: 12142 12143Improved /proc processor output (Pavel Machek) Re-added 12144MODULE_LICENSE("GPL") to all modules. 12145 12146 3) ASL Compiler version X2030: 12147 12148Duplicate FieldUnit names within a scope are now detected and 12149flagged as errors. 12150 12151 4) Documentation: 12152 12153Programmer Reference updated to reflect OSL and address space 12154handler interface changes described above. 12155 12156---------------------------------------- 12157Summary of changes for this label: 10_18_01 12158 12159ACPI CA Core Subsystem: 12160 12161Fixed a problem with the internal object reference count mechanism 12162that occasionally caused premature object deletion. This resolves 12163all of the outstanding problem reports where an object is deleted 12164in the middle of an interpreter evaluation. Although this problem 12165only showed up in rather obscure cases, the solution to the 12166problem involved an adjustment of all reference counts involving 12167objects attached to namespace nodes. 12168 12169Fixed a problem with Field support in the interpreter where 12170writing to an aligned field whose length is an exact multiple (2 12171or greater) of the field access granularity would cause an attempt 12172to write beyond the end of the field. 12173 12174The top level AML opcode execution functions within the 12175interpreter have been renamed with a more meaningful and 12176consistent naming convention. The modules exmonad.c and 12177exdyadic.c were eliminated. New modules are exoparg1.c, 12178exoparg2.c, exoparg3.c, and exoparg6.c. 12179 12180Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 12181 12182Fixed a problem where the AML debugger was causing some internal 12183objects to not be deleted during subsystem termination. 12184 12185Fixed a problem with the external AcpiEvaluateObject interface 12186where the subsystem would fault if the named object to be 12187evaluated refered to a constant such as Zero, Ones, etc. 12188 12189Fixed a problem with IndexFields and BankFields where the 12190subsystem would fault if the index, data, or bank registers were 12191not defined in the same scope as the field itself. 12192 12193Added printf format string checking for compilers that support 12194this feature. Corrected more than 50 instances of issues with 12195format specifiers within invocations of ACPI_DEBUG_PRINT 12196throughout the core subsystem code. 12197 12198The ASL "Revision" operator now returns the ACPI support level 12199implemented in the core - the value "2" since the ACPI 2.0 support 12200is more than 50% implemented. 12201 12202Enhanced the output of the AML debugger "dump namespace" command 12203to output in a more human-readable form. 12204 12205Current core subsystem library code sizes are shown below. These 12206 12207are the code and data sizes for the acpica.lib produced by the 12208Microsoft Visual C++ 6.0 compiler, and these values do not include 12209any ACPI driver or OSPM code. The debug version of the code 12210includes the full debug trace mechanism -- leading to a much 12211 12212larger code and data size. Note that these values will vary 12213depending on the efficiency of the compiler and the compiler 12214options used during generation. 12215 12216 Previous Label (09_20_01): 12217 Non-Debug Version: 65K Code, 5K Data, 70K Total 12218 Debug Version: 138K Code, 58K Data, 196K Total 12219 12220 This Label: 12221 12222 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 12223 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 12224 12225Linux: 12226 12227Implemented a "Bad BIOS Blacklist" to track machines that have 12228known ASL/AML problems. 12229 12230Enhanced the /proc interface for the thermal zone driver and added 12231support for _HOT (the critical suspend trip point). The 'info' 12232file now includes threshold/policy information, and allows setting 12233of _SCP (cooling preference) and _TZP (polling frequency) values 12234to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 12235frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 12236preference to the passive/quiet mode (if supported by the ASL). 12237 12238Implemented a workaround for a gcc bug that resuted in an OOPs 12239when loading the control method battery driver. 12240 12241 ---------------------------------------- 12242Summary of changes for this label: 09_20_01 12243 12244 ACPI CA Core Subsystem: 12245 12246The AcpiEnableEvent and AcpiDisableEvent interfaces have been 12247modified to allow individual GPE levels to be flagged as wake- 12248enabled (i.e., these GPEs are to remain enabled when the platform 12249sleeps.) 12250 12251The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 12252support wake-enabled GPEs. This means that upon entering the 12253sleep state, all GPEs that are not wake-enabled are disabled. 12254When leaving the sleep state, these GPEs are reenabled. 12255 12256A local double-precision divide/modulo module has been added to 12257enhance portability to OS kernels where a 64-bit math library is 12258not available. The new module is "utmath.c". 12259 12260Several optimizations have been made to reduce the use of CPU 12261stack. Originally over 2K, the maximum stack usage is now below 122622K at 1860 bytes (1.82k) 12263 12264Fixed a problem with the AcpiGetFirmwareTable interface where the 12265root table pointer was not mapped into a logical address properly. 12266 12267Fixed a problem where a NULL pointer was being dereferenced in the 12268interpreter code for the ASL Notify operator. 12269 12270Fixed a problem where the use of the ASL Revision operator 12271returned an error. This operator now returns the current version 12272of the ACPI CA core subsystem. 12273 12274Fixed a problem where objects passed as control method parameters 12275to AcpiEvaluateObject were always deleted at method termination. 12276However, these objects may end up being stored into the namespace 12277by the called method. The object reference count mechanism was 12278applied to these objects instead of a force delete. 12279 12280Fixed a problem where static strings or buffers (contained in the 12281AML code) that are declared as package elements within the ASL 12282code could cause a fault because the interpreter would attempt to 12283delete them. These objects are now marked with the "static 12284object" flag to prevent any attempt to delete them. 12285 12286Implemented an interpreter optimization to use operands directly 12287from the state object instead of extracting the operands to local 12288variables. This reduces stack use and code size, and improves 12289performance. 12290 12291The module exxface.c was eliminated as it was an unnecessary extra 12292layer of code. 12293 12294Current core subsystem library code sizes are shown below. These 12295are the code and data sizes for the acpica.lib produced by the 12296Microsoft Visual C++ 6.0 compiler, and these values do not include 12297any ACPI driver or OSPM code. The debug version of the code 12298includes the full debug trace mechanism -- leading to a much 12299larger code and data size. Note that these values will vary 12300depending on the efficiency of the compiler and the compiler 12301options used during generation. 12302 12303 Non-Debug Version: 65K Code, 5K Data, 70K Total 12304(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 12305Total (Previously 195K) 12306 12307Linux: 12308 12309Support for ACPI 2.0 64-bit integers has been added. All ACPI 12310Integer objects are now 64 bits wide 12311 12312All Acpi data types and structures are now in lower case. Only 12313Acpi macros are upper case for differentiation. 12314 12315 Documentation: 12316 12317Changes to the external interfaces as described above. 12318 12319 ---------------------------------------- 12320Summary of changes for this label: 08_31_01 12321 12322 ACPI CA Core Subsystem: 12323 12324A bug with interpreter implementation of the ASL Divide operator 12325was found and fixed. The implicit function return value (not the 12326explicit store operands) was returning the remainder instead of 12327the quotient. This was a longstanding bug and it fixes several 12328known outstanding issues on various platforms. 12329 12330The ACPI_DEBUG_PRINT and function trace entry/exit macros have 12331been further optimized for size. There are 700 invocations of the 12332DEBUG_PRINT macro alone, so each optimization reduces the size of 12333the debug version of the subsystem significantly. 12334 12335A stack trace mechanism has been implemented. The maximum stack 12336usage is about 2K on 32-bit platforms. The debugger command "stat 12337stack" will display the current maximum stack usage. 12338 12339All public symbols and global variables within the subsystem are 12340now prefixed with the string "Acpi". This keeps all of the 12341symbols grouped together in a kernel map, and avoids conflicts 12342with other kernel subsystems. 12343 12344Most of the internal fixed lookup tables have been moved into the 12345code segment via the const operator. 12346 12347Several enhancements have been made to the interpreter to both 12348reduce the code size and improve performance. 12349 12350Current core subsystem library code sizes are shown below. These 12351are the code and data sizes for the acpica.lib produced by the 12352Microsoft Visual C++ 6.0 compiler, and these values do not include 12353any ACPI driver or OSPM code. The debug version of the code 12354includes the full debug trace mechanism which contains over 700 12355invocations of the DEBUG_PRINT macro, 500 function entry macro 12356invocations, and over 900 function exit macro invocations -- 12357leading to a much larger code and data size. Note that these 12358values will vary depending on the efficiency of the compiler and 12359the compiler options used during generation. 12360 12361 Non-Debug Version: 64K Code, 5K Data, 69K Total 12362Debug Version: 137K Code, 58K Data, 195K Total 12363 12364 Linux: 12365 12366Implemented wbinvd() macro, pending a kernel-wide definition. 12367 12368Fixed /proc/acpi/event to handle poll() and short reads. 12369 12370 ASL Compiler, version X2026: 12371 12372Fixed a problem introduced in the previous label where the AML 12373 12374code emitted for package objects produced packages with zero 12375length. 12376 12377 ---------------------------------------- 12378Summary of changes for this label: 08_16_01 12379 12380ACPI CA Core Subsystem: 12381 12382The following ACPI 2.0 ASL operators have been implemented in the 12383AML interpreter (These are already supported by the Intel ASL 12384compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 12385ToBuffer. Support for 64-bit AML constants is implemented in the 12386AML parser, debugger, and disassembler. 12387 12388The internal memory tracking mechanism (leak detection code) has 12389been upgraded to reduce the memory overhead (a separate tracking 12390block is no longer allocated for each memory allocation), and now 12391supports all of the internal object caches. 12392 12393The data structures and code for the internal object caches have 12394been coelesced and optimized so that there is a single cache and 12395memory list data structure and a single group of functions that 12396implement generic cache management. This has reduced the code 12397size in both the debug and release versions of the subsystem. 12398 12399The DEBUG_PRINT macro(s) have been optimized for size and replaced 12400by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 12401different, because it generates a single call to an internal 12402function. This results in a savings of about 90 bytes per 12403invocation, resulting in an overall code and data savings of about 1240416% in the debug version of the subsystem. 12405 12406 Linux: 12407 12408Fixed C3 disk corruption problems and re-enabled C3 on supporting 12409machines. 12410 12411Integrated low-level sleep code by Patrick Mochel. 12412 12413Further tweaked source code Linuxization. 12414 12415Other minor fixes. 12416 12417 ASL Compiler: 12418 12419Support for ACPI 2.0 variable length packages is fixed/completed. 12420 12421Fixed a problem where the optional length parameter for the ACPI 124222.0 ToString operator. 12423 12424Fixed multiple extraneous error messages when a syntax error is 12425detected within the declaration line of a control method. 12426 12427 ---------------------------------------- 12428Summary of changes for this label: 07_17_01 12429 12430ACPI CA Core Subsystem: 12431 12432Added a new interface named AcpiGetFirmwareTable to obtain any 12433ACPI table via the ACPI signature. The interface can be called at 12434any time during kernel initialization, even before the kernel 12435virtual memory manager is initialized and paging is enabled. This 12436allows kernel subsystems to obtain ACPI tables very early, even 12437before the ACPI CA subsystem is initialized. 12438 12439Fixed a problem where Fields defined with the AnyAcc attribute 12440could be resolved to the incorrect address under the following 12441conditions: 1) the field width is larger than 8 bits and 2) the 12442parent operation region is not defined on a DWORD boundary. 12443 12444Fixed a problem where the interpreter is not being locked during 12445namespace initialization (during execution of the _INI control 12446methods), causing an error when an attempt is made to release it 12447later. 12448 12449ACPI 2.0 support in the AML Interpreter has begun and will be 12450ongoing throughout the rest of this year. In this label, The Mod 12451operator is implemented. 12452 12453Added a new data type to contain full PCI addresses named 12454ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 12455and Function values. 12456 12457 Linux: 12458 12459Enhanced the Linux version of the source code to change most 12460capitalized ACPI type names to lowercase. For example, all 12461instances of ACPI_STATUS are changed to acpi_status. This will 12462result in a large diff, but the change is strictly cosmetic and 12463aligns the CA code closer to the Linux coding standard. 12464 12465OSL Interfaces: 12466 12467The interfaces to the PCI configuration space have been changed to 12468add the PCI Segment number and to split the single 32-bit combined 12469DeviceFunction field into two 16-bit fields. This was 12470accomplished by moving the four values that define an address in 12471PCI configuration space (segment, bus, device, and function) to 12472the new ACPI_PCI_ID structure. 12473 12474The changes to the PCI configuration space interfaces led to a 12475reexamination of the complete set of address space access 12476interfaces for PCI, I/O, and Memory. The previously existing 18 12477interfaces have proven difficult to maintain (any small change 12478must be propagated across at least 6 interfaces) and do not easily 12479allow for future expansion to 64 bits if necessary. Also, on some 12480systems, it would not be appropriate to demultiplex the access 12481width (8, 16, 32,or 64) before calling the OSL if the 12482corresponding native OS interfaces contain a similar access width 12483parameter. For these reasons, the 18 address space interfaces 12484have been replaced by these 6 new ones: 12485 12486AcpiOsReadPciConfiguration 12487AcpiOsWritePciConfiguration 12488AcpiOsReadMemory 12489AcpiOsWriteMemory 12490AcpiOsReadPort 12491AcpiOsWritePort 12492 12493Added a new interface named AcpiOsGetRootPointer to allow the OSL 12494to perform the platform and/or OS-specific actions necessary to 12495obtain the ACPI RSDP table pointer. On IA-32 platforms, this 12496interface will simply call down to the CA core to perform the low- 12497memory search for the table. On IA-64, the RSDP is obtained from 12498EFI. Migrating this interface to the OSL allows the CA core to 12499 12500remain OS and platform independent. 12501 12502Added a new interface named AcpiOsSignal to provide a generic 12503"function code and pointer" interface for various miscellaneous 12504signals and notifications that must be made to the host OS. The 12505first such signals are intended to support the ASL Fatal and 12506Breakpoint operators. In the latter case, the AcpiOsBreakpoint 12507interface has been obsoleted. 12508 12509The definition of the AcpiFormatException interface has been 12510changed to simplify its use. The caller no longer must supply a 12511buffer to the call; A pointer to a const string is now returned 12512directly. This allows the call to be easily used in printf 12513statements, etc. since the caller does not have to manage a local 12514buffer. 12515 12516 12517 ASL Compiler, Version X2025: 12518 12519The ACPI 2.0 Switch/Case/Default operators have been implemented 12520and are fully functional. They will work with all ACPI 1.0 12521interpreters, since the operators are simply translated to If/Else 12522pairs. 12523 12524The ACPI 2.0 ElseIf operator is implemented and will also work 12525with 1.0 interpreters, for the same reason. 12526 12527Implemented support for ACPI 2.0 variable-length packages. These 12528packages have a separate opcode, and their size is determined by 12529the interpreter at run-time. 12530 12531Documentation The ACPI CA Programmer Reference has been updated to 12532reflect the new interfaces and changes to existing interfaces. 12533 12534 ------------------------------------------ 12535Summary of changes for this label: 06_15_01 12536 12537 ACPI CA Core Subsystem: 12538 12539Fixed a problem where a DWORD-accessed field within a Buffer 12540object would get its byte address inadvertently rounded down to 12541the nearest DWORD. Buffers are always Byte-accessible. 12542 12543 ASL Compiler, version X2024: 12544 12545Fixed a problem where the Switch() operator would either fault or 12546hang the compiler. Note however, that the AML code for this ACPI 125472.0 operator is not yet implemented. 12548 12549Compiler uses the new AcpiOsGetTimer interface to obtain compile 12550timings. 12551 12552Implementation of the CreateField operator automatically converts 12553a reference to a named field within a resource descriptor from a 12554byte offset to a bit offset if required. 12555 12556Added some missing named fields from the resource descriptor 12557support. These are the names that are automatically created by the 12558compiler to reference fields within a descriptor. They are only 12559valid at compile time and are not passed through to the AML 12560interpreter. 12561 12562Resource descriptor named fields are now typed as Integers and 12563subject to compile-time typechecking when used in expressions. 12564 12565 ------------------------------------------ 12566Summary of changes for this label: 05_18_01 12567 12568 ACPI CA Core Subsystem: 12569 12570Fixed a couple of problems in the Field support code where bits 12571from adjacent fields could be returned along with the proper field 12572bits. Restructured the field support code to improve performance, 12573readability and maintainability. 12574 12575New DEBUG_PRINTP macro automatically inserts the procedure name 12576into the output, saving hundreds of copies of procedure name 12577strings within the source, shrinking the memory footprint of the 12578debug version of the core subsystem. 12579 12580 Source Code Structure: 12581 12582The source code directory tree was restructured to reflect the 12583current organization of the component architecture. Some files 12584and directories have been moved and/or renamed. 12585 12586 Linux: 12587 12588Fixed leaking kacpidpc processes. 12589 12590Fixed queueing event data even when /proc/acpi/event is not 12591opened. 12592 12593 ASL Compiler, version X2020: 12594 12595Memory allocation performance enhancement - over 24X compile time 12596improvement on large ASL files. Parse nodes and namestring 12597buffers are now allocated from a large internal compiler buffer. 12598 12599The temporary .SRC file is deleted unless the "-s" option is 12600specified 12601 12602The "-d" debug output option now sends all output to the .DBG file 12603instead of the console. 12604 12605"External" second parameter is now optional 12606 12607"ElseIf" syntax now properly allows the predicate 12608 12609Last operand to "Load" now recognized as a Target operand 12610 12611Debug object can now be used anywhere as a normal object. 12612 12613ResourceTemplate now returns an object of type BUFFER 12614 12615EISAID now returns an object of type INTEGER 12616 12617"Index" now works with a STRING operand 12618 12619"LoadTable" now accepts optional parameters 12620 12621"ToString" length parameter is now optional 12622 12623"Interrupt (ResourceType," parse error fixed. 12624 12625"Register" with a user-defined region space parse error fixed 12626 12627Escaped backslash at the end of a string ("\\") scan/parse error 12628fixed 12629 12630"Revision" is now an object of type INTEGER. 12631 12632 12633 12634------------------------------------------ 12635Summary of changes for this label: 05_02_01 12636 12637Linux: 12638 12639/proc/acpi/event now blocks properly. 12640 12641Removed /proc/sys/acpi. You can still dump your DSDT from 12642/proc/acpi/dsdt. 12643 12644 ACPI CA Core Subsystem: 12645 12646Fixed a problem introduced in the previous label where some of the 12647"small" resource descriptor types were not recognized. 12648 12649Improved error messages for the case where an ASL Field is outside 12650the range of the parent operation region. 12651 12652 ASL Compiler, version X2018: 12653 12654 12655Added error detection for ASL Fields that extend beyond the length 12656of the parent operation region (only if the length of the region 12657is known at compile time.) This includes fields that have a 12658minimum access width that is smaller than the parent region, and 12659individual field units that are partially or entirely beyond the 12660extent of the parent. 12661 12662 12663 12664------------------------------------------ 12665Summary of changes for this label: 04_27_01 12666 12667 ACPI CA Core Subsystem: 12668 12669Fixed a problem where the namespace mutex could be released at the 12670wrong time during execution of AcpiRemoveAddressSpaceHandler. 12671 12672Added optional thread ID output for debug traces, to simplify 12673debugging of multiple threads. Added context switch notification 12674when the debug code realizes that a different thread is now 12675executing ACPI code. 12676 12677Some additional external data types have been prefixed with the 12678string "ACPI_" for consistency. This may effect existing code. 12679The data types affected are the external callback typedefs - e.g., 12680 12681WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 12682 12683 Linux: 12684 12685Fixed an issue with the OSL semaphore implementation where a 12686thread was waking up with an error from receiving a SIGCHLD 12687signal. 12688 12689Linux version of ACPI CA now uses the system C library for string 12690manipulation routines instead of a local implementation. 12691 12692Cleaned up comments and removed TBDs. 12693 12694 ASL Compiler, version X2017: 12695 12696Enhanced error detection and reporting for all file I/O 12697operations. 12698 12699 Documentation: 12700 12701Programmer Reference updated to version 1.06. 12702 12703 12704 12705------------------------------------------ 12706Summary of changes for this label: 04_13_01 12707 12708 ACPI CA Core Subsystem: 12709 12710Restructured support for BufferFields and RegionFields. 12711BankFields support is now fully operational. All known 32-bit 12712limitations on field sizes have been removed. Both BufferFields 12713and (Operation) RegionFields are now supported by the same field 12714management code. 12715 12716Resource support now supports QWORD address and IO resources. The 1271716/32/64 bit address structures and the Extended IRQ structure 12718have been changed to properly handle Source Resource strings. 12719 12720A ThreadId of -1 is now used to indicate a "mutex not acquired" 12721condition internally and must never be returned by AcpiOsThreadId. 12722This reserved value was changed from 0 since Unix systems allow a 12723thread ID of 0. 12724 12725Linux: 12726 12727Driver code reorganized to enhance portability 12728 12729Added a kernel configuration option to control ACPI_DEBUG 12730 12731Fixed the EC driver to honor _GLK. 12732 12733ASL Compiler, version X2016: 12734 12735Fixed support for the "FixedHw" keyword. Previously, the FixedHw 12736address space was set to 0, not 0x7f as it should be. 12737 12738 ------------------------------------------ 12739Summary of changes for this label: 03_13_01 12740 12741 ACPI CA Core Subsystem: 12742 12743During ACPI initialization, the _SB_._INI method is now run if 12744present. 12745 12746Notify handler fix - notifies are deferred until the parent method 12747completes execution. This fixes the "mutex already acquired" 12748issue seen occasionally. 12749 12750Part of the "implicit conversion" rules in ACPI 2.0 have been 12751found to cause compatibility problems with existing ASL/AML. The 12752convert "result-to-target-type" implementation has been removed 12753for stores to method Args and Locals. Source operand conversion 12754is still fully implemented. Possible changes to ACPI 2.0 12755specification pending. 12756 12757Fix to AcpiRsCalculatePciRoutingTableLength to return correct 12758length. 12759 12760Fix for compiler warnings for 64-bit compiles. 12761 12762 Linux: 12763 12764/proc output aligned for easier parsing. 12765 12766Release-version compile problem fixed. 12767 12768New kernel configuration options documented in Configure.help. 12769 12770IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 12771context" message. 12772 12773 OSPM: 12774 12775Power resource driver integrated with bus manager. 12776 12777Fixed kernel fault during active cooling for thermal zones. 12778 12779Source Code: 12780 12781The source code tree has been restructured. 12782 12783 12784 12785------------------------------------------ 12786Summary of changes for this label: 03_02_01 12787 12788 Linux OS Services Layer (OSL): 12789 12790Major revision of all Linux-specific code. 12791 12792Modularized all ACPI-specific drivers. 12793 12794Added new thermal zone and power resource drivers. 12795 12796Revamped /proc interface (new functionality is under /proc/acpi). 12797 12798New kernel configuration options. 12799 12800 Linux known issues: 12801 12802New kernel configuration options not documented in Configure.help 12803yet. 12804 12805 12806Module dependencies not currently implemented. If used, they 12807should be loaded in this order: busmgr, power, ec, system, 12808processor, battery, ac_adapter, button, thermal. 12809 12810Modules will not load if CONFIG_MODVERSION is set. 12811 12812IBM 600E - entering S5 may reboot instead of shutting down. 12813 12814IBM 600E - Sleep button may generate "Invalid <NULL> context" 12815message. 12816 12817Some systems may fail with "execution mutex already acquired" 12818message. 12819 12820 ACPI CA Core Subsystem: 12821 12822Added a new OSL Interface, AcpiOsGetThreadId. This was required 12823for the deadlock detection code. Defined to return a non-zero, 32- 12824bit thread ID for the currently executing thread. May be a non- 12825zero constant integer on single-thread systems. 12826 12827Implemented deadlock detection for internal subsystem mutexes. We 12828may add conditional compilation for this code (debug only) later. 12829 12830ASL/AML Mutex object semantics are now fully supported. This 12831includes multiple acquires/releases by owner and support for the 12832 12833Mutex SyncLevel parameter. 12834 12835A new "Force Release" mechanism automatically frees all ASL 12836Mutexes that have been acquired but not released when a thread 12837exits the interpreter. This forces conformance to the ACPI spec 12838("All mutexes must be released when an invocation exits") and 12839prevents deadlocked ASL threads. This mechanism can be expanded 12840(later) to monitor other resource acquisitions if OEM ASL code 12841continues to misbehave (which it will). 12842 12843Several new ACPI exception codes have been added for the Mutex 12844support. 12845 12846Recursive method calls are now allowed and supported (the ACPI 12847spec does in fact allow recursive method calls.) The number of 12848recursive calls is subject to the restrictions imposed by the 12849SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 12850parameter. 12851 12852Implemented support for the SyncLevel parameter for control 12853methods (ACPI 2.0 feature) 12854 12855Fixed a deadlock problem when multiple threads attempted to use 12856the interpreter. 12857 12858Fixed a problem where the string length of a String package 12859element was not always set in a package returned from 12860AcpiEvaluateObject. 12861 12862Fixed a problem where the length of a String package element was 12863not always included in the length of the overall package returned 12864from AcpiEvaluateObject. 12865 12866Added external interfaces (Acpi*) to the ACPI debug memory 12867manager. This manager keeps a list of all outstanding 12868allocations, and can therefore detect memory leaks and attempts to 12869free memory blocks more than once. Useful for code such as the 12870power manager, etc. May not be appropriate for device drivers. 12871Performance with the debug code enabled is slow. 12872 12873The ACPI Global Lock is now an optional hardware element. 12874 12875 ASL Compiler Version X2015: 12876 12877Integrated changes to allow the compiler to be generated on 12878multiple platforms. 12879 12880Linux makefile added to generate the compiler on Linux 12881 12882 Source Code: 12883 12884All platform-specific headers have been moved to their own 12885subdirectory, Include/Platform. 12886 12887New source file added, Interpreter/ammutex.c 12888 12889New header file, Include/acstruct.h 12890 12891 Documentation: 12892 12893The programmer reference has been updated for the following new 12894interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 12895 12896 ------------------------------------------ 12897Summary of changes for this label: 02_08_01 12898 12899Core ACPI CA Subsystem: Fixed a problem where an error was 12900incorrectly returned if the return resource buffer was larger than 12901the actual data (in the resource interfaces). 12902 12903References to named objects within packages are resolved to the 12904 12905full pathname string before packages are returned directly (via 12906the AcpiEvaluateObject interface) or indirectly via the resource 12907interfaces. 12908 12909Linux OS Services Layer (OSL): 12910 12911Improved /proc battery interface. 12912 12913 12914Added C-state debugging output and other miscellaneous fixes. 12915 12916ASL Compiler Version X2014: 12917 12918All defined method arguments can now be used as local variables, 12919including the ones that are not actually passed in as parameters. 12920The compiler tracks initialization of the arguments and issues an 12921exception if they are used without prior assignment (just like 12922locals). 12923 12924The -o option now specifies a filename prefix that is used for all 12925output files, including the AML output file. Otherwise, the 12926default behavior is as follows: 1) the AML goes to the file 12927specified in the DSDT. 2) all other output files use the input 12928source filename as the base. 12929 12930 ------------------------------------------ 12931Summary of changes for this label: 01_25_01 12932 12933Core ACPI CA Subsystem: Restructured the implementation of object 12934store support within the interpreter. This includes support for 12935the Store operator as well as any ASL operators that include a 12936target operand. 12937 12938Partially implemented support for Implicit Result-to-Target 12939conversion. This is when a result object is converted on the fly 12940to the type of an existing target object. Completion of this 12941support is pending further analysis of the ACPI specification 12942concerning this matter. 12943 12944CPU-specific code has been removed from the subsystem (hardware 12945directory). 12946 12947New Power Management Timer functions added 12948 12949Linux OS Services Layer (OSL): Moved system state transition code 12950to the core, fixed it, and modified Linux OSL accordingly. 12951 12952Fixed C2 and C3 latency calculations. 12953 12954 12955We no longer use the compilation date for the version message on 12956initialization, but retrieve the version from AcpiGetSystemInfo(). 12957 12958Incorporated for fix Sony VAIO machines. 12959 12960Documentation: The Programmer Reference has been updated and 12961reformatted. 12962 12963 12964ASL Compiler: Version X2013: Fixed a problem where the line 12965numbering and error reporting could get out of sync in the 12966presence of multiple include files. 12967 12968 ------------------------------------------ 12969Summary of changes for this label: 01_15_01 12970 12971Core ACPI CA Subsystem: 12972 12973Implemented support for type conversions in the execution of the 12974ASL Concatenate operator (The second operand is converted to 12975match the type of the first operand before concatenation.) 12976 12977Support for implicit source operand conversion is partially 12978implemented. The ASL source operand types Integer, Buffer, and 12979String are freely interchangeable for most ASL operators and are 12980converted by the interpreter on the fly as required. Implicit 12981Target operand conversion (where the result is converted to the 12982target type before storing) is not yet implemented. 12983 12984Support for 32-bit and 64-bit BCD integers is implemented. 12985 12986Problem fixed where a field read on an aligned field could cause a 12987read past the end of the field. 12988 12989New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 12990does not return a value, but the caller expects one. (The ASL 12991compiler flags this as a warning.) 12992 12993ASL Compiler: 12994 12995Version X2011: 129961. Static typechecking of all operands is implemented. This 12997prevents the use of invalid objects (such as using a Package where 12998an Integer is required) at compile time instead of at interpreter 12999run-time. 130002. The ASL source line is printed with ALL errors and warnings. 130013. Bug fix for source EOF without final linefeed. 130024. Debug option is split into a parse trace and a namespace trace. 130035. Namespace output option (-n) includes initial values for 13004integers and strings. 130056. Parse-only option added for quick syntax checking. 130067. Compiler checks for duplicate ACPI name declarations 13007 13008Version X2012: 130091. Relaxed typechecking to allow interchangeability between 13010strings, integers, and buffers. These types are now converted by 13011the interpreter at runtime. 130122. Compiler reports time taken by each internal subsystem in the 13013debug output file. 13014 13015 13016 ------------------------------------------ 13017Summary of changes for this label: 12_14_00 13018 13019ASL Compiler: 13020 13021This is the first official release of the compiler. Since the 13022compiler requires elements of the Core Subsystem, this label 13023synchronizes everything. 13024 13025------------------------------------------ 13026Summary of changes for this label: 12_08_00 13027 13028 13029Fixed a problem where named references within the ASL definition 13030of both OperationRegions and CreateXXXFields did not work 13031properly. The symptom was an AE_AML_OPERAND_TYPE during 13032initialization of the region/field. This is similar (but not 13033related internally) to the problem that was fixed in the last 13034label. 13035 13036Implemented both 32-bit and 64-bit support for the BCD ASL 13037functions ToBCD and FromBCD. 13038 13039Updated all legal headers to include "2000" in the copyright 13040years. 13041 13042 ------------------------------------------ 13043Summary of changes for this label: 12_01_00 13044 13045Fixed a problem where method invocations within the ASL definition 13046of both OperationRegions and CreateXXXFields did not work 13047properly. The symptom was an AE_AML_OPERAND_TYPE during 13048initialization of the region/field: 13049 13050 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 13051[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 13052(0x3005) 13053 13054Fixed a problem where operators with more than one nested 13055subexpression would fail. The symptoms were varied, by mostly 13056AE_AML_OPERAND_TYPE errors. This was actually a rather serious 13057problem that has gone unnoticed until now. 13058 13059 Subtract (Add (1,2), Multiply (3,4)) 13060 13061Fixed a problem where AcpiGetHandle didn't quite get fixed in the 13062previous build (The prefix part of a relative path was handled 13063incorrectly). 13064 13065Fixed a problem where Operation Region initialization failed if 13066the operation region name was a "namepath" instead of a simple 13067"nameseg". Symptom was an AE_NO_OPERAND error. 13068 13069Fixed a problem where an assignment to a local variable via the 13070indirect RefOf mechanism only worked for the first such 13071assignment. Subsequent assignments were ignored. 13072 13073 ------------------------------------------ 13074Summary of changes for this label: 11_15_00 13075 13076ACPI 2.0 table support with backwards support for ACPI 1.0 and the 130770.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 13078the AML interpreter does NOT have support for the new 2.0 ASL 13079grammar terms at this time. 13080 13081All ACPI hardware access is via the GAS structures in the ACPI 2.0 13082FADT. 13083 13084All physical memory addresses across all platforms are now 64 bits 13085wide. Logical address width remains dependent on the platform 13086(i.e., "void *"). 13087 13088AcpiOsMapMemory interface changed to a 64-bit physical address. 13089 13090The AML interpreter integer size is now 64 bits, as per the ACPI 130912.0 specification. 13092 13093For backwards compatibility with ACPI 1.0, ACPI tables with a 13094revision number less than 2 use 32-bit integers only. 13095 13096Fixed a problem where the evaluation of OpRegion operands did not 13097always resolve them to numbers properly. 13098 13099------------------------------------------ 13100Summary of changes for this label: 10_20_00 13101 13102Fix for CBN_._STA issue. This fix will allow correct access to 13103CBN_ OpRegions when the _STA returns 0x8. 13104 13105Support to convert ACPI constants (Ones, Zeros, One) to actual 13106values before a package object is returned 13107 13108Fix for method call as predicate to if/while construct causing 13109incorrect if/while behavior 13110 13111Fix for Else block package lengths sometimes calculated wrong (if 13112block > 63 bytes) 13113 13114Fix for Processor object length field, was always zero 13115 13116Table load abort if FACP sanity check fails 13117 13118Fix for problem with Scope(name) if name already exists 13119 13120Warning emitted if a named object referenced cannot be found 13121(resolved) during method execution. 13122 13123 13124 13125 13126 13127------------------------------------------ 13128Summary of changes for this label: 9_29_00 13129 13130New table initialization interfaces: AcpiInitializeSubsystem no 13131longer has any parameters AcpiFindRootPointer - Find the RSDP (if 13132necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 13133>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 13134AcpiLoadTables 13135 13136Note: These interface changes require changes to all existing OSDs 13137 13138The PCI_Config default address space handler is always installed 13139at the root namespace object. 13140 13141------------------------------------------- 13142Summary of changes for this label: 09_15_00 13143 13144The new initialization architecture is implemented. New 13145interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 13146AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 13147 13148(Namespace is automatically loaded when a table is loaded) 13149 13150The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1315152 bytes to 32 bytes. There is usually one of these for every 13152namespace object, so the memory savings is significant. 13153 13154Implemented just-in-time evaluation of the CreateField operators. 13155 13156Bug fixes for IA-64 support have been integrated. 13157 13158Additional code review comments have been implemented 13159 13160The so-called "third pass parse" has been replaced by a final walk 13161through the namespace to initialize all operation regions (address 13162spaces) and fields that have not yet been initialized during the 13163execution of the various _INI and REG methods. 13164 13165New file - namespace/nsinit.c 13166 13167------------------------------------------- 13168Summary of changes for this label: 09_01_00 13169 13170Namespace manager data structures have been reworked to change the 13171primary object from a table to a single object. This has 13172resulted in dynamic memory savings of 3X within the namespace and 131732X overall in the ACPI CA subsystem. 13174 13175Fixed problem where the call to AcpiEvFindPciRootBuses was 13176inadvertently left commented out. 13177 13178Reduced the warning count when generating the source with the GCC 13179compiler. 13180 13181Revision numbers added to each module header showing the 13182SourceSafe version of the file. Please refer to this version 13183number when giving us feedback or comments on individual modules. 13184 13185The main object types within the subsystem have been renamed to 13186clarify their purpose: 13187 13188ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 13189ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 13190ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 13191 13192NOTE: no changes to the initialization sequence are included in 13193this label. 13194 13195------------------------------------------- 13196Summary of changes for this label: 08_23_00 13197 13198Fixed problem where TerminateControlMethod was being called 13199multiple times per method 13200 13201Fixed debugger problem where single stepping caused a semaphore to 13202be oversignalled 13203 13204Improved performance through additional parse object caching - 13205added ACPI_EXTENDED_OP type 13206 13207------------------------------------------- 13208Summary of changes for this label: 08_10_00 13209 13210Parser/Interpreter integration: Eliminated the creation of 13211complete parse trees for ACPI tables and control methods. 13212Instead, parse subtrees are created and then deleted as soon as 13213they are processed (Either entered into the namespace or executed 13214by the interpreter). This reduces the use of dynamic kernel 13215memory significantly. (about 10X) 13216 13217Exception codes broken into classes and renumbered. Be sure to 13218recompile all code that includes acexcep.h. Hopefully we won't 13219have to renumber the codes again now that they are split into 13220classes (environment, programmer, AML code, ACPI table, and 13221internal). 13222 13223Fixed some additional alignment issues in the Resource Manager 13224subcomponent 13225 13226Implemented semaphore tracking in the AcpiExec utility, and fixed 13227several places where mutexes/semaphores were being unlocked 13228without a corresponding lock operation. There are no known 13229semaphore or mutex "leaks" at this time. 13230 13231Fixed the case where an ASL Return operator is used to return an 13232unnamed package. 13233 13234------------------------------------------- 13235Summary of changes for this label: 07_28_00 13236 13237Fixed a problem with the way addresses were calculated in 13238AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 13239manifested itself when a Field was created with WordAccess or 13240DwordAccess, but the field unit defined within the Field was less 13241 13242than a Word or Dword. 13243 13244Fixed a problem in AmlDumpOperands() module's loop to pull 13245operands off of the operand stack to display information. The 13246problem manifested itself as a TLB error on 64-bit systems when 13247accessing an operand stack with two or more operands. 13248 13249Fixed a problem with the PCI configuration space handlers where 13250context was getting confused between accesses. This required a 13251change to the generic address space handler and address space 13252setup definitions. Handlers now get both a global handler context 13253(this is the one passed in by the user when executing 13254AcpiInstallAddressSpaceHandler() and a specific region context 13255that is unique to each region (For example, the _ADR, _SEG and 13256_BBN values associated with a specific region). The generic 13257function definitions have changed to the following: 13258 13259typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 13260UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 13261*HandlerContext, // This used to be void *Context void 13262*RegionContext); // This is an additional parameter 13263 13264typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 13265RegionHandle, UINT32 Function, void *HandlerContext, void 13266**RegionContext); // This used to be **ReturnContext 13267 13268------------------------------------------- 13269Summary of changes for this label: 07_21_00 13270 13271Major file consolidation and rename. All files within the 13272interpreter have been renamed as well as most header files. This 13273was done to prevent collisions with existing files in the host 13274OSs -- filenames such as "config.h" and "global.h" seem to be 13275quite common. The VC project files have been updated. All 13276makefiles will require modification. 13277 13278The parser/interpreter integration continues in Phase 5 with the 13279implementation of a complete 2-pass parse (the AML is parsed 13280twice) for each table; This avoids the construction of a huge 13281parse tree and therefore reduces the amount of dynamic memory 13282required by the subsystem. Greater use of the parse object cache 13283means that performance is unaffected. 13284 13285Many comments from the two code reviews have been rolled in. 13286 13287The 64-bit alignment support is complete. 13288 13289------------------------------------------- 13290Summary of changes for this label: 06_30_00 13291 13292With a nod and a tip of the hat to the technology of yesteryear, 13293we've added support in the source code for 80 column output 13294devices. The code is now mostly constrained to 80 columns or 13295less to support environments and editors that 1) cannot display 13296or print more than 80 characters on a single line, and 2) cannot 13297disable line wrapping. 13298 13299A major restructuring of the namespace data structure has been 13300completed. The result is 1) cleaner and more 13301understandable/maintainable code, and 2) a significant reduction 13302in the dynamic memory requirement for each named ACPI object 13303(almost half). 13304 13305------------------------------------------- 13306Summary of changes for this label: 06_23_00 13307 13308Linux support has been added. In order to obtain approval to get 13309the ACPI CA subsystem into the Linux kernel, we've had to make 13310quite a few changes to the base subsystem that will affect all 13311users (all the changes are generic and OS- independent). The 13312effects of these global changes have been somewhat far reaching. 13313Files have been merged and/or renamed and interfaces have been 13314renamed. The major changes are described below. 13315 13316Osd* interfaces renamed to AcpiOs* to eliminate namespace 13317pollution/confusion within our target kernels. All OSD 13318interfaces must be modified to match the new naming convention. 13319 13320Files merged across the subsystem. A number of the smaller source 13321and header files have been merged to reduce the file count and 13322increase the density of the existing files. There are too many 13323to list here. In general, makefiles that call out individual 13324files will require rebuilding. 13325 13326Interpreter files renamed. All interpreter files now have the 13327prefix am* instead of ie* and is*. 13328 13329Header files renamed: The acapi.h file is now acpixf.h. The 13330acpiosd.h file is now acpiosxf.h. We are removing references to 13331the acronym "API" since it is somewhat windowsy. The new name is 13332"external interface" or xface or xf in the filenames.j 13333 13334 13335All manifest constants have been forced to upper case (some were 13336mixed case.) Also, the string "ACPI_" has been prepended to many 13337(not all) of the constants, typedefs, and structs. 13338 13339The globals "DebugLevel" and "DebugLayer" have been renamed 13340"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 13341 13342All other globals within the subsystem are now prefixed with 13343"AcpiGbl_" Internal procedures within the subsystem are now 13344prefixed with "Acpi" (with only a few exceptions). The original 13345two-letter abbreviation for the subcomponent remains after "Acpi" 13346- for example, CmCallocate became AcpiCmCallocate. 13347 13348Added a source code translation/conversion utility. Used to 13349generate the Linux source code, it can be modified to generate 13350other types of source as well. Can also be used to cleanup 13351existing source by removing extraneous spaces and blank lines. 13352Found in tools/acpisrc/* 13353 13354OsdUnMapMemory was renamed to OsdUnmapMemory and then 13355AcpiOsUnmapMemory. (UnMap became Unmap). 13356 13357A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 13358When set to one, this indicates that the caller wants to use the 13359 13360semaphore as a mutex, not a counting semaphore. ACPI CA uses 13361both types. However, implementers of this call may want to use 13362different OS primitives depending on the type of semaphore 13363requested. For example, some operating systems provide separate 13364 13365"mutex" and "semaphore" interfaces - where the mutex interface is 13366much faster because it doesn't have all the overhead of a full 13367semaphore implementation. 13368 13369Fixed a deadlock problem where a method that accesses the PCI 13370address space can block forever if it is the first access to the 13371space. 13372 13373------------------------------------------- 13374Summary of changes for this label: 06_02_00 13375 13376Support for environments that cannot handle unaligned data 13377accesses (e.g. firmware and OS environments devoid of alignment 13378handler technology namely SAL/EFI and the IA-64 Linux kernel) has 13379been added (via configurable macros) in these three areas: - 13380Transfer of data from the raw AML byte stream is done via byte 13381moves instead of word/dword/qword moves. - External objects are 13382aligned within the user buffer, including package elements (sub- 13383objects). - Conversion of name strings to UINT32 Acpi Names is now 13384done byte-wise. 13385 13386The Store operator was modified to mimic Microsoft's 13387implementation when storing to a Buffer Field. 13388 13389Added a check of the BM_STS bit before entering C3. 13390 13391The methods subdirectory has been obsoleted and removed. A new 13392file, cmeval.c subsumes the functionality. 13393 13394A 16-bit (DOS) version of AcpiExec has been developed. The 13395makefile is under the acpiexec directory. 13396