changes.txt revision 249663
1---------------------------------------- 218 April 2013. Summary of changes for version 20130418: 3 4This release is available at https://acpica.org/downloads 5 6 71) ACPICA kernel-resident subsystem: 8 9Fixed a possible buffer overrun during some rare but specific field unit 10read operations. This overrun can only happen if the DSDT version is 1 -- 11meaning that all AML integers are 32 bits -- and the field length is 12between 33 and 55 bits long. During the read, an internal buffer object is 13created for the field unit because the field is larger than an integer (32 14bits). However, in this case, the buffer will be incorrectly written 15beyond the end because the buffer length is less than the internal minimum 16of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 17long, but a full 8 bytes will be written. 18 19Updated the Embedded Controller "orphan" _REG method support. This refers 20to _REG methods under the EC device that have no corresponding operation 21region. This is allowed by the ACPI specification. This update removes a 22dependency on the existence an ECDT table. It will execute an orphan _REG 23method as long as the operation region handler for the EC is installed at 24the EC device node and not the namespace root. Rui Zhang (original 25update), Bob Moore (update/integrate). 26 27Implemented run-time argument typechecking for all predefined ACPI names 28(_STA, _BIF, etc.) This change performs object typechecking on all 29incoming arguments for all predefined names executed via 30AcpiEvaluateObject. This ensures that ACPI-related device drivers are 31passing correct object types as well as the correct number of arguments 32(therefore identifying any issues immediately). Also, the ASL/namespace 33definition of the predefined name is checked against the ACPI 34specification for the proper argument count. Adds one new file, 35nsarguments.c 36 37Changed an exception code for the ASL UnLoad() operator. Changed the 38exception code for the case where the input DdbHandle is invalid, from 39AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 40 41Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 42global makefile. The use of this flag causes compiler errors on earlier 43versions of GCC, so it has been removed for compatibility. 44 45Miscellaneous cleanup: 461) Removed some unused/obsolete macros 472) Fixed a possible memory leak in the _OSI support 483) Removed an unused variable in the predefined name support 494) Windows OSL: remove obsolete reference to a memory list field 50 51Example Code and Data Size: These are the sizes for the OS-independent 52acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 53debug version of the code includes the debug output trace mechanism and 54has a much larger code and data size. 55 56 Current Release: 57 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 58 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 59 Previous Release: 60 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 61 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 62 63 642) iASL Compiler/Disassembler and Tools: 65 66AcpiExec: Added installation of a handler for the SystemCMOS address 67space. This prevents control method abort if a method accesses this space. 68 69AcpiExec: Added support for multiple EC devices, and now install EC 70operation region handler(s) at the actual EC device instead of the 71namespace root. This reflects the typical behavior of host operating 72systems. 73 74AcpiExec: Updated to ensure that all operation region handlers are 75installed before the _REG methods are executed. This prevents a _REG 76method from aborting if it accesses an address space has no handler. 77AcpiExec installs a handler for every possible address space. 78 79Debugger: Enhanced the "handlers" command to display non-root handlers. 80This change enhances the handlers command to display handlers associated 81with individual devices throughout the namespace, in addition to the 82currently supported display of handlers associated with the root namespace 83node. 84 85ASL Test Suite: Several test suite errors have been identified and 86resolved, reducing the total error count during execution. Chao Guan. 87 88---------------------------------------- 8928 March 2013. Summary of changes for version 20130328: 90 911) ACPICA kernel-resident subsystem: 92 93Fixed several possible race conditions with the internal object reference 94counting mechanism. Some of the external ACPICA interfaces update object 95reference counts without holding the interpreter or namespace lock. This 96change adds a spinlock to protect reference count updates on the internal 97ACPICA objects. Reported by and with assistance from Andriy Gapon 98(avg@FreeBSD.org). 99 100FADT support: Removed an extraneous warning for very large GPE register 101sets. This change removes a size mismatch warning if the legacy length 102field for a GPE register set is larger than the 64-bit GAS structure can 103accommodate. GPE register sets can be larger than the 255-bit width 104limitation of the GAS structure. Linn Crosetto (linn@hp.com). 105 106_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 107return from this interface. Handles a possible timeout case if 108ACPI_WAIT_FOREVER is modified by the host to be a value less than 109"forever". Jung-uk Kim. 110 111Predefined name support: Add allowed/required argument type information to 112the master predefined info table. This change adds the infrastructure to 113enable typechecking on incoming arguments for all predefined 114methods/objects. It does not actually contain the code that will fully 115utilize this information, this is still under development. Also condenses 116some duplicate code for the predefined names into a new module, 117utilities/utpredef.c 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: 95.0K Code, 25.9K Data, 120.9K Total 126 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 127 Current Release: 128 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 129 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 130 131 1322) iASL Compiler/Disassembler and Tools: 133 134iASL: Implemented a new option to simplify the development of ACPI-related 135BIOS code. Adds support for a new "offset table" output file. The -so 136option will create a C table containing the AML table offsets of various 137named objects in the namespace so that BIOS code can modify them easily at 138boot time. This can simplify BIOS runtime code by eliminating expensive 139searches for "magic values", enhancing boot times and adding greater 140reliability. With assistance from Lee Hamel. 141 142iASL: Allow additional predefined names to return zero-length packages. 143Now, all predefined names that are defined by the ACPI specification to 144return a "variable-length package of packages" are allowed to return a 145zero length top-level package. This allows the BIOS to tell the host that 146the requested feature is not supported, and supports existing BIOS/ASL 147code and practices. 148 149iASL: Changed the "result not used" warning to an error. This is the case 150where an ASL operator is effectively a NOOP because the result of the 151operation is not stored anywhere. For example: 152 Add (4, Local0) 153There is no target (missing 3rd argument), nor is the function return 154value used. This is potentially a very serious problem -- since the code 155was probably intended to do something, but for whatever reason, the value 156was not stored. Therefore, this issue has been upgraded from a warning to 157an error. 158 159AcpiHelp: Added allowable/required argument types to the predefined names 160info display. This feature utilizes the recent update to the predefined 161names table (above). 162 163---------------------------------------- 16414 February 2013. Summary of changes for version 20130214: 165 1661) ACPICA Kernel-resident Subsystem: 167 168Fixed a possible regression on some hosts: Reinstated the safe return 169macros (return_ACPI_STATUS, etc.) that ensure that the argument is 170evaluated only once. Although these macros are not needed for the ACPICA 171code itself, they are often used by ACPI-related host device drivers where 172the safe feature may be necessary. 173 174Fixed several issues related to the ACPI 5.0 reduced hardware support 175(SOC): Now ensure that if the platform declares itself as hardware-reduced 176via the FADT, the following functions become NOOPs (and always return 177AE_OK) because ACPI is always enabled by definition on these machines: 178 AcpiEnable 179 AcpiDisable 180 AcpiHwGetMode 181 AcpiHwSetMode 182 183Dynamic Object Repair: Implemented additional runtime repairs for 184predefined name return values. Both of these repairs can simplify code in 185the related device drivers that invoke these methods: 1861) For the _STR and _MLS names, automatically repair/convert an ASCII 187string to a Unicode buffer. 1882) For the _CRS, _PRS, and _DMA names, return a resource descriptor with a 189lone end tag descriptor in the following cases: A Return(0) was executed, 190a null buffer was returned, or no object at all was returned (non-slack 191mode only). Adds a new file, nsconvert.c 192ACPICA BZ 998. Bob Moore, Lv Zheng. 193 194Resource Manager: Added additional code to prevent possible infinite loops 195while traversing corrupted or ill-formed resource template buffers. Check 196for zero-length resource descriptors in all code that loops through 197resource templates (the length field is used to index through the 198template). This change also hardens the external AcpiWalkResources and 199AcpiWalkResourceBuffer interfaces. 200 201Local Cache Manager: Enhanced the main data structure to eliminate an 202unnecessary mechanism to access the next object in the list. Actually 203provides a small performance enhancement for hosts that use the local 204ACPICA cache manager. Jung-uk Kim. 205 206Example Code and Data Size: These are the sizes for the OS-independent 207acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 208debug version of the code includes the debug output trace mechanism and 209has a much larger code and data size. 210 211 Previous Release: 212 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 213 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 214 Current Release: 215 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 216 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 217 218 2192) iASL Compiler/Disassembler and Tools: 220 221iASL/Disassembler: Fixed several issues with the definition of the ACPI 2225.0 RASF table (RAS Feature Table). This change incorporates late changes 223that were made to the ACPI 5.0 specification. 224 225iASL/Disassembler: Added full support for the following new ACPI tables: 226 1) The MTMR table (MID Timer Table) 227 2) The VRTC table (Virtual Real Time Clock Table). 228Includes header file, disassembler, table compiler, and template support 229for both tables. 230 231iASL: Implemented compile-time validation of package objects returned by 232predefined names. This new feature validates static package objects 233returned by the various predefined names defined to return packages. Both 234object types and package lengths are validated, for both parent packages 235and sub-packages, if any. The code is similar in structure and behavior to 236the runtime repair mechanism within the AML interpreter and uses the 237existing predefined name information table. Adds a new file, aslprepkg.c. 238ACPICA BZ 938. 239 240iASL: Implemented auto-detection of binary ACPI tables for disassembly. 241This feature detects a binary file with a valid ACPI table header and 242invokes the disassembler automatically. Eliminates the need to 243specifically invoke the disassembler with the -d option. ACPICA BZ 862. 244 245iASL/Disassembler: Added several warnings for the case where there are 246unresolved control methods during the disassembly. This can potentially 247cause errors when the output file is compiled, because the disassembler 248assumes zero method arguments in these cases (it cannot determine the 249actual number of arguments without resolution/definition of the method). 250 251Debugger: Added support to display all resources with a single command. 252Invocation of the resources command with no arguments will now display all 253resources within the current namespace. 254 255AcpiHelp: Added descriptive text for each ACPICA exception code displayed 256via the -e option. 257 258---------------------------------------- 25917 January 2013. Summary of changes for version 20130117: 260 2611) ACPICA Kernel-resident Subsystem: 262 263Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 264return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 265objects to return a package containing one integer, most BIOS code returns 266two integers and the previous code reflects that. However, we also need to 267support BIOS code that actually implements to the ACPI spec, and this 268change reflects this. 269 270Fixed two issues with the ACPI_DEBUG_PRINT macros: 2711) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 272C compilers that require this support. 2732) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 274ACPI_DEBUG is already used by many of the various hosts. 275 276Updated all ACPICA copyrights and signons to 2013. Added the 2013 277copyright to all module headers and signons, including the standard Linux 278header. This affects virtually every file in the ACPICA core subsystem, 279iASL compiler, all ACPICA utilities, and the test suites. 280 281Example Code and Data Size: These are the sizes for the OS-independent 282acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 283debug version of the code includes the debug output trace mechanism and 284has a much larger code and data size. 285 286 Previous Release: 287 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 288 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 289 Current Release: 290 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 291 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 292 293 2942) iASL Compiler/Disassembler and Tools: 295 296Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 297prevent a possible fault on some hosts. Some C libraries modify the arg 298pointer parameter to vfprintf making it difficult to call it twice in the 299AcpiOsVprintf function. Use a local buffer to workaround this issue. This 300does not affect the Windows OSL since the Win C library does not modify 301the arg pointer. Chao Guan, Bob Moore. 302 303iASL: Fixed a possible infinite loop when the maximum error count is 304reached. If an output file other than the .AML file is specified (such as 305a listing file), and the maximum number of errors is reached, do not 306attempt to flush data to the output file(s) as the compiler is aborting. 307This can cause an infinite loop as the max error count code essentially 308keeps calling itself. 309 310iASL/Disassembler: Added an option (-in) to ignore NOOP opcodes/operators. 311Implemented for both the compiler and the disassembler. Often, the NOOP 312opcode is used as padding for packages that are changed dynamically by the 313BIOS. When disassembled and recompiled, these NOOPs will cause syntax 314errors. This option causes the disassembler to ignore all NOOP opcodes 315(0xA3), and it also causes the compiler to ignore all ASL source code NOOP 316statements as well. 317 318Debugger: Enhanced the Sleep command to execute all sleep states. This 319change allows Sleep to be invoked with no arguments and causes the 320debugger to execute all of the sleep states, 0-5, automatically. 321 322---------------------------------------- 32320 December 2012. Summary of changes for version 20121220: 324 3251) ACPICA Kernel-resident Subsystem: 326 327Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 328alternate entry point for AcpiWalkResources and improves the usability of 329the resource manager by accepting as input a buffer containing the output 330of either a _CRS, _PRS, or _AEI method. The key functionality is that the 331input buffer is not deleted by this interface so that it can be used by 332the host later. See the ACPICA reference for details. 333 334Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 335(DSDT version < 2). The constant will be truncated and this warning 336reflects that behavior. 337 338Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 339ExtendedInterrupt, and GpioInt descriptors. This change adds support to 340both get and set the new wake bit in these descriptors, separately from 341the existing share bit. Reported by Aaron Lu. 342 343Interpreter: Fix Store() when an implicit conversion is not possible. For 344example, in the cases such as a store of a string to an existing package 345object, implement the store as a CopyObject(). This is a small departure 346from the ACPI specification which states that the control method should be 347aborted in this case. However, the ASLTS suite depends on this behavior. 348 349Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 350macros: check if debug output is currently enabled as soon as possible to 351minimize performance impact if debug is in fact not enabled. 352 353Source code restructuring: Cleanup to improve modularity. The following 354new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 355psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 356Associated makefiles and project files have been updated. 357 358Changed an exception code for LoadTable operator. For the case where one 359of the input strings is too long, change the returned exception code from 360AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 361 362Fixed a possible memory leak in dispatcher error path. On error, delete 363the mutex object created during method mutex creation. Reported by 364tim.gardner@canonical.com. 365 366Example Code and Data Size: These are the sizes for the OS-independent 367acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 368debug version of the code includes the debug output trace mechanism and 369has a much larger code and data size. 370 371 Previous Release: 372 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 373 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 374 Current Release: 375 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 376 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 377 378 3792) iASL Compiler/Disassembler and Tools: 380 381iASL: Disallow a method call as argument to the ObjectType ASL operator. 382This change tracks an errata to the ACPI 5.0 document. The AML grammar 383will not allow the interpreter to differentiate between a method and a 384method invocation when these are used as an argument to the ObjectType 385operator. The ACPI specification change is to disallow a method invocation 386(UserTerm) for the ObjectType operator. 387 388Finish support for the TPM2 and CSRT tables in the headers, table 389compiler, and disassembler. 390 391Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 392always expires immediately if the semaphore is not available. The original 393code was using a relative-time timeout, but sem_timedwait requires the use 394of an absolute time. 395 396iASL: Added a remark if the Timer() operator is used within a 32-bit 397table. This operator returns a 64-bit time value that will be truncated 398within a 32-bit table. 399 400iASL Source code restructuring: Cleanup to improve modularity. The 401following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 402aslmethod.c, and aslfileio.c. Associated makefiles and project files have 403been updated. 404 405 406---------------------------------------- 40714 November 2012. Summary of changes for version 20121114: 408 4091) ACPICA Kernel-resident Subsystem: 410 411Implemented a performance enhancement for ACPI/AML Package objects. This 412change greatly increases the performance of Package objects within the 413interpreter. It changes the processing of reference counts for packages by 414optimizing for the most common case where the package sub-objects are 415either Integers, Strings, or Buffers. Increases the overall performance of 416the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 2X.) 417Chao Guan. ACPICA BZ 943. 418 419Implemented and deployed common macros to extract flag bits from resource 420descriptors. Improves readability and maintainability of the code. Fixes a 421problem with the UART serial bus descriptor for the number of data bits 422flags (was incorrectly 2 bits, should be 3). 423 424Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 425of the macros and changed the SETx macros to the style of (destination, 426source). Also added ACPI_CASTx companion macros. Lv Zheng. 427 428Example Code and Data Size: These are the sizes for the OS-independent 429acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 430debug version of the code includes the debug output trace mechanism and 431has a much larger code and data size. 432 433 Previous Release: 434 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 435 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 436 Current Release: 437 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 438 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 439 440 4412) iASL Compiler/Disassembler and Tools: 442 443Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 444adds the ShareAndWake and ExclusiveAndWake flags which were added to the 445Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 446 447Disassembler: Fixed a problem with external declaration generation. Fixes 448a problem where an incorrect pathname could be generated for an external 449declaration if the original reference to the object includes leading 450carats (^). ACPICA BZ 984. 451 452Debugger: Completed a major update for the Disassemble<method> command. 453This command was out-of-date and did not properly disassemble control 454methods that had any reasonable complexity. This fix brings the command up 455to the same level as the rest of the disassembler. Adds one new file, 456dmdeferred.c, which is existing code that is now common with the main 457disassembler and the debugger disassemble command. ACPICA MZ 978. 458 459iASL: Moved the parser entry prototype to avoid a duplicate declaration. 460Newer versions of Bison emit this prototype, so moved the prototype out of 461the iASL header to where it is actually used in order to avoid a duplicate 462declaration. 463 464iASL/Tools: Standardized use of the stream I/O functions: 465 1) Ensure check for I/O error after every fopen/fread/fwrite 466 2) Ensure proper order of size/count arguments for fread/fwrite 467 3) Use test of (Actual != Requested) after all fwrite, and most fread 468 4) Standardize I/O error messages 469Improves reliability and maintainability of the code. Bob Moore, Lv Zheng. 470ACPICA BZ 981. 471 472Disassembler: Prevent duplicate External() statements. During generation 473of external statements, detect similar pathnames that are actually 474duplicates such as these: 475 External (\ABCD) 476 External (ABCD) 477Remove all leading '\' characters from pathnames during the external 478statement generation so that duplicates will be detected and tossed. 479ACPICA BZ 985. 480 481Tools: Replace low-level I/O with stream I/O functions. Replace 482open/read/write/close with the stream I/O equivalents 483fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 484Moore. 485 486AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 487name header so that AcpiXtract recognizes the output file/table. 488 489iASL: Remove obsolete -2 option flag. Originally intended to force the 490compiler/disassembler into an ACPI 2.0 mode, this was never implemented 491and the entire concept is now obsolete. 492 493---------------------------------------- 49418 October 2012. Summary of changes for version 20121018: 495 496 4971) ACPICA Kernel-resident Subsystem: 498 499Updated support for the ACPI 5.0 MPST table. Fixes some problems 500introduced by late changes to the table as it was added to the ACPI 5.0 501specification. Includes header, disassembler, and data table compiler 502support as well as a new version of the MPST template. 503 504AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 5055.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 506methods: _HID, _CID, and _UID. 507 508Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 509ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 510name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 511names for their various drivers. Affects the AcpiGetObjectInfo external 512interface, and other internal interfaces as well. 513 514Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 515This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 516on machines that support non-aligned transfers. Optimizes for this case 517rather than using a strncpy. With assistance from Zheng Lv. 518 519Resource Manager: Small fix for buffer size calculation. Fixed a one byte 520error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 521 522Added a new debug print message for AML mutex objects that are force- 523released. At control method termination, any currently acquired mutex 524objects are force-released. Adds a new debug-only message for each one 525that is released. 526 527Audited/updated all ACPICA return macros and the function debug depth 528counter: 1) Ensure that all functions that use the various TRACE macros 529also use the appropriate ACPICA return macros. 2) Ensure that all normal 530return statements surround the return expression (value) with parens to 531ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 532Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 533 534Global source code changes/maintenance: All extra lines at the start and 535end of each source file have been removed for consistency. Also, within 536comments, all new sentences start with a single space instead of a double 537space, again for consistency across the code base. 538 539Example Code and Data Size: These are the sizes for the OS-independent 540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 541debug version of the code includes the debug output trace mechanism and 542has a much larger code and data size. 543 544 Previous Release: 545 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 546 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 547 Current Release: 548 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 549 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 550 551 5522) iASL Compiler/Disassembler and Tools: 553 554AcpiExec: Improved the algorithm used for memory leak/corruption 555detection. Added some intelligence to the code that maintains the global 556list of allocated memory. The list is now ordered by allocated memory 557address, significantly improving performance. When running AcpiExec on 558the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 559on the platform and/or the environment. Note, this performance 560enhancement affects the AcpiExec utility only, not the kernel-resident 561ACPICA code. 562 563Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 564the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 565incorrect table offset reported for invalid opcodes. Report the original 56632-bit value for bad ACPI_NAMEs (as well as the repaired name.) 567 568Disassembler: Enhanced the -vt option to emit the binary table data in 569hex format to assist with debugging. 570 571Fixed a potential filename buffer overflow in osunixdir.c. Increased the 572size of file structure. Colin Ian King. 573 574---------------------------------------- 57513 September 2012. Summary of changes for version 20120913: 576 577 5781) ACPICA Kernel-resident Subsystem: 579 580ACPI 5.0: Added two new notify types for the Hardware Error Notification 581Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 582and 583MCE(6). 584 585Table Manager: Merged/removed duplicate code in the root table resize 586functions. One function is external, the other is internal. Lv Zheng, 587ACPICA 588BZ 846. 589 590Makefiles: Completely removed the obsolete "Linux" makefiles under 591acpica/generate/linux. These makefiles are obsolete and have been replaced 592by 593the generic unix makefiles under acpica/generate/unix. 594 595Makefiles: Ensure that binary files always copied properly. Minor rule 596change 597to ensure that the final binary output files are always copied up to the 598appropriate binary directory (bin32 or bin64.) 599 600Example Code and Data Size: These are the sizes for the OS-independent 601acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 602debug 603version of the code includes the debug output trace mechanism and has a 604much 605larger code and data size. 606 607 Previous Release: 608 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 609 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 610 Current Release: 611 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 612 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 613 614 6152) iASL Compiler/Disassembler and Tools: 616 617Disassembler: Fixed a possible fault during the disassembly of resource 618descriptors when a second parse is required because of the invocation of 619external control methods within the table. With assistance from 620adq@lidskialf.net. ACPICA BZ 976. 621 622iASL: Fixed a namepath optimization problem. An error can occur if the 623parse 624node that contains the namepath to be optimized does not have a parent 625node 626that is a named object. This change fixes the problem. 627 628iASL: Fixed a regression where the AML file is not deleted on errors. The 629AML 630output file should be deleted if there are any errors during the compiler. 631The 632only exception is if the -f (force output) option is used. ACPICA BZ 974. 633 634iASL: Added a feature to automatically increase internal line buffer 635sizes. 636Via realloc(), automatically increase the internal line buffer sizes as 637necessary to support very long source code lines. The current version of 638the 639preprocessor requires a buffer long enough to contain full source code 640lines. 641This change increases the line buffer(s) if the input lines go beyond the 642current buffer size. This eliminates errors that occurred when a source 643code 644line was longer than the buffer. 645 646iASL: Fixed a problem with constant folding in method declarations. The 647SyncLevel term is a ByteConstExpr, and incorrect code would be generated 648if a 649Type3 opcode was used. 650 651Debugger: Improved command help support. For incorrect argument count, 652display 653full help for the command. For help command itself, allow an argument to 654specify a command. 655 656Test Suites: Several bug fixes for the ASLTS suite reduces the number of 657errors during execution of the suite. Guan Chao. 658 659---------------------------------------- 66016 August 2012. Summary of changes for version 20120816: 661 662 6631) ACPICA Kernel-resident Subsystem: 664 665Removed all use of the deprecated _GTS and _BFS predefined methods. The 666_GTS 667(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 668deprecated and will probably be removed from the ACPI specification. 669Windows 670does not invoke them, and reportedly never will. The final nail in the 671coffin 672is that the ACPI specification states that these methods must be run with 673interrupts off, which is not going to happen in a kernel interpreter. 674Note: 675Linux has removed all use of the methods also. It was discovered that 676invoking these functions caused failures on some machines, probably 677because 678they were never tested since Windows does not call them. Affects two 679external 680interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 681ACPICA BZ 969. 682 683Implemented support for complex bit-packed buffers returned from the _PLD 684(Physical Location of Device) predefined method. Adds a new external 685interface, AcpiDecodePldBuffer that parses the buffer into a more usable C 686structure. Note: C Bitfields cannot be used for this type of predefined 687structure since the memory layout of individual bitfields is not defined 688by 689the C language. In addition, there are endian concerns where a compiler 690will 691change the bitfield ordering based on the machine type. The new ACPICA 692interface eliminates these issues, and should be called after _PLD is 693executed. ACPICA BZ 954. 694 695Implemented a change to allow a scope change to root (via "Scope (\)") 696during 697execution of module-level ASL code (code that is executed at table load 698time.) Lin Ming. 699 700Added the Windows8/Server2012 string for the _OSI method. This change adds 701a 702new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 7032012. 704 705Added header support for the new ACPI tables DBG2 (Debug Port Table Type 7062) 707and CSRT (Core System Resource Table). 708 709Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 710names. This simplifies access to the buffers returned by these predefined 711names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 712 713GPE support: Removed an extraneous parameter from the various low-level 714internal GPE functions. Tang Feng. 715 716Removed the linux makefiles from the unix packages. The generate/linux 717makefiles are obsolete and have been removed from the unix tarball release 718packages. The replacement makefiles are under generate/unix, and there is 719a 720top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 721 722Updates for Unix makefiles: 7231) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 7242) Update linker flags (move to end of command line) for AcpiExec utility. 725Guan Chao. 726 727Split ACPICA initialization functions to new file, utxfinit.c. Split from 728utxface.c to improve modularity and reduce file size. 729 730Example Code and Data Size: These are the sizes for the OS-independent 731acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 732debug version of the code includes the debug output trace mechanism and 733has a 734much larger code and data size. 735 736 Previous Release: 737 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 738 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 739 Current Release: 740 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 741 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 742 743 7442) iASL Compiler/Disassembler and Tools: 745 746iASL: Fixed a problem with constant folding for fixed-length constant 747expressions. The constant-folding code was not being invoked for constant 748expressions that allow the use of type 3/4/5 opcodes to generate constants 749for expressions such as ByteConstExpr, WordConstExpr, etc. This could 750result 751in the generation of invalid AML bytecode. ACPICA BZ 970. 752 753iASL: Fixed a generation issue on newer versions of Bison. Newer versions 754apparently automatically emit some of the necessary externals. This change 755handles these versions in order to eliminate generation warnings. 756 757Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 758 759Disassembler: Add support to decode _PLD buffers. The decoded buffer 760appears 761within comments in the output file. 762 763Debugger: Fixed a regression with the "Threads" command where 764AE_BAD_PARAMETER was always returned. 765 766---------------------------------------- 76711 July 2012. Summary of changes for version 20120711: 768 7691) ACPICA Kernel-resident Subsystem: 770 771Fixed a possible fault in the return package object repair code. Fixes a 772problem that can occur when a lone package object is wrapped with an outer 773package object in order to force conformance to the ACPI specification. 774Can 775affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 776_DLM, 777_CSD, _PSD, _TSD. 778 779Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 780PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 781ARB_DIS bit must be implemented in the host-dependent C3 processor power 782state 783support. Note, ARB_DIS is obsolete and only applies to older chipsets, 784both 785Intel and other vendors. (for Intel: ICH4-M and earlier) 786 787This change removes the code to disable/enable bus master arbitration 788during 789suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 790causes 791resume problems on some machines. The change has been in use for over 792seven 793years within Linux. 794 795Implemented two new external interfaces to support host-directed dynamic 796ACPI 797table load and unload. They are intended to simplify the host 798implementation 799of hot-plug support: 800 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 801 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 802table. 803See the ACPICA reference for additional details. Adds one new file, 804components/tables/tbxfload.c 805 806Implemented and deployed two new interfaces for errors and warnings that 807are 808known to be caused by BIOS/firmware issues: 809 AcpiBiosError: Prints "ACPI Firmware Error" message. 810 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 811Deployed these new interfaces in the ACPICA Table Manager code for ACPI 812table 813and FADT errors. Additional deployment to be completed as appropriate in 814the 815future. The associated conditional macros are ACPI_BIOS_ERROR and 816ACPI_BIOS_WARNING. See the ACPICA reference for additional details. ACPICA 817BZ 818843. 819 820Implicit notify support: ensure that no memory allocation occurs within a 821critical region. This fix moves a memory allocation outside of the time 822that a 823spinlock is held. Fixes issues on systems that do not allow this behavior. 824Jung-uk Kim. 825 826Split exception code utilities and tables into a new file, 827utilities/utexcep.c 828 829Example Code and Data Size: These are the sizes for the OS-independent 830acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 831debug 832version of the code includes the debug output trace mechanism and has a 833much 834larger code and data size. 835 836 Previous Release: 837 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 838 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 839 Current Release: 840 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 841 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 842 843 8442) iASL Compiler/Disassembler and Tools: 845 846iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 847of 8480. Jung-uk Kim. 849 850Debugger: Enhanced the "tables" command to emit additional information 851about 852the current set of ACPI tables, including the owner ID and flags decode. 853 854Debugger: Reimplemented the "unload" command to use the new 855AcpiUnloadParentTable external interface. This command was disable 856previously 857due to need for an unload interface. 858 859AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 860option 861will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 862 863---------------------------------------- 86420 June 2012. Summary of changes for version 20120620: 865 866 8671) ACPICA Kernel-resident Subsystem: 868 869Implemented support to expand the "implicit notify" feature to allow 870multiple 871devices to be notified by a single GPE. This feature automatically 872generates a 873runtime device notification in the absence of a BIOS-provided GPE control 874method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 875notify is 876provided by ACPICA for Windows compatibility, and is a workaround for BIOS 877AML 878code errors. See the description of the AcpiSetupGpeForWake interface in 879the 880APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 881 882Changed some comments and internal function names to simplify and ensure 883correctness of the Linux code translation. No functional changes. 884 885Example Code and Data Size: These are the sizes for the OS-independent 886acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 887debug 888version of the code includes the debug output trace mechanism and has a 889much 890larger code and data size. 891 892 Previous Release: 893 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 894 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 895 Current Release: 896 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 897 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 898 899 9002) iASL Compiler/Disassembler and Tools: 901 902Disassembler: Added support to emit short, commented descriptions for the 903ACPI 904predefined names in order to improve the readability of the disassembled 905output. ACPICA BZ 959. Changes include: 906 1) Emit descriptions for all standard predefined names (_INI, _STA, 907_PRW, 908etc.) 909 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 910 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 911etc.) 912 913AcpiSrc: Fixed several long-standing Linux code translation issues. 914Argument 915descriptions in function headers are now translated properly to lower case 916and 917underscores. ACPICA BZ 961. Also fixes translation problems such as these: 918(old -> new) 919 i_aSL -> iASL 920 00-7_f -> 00-7F 921 16_k -> 16K 922 local_fADT -> local_FADT 923 execute_oSI -> execute_OSI 924 925iASL: Fixed a problem where null bytes were inadvertently emitted into 926some 927listing files. 928 929iASL: Added the existing debug options to the standard help screen. There 930are 931no longer two different help screens. ACPICA BZ 957. 932 933AcpiHelp: Fixed some typos in the various predefined name descriptions. 934Also 935expand some of the descriptions where appropriate. 936 937iASL: Fixed the -ot option (display compile times/statistics). Was not 938working 939properly for standard output; only worked for the debug file case. 940 941---------------------------------------- 94218 May 2012. Summary of changes for version 20120518: 943 944 9451) ACPICA Core Subsystem: 946 947Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 948defined 949to block until asynchronous events such as notifies and GPEs have 950completed. 951Within ACPICA, it is only called before a notify or GPE handler is 952removed/uninstalled. It also may be useful for the host OS within related 953drivers such as the Embedded Controller driver. See the ACPICA reference 954for 955additional information. ACPICA BZ 868. 956 957ACPI Tables: Added a new error message for a possible overflow failure 958during 959the conversion of FADT 32-bit legacy register addresses to internal common 96064- 961bit GAS structure representation. The GAS has a one-byte "bit length" 962field, 963thus limiting the register length to 255 bits. ACPICA BZ 953. 964 965Example Code and Data Size: These are the sizes for the OS-independent 966acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 967debug 968version of the code includes the debug output trace mechanism and has a 969much 970larger code and data size. 971 972 Previous Release: 973 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 974 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 975 Current Release: 976 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 977 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 978 979 9802) iASL Compiler/Disassembler and Tools: 981 982iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 983macro. 984This keyword was added late in the ACPI 5.0 release cycle and was not 985implemented until now. 986 987Disassembler: Added support for Operation Region externals. Adds missing 988support for operation regions that are defined in another table, and 989referenced locally via a Field or BankField ASL operator. Now generates 990the 991correct External statement. 992 993Disassembler: Several additional fixes for the External() statement 994generation 995related to some ASL operators. Also, order the External() statements 996alphabetically in the disassembler output. Fixes the External() generation 997for 998the Create* field, Alias, and Scope operators: 999 1) Create* buffer field operators - fix type mismatch warning on 1000disassembly 1001 2) Alias - implement missing External support 1002 3) Scope - fix to make sure all necessary externals are emitted. 1003 1004iASL: Improved pathname support. For include files, merge the prefix 1005pathname 1006with the file pathname and eliminate unnecessary components. Convert 1007backslashes in all pathnames to forward slashes, for readability. Include 1008file 1009pathname changes affect both #include and Include() type operators. 1010 1011iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 1012end 1013of a valid line by inserting a newline and then returning the EOF during 1014the 1015next call to GetNextLine. Prevents the line from being ignored due to EOF 1016condition. 1017 1018iASL: Implemented some changes to enhance the IDE support (-vi option.) 1019Error 1020and Warning messages are now correctly recognized for both the source code 1021browser and the global error and warning counts. 1022 1023---------------------------------------- 102420 April 2012. Summary of changes for version 20120420: 1025 1026 10271) ACPICA Core Subsystem: 1028 1029Implemented support for multiple notify handlers. This change adds support 1030to 1031allow multiple system and device notify handlers on Device, Thermal Zone, 1032and 1033Processor objects. This can simplify the host OS notification 1034implementation. 1035Also re-worked and restructured the entire notify support code to simplify 1036handler installation, handler removal, notify event queuing, and notify 1037dispatch to handler(s). Note: there can still only be two global notify 1038handlers - one for system notifies and one for device notifies. There are 1039no 1040changes to the existing handler install/remove interfaces. Lin Ming, Bob 1041Moore, Rafael Wysocki. 1042 1043Fixed a regression in the package repair code where the object reference 1044count was calculated incorrectly. Regression was introduced in the commit 1045"Support to add Package wrappers". 1046 1047Fixed a couple possible memory leaks in the AML parser, in the error 1048recovery 1049path. Jesper Juhl, Lin Ming. 1050 1051Example Code and Data Size: These are the sizes for the OS-independent 1052acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1053debug version of the code includes the debug output trace mechanism and 1054has a 1055much larger code and data size. 1056 1057 Previous Release: 1058 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 1059 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1060 Current Release: 1061 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 1062 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 1063 1064 10652) iASL Compiler/Disassembler and Tools: 1066 1067iASL: Fixed a problem with the resource descriptor support where the 1068length 1069of the StartDependentFn and StartDependentFnNoPrio descriptors were not 1070included in cumulative descriptor offset, resulting in incorrect values 1071for 1072resource tags within resource descriptors appearing after a 1073StartDependent* 1074descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 1075 1076iASL and Preprocessor: Implemented full support for the #line directive to 1077correctly track original source file line numbers through the .i 1078preprocessor 1079output file - for error and warning messages. 1080 1081iASL: Expand the allowable byte constants for address space IDs. 1082Previously, 1083the allowable range was 0x80-0xFF (user-defined spaces), now the range is 10840x0A-0xFF to allow for custom and new IDs without changing the compiler. 1085 1086iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 1087 1088iASL: Add option to completely disable the preprocessor (-Pn). 1089 1090iASL: Now emit all error/warning messages to standard error (stderr) by 1091default (instead of the previous stdout). 1092 1093ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 1094Update 1095for resource descriptor offset fix above. Update/cleanup error output 1096routines. Enable and send iASL errors/warnings to an error logfile 1097(error.txt). Send all other iASL output to a logfile (compiler.txt). Fixed 1098several extraneous "unrecognized operator" messages. 1099 1100---------------------------------------- 110120 March 2012. Summary of changes for version 20120320: 1102 1103 11041) ACPICA Core Subsystem: 1105 1106Enhanced the sleep/wake interfaces to optionally execute the _GTS method 1107(Going To Sleep) and the _BFS method (Back From Sleep). Windows apparently 1108does not execute these methods, and therefore these methods are often 1109untested. It has been seen on some systems where the execution of these 1110methods causes errors and also prevents the machine from entering S5. It 1111is 1112therefore suggested that host operating systems do not execute these 1113methods 1114by default. In the future, perhaps these methods can be optionally 1115executed 1116based on the age of the system and/or what is the newest version of 1117Windows 1118that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 1119and 1120AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 1121Ming. 1122 1123Fixed a problem where the length of the local/common FADT was set too 1124early. 1125The local FADT table length cannot be set to the common length until the 1126original length has been examined. There is code that checks the table 1127length 1128and sets various fields appropriately. This can affect older machines with 1129early FADT versions. For example, this can cause inadvertent writes to the 1130CST_CNT register. Julian Anastasov. 1131 1132Fixed a mapping issue related to a physical table override. Use the 1133deferred 1134mapping mechanism for tables loaded via the physical override OSL 1135interface. 1136This allows for early mapping before the virtual memory manager is 1137available. 1138Thomas Renninger, Bob Moore. 1139 1140Enhanced the automatic return-object repair code: Repair a common problem 1141with 1142predefined methods that are defined to return a variable-length Package of 1143sub-objects. If there is only one sub-object, some BIOS ASL code 1144mistakenly 1145simply returns the single object instead of a Package with one sub-object. 1146This new support will repair this error by wrapping a Package object 1147around 1148the original object, creating the correct and expected Package with one 1149sub- 1150object. Names that can be repaired in this manner include: _ALR, _CSD, 1151_HPX, 1152_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 1153939. 1154 1155Changed the exception code returned for invalid ACPI paths passed as 1156parameters to external interfaces such as AcpiEvaluateObject. Was 1157AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 1158 1159Example Code and Data Size: These are the sizes for the OS-independent 1160acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1161debug 1162version of the code includes the debug output trace mechanism and has a 1163much 1164larger code and data size. 1165 1166 Previous Release: 1167 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 1168 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1169 Current Release: 1170 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 1171 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1172 1173 11742) iASL Compiler/Disassembler and Tools: 1175 1176iASL: Added the infrastructure and initial implementation of a integrated 1177C- 1178like preprocessor. This will simplify BIOS development process by 1179eliminating 1180the need for a separate preprocessing step during builds. On Windows, it 1181also 1182eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 1183features including full #define() macro support are still under 1184development. 1185These preprocessor directives are supported: 1186 #define 1187 #elif 1188 #else 1189 #endif 1190 #error 1191 #if 1192 #ifdef 1193 #ifndef 1194 #include 1195 #pragma message 1196 #undef 1197 #warning 1198In addition, these new command line options are supported: 1199 -D <symbol> Define symbol for preprocessor use 1200 -li Create preprocessed output file (*.i) 1201 -P Preprocess only and create preprocessor output file (*.i) 1202 1203Table Compiler: Fixed a problem where the equals operator within an 1204expression 1205did not work properly. 1206 1207Updated iASL to use the current versions of Bison/Flex. Updated the 1208Windows 1209project file to invoke these tools from the standard location. ACPICA BZ 1210904. 1211Versions supported: 1212 Flex for Windows: V2.5.4 1213 Bison for Windows: V2.4.1 1214 1215---------------------------------------- 121615 February 2012. Summary of changes for version 20120215: 1217 1218 12191) ACPICA Core Subsystem: 1220 1221There have been some major changes to the sleep/wake support code, as 1222described below (a - e). 1223 1224a) The AcpiLeaveSleepState has been split into two interfaces, similar to 1225AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 1226AcpiLeaveSleepStatePrep. This allows the host to perform actions between 1227the 1228time the _BFS method is called and the _WAK method is called. NOTE: all 1229hosts 1230must update their wake/resume code or else sleep/wake will not work 1231properly. 1232Rafael Wysocki. 1233 1234b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 1235_WAK 1236method. Some machines require that the GPEs are enabled before the _WAK 1237method 1238is executed. Thomas Renninger. 1239 1240c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) bit. 1241Some BIOS code assumes that WAK_STS will be cleared on resume and use it 1242to 1243determine whether the system is rebooting or resuming. Matthew Garrett. 1244 1245d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 1246Sleep) to 1247match the ACPI specification requirement. Rafael Wysocki. 1248 1249e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 1250registers within the V5 FADT. This support adds two new files: 1251hardware/hwesleep.c implements the support for the new registers. Moved 1252all 1253sleep/wake external interfaces to hardware/hwxfsleep.c. 1254 1255 1256Added a new OSL interface for ACPI table overrides, 1257AcpiOsPhysicalTableOverride. This interface allows the host to override a 1258table via a physical address, instead of the logical address required by 1259AcpiOsTableOverride. This simplifies the host implementation. Initial 1260implementation by Thomas Renninger. The ACPICA implementation creates a 1261single 1262shared function for table overrides that attempts both a logical and a 1263physical override. 1264 1265Expanded the OSL memory read/write interfaces to 64-bit data 1266(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 1267transfer support for GAS register structures passed to AcpiRead and 1268AcpiWrite. 1269 1270Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 1271custom 1272build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 1273model. 1274See the ACPICA reference for details. ACPICA BZ 942. This option removes 1275about 127610% of the code and 5% of the static data, and the following hardware ACPI 1277features become unavailable: 1278 PM Event and Control registers 1279 SCI interrupt (and handler) 1280 Fixed Events 1281 General Purpose Events (GPEs) 1282 Global Lock 1283 ACPI PM timer 1284 FACS table (Waking vectors and Global Lock) 1285 1286Updated the unix tarball directory structure to match the ACPICA git 1287source 1288tree. This ensures that the generic unix makefiles work properly (in 1289generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 867. 1290 1291Updated the return value of the _REV predefined method to integer value 5 1292to 1293reflect ACPI 5.0 support. 1294 1295Moved the external ACPI PM timer interface prototypes to the public 1296acpixf.h 1297file where they belong. 1298 1299Example Code and Data Size: These are the sizes for the OS-independent 1300acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1301debug 1302version of the code includes the debug output trace mechanism and has a 1303much 1304larger code and data size. 1305 1306 Previous Release: 1307 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 1308 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 1309 Current Release: 1310 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 1311 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 1312 1313 13142) iASL Compiler/Disassembler and Tools: 1315 1316Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 1317descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 1318incorrectly displayed. 1319 1320AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 1321specification. 1322 1323---------------------------------------- 132411 January 2012. Summary of changes for version 20120111: 1325 1326 13271) ACPICA Core Subsystem: 1328 1329Implemented a new mechanism to allow host device drivers to check for 1330address 1331range conflicts with ACPI Operation Regions. Both SystemMemory and 1332SystemIO 1333address spaces are supported. A new external interface, 1334AcpiCheckAddressRange, 1335allows drivers to check an address range against the ACPI namespace. See 1336the 1337ACPICA reference for additional details. Adds one new file, 1338utilities/utaddress.c. Lin Ming, Bob Moore. 1339 1340Fixed several issues with the ACPI 5.0 FADT support: Add the sleep Control 1341and 1342Status registers, update the ACPI 5.0 flags, and update internal data 1343structures to handle an FADT larger than 256 bytes. The size of the ACPI 13445.0 1345FADT is 268 bytes. 1346 1347Updated all ACPICA copyrights and signons to 2012. Added the 2012 1348copyright to 1349all module headers and signons, including the standard Linux header. This 1350affects virtually every file in the ACPICA core subsystem, iASL compiler, 1351and 1352all ACPICA utilities. 1353 1354Example Code and Data Size: These are the sizes for the OS-independent 1355acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1356debug 1357version of the code includes the debug output trace mechanism and has a 1358much 1359larger code and data size. 1360 1361 Previous Release: 1362 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 1363 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 1364 Current Release: 1365 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 1366 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 1367 1368 13692) iASL Compiler/Disassembler and Tools: 1370 1371Disassembler: fixed a problem with the automatic resource tag generation 1372support. Fixes a problem where the resource tags are inadvertently not 1373constructed if the table being disassembled contains external references 1374to 1375control methods. Moved the actual construction of the tags to after the 1376final 1377namespace is constructed (after 2nd parse is invoked due to external 1378control 1379method references.) ACPICA BZ 941. 1380 1381Table Compiler: Make all "generic" operators caseless. These are the 1382operators 1383like UINT8, String, etc. Making these caseless improves ease-of-use. 1384ACPICA BZ 1385934. 1386 1387---------------------------------------- 138823 November 2011. Summary of changes for version 20111123: 1389 13900) ACPI 5.0 Support: 1391 1392This release contains full support for the ACPI 5.0 specification, as 1393summarized below. 1394 1395Reduced Hardware Support: 1396------------------------- 1397 1398This support allows for ACPI systems without the usual ACPI hardware. This 1399support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 1400will 1401not attempt to initialize or use any of the usual ACPI hardware. Note, 1402when 1403this flag is set, all of the following ACPI hardware is assumed to be not 1404present and is not initialized or accessed: 1405 1406 General Purpose Events (GPEs) 1407 Fixed Events (PM1a/PM1b and PM Control) 1408 Power Management Timer and Console Buttons (power/sleep) 1409 Real-time Clock Alarm 1410 Global Lock 1411 System Control Interrupt (SCI) 1412 The FACS is assumed to be non-existent 1413 1414ACPI Tables: 1415------------ 1416 1417All new tables and updates to existing tables are fully supported in the 1418ACPICA headers (for use by device drivers), the disassembler, and the iASL 1419Data Table Compiler. ACPI 5.0 defines these new tables: 1420 1421 BGRT /* Boot Graphics Resource Table */ 1422 DRTM /* Dynamic Root of Trust for Measurement table */ 1423 FPDT /* Firmware Performance Data Table */ 1424 GTDT /* Generic Timer Description Table */ 1425 MPST /* Memory Power State Table */ 1426 PCCT /* Platform Communications Channel Table */ 1427 PMTT /* Platform Memory Topology Table */ 1428 RASF /* RAS Feature table */ 1429 1430Operation Regions/SpaceIDs: 1431--------------------------- 1432 1433All new operation regions are fully supported by the iASL compiler, the 1434disassembler, and the ACPICA runtime code (for dispatch to region 1435handlers.) 1436The new operation region Space IDs are: 1437 1438 GeneralPurposeIo 1439 GenericSerialBus 1440 1441Resource Descriptors: 1442--------------------- 1443 1444All new ASL resource descriptors are fully supported by the iASL compiler, 1445the 1446ASL/AML disassembler, and the ACPICA runtime Resource Manager code 1447(including 1448all new predefined resource tags). New descriptors are: 1449 1450 FixedDma 1451 GpioIo 1452 GpioInt 1453 I2cSerialBus 1454 SpiSerialBus 1455 UartSerialBus 1456 1457ASL/AML Operators, New and Modified: 1458------------------------------------ 1459 1460One new operator is added, the Connection operator, which is used to 1461associate 1462a GeneralPurposeIo or GenericSerialBus resource descriptor with individual 1463field objects within an operation region. Several new protocols are 1464associated 1465with the AccessAs operator. All are fully supported by the iASL compiler, 1466disassembler, and runtime ACPICA AML interpreter: 1467 1468 Connection // Declare Field Connection attributes 1469 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 1470 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes Protocol 1471 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 1472 RawDataBuffer // Data type for Vendor Data 1473fields 1474 1475Predefined ASL/AML Objects: 1476--------------------------- 1477 1478All new predefined objects/control-methods are supported by the iASL 1479compiler 1480and the ACPICA runtime validation/repair (arguments and return values.) 1481New 1482predefined names include the following: 1483 1484Standard Predefined Names (Objects or Control Methods): 1485 _AEI, _CLS, _CPC, _CWS, _DEP, 1486 _DLM, _EVT, _GCP, _CRT, _GWS, 1487 _HRV, _PRE, _PSE, _SRT, _SUB. 1488 1489Resource Tags (Names used to access individual fields within resource 1490descriptors): 1491 _DBT, _DPL, _DRS, _END, _FLC, 1492 _IOR, _LIN, _MOD, _PAR, _PHA, 1493 _PIN, _PPI, _POL, _RXL, _SLV, 1494 _SPE, _STB, _TXL, _VEN. 1495 1496ACPICA External Interfaces: 1497--------------------------- 1498 1499Several new interfaces have been defined for use by ACPI-related device 1500drivers and other host OS services: 1501 1502AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 1503to 1504acquire and release AML mutexes that are defined in the DSDT/SSDT tables 1505provided by the BIOS. They are intended to be used in conjunction with the 1506ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 1507mutual exclusion with the AML code/interpreter. 1508 1509AcpiGetEventResources: Returns the (formatted) resource descriptors as 1510defined 1511by the ACPI 5.0 _AEI object (ACPI Event Information). This object 1512provides 1513resource descriptors associated with hardware-reduced platform events, 1514similar 1515to the AcpiGetCurrentResources interface. 1516 1517Operation Region Handlers: For General Purpose IO and Generic Serial Bus 1518operation regions, information about the Connection() object and any 1519optional 1520length information is passed to the region handler within the Context 1521parameter. 1522 1523AcpiBufferToResource: This interface converts a raw AML buffer containing 1524a 1525resource template or resource descriptor to the ACPI_RESOURCE internal 1526format 1527suitable for use by device drivers. Can be used by an operation region 1528handler 1529to convert the Connection() buffer object into a ACPI_RESOURCE. 1530 1531Miscellaneous/Tools/TestSuites: 1532------------------------------- 1533 1534Support for extended _HID names (Four alpha characters instead of three). 1535Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 1536Support for ACPI 5.0 features in the ASLTS test suite. 1537Fully updated documentation (ACPICA and iASL reference documents.) 1538 1539ACPI Table Definition Language: 1540------------------------------- 1541 1542Support for this language was implemented and released as a subsystem of 1543the 1544iASL compiler in 2010. (See the iASL compiler User Guide.) 1545 1546 1547Non-ACPI 5.0 changes for this release: 1548-------------------------------------- 1549 15501) ACPICA Core Subsystem: 1551 1552Fix a problem with operation region declarations where a failure can occur 1553if 1554the region name and an argument that evaluates to an object (such as the 1555region address) are in different namespace scopes. Lin Ming, ACPICA BZ 1556937. 1557 1558Do not abort an ACPI table load if an invalid space ID is found within. 1559This 1560will be caught later if the offending method is executed. ACPICA BZ 925. 1561 1562Fixed an issue with the FFixedHW space ID where the ID was not always 1563recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 1564 1565Fixed a problem with the 32-bit generation of the unix-specific OSL 1566(osunixxf.c). Lin Ming, ACPICA BZ 936. 1567 1568Several changes made to enable generation with the GCC 4.6 compiler. 1569ACPICA BZ 1570935. 1571 1572New error messages: Unsupported I/O requests (not 8/16/32 bit), and 1573Index/Bank 1574field registers out-of-range. 1575 15762) iASL Compiler/Disassembler and Tools: 1577 1578iASL: Implemented the __PATH__ operator, which returns the full pathname 1579of 1580the current source file. 1581 1582AcpiHelp: Automatically display expanded keyword information for all ASL 1583operators. 1584 1585Debugger: Add "Template" command to disassemble/dump resource template 1586buffers. 1587 1588Added a new master script to generate and execute the ASLTS test suite. 1589Automatically handles 32- and 64-bit generation. See tests/aslts.sh 1590 1591iASL: Fix problem with listing generation during processing of the 1592Switch() 1593operator where AML listing was disabled until the entire Switch block was 1594completed. 1595 1596iASL: Improve support for semicolon statement terminators. Fix "invalid 1597character" message for some cases when the semicolon is used. Semicolons 1598are 1599now allowed after every <Term> grammar element. ACPICA BZ 927. 1600 1601iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 1602923. 1603 1604Disassembler: Fix problem with disassembly of the DataTableRegion operator 1605where an inadvertent "Unhandled deferred opcode" message could be 1606generated. 1607 16083) Example Code and Data Size 1609 1610These are the sizes for the OS-independent acpica.lib produced by the 1611Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 1612includes the debug output trace mechanism and has a much larger code and 1613data 1614size. 1615 1616 Previous Release: 1617 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1618 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1619 Current Release: 1620 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 1621 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 1622 1623---------------------------------------- 162422 September 2011. Summary of changes for version 20110922: 1625 16260) ACPI 5.0 News: 1627 1628Support for ACPI 5.0 in ACPICA has been underway for several months and 1629will 1630be released at the same time that ACPI 5.0 is officially released. 1631 1632The ACPI 5.0 specification is on track for release in the next few months. 1633 16341) ACPICA Core Subsystem: 1635 1636Fixed a problem where the maximum sleep time for the Sleep() operator was 1637intended to be limited to two seconds, but was inadvertently limited to 20 1638seconds instead. 1639 1640Linux and Unix makefiles: Added header file dependencies to ensure correct 1641generation of ACPICA core code and utilities. Also simplified the 1642makefiles 1643considerably through the use of the vpath variable to specify search 1644paths. 1645ACPICA BZ 924. 1646 16472) iASL Compiler/Disassembler and Tools: 1648 1649iASL: Implemented support to check the access length for all fields 1650created to 1651access named Resource Descriptor fields. For example, if a resource field 1652is 1653defined to be two bits, a warning is issued if a CreateXxxxField() is used 1654with an incorrect bit length. This is implemented for all current resource 1655descriptor names. ACPICA BZ 930. 1656 1657Disassembler: Fixed a byte ordering problem with the output of 24-bit and 165856- 1659bit integers. 1660 1661iASL: Fixed a couple of issues associated with variable-length package 1662objects. 1) properly handle constants like One, Ones, Zero -- do not make 1663a 1664VAR_PACKAGE when these are used as a package length. 2) Allow the 1665VAR_PACKAGE 1666opcode (in addition to PACKAGE) when validating object types for 1667predefined 1668names. 1669 1670iASL: Emit statistics for all output files (instead of just the ASL input 1671and 1672AML output). Includes listings, hex files, etc. 1673 1674iASL: Added -G option to the table compiler to allow the compilation of 1675custom 1676ACPI tables. The only part of a table that is required is the standard 36- 1677byte 1678ACPI header. 1679 1680AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 1681headers), 1682which also adds correct 64-bit support. Also, now all output filenames are 1683completely lower case. 1684 1685AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 1686loading table files. A warning is issued for any such tables. The only 1687exception is an FADT. This also fixes a possible fault when attempting to 1688load 1689non-AML tables. ACPICA BZ 932. 1690 1691AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where a 1692missing table terminator could cause a fault when using the -p option. 1693 1694AcpiSrc: Fixed a possible divide-by-zero fault when generating file 1695statistics. 1696 16973) Example Code and Data Size 1698 1699These are the sizes for the OS-independent acpica.lib produced by the 1700Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 1701includes the debug output trace mechanism and has a much larger code and 1702data 1703size. 1704 1705 Previous Release (VC 9.0): 1706 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1707 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1708 Current Release (VC 9.0): 1709 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1710 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1711 1712 1713---------------------------------------- 171423 June 2011. Summary of changes for version 20110623: 1715 17161) ACPI CA Core Subsystem: 1717 1718Updated the predefined name repair mechanism to not attempt repair of a 1719_TSS 1720return object if a _PSS object is present. We can only sort the _TSS 1721return 1722package if there is no _PSS within the same scope. This is because if _PSS 1723is 1724present, the ACPI specification dictates that the _TSS Power Dissipation 1725field 1726is to be ignored, and therefore some BIOSs leave garbage values in the 1727_TSS 1728Power field(s). In this case, it is best to just return the _TSS package 1729as- 1730is. Reported by, and fixed with assistance from Fenghua Yu. 1731 1732Added an option to globally disable the control method return value 1733validation 1734and repair. This runtime option can be used to disable return value repair 1735if 1736this is causing a problem on a particular machine. Also added an option to 1737AcpiExec (-dr) to set this disable flag. 1738 1739All makefiles and project files: Major changes to improve generation of 1740ACPICA 1741tools. ACPICA BZ 912: 1742 Reduce default optimization levels to improve compatibility 1743 For Linux, add strict-aliasing=0 for gcc 4 1744 Cleanup and simplify use of command line defines 1745 Cleanup multithread library support 1746 Improve usage messages 1747 1748Linux-specific header: update handling of THREAD_ID and pthread. For the 174932- 1750bit case, improve casting to eliminate possible warnings, especially with 1751the 1752acpica tools. 1753 1754Example Code and Data Size: These are the sizes for the OS-independent 1755acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1756debug 1757version of the code includes the debug output trace mechanism and has a 1758much 1759larger code and data size. 1760 1761 Previous Release (VC 9.0): 1762 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 1763 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1764 Current Release (VC 9.0): 1765 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 1766 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1767 17682) iASL Compiler/Disassembler and Tools: 1769 1770With this release, a new utility named "acpihelp" has been added to the 1771ACPICA 1772package. This utility summarizes the ACPI specification chapters for the 1773ASL 1774and AML languages. It generates under Linux/Unix as well as Windows, and 1775provides the following functionality: 1776 Find/display ASL operator(s) -- with description and syntax. 1777 Find/display ASL keyword(s) -- with exact spelling and descriptions. 1778 Find/display ACPI predefined name(s) -- with description, number 1779 of arguments, and the return value data type. 1780 Find/display AML opcode name(s) -- with opcode, arguments, and 1781grammar. 1782 Decode/display AML opcode -- with opcode name, arguments, and grammar. 1783 1784Service Layers: Make multi-thread support configurable. Conditionally 1785compile 1786the multi-thread support so that threading libraries will not be linked if 1787not 1788necessary. The only tool that requires multi-thread support is AcpiExec. 1789 1790iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 1791of 1792Bison appear to want the interface to yyerror to be a const char * (or at 1793least this is a problem when generating iASL on some systems.) ACPICA BZ 1794923 1795Pierre Lejeune. 1796 1797Tools: Fix for systems where O_BINARY is not defined. Only used for 1798Windows 1799versions of the tools. 1800 1801---------------------------------------- 180227 May 2011. Summary of changes for version 20110527: 1803 18041) ACPI CA Core Subsystem: 1805 1806ASL Load() operator: Reinstate most restrictions on the incoming ACPI 1807table 1808signature. Now, only allow SSDT, OEMx, and a null signature. History: 1809 1) Originally, we checked the table signature for "SSDT" or "PSDT". 1810 (PSDT is now obsolete.) 1811 2) We added support for OEMx tables, signature "OEM" plus a fourth 1812 "don't care" character. 1813 3) Valid tables were encountered with a null signature, so we just 1814 gave up on validating the signature, (05/2008). 1815 4) We encountered non-AML tables such as the MADT, which caused 1816 interpreter errors and kernel faults. So now, we once again allow 1817 only SSDT, OEMx, and now, also a null signature. (05/2011). 1818 1819Added the missing _TDL predefined name to the global name list in order to 1820enable validation. Affects both the core ACPICA code and the iASL 1821compiler. 1822 1823Example Code and Data Size: These are the sizes for the OS-independent 1824acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1825debug 1826version of the code includes the debug output trace mechanism and has a 1827much 1828larger code and data size. 1829 1830 Previous Release (VC 9.0): 1831 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 1832 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 1833 Current Release (VC 9.0): 1834 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 1835 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 1836 18372) iASL Compiler/Disassembler and Tools: 1838 1839Debugger/AcpiExec: Implemented support for "complex" method arguments on 1840the 1841debugger command line. This adds support beyond simple integers -- 1842including 1843Strings, Buffers, and Packages. Includes support for nested packages. 1844Increased the default command line buffer size to accommodate these 1845arguments. 1846See the ACPICA reference for details and syntax. ACPICA BZ 917. 1847 1848Debugger/AcpiExec: Implemented support for "default" method arguments for 1849the 1850Execute/Debug command. Now, the debugger will always invoke a control 1851method 1852with the required number of arguments -- even if the command line 1853specifies 1854none or insufficient arguments. It uses default integer values for any 1855missing 1856arguments. Also fixes a bug where only six method arguments maximum were 1857supported instead of the required seven. 1858 1859Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 1860and 1861also return status in order to prevent buffer overruns. See the ACPICA 1862reference for details and syntax. ACPICA BZ 921 1863 1864iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 1865makefiles to simplify support for the two different but similar parser 1866generators, bison and yacc. 1867 1868Updated the generic unix makefile for gcc 4. The default gcc version is 1869now 1870expected to be 4 or greater, since options specific to gcc 4 are used. 1871 1872---------------------------------------- 187313 April 2011. Summary of changes for version 20110413: 1874 18751) ACPI CA Core Subsystem: 1876 1877Implemented support to execute a so-called "orphan" _REG method under the 1878EC 1879device. This change will force the execution of a _REG method underneath 1880the 1881EC 1882device even if there is no corresponding operation region of type 1883EmbeddedControl. Fixes a problem seen on some machines and apparently is 1884compatible with Windows behavior. ACPICA BZ 875. 1885 1886Added more predefined methods that are eligible for automatic NULL package 1887element removal. This change adds another group of predefined names to the 1888list 1889of names that can be repaired by having NULL package elements dynamically 1890removed. This group are those methods that return a single variable-length 1891package containing simple data types such as integers, buffers, strings. 1892This 1893includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 1894_PSL, 1895_Sx, 1896and _TZD. ACPICA BZ 914. 1897 1898Split and segregated all internal global lock functions to a new file, 1899evglock.c. 1900 1901Updated internal address SpaceID for DataTable regions. Moved this 1902internal 1903space 1904id in preparation for ACPI 5.0 changes that will include some new space 1905IDs. 1906This 1907change should not affect user/host code. 1908 1909Example Code and Data Size: These are the sizes for the OS-independent 1910acpica.lib 1911produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 1912version of 1913the code includes the debug output trace mechanism and has a much larger 1914code 1915and 1916data size. 1917 1918 Previous Release (VC 9.0): 1919 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 1920 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 1921 Current Release (VC 9.0): 1922 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 1923 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 1924 19252) iASL Compiler/Disassembler and Tools: 1926 1927iASL/DTC: Major update for new grammar features. Allow generic data types 1928in 1929custom ACPI tables. Field names are now optional. Any line can be split to 1930multiple lines using the continuation char (\). Large buffers now use 1931line- 1932continuation character(s) and no colon on the continuation lines. See the 1933grammar 1934update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 1935Moore. 1936 1937iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 1938statements. 1939Since the parser stuffs a "zero" as the return value for these statements 1940(due 1941to 1942the underlying AML grammar), they were seen as "return with value" by the 1943iASL 1944semantic checking. They are now seen correctly as "null" return 1945statements. 1946 1947iASL: Check if a_REG declaration has a corresponding Operation Region. 1948Adds a 1949check for each _REG to ensure that there is in fact a corresponding 1950operation 1951region declaration in the same scope. If not, the _REG method is not very 1952useful 1953since it probably won't be executed. ACPICA BZ 915. 1954 1955iASL/DTC: Finish support for expression evaluation. Added a new expression 1956parser 1957that implements c-style operator precedence and parenthesization. ACPICA 1958bugzilla 1959908. 1960 1961Disassembler/DTC: Remove support for () and <> style comments in data 1962tables. 1963Now 1964that DTC has full expression support, we don't want to have comment 1965strings 1966that 1967start with a parentheses or a less-than symbol. Now, only the standard /* 1968and 1969// 1970comments are supported, as well as the bracket [] comments. 1971 1972AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 1973"unusual" 1974headers in the acpidump file. Update the header validation to support 1975these 1976tables. Problem introduced in previous AcpiXtract version in the change to 1977support "wrong checksum" error messages emitted by acpidump utility. 1978 1979iASL: Add a * option to generate all template files (as a synonym for ALL) 1980as 1981in 1982"iasl -T *" or "iasl -T ALL". 1983 1984iASL/DTC: Do not abort compiler on fatal errors. We do not want to 1985completely 1986abort the compiler on "fatal" errors, simply should abort the current 1987compile. 1988This allows multiple compiles with a single (possibly wildcard) compiler 1989invocation. 1990 1991---------------------------------------- 199216 March 2011. Summary of changes for version 20110316: 1993 19941) ACPI CA Core Subsystem: 1995 1996Fixed a problem caused by a _PRW method appearing at the namespace root 1997scope 1998during the setup of wake GPEs. A fault could occur if a _PRW directly 1999under 2000the 2001root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 2002 2003Implemented support for "spurious" Global Lock interrupts. On some 2004systems, a 2005global lock interrupt can occur without the pending flag being set. Upon a 2006GL 2007interrupt, we now ensure that a thread is actually waiting for the lock 2008before 2009signaling GL availability. Rafael Wysocki, Bob Moore. 2010 2011Example Code and Data Size: These are the sizes for the OS-independent 2012acpica.lib 2013produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 2014version of 2015the code includes the debug output trace mechanism and has a much larger 2016code 2017and 2018data size. 2019 2020 Previous Release (VC 9.0): 2021 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 2022 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 2023 Current Release (VC 9.0): 2024 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 2025 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 2026 20272) iASL Compiler/Disassembler and Tools: 2028 2029Implemented full support for the "SLIC" ACPI table. Includes support in 2030the 2031header files, disassembler, table compiler, and template generator. Bob 2032Moore, 2033Lin Ming. 2034 2035AcpiXtract: Correctly handle embedded comments and messages from AcpiDump. 2036Apparently some or all versions of acpidump will occasionally emit a 2037comment 2038like 2039"Wrong checksum", etc., into the dump file. This was causing problems for 2040AcpiXtract. ACPICA BZ 905. 2041 2042iASL: Fix the Linux makefile by removing an inadvertent double file 2043inclusion. 2044ACPICA BZ 913. 2045 2046AcpiExec: Update installation of operation region handlers. Install one 2047handler 2048for a user-defined address space. This is used by the ASL test suite 2049(ASLTS). 2050 2051---------------------------------------- 205211 February 2011. Summary of changes for version 20110211: 2053 20541) ACPI CA Core Subsystem: 2055 2056Added a mechanism to defer _REG methods for some early-installed handlers. 2057Most user handlers should be installed before call to AcpiEnableSubsystem. 2058However, Event handlers and region handlers should be installed after 2059AcpiInitializeObjects. Override handlers for the "default" regions should 2060be 2061installed early, however. This change executes all _REG methods for the 2062default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 2063chicken/egg issues between them. ACPICA BZ 848. 2064 2065Implemented an optimization for GPE detection. This optimization will 2066simply 2067ignore GPE registers that contain no enabled GPEs -- there is no need to 2068read the register since this information is available internally. This 2069becomes more important on machines with a large GPE space. ACPICA bugzilla 2070884. Lin Ming. Suggestion from Joe Liu. 2071 2072Removed all use of the highly unreliable FADT revision field. The revision 2073number in the FADT has been found to be completely unreliable and cannot 2074be 2075trusted. Only the actual table length can be used to infer the version. 2076This 2077change updates the ACPICA core and the disassembler so that both no longer 2078even look at the FADT version and instead depend solely upon the FADT 2079length. 2080 2081Fix an unresolved name issue for the no-debug and no-error-message source 2082generation cases. The _AcpiModuleName was left undefined in these cases, 2083but 2084it is actually needed as a parameter to some interfaces. Define 2085_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 2086 2087Split several large files (makefiles and project files updated) 2088 utglobal.c -> utdecode.c 2089 dbcomds.c -> dbmethod.c dbnames.c 2090 dsopcode.c -> dsargs.c dscontrol.c 2091 dsload.c -> dsload2.c 2092 aslanalyze.c -> aslbtypes.c aslwalks.c 2093 2094Example Code and Data Size: These are the sizes for the OS-independent 2095acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2096debug version of the code includes the debug output trace mechanism and 2097has 2098a much larger code and data size. 2099 2100 Previous Release (VC 9.0): 2101 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 2102 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 2103 Current Release (VC 9.0): 2104 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 2105 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 2106 21072) iASL Compiler/Disassembler and Tools: 2108 2109iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 2110These are useful C-style macros with the standard definitions. ACPICA 2111bugzilla 898. 2112 2113iASL/DTC: Added support for integer expressions and labels. Support for 2114full 2115expressions for all integer fields in all ACPI tables. Support for labels 2116in 2117"generic" portions of tables such as UEFI. See the iASL reference manual. 2118 2119Debugger: Added a command to display the status of global handlers. The 2120"handlers" command will display op region, fixed event, and miscellaneous 2121global handlers. installation status -- and for op regions, whether 2122default 2123or user-installed handler will be used. 2124 2125iASL: Warn if reserved method incorrectly returns a value. Many predefined 2126names are defined such that they do not return a value. If implemented as 2127a 2128method, issue a warning if such a name explicitly returns a value. ACPICA 2129Bugzilla 855. 2130 2131iASL: Added detection of GPE method name conflicts. Detects a conflict 2132where 2133there are two GPE methods of the form _Lxy and _Exy in the same scope. 2134(For 2135example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 2136 2137iASL/DTC: Fixed a couple input scanner issues with comments and line 2138numbers. Comment remover could get confused and miss a comment ending. 2139Fixed 2140a problem with line counter maintenance. 2141 2142iASL/DTC: Reduced the severity of some errors from fatal to error. There 2143is 2144no need to abort on simple errors within a field definition. 2145 2146Debugger: Simplified the output of the help command. All help output now 2147in 2148a single screen, instead of help subcommands. ACPICA Bugzilla 897. 2149 2150---------------------------------------- 215112 January 2011. Summary of changes for version 20110112: 2152 21531) ACPI CA Core Subsystem: 2154 2155Fixed a race condition between method execution and namespace walks that 2156can 2157possibly cause a fault. The problem was apparently introduced in version 215820100528 as a result of a performance optimization that reduces the number 2159of 2160namespace walks upon method exit by using the delete_namespace_subtree 2161function instead of the delete_namespace_by_owner function used 2162previously. 2163Bug is a missing namespace lock in the delete_namespace_subtree function. 2164dana.myers@oracle.com 2165 2166Fixed several issues and a possible fault with the automatic "serialized" 2167method support. History: This support changes a method to "serialized" on 2168the 2169fly if the method generates an AE_ALREADY_EXISTS error, indicating the 2170possibility that it cannot handle reentrancy. This fix repairs a couple of 2171issues seen in the field, especially on machines with many cores: 2172 2173 1) Delete method children only upon the exit of the last thread, 2174 so as to not delete objects out from under other running threads 2175 (and possibly causing a fault.) 2176 2) Set the "serialized" bit for the method only upon the exit of the 2177 Last thread, so as to not cause deadlock when running threads 2178 attempt to exit. 2179 3) Cleanup the use of the AML "MethodFlags" and internal method flags 2180 so that there is no longer any confusion between the two. 2181 2182 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 2183 2184Debugger: Now lock the namespace for duration of a namespace dump. 2185Prevents 2186issues if the namespace is changing dynamically underneath the debugger. 2187Especially affects temporary namespace nodes, since the debugger displays 2188these also. 2189 2190Updated the ordering of include files. The ACPICA headers should appear 2191before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 2192set 2193any necessary compiler-specific defines, etc. Affects the ACPI-related 2194tools 2195and utilities. 2196 2197Updated all ACPICA copyrights and signons to 2011. Added the 2011 2198copyright 2199to all module headers and signons, including the Linux header. This 2200affects 2201virtually every file in the ACPICA core subsystem, iASL compiler, and all 2202utilities. 2203 2204Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 2205project files for VC++ 6.0 are now obsolete. New project files can be 2206found 2207under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 2208details. 2209 2210Example Code and Data Size: These are the sizes for the OS-independent 2211acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2212debug version of the code includes the debug output trace mechanism and 2213has a 2214much larger code and data size. 2215 2216 Previous Release (VC 6.0): 2217 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 2218 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 2219 Current Release (VC 9.0): 2220 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 2221 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 2222 22232) iASL Compiler/Disassembler and Tools: 2224 2225iASL: Added generic data types to the Data Table compiler. Add "generic" 2226data 2227types such as UINT32, String, Unicode, etc., to simplify the generation of 2228platform-defined tables such as UEFI. Lin Ming. 2229 2230iASL: Added listing support for the Data Table Compiler. Adds listing 2231support 2232(-l) to display actual binary output for each line of input code. 2233 2234---------------------------------------- 223509 December 2010. Summary of changes for version 20101209: 2236 22371) ACPI CA Core Subsystem: 2238 2239Completed the major overhaul of the GPE support code that was begun in 2240July 22412010. Major features include: removal of _PRW execution in ACPICA (host 2242executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 2243changes to existing interfaces, simplification of GPE handler operation, 2244and 2245a handful of new interfaces: 2246 2247 AcpiUpdateAllGpes 2248 AcpiFinishGpe 2249 AcpiSetupGpeForWake 2250 AcpiSetGpeWakeMask 2251 One new file, evxfgpe.c to consolidate all external GPE interfaces. 2252 2253See the ACPICA Programmer Reference for full details and programming 2254information. See the new section 4.4 "General Purpose Event (GPE) Support" 2255for a full overview, and section 8.7 "ACPI General Purpose Event 2256Management" 2257for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming, 2258Bob Moore, Rafael Wysocki. 2259 2260Implemented a new GPE feature for Windows compatibility, the "Implicit 2261Wake 2262GPE Notify". This feature will automatically issue a Notify(2) on a device 2263when a Wake GPE is received if there is no corresponding GPE method or 2264handler. ACPICA BZ 870. 2265 2266Fixed a problem with the Scope() operator during table parse and load 2267phase. 2268During load phase (table load or method execution), the scope operator 2269should 2270not enter the target into the namespace. Instead, it should open a new 2271scope 2272at the target location. Linux BZ 19462, ACPICA BZ 882. 2273 2274Example Code and Data Size: These are the sizes for the OS-independent 2275acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2276debug version of the code includes the debug output trace mechanism and 2277has a 2278much larger code and data size. 2279 2280 Previous Release: 2281 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 2282 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 2283 Current Release: 2284 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2285 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2286 22872) iASL Compiler/Disassembler and Tools: 2288 2289iASL: Relax the alphanumeric restriction on _CID strings. These strings 2290are 2291"bus-specific" per the ACPI specification, and therefore any characters 2292are 2293acceptable. The only checks that can be performed are for a null string 2294and 2295perhaps for a leading asterisk. ACPICA BZ 886. 2296 2297iASL: Fixed a problem where a syntax error that caused a premature EOF 2298condition on the source file emitted a very confusing error message. The 2299premature EOF is now detected correctly. ACPICA BZ 891. 2300 2301Disassembler: Decode the AccessSize within a Generic Address Structure 2302(byte 2303access, word access, etc.) Note, this field does not allow arbitrary bit 2304access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 2305 2306New: AcpiNames utility - Example namespace dump utility. Shows an example 2307of 2308ACPICA configuration for a minimal namespace dump utility. Uses table and 2309namespace managers, but no AML interpreter. Does not add any functionality 2310over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 2311partition and configure ACPICA. ACPICA BZ 883. 2312 2313AML Debugger: Increased the debugger buffer size for method return 2314objects. 2315Was 4K, increased to 16K. Also enhanced error messages for debugger method 2316execution, including the buffer overflow case. 2317 2318---------------------------------------- 231913 October 2010. Summary of changes for version 20101013: 2320 23211) ACPI CA Core Subsystem: 2322 2323Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 2324now 2325clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 2326HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 2327 2328Changed the type of the predefined namespace object _TZ from ThermalZone 2329to 2330Device. This was found to be confusing to the host software that processes 2331the various thermal zones, since _TZ is not really a ThermalZone. However, 2332a 2333Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 2334Zhang. 2335 2336Added Windows Vista SP2 to the list of supported _OSI strings. The actual 2337string is "Windows 2006 SP2". 2338 2339Eliminated duplicate code in AcpiUtExecute* functions. Now that the 2340nsrepair 2341code automatically repairs _HID-related strings, this type of code is no 2342longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878. 2343 2344Example Code and Data Size: These are the sizes for the OS-independent 2345acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2346debug version of the code includes the debug output trace mechanism and 2347has a 2348much larger code and data size. 2349 2350 Previous Release: 2351 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2352 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2353 Current Release: 2354 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2355 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2356 23572) iASL Compiler/Disassembler and Tools: 2358 2359iASL: Implemented additional compile-time validation for _HID strings. The 2360non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length 2361of 2362the string must be exactly seven or eight characters. For both _HID and 2363_CID 2364strings, all characters must be alphanumeric. ACPICA BZ 874. 2365 2366iASL: Allow certain "null" resource descriptors. Some BIOS code creates 2367descriptors that are mostly or all zeros, with the expectation that they 2368will 2369be filled in at runtime. iASL now allows this as long as there is a 2370"resource 2371tag" (name) associated with the descriptor, which gives the ASL a handle 2372needed to modify the descriptor. ACPICA BZ 873. 2373 2374Added single-thread support to the generic Unix application OSL. Primarily 2375for iASL support, this change removes the use of semaphores in the single- 2376threaded ACPICA tools/applications - increasing performance. The 2377_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 2378option. ACPICA BZ 879. 2379 2380AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 2381support 2382for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 2383 2384iASL: Moved all compiler messages to a new file, aslmessages.h. 2385 2386---------------------------------------- 238715 September 2010. Summary of changes for version 20100915: 2388 23891) ACPI CA Core Subsystem: 2390 2391Removed the AcpiOsDerivePciId OSL interface. The various host 2392implementations 2393of this function were not OS-dependent and are now obsolete and can be 2394removed from all host OSLs. This function has been replaced by 2395AcpiHwDerivePciId, which is now part of the ACPICA core code. 2396AcpiHwDerivePciId has been implemented without recursion. Adds one new 2397module, hwpci.c. ACPICA BZ 857. 2398 2399Implemented a dynamic repair for _HID and _CID strings. The following 2400problems are now repaired at runtime: 1) Remove a leading asterisk in the 2401string, and 2) the entire string is uppercased. Both repairs are in 2402accordance with the ACPI specification and will simplify host driver code. 2403ACPICA BZ 871. 2404 2405The ACPI_THREAD_ID type is no longer configurable, internally it is now 2406always UINT64. This simplifies the ACPICA code, especially any printf 2407output. 2408UINT64 is the only common data type for all thread_id types across all 2409operating systems. It is now up to the host OSL to cast the native 2410thread_id 2411type to UINT64 before returning the value to ACPICA (via 2412AcpiOsGetThreadId). 2413Lin Ming, Bob Moore. 2414 2415Added the ACPI_INLINE type to enhance the ACPICA configuration. The 2416"inline" 2417keyword is not standard across compilers, and this type allows inline to 2418be 2419configured on a per-compiler basis. Lin Ming. 2420 2421Made the system global AcpiGbl_SystemAwakeAndRunning publically available. 2422Added an extern for this boolean in acpixf.h. Some hosts utilize this 2423value 2424during suspend/restore operations. ACPICA BZ 869. 2425 2426All code that implements error/warning messages with the "ACPI:" prefix 2427has 2428been moved to a new module, utxferror.c. 2429 2430The UINT64_OVERLAY was moved to utmath.c, which is the only module where 2431it 2432is used. ACPICA BZ 829. Lin Ming, Bob Moore. 2433 2434Example Code and Data Size: These are the sizes for the OS-independent 2435acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2436debug version of the code includes the debug output trace mechanism and 2437has a 2438much larger code and data size. 2439 2440 Previous Release: 2441 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 2442 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 2443 Current Release: 2444 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 2445 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 2446 24472) iASL Compiler/Disassembler and Tools: 2448 2449iASL/Disassembler: Write ACPI errors to stderr instead of the output file. 2450This keeps the output files free of random error messages that may 2451originate 2452from within the namespace/interpreter code. Used this opportunity to merge 2453all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 2454866. Lin Ming, Bob Moore. 2455 2456Tools: update some printfs for ansi warnings on size_t. Handle width 2457change 2458of size_t on 32-bit versus 64-bit generations. Lin Ming. 2459 2460---------------------------------------- 246106 August 2010. Summary of changes for version 20100806: 2462 24631) ACPI CA Core Subsystem: 2464 2465Designed and implemented a new host interface to the _OSI support code. 2466This 2467will allow the host to dynamically add or remove multiple _OSI strings, as 2468well as install an optional handler that is called for each _OSI 2469invocation. 2470Also added a new AML debugger command, 'osi' to display and modify the 2471global 2472_OSI string table, and test support in the AcpiExec utility. See the 2473ACPICA 2474reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 2475New Functions: 2476 AcpiInstallInterface - Add an _OSI string. 2477 AcpiRemoveInterface - Delete an _OSI string. 2478 AcpiInstallInterfaceHandler - Install optional _OSI handler. 2479Obsolete Functions: 2480 AcpiOsValidateInterface - no longer used. 2481New Files: 2482 source/components/utilities/utosi.c 2483 2484Re-introduced the support to enable multi-byte transfers for Embedded 2485Controller (EC) operation regions. A reported problem was found to be a 2486bug 2487in the host OS, not in the multi-byte support. Previously, the maximum 2488data 2489size passed to the EC operation region handler was a single byte. There 2490are 2491often EC Fields larger than one byte that need to be transferred, and it 2492is 2493useful for the EC driver to lock these as a single transaction. This 2494change 2495enables single transfers larger than 8 bits. This effectively changes the 2496access to the EC space from ByteAcc to AnyAcc, and will probably require 2497changes to the host OS Embedded Controller driver to enable 16/32/64/256- 2498bit 2499transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 2500 2501Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 2502prototype in acpiosxf.h had the output value pointer as a (void *). 2503It should be a (UINT64 *). This may affect some host OSL code. 2504 2505Fixed a couple problems with the recently modified Linux makefiles for 2506iASL 2507and AcpiExec. These new makefiles place the generated object files in the 2508local directory so that there can be no collisions between the files that 2509are 2510shared between them that are compiled with different options. 2511 2512Example Code and Data Size: These are the sizes for the OS-independent 2513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2514debug version of the code includes the debug output trace mechanism and 2515has a 2516much larger code and data size. 2517 2518 Previous Release: 2519 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2520 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 2521 Current Release: 2522 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 2523 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 2524 25252) iASL Compiler/Disassembler and Tools: 2526 2527iASL/Disassembler: Added a new option (-da, "disassemble all") to load the 2528namespace from and disassemble an entire group of AML files. Useful for 2529loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 2530and 2531disassembling with one simple command. ACPICA BZ 865. Lin Ming. 2532 2533iASL: Allow multiple invocations of -e option. This change allows multiple 2534uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 2535834. 2536Lin Ming. 2537 2538---------------------------------------- 253902 July 2010. Summary of changes for version 20100702: 2540 25411) ACPI CA Core Subsystem: 2542 2543Implemented several updates to the recently added GPE reference count 2544support. The model for "wake" GPEs is changing to give the host OS 2545complete 2546control of these GPEs. Eventually, the ACPICA core will not execute any 2547_PRW 2548methods, since the host already must execute them. Also, additional 2549changes 2550were made to help ensure that the reference counts are kept in proper 2551synchronization with reality. Rafael J. Wysocki. 2552 25531) Ensure that GPEs are not enabled twice during initialization. 25542) Ensure that GPE enable masks stay in sync with the reference count. 25553) Do not inadvertently enable GPEs when writing GPE registers. 25564) Remove the internal wake reference counter and add new AcpiGpeWakeup 2557interface. This interface will set or clear individual GPEs for wakeup. 25585) Remove GpeType argument from AcpiEnable and AcpiDisable. These 2559interfaces 2560are now used for "runtime" GPEs only. 2561 2562Changed the behavior of the GPE install/remove handler interfaces. The GPE 2563is 2564no longer disabled during this process, as it was found to cause problems 2565on 2566some machines. Rafael J. Wysocki. 2567 2568Reverted a change introduced in version 20100528 to enable Embedded 2569Controller multi-byte transfers. This change was found to cause problems 2570with 2571Index Fields and possibly Bank Fields. It will be reintroduced when these 2572problems have been resolved. 2573 2574Fixed a problem with references to Alias objects within Package Objects. A 2575reference to an Alias within the definition of a Package was not always 2576resolved properly. Aliases to objects like Processors, Thermal zones, etc. 2577were resolved to the actual object instead of a reference to the object as 2578it 2579should be. Package objects are only allowed to contain integer, string, 2580buffer, package, and reference objects. Redhat bugzilla 608648. 2581 2582Example Code and Data Size: These are the sizes for the OS-independent 2583acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2584debug version of the code includes the debug output trace mechanism and 2585has a 2586much larger code and data size. 2587 2588 Previous Release: 2589 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2590 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 2591 Current Release: 2592 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2593 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 2594 25952) iASL Compiler/Disassembler and Tools: 2596 2597iASL: Implemented a new compiler subsystem to allow definition and 2598compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 2599These 2600are called "ACPI Data Tables", and the new compiler is the "Data Table 2601Compiler". This compiler is intended to simplify the existing error-prone 2602process of creating these tables for the BIOS, as well as allowing the 2603disassembly, modification, recompilation, and override of existing ACPI 2604data 2605tables. See the iASL User Guide for detailed information. 2606 2607iASL: Implemented a new Template Generator option in support of the new 2608Data 2609Table Compiler. This option will create examples of all known ACPI tables 2610that can be used as the basis for table development. See the iASL 2611documentation and the -T option. 2612 2613Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 2614Descriptor Table). 2615 2616Updated the Linux makefiles for iASL and AcpiExec to place the generated 2617object files in the local directory so that there can be no collisions 2618between the shared files between them that are generated with different 2619options. 2620 2621Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use 2622the #define __APPLE__ to enable this support. 2623 2624---------------------------------------- 262528 May 2010. Summary of changes for version 20100528: 2626 2627Note: The ACPI 4.0a specification was released on April 5, 2010 and is 2628available at www.acpi.info. This is primarily an errata release. 2629 26301) ACPI CA Core Subsystem: 2631 2632Undefined ACPI tables: We are looking for the definitions for the 2633following 2634ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 2635 2636Implemented support to enable multi-byte transfers for Embedded Controller 2637(EC) operation regions. Previously, the maximum data size passed to the EC 2638operation region handler was a single byte. There are often EC Fields 2639larger 2640than one byte that need to be transferred, and it is useful for the EC 2641driver 2642to lock these as a single transaction. This change enables single 2643transfers 2644larger than 8 bits. This effectively changes the access to the EC space 2645from 2646ByteAcc to AnyAcc, and will probably require changes to the host OS 2647Embedded 2648Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 2649bit 2650transfers. Alexey Starikovskiy, Lin Ming 2651 2652Implemented a performance enhancement for namespace search and access. 2653This 2654change enhances the performance of namespace searches and walks by adding 2655a 2656backpointer to the parent in each namespace node. On large namespaces, 2657this 2658change can improve overall ACPI performance by up to 9X. Adding a pointer 2659to 2660each namespace node increases the overall size of the internal namespace 2661by 2662about 5%, since each namespace entry usually consists of both a namespace 2663node and an ACPI operand object. However, this is the first growth of the 2664namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 2665 2666Implemented a performance optimization that reduces the number of 2667namespace 2668walks. On control method exit, only walk the namespace if the method is 2669known 2670to have created namespace objects outside of its local scope. Previously, 2671the 2672entire namespace was traversed on each control method exit. This change 2673can 2674improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 2675Moore. 2676 2677Added support to truncate I/O addresses to 16 bits for Windows 2678compatibility. 2679Some ASL code has been seen in the field that inadvertently has bits set 2680above bit 15. This feature is optional and is enabled if the BIOS requests 2681any Windows OSI strings. It can also be enabled by the host OS. Matthew 2682Garrett, Bob Moore. 2683 2684Added support to limit the maximum time for the ASL Sleep() operator. To 2685prevent accidental deep sleeps, limit the maximum time that Sleep() will 2686actually sleep. Configurable, the default maximum is two seconds. ACPICA 2687bugzilla 854. 2688 2689Added run-time validation support for the _WDG and_WED Microsoft 2690predefined 2691methods. These objects are defined by "Windows Instrumentation", and are 2692not 2693part of the ACPI spec. ACPICA BZ 860. 2694 2695Expanded all statistic counters used during namespace and device 2696initialization from 16 to 32 bits in order to support very large 2697namespaces. 2698 2699Replaced all instances of %d in printf format specifiers with %u since 2700nearly 2701all integers in ACPICA are unsigned. 2702 2703Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 2704returned 2705as AE_NO_HANDLER. 2706 2707Example Code and Data Size: These are the sizes for the OS-independent 2708acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2709debug version of the code includes the debug output trace mechanism and 2710has a 2711much larger code and data size. 2712 2713 Previous Release: 2714 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 2715 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 2716 Current Release: 2717 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 2718 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 2719 27202) iASL Compiler/Disassembler and Tools: 2721 2722iASL: Added compiler support for the _WDG and_WED Microsoft predefined 2723methods. These objects are defined by "Windows Instrumentation", and are 2724not 2725part of the ACPI spec. ACPICA BZ 860. 2726 2727AcpiExec: added option to disable the memory tracking mechanism. The -dt 2728option will disable the tracking mechanism, which improves performance 2729considerably. 2730 2731AcpiExec: Restructured the command line options into -d (disable) and -e 2732(enable) options. 2733 2734---------------------------------------- 273528 April 2010. Summary of changes for version 20100428: 2736 27371) ACPI CA Core Subsystem: 2738 2739Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 2740including FADT-based and GPE Block Devices, execute any _PRW methods in 2741the 2742new table, and process any _Lxx/_Exx GPE methods in the new table. Any 2743runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 2744immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 2745Devices. Provides compatibility with other ACPI implementations. Two new 2746files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 2747Moore. 2748 2749Fixed a regression introduced in version 20100331 within the table manager 2750where initial table loading could fail. This was introduced in the fix for 2751AcpiReallocateRootTable. Also, renamed some of fields in the table manager 2752data structures to clarify their meaning and use. 2753 2754Fixed a possible allocation overrun during internal object copy in 2755AcpiUtCopySimpleObject. The original code did not correctly handle the 2756case 2757where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 2758847. 2759 2760Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 2761possible access beyond end-of-allocation. Also, now fully validate 2762descriptor 2763(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 2764 2765Example Code and Data Size: These are the sizes for the OS-independent 2766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2767debug version of the code includes the debug output trace mechanism and 2768has a 2769much larger code and data size. 2770 2771 Previous Release: 2772 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 2773 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 2774 Current Release: 2775 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 2776 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 2777 27782) iASL Compiler/Disassembler and Tools: 2779 2780iASL: Implemented Min/Max/Len/Gran validation for address resource 2781descriptors. This change implements validation for the address fields that 2782are common to all address-type resource descriptors. These checks are 2783implemented: Checks for valid Min/Max, length within the Min/Max window, 2784valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per 2785table 6-40 in the ACPI 4.0a specification. Also split the large 2786aslrestype1.c 2787and aslrestype2.c files into five new files. ACPICA BZ 840. 2788 2789iASL: Added support for the _Wxx predefined names. This support was 2790missing 2791and these names were not recognized by the compiler as valid predefined 2792names. ACPICA BZ 851. 2793 2794iASL: Added an error for all predefined names that are defined to return 2795no 2796value and thus must be implemented as Control Methods. These include all 2797of 2798the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 2799names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 2800 2801iASL: Implemented the -ts option to emit hex AML data in ASL format, as an 2802ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 2803be 2804dynamically loaded via the Load() operator. Also cleaned up output for the 2805- 2806ta and -tc options. ACPICA BZ 853. 2807 2808Tests: Added a new file with examples of extended iASL error checking. 2809Demonstrates the advanced error checking ability of the iASL compiler. 2810Available at tests/misc/badcode.asl. 2811 2812---------------------------------------- 281331 March 2010. Summary of changes for version 20100331: 2814 28151) ACPI CA Core Subsystem: 2816 2817Completed a major update for the GPE support in order to improve support 2818for 2819shared GPEs and to simplify both host OS and ACPICA code. Added a 2820reference 2821count mechanism to support shared GPEs that require multiple device 2822drivers. 2823Several external interfaces have changed. One external interface has been 2824removed. One new external interface was added. Most of the GPE external 2825interfaces now use the GPE spinlock instead of the events mutex (and the 2826Flags parameter for many GPE interfaces has been removed.) See the updated 2827ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 2828Rafael 2829Wysocki. ACPICA BZ 831. 2830 2831Changed: 2832 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 2833Removed: 2834 AcpiSetGpeType 2835New: 2836 AcpiSetGpe 2837 2838Implemented write support for DataTable operation regions. These regions 2839are 2840defined via the DataTableRegion() operator. Previously, only read support 2841was 2842implemented. The ACPI specification allows DataTableRegions to be 2843read/write, 2844however. 2845 2846Implemented a new subsystem option to force a copy of the DSDT to local 2847memory. Optionally copy the entire DSDT to local memory (instead of simply 2848mapping it.) There are some (albeit very rare) BIOSs that corrupt or 2849replace 2850the original DSDT, creating the need for this option. Default is FALSE, do 2851not copy the DSDT. 2852 2853Implemented detection of a corrupted or replaced DSDT. This change adds 2854support to detect a DSDT that has been corrupted and/or replaced from 2855outside 2856the OS (by firmware). This is typically catastrophic for the system, but 2857has 2858been seen on some machines. Once this problem has been detected, the DSDT 2859copy option can be enabled via system configuration. Lin Ming, Bob Moore. 2860 2861Fixed two problems with AcpiReallocateRootTable during the root table 2862copy. 2863When copying the root table to the new allocation, the length used was 2864incorrect. The new size was used instead of the current table size, 2865meaning 2866too much data was copied. Also, the count of available slots for ACPI 2867tables 2868was not set correctly. Alexey Starikovskiy, Bob Moore. 2869 2870Example Code and Data Size: These are the sizes for the OS-independent 2871acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2872debug version of the code includes the debug output trace mechanism and 2873has a 2874much larger code and data size. 2875 2876 Previous Release: 2877 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 2878 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 2879 Current Release: 2880 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 2881 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 2882 28832) iASL Compiler/Disassembler and Tools: 2884 2885iASL: Implement limited typechecking for values returned from predefined 2886control methods. The type of any returned static (unnamed) object is now 2887validated. For example, Return(1). ACPICA BZ 786. 2888 2889iASL: Fixed a predefined name object verification regression. Fixes a 2890problem 2891introduced in version 20100304. An error is incorrectly generated if a 2892predefined name is declared as a static named object with a value defined 2893using the keywords "Zero", "One", or "Ones". Lin Ming. 2894 2895iASL: Added Windows 7 support for the -g option (get local ACPI tables) by 2896reducing the requested registry access rights. ACPICA BZ 842. 2897 2898Disassembler: fixed a possible fault when generating External() 2899statements. 2900Introduced in commit ae7d6fd: Properly handle externals with parent-prefix 2901(carat). Fixes a string length allocation calculation. Lin Ming. 2902 2903---------------------------------------- 290404 March 2010. Summary of changes for version 20100304: 2905 29061) ACPI CA Core Subsystem: 2907 2908Fixed a possible problem with the AML Mutex handling function 2909AcpiExReleaseMutex where the function could fault under the very rare 2910condition when the interpreter has blocked, the interpreter lock is 2911released, 2912the interpreter is then reentered via the same thread, and attempts to 2913acquire an AML mutex that was previously acquired. FreeBSD report 140979. 2914Lin 2915Ming. 2916 2917Implemented additional configuration support for the AML "Debug Object". 2918Output from the debug object can now be enabled via a global variable, 2919AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 2920debugging. 2921This debug output is now available in the release version of ACPICA 2922instead 2923of just the debug version. Also, the entire debug output module can now be 2924configured out of the ACPICA build if desired. One new file added, 2925executer/exdebug.c. Lin Ming, Bob Moore. 2926 2927Added header support for the ACPI MCHI table (Management Controller Host 2928Interface Table). This table was added in ACPI 4.0, but the defining 2929document 2930has only recently become available. 2931 2932Standardized output of integer values for ACPICA warnings/errors. Always 2933use 29340x prefix for hex output, always use %u for unsigned integer decimal 2935output. 2936Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400 2937invocations.) These invocations were converted from the original 2938ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 2939 2940Example Code and Data Size: These are the sizes for the OS-independent 2941acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2942debug version of the code includes the debug output trace mechanism and 2943has a 2944much larger code and data size. 2945 2946 Previous Release: 2947 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 2948 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 2949 Current Release: 2950 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 2951 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 2952 29532) iASL Compiler/Disassembler and Tools: 2954 2955iASL: Implemented typechecking support for static (non-control method) 2956predefined named objects that are declared with the Name() operator. For 2957example, the type of this object is now validated to be of type Integer: 2958Name(_BBN, 1). This change migrates the compiler to using the core 2959predefined 2960name table instead of maintaining a local version. Added a new file, 2961aslpredef.c. ACPICA BZ 832. 2962 2963Disassembler: Added support for the ACPI 4.0 MCHI table. 2964 2965---------------------------------------- 296621 January 2010. Summary of changes for version 20100121: 2967 29681) ACPI CA Core Subsystem: 2969 2970Added the 2010 copyright to all module headers and signons. This affects 2971virtually every file in the ACPICA core subsystem, the iASL compiler, the 2972tools/utilities, and the test suites. 2973 2974Implemented a change to the AcpiGetDevices interface to eliminate 2975unnecessary 2976invocations of the _STA method. In the case where a specific _HID is 2977requested, do not run _STA until a _HID match is found. This eliminates 2978potentially dozens of _STA calls during a search for a particular 2979device/HID, 2980which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 2981 2982Implemented an additional repair for predefined method return values. 2983Attempt 2984to repair unexpected NULL elements within returned Package objects. Create 2985an 2986Integer of value zero, a NULL String, or a zero-length Buffer as 2987appropriate. 2988ACPICA BZ 818. Lin Ming, Bob Moore. 2989 2990Removed the obsolete ACPI_INTEGER data type. This type was introduced as 2991the 2992code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 2993(with 299464-bit AML integers). It is now obsolete and this change removes it from 2995the 2996ACPICA code base, replaced by UINT64. The original typedef has been 2997retained 2998for now for compatibility with existing device driver code. ACPICA BZ 824. 2999 3000Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in 3001the parse tree object. 3002 3003Added additional warning options for the gcc-4 generation. Updated the 3004source 3005accordingly. This includes some code restructuring to eliminate 3006unreachable 3007code, elimination of some gotos, elimination of unused return values, some 3008additional casting, and removal of redundant declarations. 3009 3010Example Code and Data Size: These are the sizes for the OS-independent 3011acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3012debug version of the code includes the debug output trace mechanism and 3013has a 3014much larger code and data size. 3015 3016 Previous Release: 3017 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 3018 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 3019 Current Release: 3020 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 3021 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 3022 30232) iASL Compiler/Disassembler and Tools: 3024 3025No functional changes for this release. 3026 3027---------------------------------------- 302814 December 2009. Summary of changes for version 20091214: 3029 30301) ACPI CA Core Subsystem: 3031 3032Enhanced automatic data type conversions for predefined name repairs. This 3033change expands the automatic repairs/conversions for predefined name 3034return 3035values to make Integers, Strings, and Buffers fully interchangeable. Also, 3036a 3037Buffer can be converted to a Package of Integers if necessary. The 3038nsrepair.c 3039module was completely restructured. Lin Ming, Bob Moore. 3040 3041Implemented automatic removal of null package elements during predefined 3042name 3043repairs. This change will automatically remove embedded and trailing NULL 3044package elements from returned package objects that are defined to contain 3045a 3046variable number of sub-packages. The driver is then presented with a 3047package 3048with no null elements to deal with. ACPICA BZ 819. 3049 3050Implemented a repair for the predefined _FDE and _GTM names. The expected 3051return value for both names is a Buffer of 5 DWORDs. This repair fixes two 3052possible problems (both seen in the field), where a package of integers is 3053returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 3054Kim. 3055 3056Implemented additional module-level code support. This change will 3057properly 3058execute module-level code that is not at the root of the namespace (under 3059a 3060Device object, etc.). Now executes the code within the current scope 3061instead 3062of the root. ACPICA BZ 762. Lin Ming. 3063 3064Fixed possible mutex acquisition errors when running _REG methods. Fixes a 3065problem where mutex errors can occur when running a _REG method that is in 3066the same scope as a method-defined operation region or an operation region 3067under a module-level IF block. This type of code is rare, so the problem 3068has 3069not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 3070 3071Fixed a possible memory leak during module-level code execution. An object 3072could be leaked for each block of executed module-level code if the 3073interpreter slack mode is enabled This change deletes any implicitly 3074returned 3075object from the module-level code block. Lin Ming. 3076 3077Removed messages for successful predefined repair(s). The repair mechanism 3078was considered too wordy. Now, messages are only unconditionally emitted 3079if 3080the return object cannot be repaired. Existing messages for successful 3081repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 3082827. 3083 3084Example Code and Data Size: These are the sizes for the OS-independent 3085acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3086debug version of the code includes the debug output trace mechanism and 3087has a 3088much larger code and data size. 3089 3090 Previous Release: 3091 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 3092 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 3093 Current Release: 3094 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 3095 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 3096 30972) iASL Compiler/Disassembler and Tools: 3098 3099iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 3100files 3101were no longer automatically removed at the termination of the compile. 3102 3103acpiexec: Implemented the -f option to specify default region fill value. 3104This option specifies the value used to initialize buffers that simulate 3105operation regions. Default value is zero. Useful for debugging problems 3106that 3107depend on a specific initial value for a region or field. 3108 3109---------------------------------------- 311012 November 2009. Summary of changes for version 20091112: 3111 31121) ACPI CA Core Subsystem: 3113 3114Implemented a post-order callback to AcpiWalkNamespace. The existing 3115interface only has a pre-order callback. This change adds an additional 3116parameter for a post-order callback which will be more useful for bus 3117scans. 3118ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 3119 3120Modified the behavior of the operation region memory mapping cache for 3121SystemMemory. Ensure that the memory mappings created for operation 3122regions 3123do not cross 4K page boundaries. Crossing a page boundary while mapping 3124regions can cause kernel warnings on some hosts if the pages have 3125different 3126attributes. Such regions are probably BIOS bugs, and this is the 3127workaround. 3128Linux BZ 14445. Lin Ming. 3129 3130Implemented an automatic repair for predefined methods that must return 3131sorted lists. This change will repair (by sorting) packages returned by 3132_ALR, 3133_PSS, and _TSS. Drivers can now assume that the packages are correctly 3134sorted 3135and do not contain NULL package elements. Adds one new file, 3136namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 3137 3138Fixed a possible fault during predefined name validation if a return 3139Package 3140object contains NULL elements. Also adds a warning if a NULL element is 3141followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 3142may 3143include repair or removal of all such NULL elements where possible. 3144 3145Implemented additional module-level executable AML code support. This 3146change 3147will execute module-level code that is not at the root of the namespace 3148(under a Device object, etc.) at table load time. Module-level executable 3149AML 3150code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 3151 3152Implemented a new internal function to create Integer objects. This 3153function 3154simplifies miscellaneous object creation code. ACPICA BZ 823. 3155 3156Reduced the severity of predefined repair messages, Warning to Info. Since 3157the object was successfully repaired, a warning is too severe. Reduced to 3158an 3159info message for now. These messages may eventually be changed to debug- 3160only. 3161ACPICA BZ 812. 3162 3163Example Code and Data Size: These are the sizes for the OS-independent 3164acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3165debug version of the code includes the debug output trace mechanism and 3166has a 3167much larger code and data size. 3168 3169 Previous Release: 3170 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 3171 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 3172 Current Release: 3173 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 3174 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 3175 31762) iASL Compiler/Disassembler and Tools: 3177 3178iASL: Implemented Switch() with While(1) so that Break works correctly. 3179This 3180change correctly implements the Switch operator with a surrounding 3181While(1) 3182so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 3183 3184iASL: Added a message if a package initializer list is shorter than 3185package 3186length. Adds a new remark for a Package() declaration if an initializer 3187list 3188exists, but is shorter than the declared length of the package. Although 3189technically legal, this is probably a coding error and it is seen in the 3190field. ACPICA BZ 815. Lin Ming, Bob Moore. 3191 3192iASL: Fixed a problem where the compiler could fault after the maximum 3193number 3194of errors was reached (200). 3195 3196acpixtract: Fixed a possible warning for pointer cast if the compiler 3197warning 3198level set very high. 3199 3200---------------------------------------- 320113 October 2009. Summary of changes for version 20091013: 3202 32031) ACPI CA Core Subsystem: 3204 3205Fixed a problem where an Operation Region _REG method could be executed 3206more 3207than once. If a custom address space handler is installed by the host 3208before 3209the "initialize operation regions" phase of the ACPICA initialization, any 3210_REG methods for that address space could be executed twice. This change 3211fixes the problem. ACPICA BZ 427. Lin Ming. 3212 3213Fixed a possible memory leak for the Scope() ASL operator. When the exact 3214invocation of "Scope(\)" is executed (change scope to root), one internal 3215operand object was leaked. Lin Ming. 3216 3217Implemented a run-time repair for the _MAT predefined method. If the _MAT 3218return value is defined as a Field object in the AML, and the field 3219size is less than or equal to the default width of an integer (32 or 322064),_MAT 3221can incorrectly return an Integer instead of a Buffer. ACPICA now 3222automatically repairs this problem. ACPICA BZ 810. 3223 3224Implemented a run-time repair for the _BIF and _BIX predefined methods. 3225The 3226"OEM Information" field is often incorrectly returned as an Integer with 3227value zero if the field is not supported by the platform. This is due to 3228an 3229ambiguity in the ACPI specification. The field should always be a string. 3230ACPICA now automatically repairs this problem by returning a NULL string 3231within the returned Package. ACPICA BZ 807. 3232 3233Example Code and Data Size: These are the sizes for the OS-independent 3234acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3235debug version of the code includes the debug output trace mechanism and 3236has a 3237much larger code and data size. 3238 3239 Previous Release: 3240 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 3241 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 3242 Current Release: 3243 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 3244 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 3245 32462) iASL Compiler/Disassembler and Tools: 3247 3248Disassembler: Fixed a problem where references to external symbols that 3249contained one or more parent-prefixes (carats) were not handled correctly, 3250possibly causing a fault. ACPICA BZ 806. Lin Ming. 3251 3252Disassembler: Restructured the code so that all functions that handle 3253external symbols are in a single module. One new file is added, 3254common/dmextern.c. 3255 3256AML Debugger: Added a max count argument for the Batch command (which 3257executes multiple predefined methods within the namespace.) 3258 3259iASL: Updated the compiler documentation (User Reference.) Available at 3260http://www.acpica.org/documentation/. ACPICA BZ 750. 3261 3262AcpiXtract: Updated for Lint and other formatting changes. Close all open 3263files. 3264 3265---------------------------------------- 326603 September 2009. Summary of changes for version 20090903: 3267 32681) ACPI CA Core Subsystem: 3269 3270For Windows Vista compatibility, added the automatic execution of an _INI 3271method located at the namespace root (\_INI). This method is executed at 3272table load time. This support is in addition to the automatic execution of 3273\_SB._INI. Lin Ming. 3274 3275Fixed a possible memory leak in the interpreter for AML package objects if 3276the package initializer list is longer than the defined size of the 3277package. 3278This apparently can only happen if the BIOS changes the package size on 3279the 3280fly (seen in a _PSS object), as ASL compilers do not allow this. The 3281interpreter will truncate the package to the defined size (and issue an 3282error 3283message), but previously could leave the extra objects undeleted if they 3284were 3285pre-created during the argument processing (such is the case if the 3286package 3287consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 3288 3289Fixed a problem seen when a Buffer or String is stored to itself via ASL. 3290This has been reported in the field. Previously, ACPICA would zero out the 3291buffer/string. Now, the operation is treated as a noop. Provides Windows 3292compatibility. ACPICA BZ 803. Lin Ming. 3293 3294Removed an extraneous error message for ASL constructs of the form 3295Store(LocalX,LocalX) when LocalX is uninitialized. These curious 3296statements 3297are seen in many BIOSs and are once again treated as NOOPs and no error is 3298emitted when they are encountered. ACPICA BZ 785. 3299 3300Fixed an extraneous warning message if a _DSM reserved method returns a 3301Package object. _DSM can return any type of object, so validation on the 3302return type cannot be performed. ACPICA BZ 802. 3303 3304Example Code and Data Size: These are the sizes for the OS-independent 3305acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3306debug version of the code includes the debug output trace mechanism and 3307has a 3308much larger code and data size. 3309 3310 Previous Release: 3311 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 3312 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 3313 Current Release: 3314 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 3315 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 3316 33172) iASL Compiler/Disassembler and Tools: 3318 3319iASL: Fixed a problem with the use of the Alias operator and Resource 3320Templates. The correct alias is now constructed and no error is emitted. 3321ACPICA BZ 738. 3322 3323iASL: Implemented the -I option to specify additional search directories 3324for 3325include files. Allows multiple additional search paths for include files. 3326Directories are searched in the order specified on the command line (after 3327the local directory is searched.) ACPICA BZ 800. 3328 3329iASL: Fixed a problem where the full pathname for include files was not 3330emitted for warnings/errors. This caused the IDE support to not work 3331properly. ACPICA BZ 765. 3332 3333iASL: Implemented the -@ option to specify a Windows-style response file 3334containing additional command line options. ACPICA BZ 801. 3335 3336AcpiExec: Added support to load multiple AML files simultaneously (such as 3337a 3338DSDT and multiple SSDTs). Also added support for wildcards within the AML 3339pathname. These features allow all machine tables to be easily loaded and 3340debugged together. ACPICA BZ 804. 3341 3342Disassembler: Added missing support for disassembly of HEST table Error 3343Bank 3344subtables. 3345 3346---------------------------------------- 334730 July 2009. Summary of changes for version 20090730: 3348 3349The ACPI 4.0 implementation for ACPICA is complete with this release. 3350 33511) ACPI CA Core Subsystem: 3352 3353ACPI 4.0: Added header file support for all new and changed ACPI tables. 3354Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new 3355for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 3356BERT, 3357EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 3358There 3359have been some ACPI 4.0 changes to other existing tables. Split the large 3360actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 3361 3362ACPI 4.0: Implemented predefined name validation for all new names. There 3363are 336431 new names in ACPI 4.0. The predefined validation module was split into 3365two 3366files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 3367 3368Implemented support for so-called "module-level executable code". This is 3369executable AML code that exists outside of any control method and is 3370intended 3371to be executed at table load time. Although illegal since ACPI 2.0, this 3372type 3373of code still exists and is apparently still being created. Blocks of this 3374code are now detected and executed as intended. Currently, the code blocks 3375must exist under either an If, Else, or While construct; these are the 3376typical cases seen in the field. ACPICA BZ 762. Lin Ming. 3377 3378Implemented an automatic dynamic repair for predefined names that return 3379nested Package objects. This applies to predefined names that are defined 3380to 3381return a variable-length Package of sub-packages. If the number of sub- 3382packages is one, BIOS code is occasionally seen that creates a simple 3383single 3384package with no sub-packages. This code attempts to fix the problem by 3385wrapping a new package object around the existing package. These methods 3386can 3387be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ 3388790. 3389 3390Fixed a regression introduced in 20090625 for the AcpiGetDevices 3391interface. 3392The _HID/_CID matching was broken and no longer matched IDs correctly. 3393ACPICA 3394BZ 793. 3395 3396Fixed a problem with AcpiReset where the reset would silently fail if the 3397register was one of the protected I/O ports. AcpiReset now bypasses the 3398port 3399validation mechanism. This may eventually be driven into the 3400AcpiRead/Write 3401interfaces. 3402 3403Fixed a regression related to the recent update of the AcpiRead/Write 3404interfaces. A sleep/suspend could fail if the optional PM2 Control 3405register 3406does not exist during an attempt to write the Bus Master Arbitration bit. 3407(However, some hosts already delete the code that writes this bit, and the 3408code may in fact be obsolete at this date.) ACPICA BZ 799. 3409 3410Fixed a problem where AcpiTerminate could fault if inadvertently called 3411twice 3412in succession. ACPICA BZ 795. 3413 3414Example Code and Data Size: These are the sizes for the OS-independent 3415acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3416debug version of the code includes the debug output trace mechanism and 3417has a 3418much larger code and data size. 3419 3420 Previous Release: 3421 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 3422 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 3423 Current Release: 3424 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 3425 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 3426 34272) iASL Compiler/Disassembler and Tools: 3428 3429ACPI 4.0: Implemented disassembler support for all new ACPI tables and 3430changes to existing tables. ACPICA BZ 775. 3431 3432---------------------------------------- 343325 June 2009. Summary of changes for version 20090625: 3434 3435The ACPI 4.0 Specification was released on June 16 and is available at 3436www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 3437continue for the next few releases. 3438 34391) ACPI CA Core Subsystem: 3440 3441ACPI 4.0: Implemented interpreter support for the IPMI operation region 3442address space. Includes support for bi-directional data buffers and an 3443IPMI 3444address space handler (to be installed by an IPMI device driver.) ACPICA 3445BZ 3446773. Lin Ming. 3447 3448ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes 3449support in both the header files and the disassembler. 3450 3451Completed a major update for the AcpiGetObjectInfo external interface. 3452Changes include: 3453 - Support for variable, unlimited length HID, UID, and CID strings. 3454 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 3455etc.) 3456 - Call the _SxW power methods on behalf of a device object. 3457 - Determine if a device is a PCI root bridge. 3458 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 3459These changes will require an update to all callers of this interface. See 3460the updated ACPICA Programmer Reference for details. One new source file 3461has 3462been added - utilities/utids.c. ACPICA BZ 368, 780. 3463 3464Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 3465transfers. The Value parameter has been extended from 32 bits to 64 bits 3466in 3467order to support new ACPI 4.0 tables. These changes will require an update 3468to 3469all callers of these interfaces. See the ACPICA Programmer Reference for 3470details. ACPICA BZ 768. 3471 3472Fixed several problems with AcpiAttachData. The handler was not invoked 3473when 3474the host node was deleted. The data sub-object was not automatically 3475deleted 3476when the host node was deleted. The interface to the handler had an unused 3477parameter, this was removed. ACPICA BZ 778. 3478 3479Enhanced the function that dumps ACPI table headers. All non-printable 3480characters in the string fields are now replaced with '?' (Signature, 3481OemId, 3482OemTableId, and CompilerId.) ACPI tables with non-printable characters in 3483these fields are occasionally seen in the field. ACPICA BZ 788. 3484 3485Fixed a problem with predefined method repair code where the code that 3486attempts to repair/convert an object of incorrect type is only executed on 3487the first time the predefined method is called. The mechanism that 3488disables 3489warnings on subsequent calls was interfering with the repair mechanism. 3490ACPICA BZ 781. 3491 3492Fixed a possible memory leak in the predefined validation/repair code when 3493a 3494buffer is automatically converted to an expected string object. 3495 3496Removed obsolete 16-bit files from the distribution and from the current 3497git 3498tree head. ACPICA BZ 776. 3499 3500Example Code and Data Size: These are the sizes for the OS-independent 3501acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3502debug version of the code includes the debug output trace mechanism and 3503has a 3504much larger code and data size. 3505 3506 Previous Release: 3507 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 3508 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 3509 Current Release: 3510 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 3511 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 3512 35132) iASL Compiler/Disassembler and Tools: 3514 3515ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 3516operation region keyword. ACPICA BZ 771, 772. Lin Ming. 3517 3518ACPI 4.0: iASL - implemented compile-time validation support for all new 3519predefined names and control methods (31 total). ACPICA BZ 769. 3520 3521---------------------------------------- 352221 May 2009. Summary of changes for version 20090521: 3523 35241) ACPI CA Core Subsystem: 3525 3526Disabled the preservation of the SCI enable bit in the PM1 control 3527register. 3528The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to 3529be 3530a "preserved" bit - "OSPM always preserves this bit position", section 35314.7.3.2.1. However, some machines fail if this bit is in fact preserved 3532because the bit needs to be explicitly set by the OS as a workaround. No 3533machines fail if the bit is not preserved. Therefore, ACPICA no longer 3534attempts to preserve this bit. 3535 3536Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 3537incorrectly formed _PRT package could cause a fault. Added validation to 3538ensure that each package element is actually a sub-package. 3539 3540Implemented a new interface to install or override a single control 3541method, 3542AcpiInstallMethod. This interface is useful when debugging in order to 3543repair 3544an existing method or to install a missing method without having to 3545override 3546the entire ACPI table. See the ACPICA Programmer Reference for use and 3547examples. Lin Ming, Bob Moore. 3548 3549Fixed several reference count issues with the DdbHandle object that is 3550created from a Load or LoadTable operator. Prevent premature deletion of 3551the 3552object. Also, mark the object as invalid once the table has been unloaded. 3553This is needed because the handle itself may not be deleted after the 3554table 3555unload, depending on whether it has been stored in a named object by the 3556caller. Lin Ming. 3557 3558Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 3559mutexes of the same sync level are acquired but then not released in 3560strict 3561opposite order, the internally maintained Current Sync Level becomes 3562confused 3563and can cause subsequent execution errors. ACPICA BZ 471. 3564 3565Changed the allowable release order for ASL mutex objects. The ACPI 4.0 3566specification has been changed to make the SyncLevel for mutex objects 3567more 3568useful. When releasing a mutex, the SyncLevel of the mutex must now be the 3569same as the current sync level. This makes more sense than the previous 3570rule 3571(SyncLevel less than or equal). This change updates the code to match the 3572specification. 3573 3574Fixed a problem with the local version of the AcpiOsPurgeCache function. 3575The 3576(local) cache must be locked during all cache object deletions. Andrew 3577Baumann. 3578 3579Updated the Load operator to use operation region interfaces. This 3580replaces 3581direct memory mapping with region access calls. Now, all region accesses 3582go 3583through the installed region handler as they should. 3584 3585Simplified and optimized the NsGetNextNode function. Reduced parameter 3586count 3587and reduced code for this frequently used function. 3588 3589Example Code and Data Size: These are the sizes for the OS-independent 3590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3591debug version of the code includes the debug output trace mechanism and 3592has a 3593much larger code and data size. 3594 3595 Previous Release: 3596 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 3597 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 3598 Current Release: 3599 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 3600 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 3601 36022) iASL Compiler/Disassembler and Tools: 3603 3604Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 3605problems 3606with sub-table disassembly and handling invalid sub-tables. Attempt 3607recovery 3608after an invalid sub-table ID. 3609 3610---------------------------------------- 361122 April 2009. Summary of changes for version 20090422: 3612 36131) ACPI CA Core Subsystem: 3614 3615Fixed a compatibility issue with the recently released I/O port protection 3616mechanism. For windows compatibility, 1) On a port protection violation, 3617simply ignore the request and do not return an exception (allow the 3618control 3619method to continue execution.) 2) If only part of the request overlaps a 3620protected port, read/write the individual ports that are not protected. 3621Linux 3622BZ 13036. Lin Ming 3623 3624Enhanced the execution of the ASL/AML BreakPoint operator so that it 3625actually 3626breaks into the AML debugger if the debugger is present. This matches the 3627ACPI-defined behavior. 3628 3629Fixed several possible warnings related to the use of the configurable 3630ACPI_THREAD_ID. This type can now be configured as either an integer or a 3631pointer with no warnings. Also fixes several warnings in printf-like 3632statements for the 64-bit build when the type is configured as a pointer. 3633ACPICA BZ 766, 767. 3634 3635Fixed a number of possible warnings when compiling with gcc 4+ (depending 3636on 3637warning options.) Examples include printf formats, aliasing, unused 3638globals, 3639missing prototypes, missing switch default statements, use of non-ANSI 3640library functions, use of non-ANSI constructs. See generate/unix/Makefile 3641for 3642a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 3643 3644Example Code and Data Size: These are the sizes for the OS-independent 3645acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3646debug version of the code includes the debug output trace mechanism and 3647has a 3648much larger code and data size. 3649 3650 Previous Release: 3651 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 3652 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 3653 Current Release: 3654 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 3655 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 3656 36572) iASL Compiler/Disassembler and Tools: 3658 3659iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings 3660on 3661the 64-bit build. 3662 3663iASL: Fixed a problem where the Unix/Linux versions of the compiler could 3664not 3665correctly digest Windows/DOS formatted files (with CR/LF). 3666 3667iASL: Added a new option for "quiet mode" (-va) that produces only the 3668compilation summary, not individual errors and warnings. Useful for large 3669batch compilations. 3670 3671AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex 3672timeout that can be used to detect hang conditions during execution of AML 3673code (includes both internal semaphores and AML-defined mutexes and 3674events.) 3675 3676Added new makefiles for the generation of acpica in a generic unix-like 3677environment. These makefiles are intended to generate the acpica tools and 3678utilities from the original acpica git source tree structure. 3679 3680Test Suites: Updated and cleaned up the documentation files. Updated the 3681copyrights to 2009, affecting all source files. Use the new version of 3682iASL 3683with quiet mode. Increased the number of available semaphores in the 3684Windows 3685OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 3686added 3687an alternate implementation of the semaphore timeout to allow aslts to 3688execute fully on Cygwin. 3689 3690---------------------------------------- 369120 March 2009. Summary of changes for version 20090320: 3692 36931) ACPI CA Core Subsystem: 3694 3695Fixed a possible race condition between AcpiWalkNamespace and dynamic 3696table 3697unloads. Added a reader/writer locking mechanism to allow multiple 3698concurrent 3699namespace walks (readers), but block a dynamic table unload until it can 3700gain 3701exclusive write access to the namespace. This fixes a problem where a 3702table 3703unload could (possibly catastrophically) delete the portion of the 3704namespace 3705that is currently being examined by a walk. Adds a new file, utlock.c, 3706that 3707implements the reader/writer lock mechanism. ACPICA BZ 749. 3708 3709Fixed a regression introduced in version 20090220 where a change to the 3710FADT 3711handling could cause the ACPICA subsystem to access non-existent I/O 3712ports. 3713 3714Modified the handling of FADT register and table (FACS/DSDT) addresses. 3715The 3716FADT can contain both 32-bit and 64-bit versions of these addresses. 3717Previously, the 64-bit versions were favored, meaning that if both 32 and 371864 3719versions were valid, but not equal, the 64-bit version was used. This was 3720found to cause some machines to fail. Now, in this case, the 32-bit 3721version 3722is used instead. This now matches the Windows behavior. 3723 3724Implemented a new mechanism to protect certain I/O ports. Provides 3725Microsoft 3726compatibility and protects the standard PC I/O ports from access via AML 3727code. Adds a new file, hwvalid.c 3728 3729Fixed a possible extraneous warning message from the FADT support. The 3730message warns of a 32/64 length mismatch between the legacy and GAS 3731definitions for a register. 3732 3733Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 3734is 3735made obsolete by the port protection mechanism above. It was previously 3736used 3737to validate the entire address range of an operation region, which could 3738be 3739incorrect if the range included illegal ports, but fields within the 3740operation region did not actually access those ports. Validation is now 3741performed on a per-field basis instead of the entire region. 3742 3743Modified the handling of the PM1 Status Register ignored bit (bit 11.) 3744Ignored bits must be "preserved" according to the ACPI spec. Usually, this 3745means a read/modify/write when writing to the register. However, for 3746status 3747registers, writing a one means clear the event. Writing a zero means 3748preserve 3749the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, 3750and the ACPICA code now simply always writes a zero to the ignored bit. 3751 3752Modified the handling of ignored bits for the PM1 A/B Control Registers. 3753As 3754per the ACPI specification, for the control registers, preserve 3755(read/modify/write) all bits that are defined as either reserved or 3756ignored. 3757 3758Updated the handling of write-only bits in the PM1 A/B Control Registers. 3759When reading the register, zero the write-only bits as per the ACPI spec. 3760ACPICA BZ 443. Lin Ming. 3761 3762Removed "Linux" from the list of supported _OSI strings. Linux no longer 3763wants to reply true to this request. The Windows strings are the only 3764paths 3765through the AML that are tested and known to work properly. 3766 3767 Previous Release: 3768 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 3769 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 3770 Current Release: 3771 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 3772 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 3773 37742) iASL Compiler/Disassembler and Tools: 3775 3776Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 3777and 3778aetables.c 3779 3780---------------------------------------- 378120 February 2009. Summary of changes for version 20090220: 3782 37831) ACPI CA Core Subsystem: 3784 3785Optimized the ACPI register locking. Removed locking for reads from the 3786ACPI 3787bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is 3788not required when reading the single-bit registers. The 3789AcpiGetRegisterUnlocked function is no longer needed and has been removed. 3790This will improve performance for reads on these registers. ACPICA BZ 760. 3791 3792Fixed the parameter validation for AcpiRead/Write. Now return 3793AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS 3794if 3795the register has an address of zero. Previously, these cases simply 3796returned 3797AE_OK. For optional registers such as PM1B status/enable/control, the 3798caller 3799should check for a valid register address before calling. ACPICA BZ 748. 3800 3801Renamed the external ACPI bit register access functions. Renamed 3802AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 3803functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. 3804Also, restructured the code for these functions by simplifying the code 3805path 3806and condensing duplicate code to reduce code size. 3807 3808Added new functions to transparently handle the possibly split PM1 A/B 3809registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions 3810now handle the split registers for PM1 Status, Enable, and Control. ACPICA 3811BZ 3812746. 3813 3814Added a function to handle the PM1 control registers, 3815AcpiHwWritePm1Control. 3816This function writes both of the PM1 control registers (A/B). These 3817registers 3818are different than the PM1 A/B status and enable registers in that 3819different 3820values can be written to the A/B registers. Most notably, the SLP_TYP bits 3821can be different, as per the values returned from the _Sx predefined 3822methods. 3823 3824Removed an extra register write within AcpiHwClearAcpiStatus. This 3825function 3826was writing an optional PM1B status register twice. The existing call to 3827the 3828low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 3829A/B 3830register. ACPICA BZ 751. 3831 3832Split out the PM1 Status registers from the FADT. Added new globals for 3833these 3834registers (A/B), similar to the way the PM1 Enable registers are handled. 3835Instead of overloading the FADT Event Register blocks. This makes the code 3836clearer and less prone to error. 3837 3838Fixed the warning message for when the platform contains too many ACPI 3839tables 3840for the default size of the global root table data structure. The 3841calculation 3842for the truncation value was incorrect. 3843 3844Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 3845obsolete macro, since it is now a simple reference to ->common.type. There 3846were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 3847 3848Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 3849TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 3850simply SLEEP_TYPE. ACPICA BZ 754. 3851 3852Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 3853function is only needed on 64-bit host operating systems and is thus not 3854included for 32-bit hosts. 3855 3856Debug output: print the input and result for invocations of the _OSI 3857reserved 3858control method via the ACPI_LV_INFO debug level. Also, reduced some of the 3859verbosity of this debug level. Len Brown. 3860 3861Example Code and Data Size: These are the sizes for the OS-independent 3862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3863debug version of the code includes the debug output trace mechanism and 3864has a 3865much larger code and data size. 3866 3867 Previous Release: 3868 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 3869 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 3870 Current Release: 3871 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 3872 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 3873 38742) iASL Compiler/Disassembler and Tools: 3875 3876Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 3877various legal performance profiles. 3878 3879---------------------------------------- 388023 January 2009. Summary of changes for version 20090123: 3881 38821) ACPI CA Core Subsystem: 3883 3884Added the 2009 copyright to all module headers and signons. This affects 3885virtually every file in the ACPICA core subsystem, the iASL compiler, and 3886the tools/utilities. 3887 3888Implemented a change to allow the host to override any ACPI table, 3889including 3890dynamically loaded tables. Previously, only the DSDT could be replaced by 3891the 3892host. With this change, the AcpiOsTableOverride interface is called for 3893each 3894table found in the RSDT/XSDT during ACPICA initialization, and also 3895whenever 3896a table is dynamically loaded via the AML Load operator. 3897 3898Updated FADT flag definitions, especially the Boot Architecture flags. 3899 3900Debugger: For the Find command, automatically pad the input ACPI name with 3901underscores if the name is shorter than 4 characters. This enables a match 3902with the actual namespace entry which is itself padded with underscores. 3903 3904Example Code and Data Size: These are the sizes for the OS-independent 3905acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3906debug version of the code includes the debug output trace mechanism and 3907has a 3908much larger code and data size. 3909 3910 Previous Release: 3911 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 3912 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 3913 Current Release: 3914 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 3915 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 3916 39172) iASL Compiler/Disassembler and Tools: 3918 3919Fix build error under Bison-2.4. 3920 3921Dissasembler: Enhanced FADT support. Added decoding of the Boot 3922Architecture 3923flags. Now decode all flags, regardless of the FADT version. Flag output 3924includes the FADT version which first defined each flag. 3925 3926The iASL -g option now dumps the RSDT to a file (in addition to the FADT 3927and 3928DSDT). Windows only. 3929 3930---------------------------------------- 393104 December 2008. Summary of changes for version 20081204: 3932 39331) ACPI CA Core Subsystem: 3934 3935The ACPICA Programmer Reference has been completely updated and revamped 3936for 3937this release. This includes updates to the external interfaces, OSL 3938interfaces, the overview sections, and the debugger reference. 3939 3940Several new ACPICA interfaces have been implemented and documented in the 3941programmer reference: 3942AcpiReset - Writes the reset value to the FADT-defined reset register. 3943AcpiDisableAllGpes - Disable all available GPEs. 3944AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 3945AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 3946AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 3947AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 3948AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 3949 3950Most of the public ACPI hardware-related interfaces have been moved to a 3951new 3952file, components/hardware/hwxface.c 3953 3954Enhanced the FADT parsing and low-level ACPI register access: The ACPI 3955register lengths within the FADT are now used, and the low level ACPI 3956register access no longer hardcodes the ACPI register lengths. Given that 3957there may be some risk in actually trusting the FADT register lengths, a 3958run- 3959time option was added to fall back to the default hardcoded lengths if the 3960FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 3961option is set to true for now, and a warning is issued if a suspicious 3962FADT 3963register length is overridden with the default value. 3964 3965Fixed a reference count issue in NsRepairObject. This problem was 3966introduced 3967in version 20081031 as part of a fix to repair Buffer objects within 3968Packages. Lin Ming. 3969 3970Added semaphore support to the Linux/Unix application OS-services layer 3971(OSL). ACPICA BZ 448. Lin Ming. 3972 3973Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 3974will 3975be implemented in the OSL, or will binary semaphores be used instead. 3976 3977Example Code and Data Size: These are the sizes for the OS-independent 3978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3979debug version of the code includes the debug output trace mechanism and 3980has a 3981much larger code and data size. 3982 3983 Previous Release: 3984 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 3985 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 3986 Current Release: 3987 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 3988 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 3989 39902) iASL Compiler/Disassembler and Tools: 3991 3992iASL: Completed the '-e' option to include additional ACPI tables in order 3993to 3994aid with disassembly and External statement generation. ACPICA BZ 742. Lin 3995Ming. 3996 3997iASL: Removed the "named object in while loop" error. The compiler cannot 3998determine how many times a loop will execute. ACPICA BZ 730. 3999 4000Disassembler: Implemented support for FADT revision 2 (MS extension). 4001ACPICA 4002BZ 743. 4003 4004Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). 4005 4006---------------------------------------- 400731 October 2008. Summary of changes for version 20081031: 4008 40091) ACPI CA Core Subsystem: 4010 4011Restructured the ACPICA header files into public/private. acpi.h now 4012includes 4013only the "public" acpica headers. All other acpica headers are "private" 4014and 4015should not be included by acpica users. One new file, accommon.h is used 4016to 4017include the commonly used private headers for acpica code generation. 4018Future 4019plans include moving all private headers to a new subdirectory. 4020 4021Implemented an automatic Buffer->String return value conversion for 4022predefined ACPI methods. For these methods (such as _BIF), added automatic 4023conversion for return objects that are required to be a String, but a 4024Buffer 4025was found instead. This can happen when reading string battery data from 4026an 4027operation region, because it used to be difficult to convert the data from 4028buffer to string from within the ASL. Ensures that the host OS is provided 4029with a valid null-terminated string. Linux BZ 11822. 4030 4031Updated the FACS waking vector interfaces. Split 4032AcpiSetFirmwareWakingVector 4033into two: one for the 32-bit vector, another for the 64-bit vector. This 4034is 4035required because the host OS must setup the wake much differently for each 4036vector (real vs. protected mode, etc.) and the interface itself should not 4037be 4038deciding which vector to use. Also, eliminated the GetFirmwareWakingVector 4039interface, as it served no purpose (only the firmware reads the vector, OS 4040only writes the vector.) ACPICA BZ 731. 4041 4042Implemented a mechanism to escape infinite AML While() loops. Added a loop 4043counter to force exit from AML While loops if the count becomes too large. 4044This can occur in poorly written AML when the hardware does not respond 4045within a while loop and the loop does not implement a timeout. The maximum 4046loop count is configurable. A new exception code is returned when a loop 4047is 4048broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 4049 4050Optimized the execution of AML While loops. Previously, a control state 4051object was allocated and freed for each execution of the loop. The 4052optimization is to simply reuse the control state for each iteration. This 4053speeds up the raw loop execution time by about 5%. 4054 4055Enhanced the implicit return mechanism. For Windows compatibility, return 4056an 4057implicit integer of value zero for methods that contain no executable 4058code. 4059Such methods are seen in the field as stubs (presumably), and can cause 4060drivers to fail if they expect a return value. Lin Ming. 4061 4062Allow multiple backslashes as root prefixes in namepaths. In a fully 4063qualified namepath, allow multiple backslash prefixes. This can happen 4064(and 4065is seen in the field) because of the use of a double-backslash in strings 4066(since backslash is the escape character) causing confusion. ACPICA BZ 739 4067Lin Ming. 4068 4069Emit a warning if two different FACS or DSDT tables are discovered in the 4070FADT. Checks if there are two valid but different addresses for the FACS 4071and 4072DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 4073 4074Consolidated the method argument count validation code. Merged the code 4075that 4076validates control method argument counts into the predefined validation 4077module. Eliminates possible multiple warnings for incorrect argument 4078counts. 4079 4080Implemented ACPICA example code. Includes code for ACPICA initialization, 4081handler installation, and calling a control method. Available at 4082source/tools/examples. 4083 4084Added a global pointer for FACS table to simplify internal FACS access. 4085Use 4086the global pointer instead of using AcpiGetTableByIndex for each FACS 4087access. 4088This simplifies the code for the Global Lock and the Firmware Waking 4089Vector(s). 4090 4091Example Code and Data Size: These are the sizes for the OS-independent 4092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4093debug version of the code includes the debug output trace mechanism and 4094has a 4095much larger code and data size. 4096 4097 Previous Release: 4098 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 4099 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 4100 Current Release: 4101 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 4102 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 4103 41042) iASL Compiler/Disassembler and Tools: 4105 4106iASL: Improved disassembly of external method calls. Added the -e option 4107to 4108allow the inclusion of additional ACPI tables to help with the disassembly 4109of 4110method invocations and the generation of external declarations during the 4111disassembly. Certain external method invocations cannot be disassembled 4112properly without the actual declaration of the method. Use the -e option 4113to 4114include the table where the external method(s) are actually declared. Most 4115useful for disassembling SSDTs that make method calls back to the master 4116DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 4117-d 4118-e dsdt.aml ssdt1.aml 4119 4120iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 4121problem where the use of an alias within a namepath would result in a not 4122found error or cause the compiler to fault. Also now allows forward 4123references from the Alias operator itself. ACPICA BZ 738. 4124 4125---------------------------------------- 412626 September 2008. Summary of changes for version 20080926: 4127 41281) ACPI CA Core Subsystem: 4129 4130Designed and implemented a mechanism to validate predefined ACPI methods 4131and 4132objects. This code validates the predefined ACPI objects (objects whose 4133names 4134start with underscore) that appear in the namespace, at the time they are 4135evaluated. The argument count and the type of the returned object are 4136validated against the ACPI specification. The purpose of this validation 4137is 4138to detect problems with the BIOS-implemented predefined ACPI objects 4139before 4140the results are returned to the ACPI-related drivers. Future enhancements 4141may 4142include actual repair of incorrect return objects where possible. Two new 4143files are nspredef.c and acpredef.h. 4144 4145Fixed a fault in the AML parser if a memory allocation fails during the Op 4146completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 4147 4148Fixed an issue with implicit return compatibility. This change improves 4149the 4150implicit return mechanism to be more compatible with the MS interpreter. 4151Lin 4152Ming, ACPICA BZ 349. 4153 4154Implemented support for zero-length buffer-to-string conversions. Allow 4155zero 4156length strings during interpreter buffer-to-string conversions. For 4157example, 4158during the ToDecimalString and ToHexString operators, as well as implicit 4159conversions. Fiodor Suietov, ACPICA BZ 585. 4160 4161Fixed two possible memory leaks in the error exit paths of 4162AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are 4163similar in that they use a stack of state objects in order to eliminate 4164recursion. The stack must be fully unwound and deallocated if an error 4165occurs. Lin Ming. ACPICA BZ 383. 4166 4167Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 4168global 4169ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 4170Moore ACPICA BZ 442. 4171 4172Removed the obsolete version number in module headers. Removed the 4173"$Revision" number that appeared in each module header. This version 4174number 4175was useful under SourceSafe and CVS, but has no meaning under git. It is 4176not 4177only incorrect, it could also be misleading. 4178 4179Example Code and Data Size: These are the sizes for the OS-independent 4180acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4181debug version of the code includes the debug output trace mechanism and 4182has a 4183much larger code and data size. 4184 4185 Previous Release: 4186 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4187 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 4188 Current Release: 4189 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 4190 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 4191 4192---------------------------------------- 419329 August 2008. Summary of changes for version 20080829: 4194 41951) ACPI CA Core Subsystem: 4196 4197Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 4198Reference. Changes include the elimination of cheating on the Object field 4199for the DdbHandle subtype, addition of a reference class field to 4200differentiate the various reference types (instead of an AML opcode), and 4201the 4202cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 4203 4204Reduce an error to a warning for an incorrect method argument count. 4205Previously aborted with an error if too few arguments were passed to a 4206control method via the external ACPICA interface. Now issue a warning 4207instead 4208and continue. Handles the case where the method inadvertently declares too 4209many arguments, but does not actually use the extra ones. Applies mainly 4210to 4211the predefined methods. Lin Ming. Linux BZ 11032. 4212 4213Disallow the evaluation of named object types with no intrinsic value. 4214Return 4215AE_TYPE for objects that have no value and therefore evaluation is 4216undefined: 4217Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 4218of 4219these types were allowed, but an exception would be generated at some 4220point 4221during the evaluation. Now, the error is generated up front. 4222 4223Fixed a possible memory leak in the AcpiNsGetExternalPathname function 4224(nsnames.c). Fixes a leak in the error exit path. 4225 4226Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 4227debug 4228levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 4229ACPI_EXCEPTION 4230interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 4231ACPI_LV_EVENTS. 4232 4233Removed obsolete and/or unused exception codes from the acexcep.h header. 4234There is the possibility that certain device drivers may be affected if 4235they 4236use any of these exceptions. 4237 4238The ACPICA documentation has been added to the public git source tree, 4239under 4240acpica/documents. Included are the ACPICA programmer reference, the iASL 4241compiler reference, and the changes.txt release logfile. 4242 4243Example Code and Data Size: These are the sizes for the OS-independent 4244acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4245debug version of the code includes the debug output trace mechanism and 4246has a 4247much larger code and data size. 4248 4249 Previous Release: 4250 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4251 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 4252 Current Release: 4253 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4254 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 4255 42562) iASL Compiler/Disassembler and Tools: 4257 4258Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 4259defines _SCP with 3 arguments. Previous versions defined it with only 1 4260argument. iASL now allows both definitions. 4261 4262iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- 4263length subtables when disassembling ACPI tables. Also fixed a couple of 4264errors where a full 16-bit table type field was not extracted from the 4265input 4266properly. 4267 4268acpisrc: Improve comment counting mechanism for generating source code 4269statistics. Count first and last lines of multi-line comments as 4270whitespace, 4271not comment lines. Handle Linux legal header in addition to standard 4272acpica 4273header. 4274 4275---------------------------------------- 4276 427729 July 2008. Summary of changes for version 20080729: 4278 42791) ACPI CA Core Subsystem: 4280 4281Fix a possible deadlock in the GPE dispatch. Remove call to 4282AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 4283attempt 4284to acquire the GPE lock but can deadlock since the GPE lock is already 4285held 4286at dispatch time. This code was introduced in version 20060831 as a 4287response 4288to Linux BZ 6881 and has since been removed from Linux. 4289 4290Add a function to dereference returned reference objects. Examines the 4291return 4292object from a call to AcpiEvaluateObject. Any Index or RefOf references 4293are 4294automatically dereferenced in an attempt to return something useful (these 4295reference types cannot be converted into an external ACPI_OBJECT.) 4296Provides 4297MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 4298 4299x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 4300subtables for the MADT and one new subtable for the SRAT. Includes 4301disassembler and AcpiSrc support. Data from the Intel 64 Architecture 4302x2APIC 4303Specification, June 2008. 4304 4305Additional error checking for pathname utilities. Add error check after 4306all 4307calls to AcpiNsGetPathnameLength. Add status return from 4308AcpiNsBuildExternalPath and check after all calls. Add parameter 4309validation 4310to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 4311 4312Return status from the global init function AcpiUtGlobalInitialize. This 4313is 4314used by both the kernel subsystem and the utilities such as iASL compiler. 4315The function could possibly fail when the caches are initialized. Yang Yi. 4316 4317Add a function to decode reference object types to strings. Created for 4318improved error messages. 4319 4320Improve object conversion error messages. Better error messages during 4321object 4322conversion from internal to the external ACPI_OBJECT. Used for external 4323calls 4324to AcpiEvaluateObject. 4325 4326Example Code and Data Size: These are the sizes for the OS-independent 4327acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4328debug version of the code includes the debug output trace mechanism and 4329has a 4330much larger code and data size. 4331 4332 Previous Release: 4333 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 4334 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 4335 Current Release: 4336 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 4337 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 4338 43392) iASL Compiler/Disassembler and Tools: 4340 4341Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 4342introduced in version 20080701. If the object being evaluated (via execute 4343command) is not a method, the debugger can hang while trying to obtain 4344non- 4345existent parameters. 4346 4347iASL: relax error for using reserved "_T_x" identifiers. These names can 4348appear in a disassembled ASL file if they were emitted by the original 4349compiler. Instead of issuing an error or warning and forcing the user to 4350manually change these names, issue a remark instead. 4351 4352iASL: error if named object created in while loop. Emit an error if any 4353named 4354object is created within a While loop. If allowed, this code will generate 4355a 4356run-time error on the second iteration of the loop when an attempt is made 4357to 4358create the same named object twice. ACPICA bugzilla 730. 4359 4360iASL: Support absolute pathnames for include files. Add support for 4361absolute 4362pathnames within the Include operator. previously, only relative pathnames 4363were supported. 4364 4365iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 4366Descriptor. 4367The ACPI spec requires one interrupt minimum. BZ 423 4368 4369iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 4370Handles the case for the Interrupt Resource Descriptor where 4371the ResourceSource argument is omitted but ResourceSourceIndex 4372is present. Now leave room for the Index. BZ 426 4373 4374iASL: Prevent error message if CondRefOf target does not exist. Fixes 4375cases 4376where an error message is emitted if the target does not exist. BZ 516 4377 4378iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 4379(get ACPI tables on Windows). This was apparently broken in version 438020070919. 4381 4382AcpiXtract: Handle EOF while extracting data. Correctly handle the case 4383where 4384the EOF happens immediately after the last table in the input file. Print 4385completion message. Previously, no message was displayed in this case. 4386 4387---------------------------------------- 438801 July 2008. Summary of changes for version 20080701: 4389 43900) Git source tree / acpica.org 4391 4392Fixed a problem where a git-clone from http would not transfer the entire 4393source tree. 4394 43951) ACPI CA Core Subsystem: 4396 4397Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 4398enable bit. Now performs a read-change-write of the enable register 4399instead 4400of simply writing out the cached enable mask. This will prevent 4401inadvertent 4402enabling of GPEs if a rogue GPE is received during initialization (before 4403GPE 4404handlers are installed.) 4405 4406Implemented a copy for dynamically loaded tables. Previously, dynamically 4407loaded tables were simply mapped - but on some machines this memory is 4408corrupted after suspend. Now copy the table to a local buffer. For the 4409OpRegion case, added checksum verify. Use the table length from the table 4410header, not the region length. For the Buffer case, use the table length 4411also. Dennis Noordsij, Bob Moore. BZ 10734 4412 4413Fixed a problem where the same ACPI table could not be dynamically loaded 4414and 4415unloaded more than once. Without this change, a table cannot be loaded 4416again 4417once it has been loaded/unloaded one time. The current mechanism does not 4418unregister a table upon an unload. During a load, if the same table is 4419found, 4420this no longer returns an exception. BZ 722 4421 4422Fixed a problem where the wrong descriptor length was calculated for the 4423EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag 4424are calculated as 12 bytes long, but the actual length in the internal 4425descriptor is 16 because of the round-up to 8 on the 64-bit build. 4426Reported 4427by Linn Crosetto. BZ 728 4428 4429Fixed a possible memory leak in the Unload operator. The DdbHandle 4430returned 4431by Load() did not have its reference count decremented during unload, 4432leading 4433to a memory leak. Lin Ming. BZ 727 4434 4435Fixed a possible memory leak when deleting thermal/processor objects. Any 4436associated notify handlers (and objects) were not being deleted. Fiodor 4437Suietov. BZ 506 4438 4439Fixed the ordering of the ASCII names in the global mutex table to match 4440the 4441actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 4442only. 4443Vegard Nossum. BZ 726 4444 4445Enhanced the AcpiGetObjectInfo interface to return the number of required 4446arguments if the object is a control method. Added this call to the 4447debugger 4448so the proper number of default arguments are passed to a method. This 4449prevents a warning when executing methods from AcpiExec. 4450 4451Added a check for an invalid handle in AcpiGetObjectInfo. Return 4452AE_BAD_PARAMETER if input handle is invalid. BZ 474 4453 4454Fixed an extraneous warning from exconfig.c on the 64-bit build. 4455 4456Example Code and Data Size: These are the sizes for the OS-independent 4457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4458debug version of the code includes the debug output trace mechanism and 4459has a 4460much larger code and data size. 4461 4462 Previous Release: 4463 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 4464 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 4465 Current Release: 4466 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 4467 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 4468 44692) iASL Compiler/Disassembler and Tools: 4470 4471iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 4472resource descriptor names. 4473 4474iASL: Detect invalid ASCII characters in input (windows version). Removed 4475the 4476"-CF" flag from the flex compile, enables correct detection of non-ASCII 4477characters in the input. BZ 441 4478 4479iASL: Eliminate warning when result of LoadTable is not used. Eliminate 4480the 4481"result of operation not used" warning when the DDB handle returned from 4482LoadTable is not used. The warning is not needed. BZ 590 4483 4484AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method 4485to 4486pass address of table to the AML. Added option to disable OpRegion 4487simulation 4488to allow creation of an OpRegion with a real address that was passed to 4489_CFG. 4490All of this allows testing of the Load and Unload operators from AcpiExec. 4491 4492Debugger: update tables command for unloaded tables. Handle unloaded 4493tables 4494and use the standard table header output routine. 4495 4496---------------------------------------- 449709 June 2008. Summary of changes for version 20080609: 4498 44991) ACPI CA Core Subsystem: 4500 4501Implemented a workaround for reversed _PRT entries. A significant number 4502of 4503BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 4504change dynamically detects and repairs this problem. Provides 4505compatibility 4506with MS ACPI. BZ 6859 4507 4508Simplified the internal ACPI hardware interfaces to eliminate the locking 4509flag parameter from Register Read/Write. Added a new external interface, 4510AcpiGetRegisterUnlocked. 4511 4512Fixed a problem where the invocation of a GPE control method could hang. 4513This 4514was a regression introduced in 20080514. The new method argument count 4515validation mechanism can enter an infinite loop when a GPE method is 4516dispatched. Problem fixed by removing the obsolete code that passed GPE 4517block 4518information to the notify handler via the control method parameter 4519pointer. 4520 4521Fixed a problem where the _SST execution status was incorrectly returned 4522to 4523the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 452420080514. _SST is optional and a NOT_FOUND exception should never be 4525returned. BZ 716 4526 4527Fixed a problem where a deleted object could be accessed from within the 4528AML 4529parser. This was a regression introduced in version 20080123 as a fix for 4530the 4531Unload operator. Lin Ming. BZ 10669 4532 4533Cleaned up the debug operand dump mechanism. Eliminated unnecessary 4534operands 4535and eliminated the use of a negative index in a loop. Operands are now 4536displayed in the correct order, not backwards. This also fixes a 4537regression 4538introduced in 20080514 on 64-bit systems where the elimination of 4539ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 4540715 4541 4542Fixed a possible memory leak in EvPciConfigRegionSetup where the error 4543exit 4544path did not delete a locally allocated structure. 4545 4546Updated definitions for the DMAR and SRAT tables to synchronize with the 4547current specifications. Includes disassembler support. 4548 4549Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 4550loop termination value was used. Loop terminated on iteration early, 4551missing 4552one mutex. Linn Crosetto 4553 4554Example Code and Data Size: These are the sizes for the OS-independent 4555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4556debug version of the code includes the debug output trace mechanism and 4557has a 4558much larger code and data size. 4559 4560 Previous Release: 4561 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 4562 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 4563 Current Release: 4564 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 4565 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 4566 45672) iASL Compiler/Disassembler and Tools: 4568 4569Disassembler: Implemented support for EisaId() within _CID objects. Now 4570disassemble integer _CID objects back to EisaId invocations, including 4571multiple integers within _CID packages. Includes single-step support for 4572debugger also. 4573 4574Disassembler: Added support for DMAR and SRAT table definition changes. 4575 4576---------------------------------------- 457714 May 2008. Summary of changes for version 20080514: 4578 45791) ACPI CA Core Subsystem: 4580 4581Fixed a problem where GPEs were enabled too early during the ACPICA 4582initialization. This could lead to "handler not installed" errors on some 4583machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 4584This 4585ensures that all operation regions and devices throughout the namespace 4586have 4587been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 4588 4589Implemented a change to the enter sleep code. Moved execution of the _GTS 4590method to just before setting sleep enable bit. The execution was moved 4591from 4592AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 4593immediately before the SLP_EN bit is set, as per the ACPI specification. 4594Luming Yu, BZ 1653. 4595 4596Implemented a fix to disable unknown GPEs (2nd version). Now always 4597disable 4598the GPE, even if ACPICA thinks that that it is already disabled. It is 4599possible that the AML or some other code has enabled the GPE unbeknownst 4600to 4601the ACPICA code. 4602 4603Fixed a problem with the Field operator where zero-length fields would 4604return 4605an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 4606ASL 4607field declarations in Field(), BankField(), and IndexField(). BZ 10606. 4608 4609Implemented a fix for the Load operator, now load the table at the 4610namespace 4611root. This reverts a change introduced in version 20071019. The table is 4612now 4613loaded at the namespace root even though this goes against the ACPI 4614specification. This provides compatibility with other ACPI 4615implementations. 4616The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 4617Ming. 4618 4619Fixed a problem where ACPICA would not Load() tables with unusual 4620signatures. 4621Now ignore ACPI table signature for Load() operator. Only "SSDT" is 4622acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 4623Therefore, signature validation is worthless. Apparently MS ACPI accepts 4624such 4625signatures, ACPICA must be compatible. BZ 10454. 4626 4627Fixed a possible negative array index in AcpiUtValidateException. Added 4628NULL 4629fields to the exception string arrays to eliminate a -1 subtraction on the 4630SubStatus field. 4631 4632Updated the debug tracking macros to reduce overall code and data size. 4633Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 4634instead of pointers to static strings. Jan Beulich and Bob Moore. 4635 4636Implemented argument count checking in control method invocation via 4637AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 4638many. This applies only to extern programmatic control method execution, 4639not 4640method-to-method calls within the AML. Lin Ming. 4641 4642Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 4643no 4644longer needed, especially with the removal of 16-bit support. It was 4645replaced 4646mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit 4647on 464832/64-bit platforms is required. 4649 4650Added the C const qualifier for appropriate string constants -- mostly 4651MODULE_NAME and printf format strings. Jan Beulich. 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 a 4657much larger code and data size. 4658 4659 Previous Release: 4660 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 4661 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 4662 Current Release: 4663 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 4664 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 4665 46662) iASL Compiler/Disassembler and Tools: 4667 4668Implemented ACPI table revision ID validation in the disassembler. Zero is 4669always invalid. For DSDTs, the ID controls the interpreter integer width. 46701 4671means 32-bit and this is unusual. 2 or greater is 64-bit. 4672 4673---------------------------------------- 467421 March 2008. Summary of changes for version 20080321: 4675 46761) ACPI CA Core Subsystem: 4677 4678Implemented an additional change to the GPE support in order to suppress 4679spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 4680disable incoming GPEs that are neither enabled nor disabled -- meaning 4681that 4682the GPE is unknown to the system. This should prevent future interrupt 4683floods 4684from that GPE. BZ 6217 (Zhang Rui) 4685 4686Fixed a problem where NULL package elements were not returned to the 4687AcpiEvaluateObject interface correctly. The element was simply ignored 4688instead of returning a NULL ACPI_OBJECT package element, potentially 4689causing 4690a buffer overflow and/or confusing the caller who expected a fixed number 4691of 4692elements. BZ 10132 (Lin Ming, Bob Moore) 4693 4694Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 4695Dword, 4696Qword), Field, BankField, and IndexField operators when invoked from 4697inside 4698an executing control method. In this case, these operators created 4699namespace 4700nodes that were incorrectly left marked as permanent nodes instead of 4701temporary nodes. This could cause a problem if there is race condition 4702between an exiting control method and a running namespace walk. (Reported 4703by 4704Linn Crosetto) 4705 4706Fixed a problem where the CreateField and CreateXXXField operators would 4707incorrectly allow duplicate names (the name of the field) with no 4708exception 4709generated. 4710 4711Implemented several changes for Notify handling. Added support for new 4712Notify 4713values (ACPI 2.0+) and improved the Notify debug output. Notify on 4714PowerResource objects is no longer allowed, as per the ACPI specification. 4715(Bob Moore, Zhang Rui) 4716 4717All Reference Objects returned via the AcpiEvaluateObject interface are 4718now 4719marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 4720for 4721NULL objects - either NULL package elements or unresolved named 4722references. 4723 4724Fixed a problem where an extraneous debug message was produced for package 4725objects (when debugging enabled). The message "Package List length larger 4726than NumElements count" is now produced in the correct case, and is now an 4727error message rather than a debug message. Added a debug message for the 4728opposite case, where NumElements is larger than the Package List (the 4729package 4730will be padded out with NULL elements as per the ACPI spec.) 4731 4732Implemented several improvements for the output of the ASL "Debug" object 4733to 4734clarify and keep all data for a given object on one output line. 4735 4736Fixed two size calculation issues with the variable-length Start Dependent 4737resource descriptor. 4738 4739Example Code and Data Size: These are the sizes for the OS-independent 4740acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4741debug version of the code includes the debug output trace mechanism and 4742has 4743a much larger code and data size. 4744 4745 Previous Release: 4746 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 4747 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 4748 Current Release: 4749 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 4750 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 4751 47522) iASL Compiler/Disassembler and Tools: 4753 4754Fixed a problem with the use of the Switch operator where execution of the 4755containing method by multiple concurrent threads could cause an 4756AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 4757actual Switch opcode, it must be simulated with local named temporary 4758variables and if/else pairs. The solution chosen was to mark any method 4759that 4760uses Switch as Serialized, thus preventing multiple thread entries. BZ 4761469. 4762 4763---------------------------------------- 476413 February 2008. Summary of changes for version 20080213: 4765 47661) ACPI CA Core Subsystem: 4767 4768Implemented another MS compatibility design change for GPE/Notify 4769handling. 4770GPEs are now cleared/enabled asynchronously to allow all pending notifies 4771to 4772complete first. It is expected that the OSL will queue the enable request 4773behind all pending notify requests (may require changes to the local host 4774OSL 4775in AcpiOsExecute). Alexey Starikovskiy. 4776 4777Fixed a problem where buffer and package objects passed as arguments to a 4778control method via the external AcpiEvaluateObject interface could cause 4779an 4780AE_AML_INTERNAL exception depending on the order and type of operators 4781executed by the target control method. 4782 4783Fixed a problem where resource descriptor size optimization could cause a 4784problem when a _CRS resource template is passed to a _SRS method. The _SRS 4785resource template must use the same descriptors (with the same size) as 4786returned from _CRS. This change affects the following resource 4787descriptors: 4788IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 47899487) 4790 4791Fixed a problem where a CopyObject to RegionField, BankField, and 4792IndexField 4793objects did not perform an implicit conversion as it should. These types 4794must 4795retain their initial type permanently as per the ACPI specification. 4796However, 4797a CopyObject to all other object types should not perform an implicit 4798conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 4799 4800Fixed a problem with the AcpiGetDevices interface where the mechanism to 4801match device CIDs did not examine the entire list of available CIDs, but 4802instead aborted on the first non-matching CID. Andrew Patterson. 4803 4804Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 4805was 4806inadvertently changed to return a 16-bit value instead of a 32-bit value, 4807truncating the upper dword of a 64-bit value. This macro is only used to 4808display debug output, so no incorrect calculations were made. Also, 4809reimplemented the macro so that a 64-bit shift is not performed by 4810inefficient compilers. 4811 4812Added missing va_end statements that should correspond with each va_start 4813statement. 4814 4815Example Code and Data Size: These are the sizes for the OS-independent 4816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4817debug version of the code includes the debug output trace mechanism and 4818has 4819a much larger code and data size. 4820 4821 Previous Release: 4822 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 4823 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 4824 Current Release: 4825 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 4826 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 4827 48282) iASL Compiler/Disassembler and Tools: 4829 4830Implemented full disassembler support for the following new ACPI tables: 4831BERT, EINJ, and ERST. Implemented partial disassembler support for the 4832complicated HEST table. These tables support the Windows Hardware Error 4833Architecture (WHEA). 4834 4835---------------------------------------- 483623 January 2008. Summary of changes for version 20080123: 4837 48381) ACPI CA Core Subsystem: 4839 4840Added the 2008 copyright to all module headers and signons. This affects 4841virtually every file in the ACPICA core subsystem, the iASL compiler, and 4842the tools/utilities. 4843 4844Fixed a problem with the SizeOf operator when used with Package and Buffer 4845objects. These objects have deferred execution for some arguments, and the 4846execution is now completed before the SizeOf is executed. This problem 4847caused 4848unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 4849BZ 48509558 4851 4852Implemented an enhancement to the interpreter "slack mode". In the absence 4853of 4854an explicit return or an implicitly returned object from the last executed 4855opcode, a control method will now implicitly return an integer of value 0 4856for 4857Microsoft compatibility. (Lin Ming) BZ 392 4858 4859Fixed a problem with the Load operator where an exception was not returned 4860in 4861the case where the table is already loaded. (Lin Ming) BZ 463 4862 4863Implemented support for the use of DDBHandles as an Indexed Reference, as 4864per 4865the ACPI spec. (Lin Ming) BZ 486 4866 4867Implemented support for UserTerm (Method invocation) for the Unload 4868operator 4869as per the ACPI spec. (Lin Ming) BZ 580 4870 4871Fixed a problem with the LoadTable operator where the OemId and OemTableId 4872input strings could cause unexpected failures if they were shorter than 4873the 4874maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 4875 4876Implemented support for UserTerm (Method invocation) for the Unload 4877operator 4878as per the ACPI spec. (Lin Ming) BZ 580 4879 4880Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 4881HEST, 4882IBFT, UEFI, WDAT. Disassembler support is forthcoming. 4883 4884Example Code and Data Size: These are the sizes for the OS-independent 4885acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4886debug version of the code includes the debug output trace mechanism and 4887has 4888a much larger code and data size. 4889 4890 Previous Release: 4891 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 4892 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 4893 Current Release: 4894 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 4895 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 4896 48972) iASL Compiler/Disassembler and Tools: 4898 4899Implemented support in the disassembler for checksum validation on 4900incoming 4901binary DSDTs and SSDTs. If incorrect, a message is displayed within the 4902table 4903header dump at the start of the disassembly. 4904 4905Implemented additional debugging information in the namespace listing file 4906created during compilation. In addition to the namespace hierarchy, the 4907full 4908pathname to each namespace object is displayed. 4909 4910Fixed a problem with the disassembler where invalid ACPI tables could 4911cause 4912faults or infinite loops. 4913 4914Fixed an unexpected parse error when using the optional "parameter types" 4915list in a control method declaration. (Lin Ming) BZ 397 4916 4917Fixed a problem where two External declarations with the same name did not 4918cause an error (Lin Ming) BZ 509 4919 4920Implemented support for full TermArgs (adding Argx, Localx and method 4921invocation) for the ParameterData parameter to the LoadTable operator. 4922(Lin 4923Ming) BZ 583,587 4924 4925---------------------------------------- 492619 December 2007. Summary of changes for version 20071219: 4927 49281) ACPI CA Core Subsystem: 4929 4930Implemented full support for deferred execution for the TermArg string 4931arguments for DataTableRegion. This enables forward references and full 4932operand resolution for the three string arguments. Similar to 4933OperationRegion 4934deferred argument execution.) Lin Ming. BZ 430 4935 4936Implemented full argument resolution support for the BankValue argument to 4937BankField. Previously, only constants were supported, now any TermArg may 4938be 4939used. Lin Ming BZ 387, 393 4940 4941Fixed a problem with AcpiGetDevices where the search of a branch of the 4942device tree could be terminated prematurely. In accordance with the ACPI 4943specification, the search down the current branch is terminated if a 4944device 4945is both not present and not functional (instead of just not present.) 4946Yakui 4947Zhao. 4948 4949Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 4950if 4951the underlying AML code changed the GPE enable registers. Now, any unknown 4952incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 4953disabled 4954instead of simply ignored. Rui Zhang. 4955 4956Fixed a problem with Index Fields where the Index register was incorrectly 4957limited to a maximum of 32 bits. Now any size may be used. 4958 4959Fixed a couple memory leaks associated with "implicit return" objects when 4960the AML Interpreter slack mode is enabled. Lin Ming BZ 349 4961 4962Example Code and Data Size: These are the sizes for the OS-independent 4963acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4964debug version of the code includes the debug output trace mechanism and 4965has 4966a much larger code and data size. 4967 4968 Previous Release: 4969 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 4970 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 4971 Current Release: 4972 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 4973 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 4974 4975---------------------------------------- 497614 November 2007. Summary of changes for version 20071114: 4977 49781) ACPI CA Core Subsystem: 4979 4980Implemented event counters for each of the Fixed Events, the ACPI SCI 4981(interrupt) itself, and control methods executed. Named 4982AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 4983These 4984should be useful for debugging and statistics. 4985 4986Implemented a new external interface, AcpiGetStatistics, to retrieve the 4987contents of the various event counters. Returns the current values for 4988AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 4989AcpiMethodCount. The interface can be expanded in the future if new 4990counters 4991are added. Device drivers should use this interface rather than access the 4992counters directly. 4993 4994Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 4995the ShortDivide function worked incorrectly, causing problems with the BCD 4996functions with large input values. A truncation from 64-bit to 32-bit 4997inadvertently occurred. Internal BZ 435. Lin Ming 4998 4999Fixed a problem with Index references passed as method arguments. 5000References 5001passed as arguments to control methods were dereferenced immediately 5002(before 5003control was passed to the called method). The references are now correctly 5004passed directly to the called method. BZ 5389. Lin Ming 5005 5006Fixed a problem with CopyObject used in conjunction with the Index 5007operator. 5008The reference was incorrectly dereferenced before the copy. The reference 5009is 5010now correctly copied. BZ 5391. Lin Ming 5011 5012Fixed a problem with Control Method references within Package objects. 5013These 5014references are now correctly generated. This completes the package 5015construction overhaul that began in version 20071019. 5016 5017Example Code and Data Size: These are the sizes for the OS-independent 5018acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5019debug version of the code includes the debug output trace mechanism and 5020has 5021a much larger code and data size. 5022 5023 Previous Release: 5024 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 5025 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 5026 Current Release: 5027 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 5028 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 5029 5030 50312) iASL Compiler/Disassembler and Tools: 5032 5033The AcpiExec utility now installs handlers for all of the predefined 5034Operation Region types. New types supported are: PCI_Config, CMOS, and 5035PCIBARTarget. 5036 5037Fixed a problem with the 64-bit version of AcpiExec where the extended 5038(64- 5039bit) address fields for the DSDT and FACS within the FADT were not being 5040used, causing truncation of the upper 32-bits of these addresses. Lin Ming 5041and Bob Moore 5042 5043---------------------------------------- 504419 October 2007. Summary of changes for version 20071019: 5045 50461) ACPI CA Core Subsystem: 5047 5048Fixed a problem with the Alias operator when the target of the alias is a 5049named ASL operator that opens a new scope -- Scope, Device, PowerResource, 5050Processor, and ThermalZone. In these cases, any children of the original 5051operator could not be accessed via the alias, potentially causing 5052unexpected 5053AE_NOT_FOUND exceptions. (BZ 9067) 5054 5055Fixed a problem with the Package operator where all named references were 5056created as object references and left otherwise unresolved. According to 5057the 5058ACPI specification, a Package can only contain Data Objects or references 5059to 5060control methods. The implication is that named references to Data Objects 5061(Integer, Buffer, String, Package, BufferField, Field) should be resolved 5062immediately upon package creation. This is the approach taken with this 5063change. References to all other named objects (Methods, Devices, Scopes, 5064etc.) are all now properly created as reference objects. (BZ 5328) 5065 5066Reverted a change to Notify handling that was introduced in version 506720070508. This version changed the Notify handling from asynchronous to 5068fully synchronous (Device driver Notify handling with respect to the 5069Notify 5070ASL operator). It was found that this change caused more problems than it 5071solved and was removed by most users. 5072 5073Fixed a problem with the Increment and Decrement operators where the type 5074of 5075the target object could be unexpectedly and incorrectly changed. (BZ 353) 5076Lin Ming. 5077 5078Fixed a problem with the Load and LoadTable operators where the table 5079location within the namespace was ignored. Instead, the table was always 5080loaded into the root or current scope. Lin Ming. 5081 5082Fixed a problem with the Load operator when loading a table from a buffer 5083object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 5084 5085Fixed a problem with the Debug object where a store of a DdbHandle 5086reference 5087object to the Debug object could cause a fault. 5088 5089Added a table checksum verification for the Load operator, in the case 5090where 5091the load is from a buffer. (BZ 578). 5092 5093Implemented additional parameter validation for the LoadTable operator. 5094The 5095length of the input strings SignatureString, OemIdString, and OemTableId 5096are 5097now checked for maximum lengths. (BZ 582) Lin Ming. 5098 5099Example Code and Data Size: These are the sizes for the OS-independent 5100acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5101debug version of the code includes the debug output trace mechanism and 5102has 5103a much larger code and data size. 5104 5105 Previous Release: 5106 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 5107 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 5108 Current Release: 5109 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 5110 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 5111 5112 51132) iASL Compiler/Disassembler: 5114 5115Fixed a problem where if a single file was specified and the file did not 5116exist, no error message was emitted. (Introduced with wildcard support in 5117version 20070917.) 5118 5119---------------------------------------- 512019 September 2007. Summary of changes for version 20070919: 5121 51221) ACPI CA Core Subsystem: 5123 5124Designed and implemented new external interfaces to install and remove 5125handlers for ACPI table-related events. Current events that are defined 5126are 5127LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 5128they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 5129AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 5130 5131Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 5132(acpi_serialized option on Linux) could cause some systems to hang during 5133initialization. (Bob Moore) BZ 8171 5134 5135Fixed a problem where objects of certain types (Device, ThermalZone, 5136Processor, PowerResource) can be not found if they are declared and 5137referenced from within the same control method (Lin Ming) BZ 341 5138 5139Example Code and Data Size: These are the sizes for the OS-independent 5140acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5141debug version of the code includes the debug output trace mechanism and 5142has 5143a much larger code and data size. 5144 5145 Previous Release: 5146 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 5147 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 5148 Current Release: 5149 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 5150 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 5151 5152 51532) iASL Compiler/Disassembler: 5154 5155Implemented support to allow multiple files to be compiled/disassembled in 5156a 5157single invocation. This includes command line wildcard support for both 5158the 5159Windows and Unix versions of the compiler. This feature simplifies the 5160disassembly and compilation of multiple ACPI tables in a single directory. 5161 5162---------------------------------------- 516308 May 2007. Summary of changes for version 20070508: 5164 51651) ACPI CA Core Subsystem: 5166 5167Implemented a Microsoft compatibility design change for the handling of 5168the 5169Notify AML operator. Previously, notify handlers were dispatched and 5170executed completely asynchronously in a deferred thread. The new design 5171still executes the notify handlers in a different thread, but the original 5172thread that executed the Notify() now waits at a synchronization point for 5173the notify handler to complete. Some machines depend on a synchronous 5174Notify 5175operator in order to operate correctly. 5176 5177Implemented support to allow Package objects to be passed as method 5178arguments to the external AcpiEvaluateObject interface. Previously, this 5179would return the AE_NOT_IMPLEMENTED exception. This feature had not been 5180implemented since there were no reserved control methods that required it 5181until recently. 5182 5183Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 5184that 5185contained invalid non-zero values in reserved fields could cause later 5186failures because these fields have meaning in later revisions of the FADT. 5187For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 5188fields 5189are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 5190 5191Fixed a problem where the Global Lock handle was not properly updated if a 5192thread that acquired the Global Lock via executing AML code then attempted 5193to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 5194Joe 5195Liu. 5196 5197Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 5198could be corrupted if the interrupt being removed was at the head of the 5199list. Reported by Linn Crosetto. 5200 5201Example Code and Data Size: These are the sizes for the OS-independent 5202acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5203debug version of the code includes the debug output trace mechanism and 5204has 5205a much larger code and data size. 5206 5207 Previous Release: 5208 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5209 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 5210 Current Release: 5211 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 5212 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 5213 5214---------------------------------------- 521520 March 2007. Summary of changes for version 20070320: 5216 52171) ACPI CA Core Subsystem: 5218 5219Implemented a change to the order of interpretation and evaluation of AML 5220operand objects within the AML interpreter. The interpreter now evaluates 5221operands in the order that they appear in the AML stream (and the 5222corresponding ASL code), instead of in the reverse order (after the entire 5223operand list has been parsed). The previous behavior caused several subtle 5224incompatibilities with the Microsoft AML interpreter as well as being 5225somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 5226 5227Implemented a change to the ACPI Global Lock support. All interfaces to 5228the 5229global lock now allow the same thread to acquire the lock multiple times. 5230This affects the AcpiAcquireGlobalLock external interface to the global 5231lock 5232as well as the internal use of the global lock to support AML fields -- a 5233control method that is holding the global lock can now simultaneously 5234access 5235AML fields that require global lock protection. Previously, in both cases, 5236this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 5237to 5238AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 5239Controller. There is no change to the behavior of the AML Acquire 5240operator, 5241as this can already be used to acquire a mutex multiple times by the same 5242thread. BZ 8066. With assistance from Alexey Starikovskiy. 5243 5244Fixed a problem where invalid objects could be referenced in the AML 5245Interpreter after error conditions. During operand evaluation, ensure that 5246the internal "Return Object" field is cleared on error and only valid 5247pointers are stored there. Caused occasional access to deleted objects 5248that 5249resulted in "large reference count" warning messages. Valery Podrezov. 5250 5251Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 5252on 5253deeply nested control method invocations. BZ 7873, local BZ 487. Valery 5254Podrezov. 5255 5256Fixed an internal problem with the handling of result objects on the 5257interpreter result stack. BZ 7872. Valery Podrezov. 5258 5259Removed obsolete code that handled the case where AML_NAME_OP is the 5260target 5261of a reference (Reference.Opcode). This code was no longer necessary. BZ 52627874. Valery Podrezov. 5263 5264Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was 5265a 5266remnant from the previously discontinued 16-bit support. 5267 5268Example Code and Data Size: These are the sizes for the OS-independent 5269acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5270debug version of the code includes the debug output trace mechanism and 5271has 5272a much larger code and data size. 5273 5274 Previous Release: 5275 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5276 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5277 Current Release: 5278 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5279 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 5280 5281---------------------------------------- 528226 January 2007. Summary of changes for version 20070126: 5283 52841) ACPI CA Core Subsystem: 5285 5286Added the 2007 copyright to all module headers and signons. This affects 5287virtually every file in the ACPICA core subsystem, the iASL compiler, and 5288the utilities. 5289 5290Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 5291during a table load. A bad pointer was passed in the case where the DSDT 5292is 5293overridden, causing a fault in this case. 5294 5295Example Code and Data Size: These are the sizes for the OS-independent 5296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5297debug version of the code includes the debug output trace mechanism and 5298has 5299a much larger code and data size. 5300 5301 Previous Release: 5302 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5303 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5304 Current Release: 5305 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5306 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5307 5308---------------------------------------- 530915 December 2006. Summary of changes for version 20061215: 5310 53111) ACPI CA Core Subsystem: 5312 5313Support for 16-bit ACPICA has been completely removed since it is no 5314longer 5315necessary and it clutters the code. All 16-bit macros, types, and 5316conditional compiles have been removed, cleaning up and simplifying the 5317code 5318across the entire subsystem. DOS support is no longer needed since the 5319bootable Linux firmware kit is now available. 5320 5321The handler for the Global Lock is now removed during AcpiTerminate to 5322enable a clean subsystem restart, via the implementation of the 5323AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 5324HP) 5325 5326Implemented enhancements to the multithreading support within the debugger 5327to enable improved multithreading debugging and evaluation of the 5328subsystem. 5329(Valery Podrezov) 5330 5331Debugger: Enhanced the Statistics/Memory command to emit the total 5332(maximum) 5333memory used during the execution, as well as the maximum memory consumed 5334by 5335each of the various object types. (Valery Podrezov) 5336 5337Example Code and Data Size: These are the sizes for the OS-independent 5338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5339debug version of the code includes the debug output trace mechanism and 5340has 5341a much larger code and data size. 5342 5343 Previous Release: 5344 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 5345 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 5346 Current Release: 5347 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 5348 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 5349 5350 53512) iASL Compiler/Disassembler and Tools: 5352 5353AcpiExec: Implemented a new option (-m) to display full memory use 5354statistics upon subsystem/program termination. (Valery Podrezov) 5355 5356---------------------------------------- 535709 November 2006. Summary of changes for version 20061109: 5358 53591) ACPI CA Core Subsystem: 5360 5361Optimized the Load ASL operator in the case where the source operand is an 5362operation region. Simply map the operation region memory, instead of 5363performing a bytewise read. (Region must be of type SystemMemory, see 5364below.) 5365 5366Fixed the Load ASL operator for the case where the source operand is a 5367region field. A buffer object is also allowed as the source operand. BZ 5368480 5369 5370Fixed a problem where the Load ASL operator allowed the source operand to 5371be 5372an operation region of any type. It is now restricted to regions of type 5373SystemMemory, as per the ACPI specification. BZ 481 5374 5375Additional cleanup and optimizations for the new Table Manager code. 5376 5377AcpiEnable will now fail if all of the required ACPI tables are not loaded 5378(FADT, FACS, DSDT). BZ 477 5379 5380Added #pragma pack(8/4) to acobject.h to ensure that the structures in 5381this 5382header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 5383manually optimized to be aligned and will not work if it is byte-packed. 5384 5385Example Code and Data Size: These are the sizes for the OS-independent 5386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5387debug version of the code includes the debug output trace mechanism and 5388has 5389a much larger code and data size. 5390 5391 Previous Release: 5392 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 5393 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 5394 Current Release: 5395 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 5396 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 5397 5398 53992) iASL Compiler/Disassembler and Tools: 5400 5401Fixed a problem where the presence of the _OSI predefined control method 5402within complex expressions could cause an internal compiler error. 5403 5404AcpiExec: Implemented full region support for multiple address spaces. 5405SpaceId is now part of the REGION object. BZ 429 5406 5407---------------------------------------- 540811 October 2006. Summary of changes for version 20061011: 5409 54101) ACPI CA Core Subsystem: 5411 5412Completed an AML interpreter performance enhancement for control method 5413execution. Previously a 2-pass parse/execution, control methods are now 5414completely parsed and executed in a single pass. This improves overall 5415interpreter performance by ~25%, reduces code size, and reduces CPU stack 5416use. (Valery Podrezov + interpreter changes in version 20051202 that 5417eliminated namespace loading during the pass one parse.) 5418 5419Implemented _CID support for PCI Root Bridge detection. If the _HID does 5420not 5421match the predefined PCI Root Bridge IDs, the _CID list (if present) is 5422now 5423obtained and also checked for an ID match. 5424 5425Implemented additional support for the PCI _ADR execution: upsearch until 5426a 5427device scope is found before executing _ADR. This allows PCI_Config 5428operation regions to be declared locally within control methods underneath 5429PCI device objects. 5430 5431Fixed a problem with a possible race condition between threads executing 5432AcpiWalkNamespace and the AML interpreter. This condition was removed by 5433modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 5434entries created during any concurrent control method execution. An 5435additional namespace race condition is known to exist between 5436AcpiWalkNamespace and the Load/Unload ASL operators and is still under 5437investigation. 5438 5439Restructured the AML ParseLoop function, breaking it into several 5440subfunctions in order to reduce CPU stack use and improve maintainability. 5441(Mikhail Kouzmich) 5442 5443AcpiGetHandle: Fix for parameter validation to detect invalid combinations 5444of prefix handle and pathname. BZ 478 5445 5446Example Code and Data Size: These are the sizes for the OS-independent 5447acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5448debug version of the code includes the debug output trace mechanism and 5449has 5450a much larger code and data size. 5451 5452 Previous Release: 5453 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5454 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 5455 Current Release: 5456 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 5457 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 5458 54592) iASL Compiler/Disassembler and Tools: 5460 5461Ported the -g option (get local ACPI tables) to the new ACPICA Table 5462Manager 5463to restore original behavior. 5464 5465---------------------------------------- 546627 September 2006. Summary of changes for version 20060927: 5467 54681) ACPI CA Core Subsystem: 5469 5470Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 5471These functions now use a spinlock for mutual exclusion and the interrupt 5472level indication flag is not needed. 5473 5474Fixed a problem with the Global Lock where the lock could appear to be 5475obtained before it is actually obtained. The global lock semaphore was 5476inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 5477Suietov. 5478 5479Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 5480during 5481a read from a buffer or region field. (BZ 458) Fiodor Suietov. 5482 5483Example Code and Data Size: These are the sizes for the OS-independent 5484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5485debug version of the code includes the debug output trace mechanism and 5486has 5487a much larger code and data size. 5488 5489 Previous Release: 5490 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5491 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 5492 Current Release: 5493 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5494 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 5495 5496 54972) iASL Compiler/Disassembler and Tools: 5498 5499Fixed a compilation problem with the pre-defined Resource Descriptor field 5500names where an "object does not exist" error could be incorrectly 5501generated 5502if the parent ResourceTemplate pathname places the template within a 5503different namespace scope than the current scope. (BZ 7212) 5504 5505Fixed a problem where the compiler could hang after syntax errors detected 5506in an ElseIf construct. (BZ 453) 5507 5508Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 5509operator. An incorrect output filename was produced when this parameter 5510was 5511a null string (""). Now, the original input filename is used as the AML 5512output filename, with an ".aml" extension. 5513 5514Implemented a generic batch command mode for the AcpiExec utility (execute 5515any AML debugger command) (Valery Podrezov). 5516 5517---------------------------------------- 551812 September 2006. Summary of changes for version 20060912: 5519 55201) ACPI CA Core Subsystem: 5521 5522Enhanced the implementation of the "serialized mode" of the interpreter 5523(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 5524specified, instead of creating a serialization semaphore per control 5525method, 5526the interpreter lock is simply no longer released before a blocking 5527operation during control method execution. This effectively makes the AML 5528Interpreter single-threaded. The overhead of a semaphore per-method is 5529eliminated. 5530 5531Fixed a regression where an error was no longer emitted if a control 5532method 5533attempts to create 2 objects of the same name. This once again returns 5534AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 5535that 5536will dynamically serialize the control method to possible prevent future 5537errors. (BZ 440) 5538 5539Integrated a fix for a problem with PCI Express HID detection in the PCI 5540Config Space setup procedure. (BZ 7145) 5541 5542Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 5543AcpiHwInitialize function - the FADT registers are now validated when the 5544table is loaded. 5545 5546Added two new warnings during FADT verification - 1) if the FADT is larger 5547than the largest known FADT version, and 2) if there is a mismatch between 5548a 554932-bit block address and the 64-bit X counterpart (when both are non- 5550zero.) 5551 5552Example Code and Data Size: These are the sizes for the OS-independent 5553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5554debug version of the code includes the debug output trace mechanism and 5555has 5556a much larger code and data size. 5557 5558 Previous Release: 5559 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 5560 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 5561 Current Release: 5562 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 5563 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 5564 5565 55662) iASL Compiler/Disassembler and Tools: 5567 5568Fixed a problem with the implementation of the Switch() operator where the 5569temporary variable was declared too close to the actual Switch, instead of 5570at method level. This could cause a problem if the Switch() operator is 5571within a while loop, causing an error on the second iteration. (BZ 460) 5572 5573Disassembler - fix for error emitted for unknown type for target of scope 5574operator. Now, ignore it and continue. 5575 5576Disassembly of an FADT now verifies the input FADT and reports any errors 5577found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 5578 5579Disassembly of raw data buffers with byte initialization data now prefixes 5580each output line with the current buffer offset. 5581 5582Disassembly of ASF! table now includes all variable-length data fields at 5583the end of some of the subtables. 5584 5585The disassembler now emits a comment if a buffer appears to be a 5586ResourceTemplate, but cannot be disassembled as such because the EndTag 5587does 5588not appear at the very end of the buffer. 5589 5590AcpiExec - Added the "-t" command line option to enable the serialized 5591mode 5592of the AML interpreter. 5593 5594---------------------------------------- 559531 August 2006. Summary of changes for version 20060831: 5596 55971) ACPI CA Core Subsystem: 5598 5599Miscellaneous fixes for the Table Manager: 5600- Correctly initialize internal common FADT for all 64-bit "X" fields 5601- Fixed a couple table mapping issues during table load 5602- Fixed a couple alignment issues for IA64 5603- Initialize input array to zero in AcpiInitializeTables 5604- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 5605AcpiGetTableByIndex 5606 5607Change for GPE support: when a "wake" GPE is received, all wake GPEs are 5608now 5609immediately disabled to prevent the waking GPE from firing again and to 5610prevent other wake GPEs from interrupting the wake process. 5611 5612Added the AcpiGpeCount global that tracks the number of processed GPEs, to 5613be used for debugging systems with a large number of ACPI interrupts. 5614 5615Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 5616both the ACPICA headers and the disassembler. 5617 5618Example Code and Data Size: These are the sizes for the OS-independent 5619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5620debug version of the code includes the debug output trace mechanism and 5621has 5622a much larger code and data size. 5623 5624 Previous Release: 5625 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 5626 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 5627 Current Release: 5628 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 5629 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 5630 5631 56322) iASL Compiler/Disassembler and Tools: 5633 5634Disassembler support for the DMAR ACPI table. 5635 5636---------------------------------------- 563723 August 2006. Summary of changes for version 20060823: 5638 56391) ACPI CA Core Subsystem: 5640 5641The Table Manager component has been completely redesigned and 5642reimplemented. The new design is much simpler, and reduces the overall 5643code 5644and data size of the kernel-resident ACPICA by approximately 5%. Also, it 5645is 5646now possible to obtain the ACPI tables very early during kernel 5647initialization, even before dynamic memory management is initialized. 5648(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 5649 5650Obsolete ACPICA interfaces: 5651 5652- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 5653init 5654time). 5655- AcpiLoadTable: Not needed. 5656- AcpiUnloadTable: Not needed. 5657 5658New ACPICA interfaces: 5659 5660- AcpiInitializeTables: Must be called before the table manager can be 5661used. 5662- AcpiReallocateRootTable: Used to transfer the root table to dynamically 5663allocated memory after it becomes available. 5664- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 5665in the RSDT/XSDT. 5666 5667Other ACPICA changes: 5668 5669- AcpiGetTableHeader returns the actual mapped table header, not a copy. 5670Use 5671AcpiOsUnmapMemory to free this mapping. 5672- AcpiGetTable returns the actual mapped table. The mapping is managed 5673internally and must not be deleted by the caller. Use of this interface 5674causes no additional dynamic memory allocation. 5675- AcpiFindRootPointer: Support for physical addressing has been 5676eliminated, 5677it appeared to be unused. 5678- The interface to AcpiOsMapMemory has changed to be consistent with the 5679other allocation interfaces. 5680- The interface to AcpiOsGetRootPointer has changed to eliminate 5681unnecessary 5682parameters. 5683- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64- 5684bit platforms. Was previously 64 bits on all platforms. 5685- The interface to the ACPI Global Lock acquire/release macros have 5686changed 5687slightly since ACPICA no longer keeps a local copy of the FACS with a 5688constructed pointer to the actual global lock. 5689 5690Porting to the new table manager: 5691 5692- AcpiInitializeTables: Must be called once, and can be called anytime 5693during the OS initialization process. It allows the host to specify an 5694area 5695of memory to be used to store the internal version of the RSDT/XSDT (root 5696table). This allows the host to access ACPI tables before memory 5697management 5698is initialized and running. 5699- AcpiReallocateRootTable: Can be called after memory management is 5700running 5701to copy the root table to a dynamically allocated array, freeing up the 5702scratch memory specified in the call to AcpiInitializeTables. 5703- AcpiSubsystemInitialize: This existing interface is independent of the 5704Table Manager, and does not have to be called before the Table Manager can 5705be used, it only must be called before the rest of ACPICA can be used. 5706- ACPI Tables: Some changes have been made to the names and structure of 5707the 5708actbl.h and actbl1.h header files and may require changes to existing 5709code. 5710For example, bitfields have been completely removed because of their lack 5711of 5712portability across C compilers. 5713- Update interfaces to the Global Lock acquire/release macros if local 5714versions are used. (see acwin.h) 5715 5716Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 5717 5718New files: tbfind.c 5719 5720Example Code and Data Size: These are the sizes for the OS-independent 5721acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5722debug version of the code includes the debug output trace mechanism and 5723has 5724a much larger code and data size. 5725 5726 Previous Release: 5727 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 5728 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 5729 Current Release: 5730 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 5731 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 5732 5733 57342) iASL Compiler/Disassembler and Tools: 5735 5736No changes for this release. 5737 5738---------------------------------------- 573921 July 2006. Summary of changes for version 20060721: 5740 57411) ACPI CA Core Subsystem: 5742 5743The full source code for the ASL test suite used to validate the iASL 5744compiler and the ACPICA core subsystem is being released with the ACPICA 5745source for the first time. The source is contained in a separate package 5746and 5747consists of over 1100 files that exercise all ASL/AML operators. The 5748package 5749should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 5750Suietov) 5751 5752Completed a new design and implementation for support of the ACPI Global 5753Lock. On the OS side, the global lock is now treated as a standard AML 5754mutex. Previously, multiple OS threads could "acquire" the global lock 5755simultaneously. However, this could cause the BIOS to be starved out of 5756the 5757lock - especially in cases such as the Embedded Controller driver where 5758there is a tight coupling between the OS and the BIOS. 5759 5760Implemented an optimization for the ACPI Global Lock interrupt mechanism. 5761The Global Lock interrupt handler no longer queues the execution of a 5762separate thread to signal the global lock semaphore. Instead, the 5763semaphore 5764is signaled directly from the interrupt handler. 5765 5766Implemented support within the AML interpreter for package objects that 5767contain a larger AML length (package list length) than the package element 5768count. In this case, the length of the package is truncated to match the 5769package element count. Some BIOS code apparently modifies the package 5770length 5771on the fly, and this change supports this behavior. Provides compatibility 5772with the MS AML interpreter. (With assistance from Fiodor Suietov) 5773 5774Implemented a temporary fix for the BankValue parameter of a Bank Field to 5775support all constant values, now including the Zero and One opcodes. 5776Evaluation of this parameter must eventually be converted to a full 5777TermArg 5778evaluation. A not-implemented error is now returned (temporarily) for non- 5779constant values for this parameter. 5780 5781Fixed problem reports (Fiodor Suietov) integrated: 5782- Fix for premature object deletion after CopyObject on Operation Region 5783(BZ 5784350) 5785 5786Example Code and Data Size: These are the sizes for the OS-independent 5787acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5788debug version of the code includes the debug output trace mechanism and 5789has 5790a much larger code and data size. 5791 5792 Previous Release: 5793 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 5794 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 5795 Current Release: 5796 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 5797 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 5798 5799 58002) iASL Compiler/Disassembler and Tools: 5801 5802No changes for this release. 5803 5804---------------------------------------- 580507 July 2006. Summary of changes for version 20060707: 5806 58071) ACPI CA Core Subsystem: 5808 5809Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 5810that do not allow the initialization of address pointers within packed 5811structures - even though the hardware itself may support misaligned 5812transfers. Some of the debug data structures are packed by default to 5813minimize size. 5814 5815Added an error message for the case where AcpiOsGetThreadId() returns 5816zero. 5817A non-zero value is required by the core ACPICA code to ensure the proper 5818operation of AML mutexes and recursive control methods. 5819 5820The DSDT is now the only ACPI table that determines whether the AML 5821interpreter is in 32-bit or 64-bit mode. Not really a functional change, 5822but 5823the hooks for per-table 32/64 switching have been removed from the code. A 5824clarification to the ACPI specification is forthcoming in ACPI 3.0B. 5825 5826Fixed a possible leak of an OwnerID in the error path of 5827AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 5828deletion to a single place in AcpiTbUninstallTable to correct possible 5829leaks 5830when using the AcpiTbDeleteTablesByType interface (with assistance from 5831Lance Ortiz.) 5832 5833Fixed a problem with Serialized control methods where the semaphore 5834associated with the method could be over-signaled after multiple method 5835invocations. 5836 5837Fixed two issues with the locking of the internal namespace data 5838structure. 5839Both the Unload() operator and AcpiUnloadTable interface now lock the 5840namespace during the namespace deletion associated with the table unload 5841(with assistance from Linn Crosetto.) 5842 5843Fixed problem reports (Valery Podrezov) integrated: 5844- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 5845 5846Fixed problem reports (Fiodor Suietov) integrated: 5847- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 5848- On Address Space handler deletion, needless deactivation call (BZ 374) 5849- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375) 5850- Possible memory leak, Notify sub-objects of Processor, Power, 5851ThermalZone 5852(BZ 376) 5853- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 5854- Minimum Length of RSDT should be validated (BZ 379) 5855- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 5856Handler (BZ (380) 5857- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 5858loaded 5859(BZ 381) 5860 5861Example Code and Data Size: These are the sizes for the OS-independent 5862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5863debug version of the code includes the debug output trace mechanism and 5864has 5865a much larger code and data size. 5866 5867 Previous Release: 5868 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 5869 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 5870 Current Release: 5871 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 5872 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 5873 5874 58752) iASL Compiler/Disassembler and Tools: 5876 5877Fixed problem reports: 5878Compiler segfault when ASL contains a long (>1024) String declaration (BZ 5879436) 5880 5881---------------------------------------- 588223 June 2006. Summary of changes for version 20060623: 5883 58841) ACPI CA Core Subsystem: 5885 5886Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 5887allows the type to be customized to the host OS for improved efficiency 5888(since a spinlock is usually a very small object.) 5889 5890Implemented support for "ignored" bits in the ACPI registers. According to 5891the ACPI specification, these bits should be preserved when writing the 5892registers via a read/modify/write cycle. There are 3 bits preserved in 5893this 5894manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 5895 5896Implemented the initial deployment of new OSL mutex interfaces. Since some 5897host operating systems have separate mutex and semaphore objects, this 5898feature was requested. The base code now uses mutexes (and the new mutex 5899interfaces) wherever a binary semaphore was used previously. However, for 5900the current release, the mutex interfaces are defined as macros to map 5901them 5902to the existing semaphore interfaces. Therefore, no OSL changes are 5903required 5904at this time. (See acpiosxf.h) 5905 5906Fixed several problems with the support for the control method SyncLevel 5907parameter. The SyncLevel now works according to the ACPI specification and 5908in concert with the Mutex SyncLevel parameter, since the current SyncLevel 5909is a property of the executing thread. Mutual exclusion for control 5910methods 5911is now implemented with a mutex instead of a semaphore. 5912 5913Fixed three instances of the use of the C shift operator in the bitfield 5914support code (exfldio.c) to avoid the use of a shift value larger than the 5915target data width. The behavior of C compilers is undefined in this case 5916and 5917can cause unpredictable results, and therefore the case must be detected 5918and 5919avoided. (Fiodor Suietov) 5920 5921Added an info message whenever an SSDT or OEM table is loaded dynamically 5922via the Load() or LoadTable() ASL operators. This should improve debugging 5923capability since it will show exactly what tables have been loaded (beyond 5924the tables present in the RSDT/XSDT.) 5925 5926Example Code and Data Size: These are the sizes for the OS-independent 5927acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5928debug version of the code includes the debug output trace mechanism and 5929has 5930a much larger code and data size. 5931 5932 Previous Release: 5933 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 5934 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 5935 Current Release: 5936 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 5937 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 5938 5939 59402) iASL Compiler/Disassembler and Tools: 5941 5942No changes for this release. 5943 5944---------------------------------------- 594508 June 2006. Summary of changes for version 20060608: 5946 59471) ACPI CA Core Subsystem: 5948 5949Converted the locking mutex used for the ACPI hardware to a spinlock. This 5950change should eliminate all problems caused by attempting to acquire a 5951semaphore at interrupt level, and it means that all ACPICA external 5952interfaces that directly access the ACPI hardware can be safely called 5953from 5954interrupt level. OSL code that implements the semaphore interfaces should 5955be 5956able to eliminate any workarounds for being called at interrupt level. 5957 5958Fixed a regression introduced in 20060526 where the ACPI device 5959initialization could be prematurely aborted with an AE_NOT_FOUND if a 5960device 5961did not have an optional _INI method. 5962 5963Fixed an IndexField issue where a write to the Data Register should be 5964limited in size to the AccessSize (width) of the IndexField itself. (BZ 5965433, 5966Fiodor Suietov) 5967 5968Fixed problem reports (Valery Podrezov) integrated: 5969- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 5970 5971Fixed problem reports (Fiodor Suietov) integrated: 5972- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 5973 5974Removed four global mutexes that were obsolete and were no longer being 5975used. 5976 5977Example Code and Data Size: These are the sizes for the OS-independent 5978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5979debug version of the code includes the debug output trace mechanism and 5980has 5981a much larger code and data size. 5982 5983 Previous Release: 5984 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 5985 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 5986 Current Release: 5987 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 5988 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 5989 5990 59912) iASL Compiler/Disassembler and Tools: 5992 5993Fixed a fault when using -g option (get tables from registry) on Windows 5994machines. 5995 5996Fixed problem reports integrated: 5997- Generate error if CreateField NumBits parameter is zero. (BZ 405) 5998- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 5999Suietov) 6000- Global table revision override (-r) is ignored (BZ 413) 6001 6002---------------------------------------- 600326 May 2006. Summary of changes for version 20060526: 6004 60051) ACPI CA Core Subsystem: 6006 6007Restructured, flattened, and simplified the internal interfaces for 6008namespace object evaluation - resulting in smaller code, less CPU stack 6009use, 6010and fewer interfaces. (With assistance from Mikhail Kouzmich) 6011 6012Fixed a problem with the CopyObject operator where the first parameter was 6013not typed correctly for the parser, interpreter, compiler, and 6014disassembler. 6015Caused various errors and unexpected behavior. 6016 6017Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 6018produced incorrect results with some C compilers. Since the behavior of C 6019compilers when the shift value is larger than the datatype width is 6020apparently not well defined, the interpreter now detects this condition 6021and 6022simply returns zero as expected in all such cases. (BZ 395) 6023 6024Fixed problem reports (Valery Podrezov) integrated: 6025- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 6026- Allow interpreter to handle nested method declarations (BZ 5361) 6027 6028Fixed problem reports (Fiodor Suietov) integrated: 6029- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355) 6030- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 6031356) 6032- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 6033- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 6034- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 6035- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 6036- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 6037- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 6038- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 6039365) 6040- Status of the Global Initialization Handler call not used (BZ 366) 6041- Incorrect object parameter to Global Initialization Handler (BZ 367) 6042 6043Example Code and Data Size: These are the sizes for the OS-independent 6044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6045debug version of the code includes the debug output trace mechanism and 6046has 6047a much larger code and data size. 6048 6049 Previous Release: 6050 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 6051 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 6052 Current Release: 6053 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 6054 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 6055 6056 60572) iASL Compiler/Disassembler and Tools: 6058 6059Modified the parser to allow the names IO, DMA, and IRQ to be used as 6060namespace identifiers with no collision with existing resource descriptor 6061macro names. This provides compatibility with other ASL compilers and is 6062most useful for disassembly/recompilation of existing tables without parse 6063errors. (With assistance from Thomas Renninger) 6064 6065Disassembler: fixed an incorrect disassembly problem with the 6066DataTableRegion and CopyObject operators. Fixed a possible fault during 6067disassembly of some Alias operators. 6068 6069---------------------------------------- 607012 May 2006. Summary of changes for version 20060512: 6071 60721) ACPI CA Core Subsystem: 6073 6074Replaced the AcpiOsQueueForExecution interface with a new interface named 6075AcpiOsExecute. The major difference is that the new interface does not 6076have 6077a Priority parameter, this appeared to be useless and has been replaced by 6078a 6079Type parameter. The Type tells the host what type of execution is being 6080requested, such as global lock handler, notify handler, GPE handler, etc. 6081This allows the host to queue and execute the request as appropriate for 6082the 6083request type, possibly using different work queues and different 6084priorities 6085for the various request types. This enables fixes for multithreading 6086deadlock problems such as BZ #5534, and will require changes to all 6087existing 6088OS interface layers. (Alexey Starikovskiy and Bob Moore) 6089 6090Fixed a possible memory leak associated with the support for the so-called 6091"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 6092Suietov) 6093 6094Fixed a problem with the Load() operator where a table load from an 6095operation region could overwrite an internal table buffer by up to 7 bytes 6096and cause alignment faults on IPF systems. (With assistance from Luming 6097Yu) 6098 6099Example Code and Data Size: These are the sizes for the OS-independent 6100acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6101debug version of the code includes the debug output trace mechanism and 6102has 6103a much larger code and data size. 6104 6105 Previous Release: 6106 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 6107 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 6108 Current Release: 6109 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 6110 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 6111 6112 6113 61142) iASL Compiler/Disassembler and Tools: 6115 6116Disassembler: Implemented support to cross reference the internal 6117namespace 6118and automatically generate ASL External() statements for symbols not 6119defined 6120within the current table being disassembled. This will simplify the 6121disassembly and recompilation of interdependent tables such as SSDTs since 6122these statements will no longer have to be added manually. 6123 6124Disassembler: Implemented experimental support to automatically detect 6125invocations of external control methods and generate appropriate 6126External() 6127statements. This is problematic because the AML cannot be correctly parsed 6128until the number of arguments for each control method is known. Currently, 6129standalone method invocations and invocations as the source operand of a 6130Store() statement are supported. 6131 6132Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 6133LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 6134LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 6135more readable and likely closer to the original ASL source. 6136 6137---------------------------------------- 613821 April 2006. Summary of changes for version 20060421: 6139 61401) ACPI CA Core Subsystem: 6141 6142Removed a device initialization optimization introduced in 20051216 where 6143the _STA method was not run unless an _INI was also present for the same 6144device. This optimization could cause problems because it could allow _INI 6145methods to be run within a not-present device subtree. (If a not-present 6146device had no _INI, _STA would not be run, the not-present status would 6147not 6148be discovered, and the children of the device would be incorrectly 6149traversed.) 6150 6151Implemented a new _STA optimization where namespace subtrees that do not 6152contain _INI are identified and ignored during device initialization. 6153Selectively running _STA can significantly improve boot time on large 6154machines (with assistance from Len Brown.) 6155 6156Implemented support for the device initialization case where the returned 6157_STA flags indicate a device not-present but functioning. In this case, 6158_INI 6159is not run, but the device children are examined for presence, as per the 6160ACPI specification. 6161 6162Implemented an additional change to the IndexField support in order to 6163conform to MS behavior. The value written to the Index Register is not 6164simply a byte offset, it is a byte offset in units of the access width of 6165the parent Index Field. (Fiodor Suietov) 6166 6167Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 6168interface is called during the creation of all AML operation regions, and 6169allows the host OS to exert control over what addresses it will allow the 6170AML code to access. Operation Regions whose addresses are disallowed will 6171cause a runtime exception when they are actually accessed (will not affect 6172or abort table loading.) See oswinxf or osunixxf for an example 6173implementation. 6174 6175Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 6176interface allows the host OS to match the various "optional" 6177interface/behavior strings for the _OSI predefined control method as 6178appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 6179for an example implementation. 6180 6181Restructured and corrected various problems in the exception handling code 6182paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 6183(with assistance from Takayoshi Kochi.) 6184 6185Modified the Linux source converter to ignore quoted string literals while 6186converting identifiers from mixed to lower case. This will correct 6187problems 6188with the disassembler and other areas where such strings must not be 6189modified. 6190 6191The ACPI_FUNCTION_* macros no longer require quotes around the function 6192name. This allows the Linux source converter to convert the names, now 6193that 6194the converter ignores quoted strings. 6195 6196Example Code and Data Size: These are the sizes for the OS-independent 6197acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6198debug version of the code includes the debug output trace mechanism and 6199has 6200a much larger code and data size. 6201 6202 Previous Release: 6203 6204 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 6205 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 6206 Current Release: 6207 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 6208 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 6209 6210 62112) iASL Compiler/Disassembler and Tools: 6212 6213Implemented 3 new warnings for iASL, and implemented multiple warning 6214levels 6215(w2 flag). 6216 62171) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 6218not 6219WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 6220check for the possible timeout, a warning is issued. 6221 62222) Useless operators: If an ASL operator does not specify an optional 6223target 6224operand and it also does not use the function return value from the 6225operator, a warning is issued since the operator effectively does nothing. 6226 62273) Unreferenced objects: If a namespace object is created, but never 6228referenced, a warning is issued. This is a warning level 2 since there are 6229cases where this is ok, such as when a secondary table is loaded that uses 6230the unreferenced objects. Even so, care is taken to only flag objects that 6231don't look like they will ever be used. For example, the reserved methods 6232(starting with an underscore) are usually not referenced because it is 6233expected that the OS will invoke them. 6234 6235---------------------------------------- 623631 March 2006. Summary of changes for version 20060331: 6237 62381) ACPI CA Core Subsystem: 6239 6240Implemented header file support for the following additional ACPI tables: 6241ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 6242support, 6243all current and known ACPI tables are now defined in the ACPICA headers 6244and 6245are available for use by device drivers and other software. 6246 6247Implemented support to allow tables that contain ACPI names with invalid 6248characters to be loaded. Previously, this would cause the table load to 6249fail, but since there are several known cases of such tables on existing 6250machines, this change was made to enable ACPI support for them. Also, this 6251matches the behavior of the Microsoft ACPI implementation. 6252 6253Fixed a couple regressions introduced during the memory optimization in 6254the 625520060317 release. The namespace node definition required additional 6256reorganization and an internal datatype that had been changed to 8-bit was 6257restored to 32-bit. (Valery Podrezov) 6258 6259Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 6260could be passed through to AcpiOsReleaseObject which is unexpected. Such 6261null pointers are now trapped and ignored, matching the behavior of the 6262previous implementation before the deployment of AcpiOsReleaseObject. 6263(Valery Podrezov, Fiodor Suietov) 6264 6265Fixed a memory mapping leak during the deletion of a SystemMemory 6266operation 6267region where a cached memory mapping was not deleted. This became a 6268noticeable problem for operation regions that are defined within 6269frequently 6270used control methods. (Dana Meyers) 6271 6272Reorganized the ACPI table header files into two main files: one for the 6273ACPI tables consumed by the ACPICA core, and another for the miscellaneous 6274ACPI tables that are consumed by the drivers and other software. The 6275various 6276FADT definitions were merged into one common section and three different 6277tables (ACPI 1.0, 1.0+, and 2.0) 6278 6279Example Code and Data Size: These are the sizes for the OS-independent 6280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6281debug version of the code includes the debug output trace mechanism and 6282has 6283a much larger code and data size. 6284 6285 Previous Release: 6286 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 6287 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 6288 Current Release: 6289 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 6290 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 6291 6292 62932) iASL Compiler/Disassembler and Tools: 6294 6295Disassembler: Implemented support to decode and format all non-AML ACPI 6296tables (tables other than DSDTs and SSDTs.) This includes the new tables 6297added to the ACPICA headers, therefore all current and known ACPI tables 6298are 6299supported. 6300 6301Disassembler: The change to allow ACPI names with invalid characters also 6302enables the disassembly of such tables. Invalid characters within names 6303are 6304changed to '*' to make the name printable; the iASL compiler will still 6305generate an error for such names, however, since this is an invalid ACPI 6306character. 6307 6308Implemented an option for AcpiXtract (-a) to extract all tables found in 6309the 6310input file. The default invocation extracts only the DSDTs and SSDTs. 6311 6312Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 6313makefile for the AcpiXtract utility. 6314 6315---------------------------------------- 631617 March 2006. Summary of changes for version 20060317: 6317 63181) ACPI CA Core Subsystem: 6319 6320Implemented the use of a cache object for all internal namespace nodes. 6321Since there are about 1000 static nodes in a typical system, this will 6322decrease memory use for cache implementations that minimize per-allocation 6323overhead (such as a slab allocator.) 6324 6325Removed the reference count mechanism for internal namespace nodes, since 6326it 6327was deemed unnecessary. This reduces the size of each namespace node by 6328about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 6329and 32 bytes for the 64-bit case. 6330 6331Optimized several internal data structures to reduce object size on 64-bit 6332platforms by packing data within the 64-bit alignment. This includes the 6333frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 6334instances corresponding to the namespace objects. 6335 6336Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 6337and "Windows 2006". 6338 6339Split the allocation tracking mechanism out to a separate file, from 6340utalloc.c to uttrack.c. This mechanism appears to be only useful for 6341application-level code. Kernels may wish to not include uttrack.c in 6342distributions. 6343 6344Removed all remnants of the obsolete ACPI_REPORT_* macros and the 6345associated 6346code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 6347macros.) 6348 6349Code and Data Size: These are the sizes for the acpica.lib produced by the 6350Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 6351ACPI 6352driver or OSPM code. The debug version of the code includes the debug 6353output 6354trace mechanism and has a much larger code and data size. Note that these 6355values will vary depending on the efficiency of the compiler and the 6356compiler options used during generation. 6357 6358 Previous Release: 6359 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6360 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 6361 Current Release: 6362 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 6363 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 6364 6365 63662) iASL Compiler/Disassembler and Tools: 6367 6368Implemented an ANSI C version of the acpixtract utility. This version will 6369automatically extract the DSDT and all SSDTs from the input acpidump text 6370file and dump the binary output to separate files. It can also display a 6371summary of the input file including the headers for each table found and 6372will extract any single ACPI table, with any signature. (See 6373source/tools/acpixtract) 6374 6375---------------------------------------- 637610 March 2006. Summary of changes for version 20060310: 6377 63781) ACPI CA Core Subsystem: 6379 6380Tagged all external interfaces to the subsystem with the new 6381ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 6382kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 6383macro. The default definition is NULL. 6384 6385Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 6386This allows the host to define this as necessary to simplify kernel 6387integration. The default definition is ACPI_NATIVE_UINT. 6388 6389Fixed two interpreter problems related to error processing, the deletion 6390of 6391objects, and placing invalid pointers onto the internal operator result 6392stack. BZ 6028, 6151 (Valery Podrezov) 6393 6394Increased the reference count threshold where a warning is emitted for 6395large 6396reference counts in order to eliminate unnecessary warnings on systems 6397with 6398large namespaces (especially 64-bit.) Increased the value from 0x400 to 63990x800. 6400 6401Due to universal disagreement as to the meaning of the 'c' in the calloc() 6402function, the ACPI_MEM_CALLOCATE macro has been renamed to 6403ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 6404ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 6405ACPI_FREE. 6406 6407Code and Data Size: These are the sizes for the acpica.lib produced by the 6408Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 6409ACPI 6410driver or OSPM code. The debug version of the code includes the debug 6411output 6412trace mechanism and has a much larger code and data size. Note that these 6413values will vary depending on the efficiency of the compiler and the 6414compiler options used during generation. 6415 6416 Previous Release: 6417 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 6418 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 6419 Current Release: 6420 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6421 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 6422 6423 64242) iASL Compiler/Disassembler: 6425 6426Disassembler: implemented support for symbolic resource descriptor 6427references. If a CreateXxxxField operator references a fixed offset within 6428a 6429resource descriptor, a name is assigned to the descriptor and the offset 6430is 6431translated to the appropriate resource tag and pathname. The addition of 6432this support brings the disassembled code very close to the original ASL 6433source code and helps eliminate run-time errors when the disassembled code 6434is modified (and recompiled) in such a way as to invalidate the original 6435fixed offsets. 6436 6437Implemented support for a Descriptor Name as the last parameter to the ASL 6438Register() macro. This parameter was inadvertently left out of the ACPI 6439specification, and will be added for ACPI 3.0b. 6440 6441Fixed a problem where the use of the "_OSI" string (versus the full path 6442"\_OSI") caused an internal compiler error. ("No back ptr to op") 6443 6444Fixed a problem with the error message that occurs when an invalid string 6445is 6446used for a _HID object (such as one with an embedded asterisk: 6447"*PNP010A".) 6448The correct message is now displayed. 6449 6450---------------------------------------- 645117 February 2006. Summary of changes for version 20060217: 6452 64531) ACPI CA Core Subsystem: 6454 6455Implemented a change to the IndexField support to match the behavior of 6456the 6457Microsoft AML interpreter. The value written to the Index register is now 6458a 6459byte offset, no longer an index based upon the width of the Data register. 6460This should fix IndexField problems seen on some machines where the Data 6461register is not exactly one byte wide. The ACPI specification will be 6462clarified on this point. 6463 6464Fixed a problem where several resource descriptor types could overrun the 6465internal descriptor buffer due to size miscalculation: VendorShort, 6466VendorLong, and Interrupt. This was noticed on IA64 machines, but could 6467affect all platforms. 6468 6469Fixed a problem where individual resource descriptors were misaligned 6470within 6471the internal buffer, causing alignment faults on IA64 platforms. 6472 6473Code and Data Size: These are the sizes for the acpica.lib produced by the 6474Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 6475ACPI 6476driver or OSPM code. The debug version of the code includes the debug 6477output 6478trace mechanism and has a much larger code and data size. Note that these 6479values will vary depending on the efficiency of the compiler and the 6480compiler options used during generation. 6481 6482 Previous Release: 6483 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6484 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 6485 Current Release: 6486 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 6487 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 6488 6489 64902) iASL Compiler/Disassembler: 6491 6492Implemented support for new reserved names: _WDG and _WED are Microsoft 6493extensions for Windows Instrumentation Management, _TDL is a new ACPI- 6494defined method (Throttling Depth Limit.) 6495 6496Fixed a problem where a zero-length VendorShort or VendorLong resource 6497descriptor was incorrectly emitted as a descriptor of length one. 6498 6499---------------------------------------- 650010 February 2006. Summary of changes for version 20060210: 6501 65021) ACPI CA Core Subsystem: 6503 6504Removed a couple of extraneous ACPI_ERROR messages that appeared during 6505normal execution. These became apparent after the conversion from 6506ACPI_DEBUG_PRINT. 6507 6508Fixed a problem where the CreateField operator could hang if the BitIndex 6509or 6510NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 6511 6512Fixed a problem where a DeRefOf operation on a buffer object incorrectly 6513failed with an exception. This also fixes a couple of related RefOf and 6514DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 6515 6516Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 6517of 6518AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 6519BZ 65205480) 6521 6522Implemented a memory cleanup at the end of the execution of each iteration 6523of an AML While() loop, preventing the accumulation of outstanding 6524objects. 6525(Valery Podrezov, BZ 5427) 6526 6527Eliminated a chunk of duplicate code in the object resolution code. 6528(Valery 6529Podrezov, BZ 5336) 6530 6531Fixed several warnings during the 64-bit code generation. 6532 6533The AcpiSrc source code conversion tool now inserts one line of whitespace 6534after an if() statement that is followed immediately by a comment, 6535improving 6536readability of the Linux code. 6537 6538Code and Data Size: The current and previous library sizes for the core 6539subsystem are shown below. These are the code and data sizes for the 6540acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6541values do not include any ACPI driver or OSPM code. The debug version of 6542the 6543code includes the debug output trace mechanism and has a much larger code 6544and data size. Note that these values will vary depending on the 6545efficiency 6546of the compiler and the compiler options used during generation. 6547 6548 Previous Release: 6549 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 6550 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 6551 Current Release: 6552 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 6553 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 6554 6555 65562) iASL Compiler/Disassembler: 6557 6558Fixed a problem with the disassembly of a BankField operator with a 6559complex 6560expression for the BankValue parameter. 6561 6562---------------------------------------- 656327 January 2006. Summary of changes for version 20060127: 6564 65651) ACPI CA Core Subsystem: 6566 6567Implemented support in the Resource Manager to allow unresolved namestring 6568references within resource package objects for the _PRT method. This 6569support 6570is in addition to the previously implemented unresolved reference support 6571within the AML parser. If the interpreter slack mode is enabled, these 6572unresolved references will be passed through to the caller as a NULL 6573package 6574entry. 6575 6576Implemented and deployed new macros and functions for error and warning 6577messages across the subsystem. These macros are simpler and generate less 6578code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 6579ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 6580macros remain defined to allow ACPI drivers time to migrate to the new 6581macros. 6582 6583Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 6584Acquire/Release Lock OSL interfaces. 6585 6586Fixed a problem where Alias ASL operators are sometimes not correctly 6587resolved, in both the interpreter and the iASL compiler. 6588 6589Fixed several problems with the implementation of the 6590ConcatenateResTemplate 6591ASL operator. As per the ACPI specification, zero length buffers are now 6592treated as a single EndTag. One-length buffers always cause a fatal 6593exception. Non-zero length buffers that do not end with a full 2-byte 6594EndTag 6595cause a fatal exception. 6596 6597Fixed a possible structure overwrite in the AcpiGetObjectInfo external 6598interface. (With assistance from Thomas Renninger) 6599 6600Code and Data Size: The current and previous library sizes for the core 6601subsystem are shown below. These are the code and data sizes for the 6602acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6603values do not include any ACPI driver or OSPM code. The debug version of 6604the 6605code includes the debug output trace mechanism and has a much larger code 6606and data size. Note that these values will vary depending on the 6607efficiency 6608of the compiler and the compiler options used during generation. 6609 6610 Previous Release: 6611 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 6612 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 6613 Current Release: 6614 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 6615 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 6616 6617 66182) iASL Compiler/Disassembler: 6619 6620Fixed an internal error that was generated for any forward references to 6621ASL 6622Alias objects. 6623 6624---------------------------------------- 662513 January 2006. Summary of changes for version 20060113: 6626 66271) ACPI CA Core Subsystem: 6628 6629Added 2006 copyright to all module headers and signons. This affects 6630virtually every file in the ACPICA core subsystem, iASL compiler, and the 6631utilities. 6632 6633Enhanced the ACPICA error reporting in order to simplify user migration to 6634the non-debug version of ACPICA. Replaced all instances of the 6635ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 6636levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 6637respectively. This preserves all error and warning messages in the non- 6638debug 6639version of the ACPICA code (this has been referred to as the "debug lite" 6640option.) Over 200 cases were converted to create a total of over 380 6641error/warning messages across the ACPICA code. This increases the code and 6642data size of the default non-debug version of the code somewhat (about 664313K), 6644but all error/warning reporting may be disabled if desired (and code 6645eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 6646configuration option. The size of the debug version of ACPICA remains 6647about 6648the same. 6649 6650Fixed a memory leak within the AML Debugger "Set" command. One object was 6651not properly deleted for every successful invocation of the command. 6652 6653Code and Data Size: The current and previous library sizes for the core 6654subsystem are shown below. These are the code and data sizes for the 6655acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6656values do not include any ACPI driver or OSPM code. The debug version of 6657the 6658code includes the debug output trace mechanism and has a much larger code 6659and data size. Note that these values will vary depending on the 6660efficiency 6661of the compiler and the compiler options used during generation. 6662 6663 Previous Release: 6664 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 6665 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 6666 Current Release: 6667 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 6668 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 6669 6670 66712) iASL Compiler/Disassembler: 6672 6673The compiler now officially supports the ACPI 3.0a specification that was 6674released on December 30, 2005. (Specification is available at 6675www.acpi.info) 6676 6677---------------------------------------- 667816 December 2005. Summary of changes for version 20051216: 6679 66801) ACPI CA Core Subsystem: 6681 6682Implemented optional support to allow unresolved names within ASL Package 6683objects. A null object is inserted in the package when a named reference 6684cannot be located in the current namespace. Enabled via the interpreter 6685slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 6686that contain such code. 6687 6688Implemented an optimization to the initialization sequence that can 6689improve 6690boot time. During ACPI device initialization, the _STA method is now run 6691if 6692and only if the _INI method exists. The _STA method is used to determine 6693if 6694the device is present; An _INI can only be run if _STA returns present, 6695but 6696it is a waste of time to run the _STA method if the _INI does not exist. 6697(Prototype and assistance from Dong Wei) 6698 6699Implemented use of the C99 uintptr_t for the pointer casting macros if it 6700is 6701available in the current compiler. Otherwise, the default (void *) cast is 6702used as before. 6703 6704Fixed some possible memory leaks found within the execution path of the 6705Break, Continue, If, and CreateField operators. (Valery Podrezov) 6706 6707Fixed a problem introduced in the 20051202 release where an exception is 6708generated during method execution if a control method attempts to declare 6709another method. 6710 6711Moved resource descriptor string constants that are used by both the AML 6712disassembler and AML debugger to the common utilities directory so that 6713these components are independent. 6714 6715Implemented support in the AcpiExec utility (-e switch) to globally ignore 6716exceptions during control method execution (method is not aborted.) 6717 6718Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 6719generation. 6720 6721Code and Data Size: The current and previous library sizes for the core 6722subsystem are shown below. These are the code and data sizes for the 6723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6724values do not include any ACPI driver or OSPM code. The debug version of 6725the 6726code includes the debug output trace mechanism and has a much larger code 6727and data size. Note that these values will vary depending on the 6728efficiency 6729of the compiler and the compiler options used during generation. 6730 6731 Previous Release: 6732 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6733 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 6734 Current Release: 6735 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 6736 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 6737 6738 67392) iASL Compiler/Disassembler: 6740 6741Fixed a problem where a CPU stack overflow fault could occur if a 6742recursive 6743method call was made from within a Return statement. 6744 6745---------------------------------------- 674602 December 2005. Summary of changes for version 20051202: 6747 67481) ACPI CA Core Subsystem: 6749 6750Modified the parsing of control methods to no longer create namespace 6751objects during the first pass of the parse. Objects are now created only 6752during the execute phase, at the moment the namespace creation operator is 6753encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 6754should eliminate ALREADY_EXISTS exceptions seen on some machines where 6755reentrant control methods are protected by an AML mutex. The mutex will 6756now 6757correctly block multiple threads from attempting to create the same object 6758more than once. 6759 6760Increased the number of available Owner Ids for namespace object tracking 6761from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 6762on 6763some machines with a large number of ACPI tables (either static or 6764dynamic). 6765 6766Fixed a problem with the AcpiExec utility where a fault could occur when 6767the 6768-b switch (batch mode) is used. 6769 6770Enhanced the namespace dump routine to output the owner ID for each 6771namespace object. 6772 6773Code and Data Size: The current and previous library sizes for the core 6774subsystem are shown below. These are the code and data sizes for the 6775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6776values do not include any ACPI driver or OSPM code. The debug version of 6777the 6778code includes the debug output trace mechanism and has a much larger code 6779and data size. Note that these values will vary depending on the 6780efficiency 6781of the compiler and the compiler options used during generation. 6782 6783 Previous Release: 6784 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6785 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6786 Current Release: 6787 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6788 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 6789 6790 67912) iASL Compiler/Disassembler: 6792 6793Fixed a parse error during compilation of certain Switch/Case constructs. 6794To 6795simplify the parse, the grammar now allows for multiple Default statements 6796and this error is now detected and flagged during the analysis phase. 6797 6798Disassembler: The disassembly now includes the contents of the original 6799table header within a comment at the start of the file. This includes the 6800name and version of the original ASL compiler. 6801 6802---------------------------------------- 680317 November 2005. Summary of changes for version 20051117: 6804 68051) ACPI CA Core Subsystem: 6806 6807Fixed a problem in the AML parser where the method thread count could be 6808decremented below zero if any errors occurred during the method parse 6809phase. 6810This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 6811machines. 6812This also fixed a related regression with the mechanism that detects and 6813corrects methods that cannot properly handle reentrancy (related to the 6814deployment of the new OwnerId mechanism.) 6815 6816Eliminated the pre-parsing of control methods (to detect errors) during 6817table load. Related to the problem above, this was causing unwind issues 6818if 6819any errors occurred during the parse, and it seemed to be overkill. A 6820table 6821load should not be aborted if there are problems with any single control 6822method, thus rendering this feature rather pointless. 6823 6824Fixed a problem with the new table-driven resource manager where an 6825internal 6826buffer overflow could occur for small resource templates. 6827 6828Implemented a new external interface, AcpiGetVendorResource. This 6829interface 6830will find and return a vendor-defined resource descriptor within a _CRS or 6831_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 6832Helgaas. 6833 6834Removed the length limit (200) on string objects as per the upcoming ACPI 68353.0A specification. This affects the following areas of the interpreter: 68361) 6837any implicit conversion of a Buffer to a String, 2) a String object result 6838of the ASL Concatentate operator, 3) the String object result of the ASL 6839ToString operator. 6840 6841Fixed a problem in the Windows OS interface layer (OSL) where a 6842WAIT_FOREVER 6843on a semaphore object would incorrectly timeout. This allows the 6844multithreading features of the AcpiExec utility to work properly under 6845Windows. 6846 6847Updated the Linux makefiles for the iASL compiler and AcpiExec to include 6848the recently added file named "utresrc.c". 6849 6850Code and Data Size: The current and previous library sizes for the core 6851subsystem are shown below. These are the code and data sizes for the 6852acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6853values do not include any ACPI driver or OSPM code. The debug version of 6854the 6855code includes the debug output trace mechanism and has a much larger code 6856and data size. Note that these values will vary depending on the 6857efficiency 6858of the compiler and the compiler options used during generation. 6859 6860 Previous Release: 6861 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 6862 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6863 Current Release: 6864 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 6865 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6866 6867 68682) iASL Compiler/Disassembler: 6869 6870Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 6871specification. For the iASL compiler, this means that string literals 6872within 6873the source ASL can be of any length. 6874 6875Enhanced the listing output to dump the AML code for resource descriptors 6876immediately after the ASL code for each descriptor, instead of in a block 6877at 6878the end of the entire resource template. 6879 6880Enhanced the compiler debug output to dump the entire original parse tree 6881constructed during the parse phase, before any transforms are applied to 6882the 6883tree. The transformed tree is dumped also. 6884 6885---------------------------------------- 688602 November 2005. Summary of changes for version 20051102: 6887 68881) ACPI CA Core Subsystem: 6889 6890Modified the subsystem initialization sequence to improve GPE support. The 6891GPE initialization has been split into two parts in order to defer 6892execution 6893of the _PRW methods (Power Resources for Wake) until after the hardware is 6894fully initialized and the SCI handler is installed. This allows the _PRW 6895methods to access fields protected by the Global Lock. This will fix 6896systems 6897where a NO_GLOBAL_LOCK exception has been seen during initialization. 6898 6899Converted the ACPI internal object disassemble and display code within the 6900AML debugger to fully table-driven operation, reducing code size and 6901increasing maintainability. 6902 6903Fixed a regression with the ConcatenateResTemplate() ASL operator 6904introduced 6905in the 20051021 release. 6906 6907Implemented support for "local" internal ACPI object types within the 6908debugger "Object" command and the AcpiWalkNamespace external interfaces. 6909These local types include RegionFields, BankFields, IndexFields, Alias, 6910and 6911reference objects. 6912 6913Moved common AML resource handling code into a new file, "utresrc.c". This 6914code is shared by both the Resource Manager and the AML Debugger. 6915 6916Code and Data Size: The current and previous library sizes for the core 6917subsystem are shown below. These are the code and data sizes for the 6918acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6919values do not include any ACPI driver or OSPM code. The debug version of 6920the 6921code includes the debug output trace mechanism and has a much larger code 6922and data size. Note that these values will vary depending on the 6923efficiency 6924of the compiler and the compiler options used during generation. 6925 6926 Previous Release: 6927 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 6928 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 6929 Current Release: 6930 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 6931 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 6932 6933 69342) iASL Compiler/Disassembler: 6935 6936Fixed a problem with very large initializer lists (more than 4000 6937elements) 6938for both Buffer and Package objects where the parse stack could overflow. 6939 6940Enhanced the pre-compile source code scan for non-ASCII characters to 6941ignore 6942characters within comment fields. The scan is now always performed and is 6943no 6944longer optional, detecting invalid characters within a source file 6945immediately rather than during the parse phase or later. 6946 6947Enhanced the ASL grammar definition to force early reductions on all list- 6948style grammar elements so that the overall parse stack usage is greatly 6949reduced. This should improve performance and reduce the possibility of 6950parse 6951stack overflow. 6952 6953Eliminated all reduce/reduce conflicts in the iASL parser generation. 6954Also, 6955with the addition of a %expected statement, the compiler generates from 6956source with no warnings. 6957 6958Fixed a possible segment fault in the disassembler if the input filename 6959does not contain a "dot" extension (Thomas Renninger). 6960 6961---------------------------------------- 696221 October 2005. Summary of changes for version 20051021: 6963 69641) ACPI CA Core Subsystem: 6965 6966Implemented support for the EM64T and other x86-64 processors. This 6967essentially entails recognizing that these processors support non-aligned 6968memory transfers. Previously, all 64-bit processors were assumed to lack 6969hardware support for non-aligned transfers. 6970 6971Completed conversion of the Resource Manager to nearly full table-driven 6972operation. Specifically, the resource conversion code (convert AML to 6973internal format and the reverse) and the debug code to dump internal 6974resource descriptors are fully table-driven, reducing code and data size 6975and 6976improving maintainability. 6977 6978The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 6979on 64-bit processors instead of a fixed 32-bit word. (With assistance from 6980Alexey Starikovskiy) 6981 6982Implemented support within the resource conversion code for the Type- 6983Specific byte within the various ACPI 3.0 *WordSpace macros. 6984 6985Fixed some issues within the resource conversion code for the type- 6986specific 6987flags for both Memory and I/O address resource descriptors. For Memory, 6988implemented support for the MTP and TTP flags. For I/O, split the TRS and 6989TTP flags into two separate fields. 6990 6991Code and Data Size: The current and previous library sizes for the core 6992subsystem are shown below. These are the code and data sizes for the 6993acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 6994values do not include any ACPI driver or OSPM code. The debug version of 6995the 6996code includes the debug output trace mechanism and has a much larger code 6997and data size. Note that these values will vary depending on the 6998efficiency 6999of the compiler and the compiler options used during generation. 7000 7001 Previous Release: 7002 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 7003 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 7004 Current Release: 7005 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 7006 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 7007 7008 7009 70102) iASL Compiler/Disassembler: 7011 7012Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 7013corresponding ResourceSource string was not also present in a resource 7014descriptor declaration. This restriction caused problems with existing 7015AML/ASL code that includes the Index byte without the string. When such 7016AML 7017was disassembled, it could not be compiled without modification. Further, 7018the modified code created a resource template with a different size than 7019the 7020original, breaking code that used fixed offsets into the resource template 7021buffer. 7022 7023Removed a recent feature of the disassembler to ignore a lone 7024ResourceIndex 7025byte. This byte is now emitted if present so that the exact AML can be 7026reproduced when the disassembled code is recompiled. 7027 7028Improved comments and text alignment for the resource descriptor code 7029emitted by the disassembler. 7030 7031Implemented disassembler support for the ACPI 3.0 AccessSize field within 7032a 7033Register() resource descriptor. 7034 7035---------------------------------------- 703630 September 2005. Summary of changes for version 20050930: 7037 70381) ACPI CA Core Subsystem: 7039 7040Completed a major overhaul of the Resource Manager code - specifically, 7041optimizations in the area of the AML/internal resource conversion code. 7042The 7043code has been optimized to simplify and eliminate duplicated code, CPU 7044stack 7045use has been decreased by optimizing function parameters and local 7046variables, and naming conventions across the manager have been 7047standardized 7048for clarity and ease of maintenance (this includes function, parameter, 7049variable, and struct/typedef names.) The update may force changes in some 7050driver code, depending on how resources are handled by the host OS. 7051 7052All Resource Manager dispatch and information tables have been moved to a 7053single location for clarity and ease of maintenance. One new file was 7054created, named "rsinfo.c". 7055 7056The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 7057guarantee that the argument is not evaluated twice, making them less prone 7058to macro side-effects. However, since there exists the possibility of 7059additional stack use if a particular compiler cannot optimize them (such 7060as 7061in the debug generation case), the original macros are optionally 7062available. 7063Note that some invocations of the return_VALUE macro may now cause size 7064mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 7065to 7066eliminate these. (From Randy Dunlap) 7067 7068Implemented a new mechanism to enable debug tracing for individual control 7069methods. A new external interface, AcpiDebugTrace, is provided to enable 7070this mechanism. The intent is to allow the host OS to easily enable and 7071disable tracing for problematic control methods. This interface can be 7072easily exposed to a user or debugger interface if desired. See the file 7073psxface.c for details. 7074 7075AcpiUtCallocate will now return a valid pointer if a length of zero is 7076specified - a length of one is used and a warning is issued. This matches 7077the behavior of AcpiUtAllocate. 7078 7079Code and Data Size: The current and previous library sizes for the core 7080subsystem are shown below. These are the code and data sizes for the 7081acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 7082values do not include any ACPI driver or OSPM code. The debug version of 7083the 7084code includes the debug output trace mechanism and has a much larger code 7085and data size. Note that these values will vary depending on the 7086efficiency 7087of the compiler and the compiler options used during generation. 7088 7089 Previous Release: 7090 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 7091 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 7092 Current Release: 7093 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 7094 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 7095 7096 70972) iASL Compiler/Disassembler: 7098 7099A remark is issued if the effective compile-time length of a package or 7100buffer is zero. Previously, this was a warning. 7101 7102---------------------------------------- 710316 September 2005. Summary of changes for version 20050916: 7104 71051) ACPI CA Core Subsystem: 7106 7107Fixed a problem within the Resource Manager where support for the Generic 7108Register descriptor was not fully implemented. This descriptor is now 7109fully 7110recognized, parsed, disassembled, and displayed. 7111 7112Completely restructured the Resource Manager code to utilize table-driven 7113dispatch and lookup, eliminating many of the large switch() statements. 7114This 7115reduces overall subsystem code size and code complexity. Affects the 7116resource parsing and construction, disassembly, and debug dump output. 7117 7118Cleaned up and restructured the debug dump output for all resource 7119descriptors. Improved readability of the output and reduced code size. 7120 7121Fixed a problem where changes to internal data structures caused the 7122optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 7123 7124Code and Data Size: The current and previous library sizes for the core 7125subsystem are shown below. These are the code and data sizes for the 7126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 7127values do not include any ACPI driver or OSPM code. The debug version of 7128the 7129code includes the debug output trace mechanism and has a much larger code 7130and data size. Note that these values will vary depending on the 7131efficiency 7132of the compiler and the compiler options used during generation. 7133 7134 Previous Release: 7135 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 7136 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 7137 Current Release: 7138 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 7139 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 7140 7141 71422) iASL Compiler/Disassembler: 7143 7144Updated the disassembler to automatically insert an EndDependentFn() macro 7145into the ASL stream if this macro is missing in the original AML code, 7146simplifying compilation of the resulting ASL module. 7147 7148Fixed a problem in the disassembler where a disassembled ResourceSource 7149string (within a large resource descriptor) was not surrounded by quotes 7150and 7151not followed by a comma, causing errors when the resulting ASL module was 7152compiled. Also, escape sequences within a ResourceSource string are now 7153handled correctly (especially "\\") 7154 7155---------------------------------------- 715602 September 2005. Summary of changes for version 20050902: 7157 71581) ACPI CA Core Subsystem: 7159 7160Fixed a problem with the internal Owner ID allocation and deallocation 7161mechanisms for control method execution and recursive method invocation. 7162This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 7163messages seen on some systems. Recursive method invocation depth is 7164currently limited to 255. (Alexey Starikovskiy) 7165 7166Completely eliminated all vestiges of support for the "module-level 7167executable code" until this support is fully implemented and debugged. 7168This 7169should eliminate the NO_RETURN_VALUE exceptions seen during table load on 7170some systems that invoke this support. 7171 7172Fixed a problem within the resource manager code where the transaction 7173flags 7174for a 64-bit address descriptor were handled incorrectly in the type- 7175specific flag byte. 7176 7177Consolidated duplicate code within the address descriptor resource manager 7178code, reducing overall subsystem code size. 7179 7180Fixed a fault when using the AML debugger "disassemble" command to 7181disassemble individual control methods. 7182 7183Removed references to the "release_current" directory within the Unix 7184release package. 7185 7186Code and Data Size: The current and previous core subsystem library sizes 7187are shown below. These are the code and data sizes for the acpica.lib 7188produced by the Microsoft Visual C++ 6.0 compiler. These values do not 7189include any ACPI driver or OSPM code. The debug version of the code 7190includes 7191the debug output trace mechanism and has a much larger code and data size. 7192Note that these values will vary depending on the efficiency of the 7193compiler 7194and the compiler options used during generation. 7195 7196 Previous Release: 7197 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7198 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 7199 Current Release: 7200 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 7201 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 7202 7203 72042) iASL Compiler/Disassembler: 7205 7206Implemented an error check for illegal duplicate values in the interrupt 7207and 7208dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 7209Interrupt(). 7210 7211Implemented error checking for the Irq() and IrqNoFlags() macros to detect 7212too many values in the interrupt list (16 max) and invalid values in the 7213list (range 0 - 15) 7214 7215The maximum length string literal within an ASL file is now restricted to 7216200 characters as per the ACPI specification. 7217 7218Fixed a fault when using the -ln option (generate namespace listing). 7219 7220Implemented an error check to determine if a DescriptorName within a 7221resource descriptor has already been used within the current scope. 7222 7223---------------------------------------- 722415 August 2005. Summary of changes for version 20050815: 7225 72261) ACPI CA Core Subsystem: 7227 7228Implemented a full bytewise compare to determine if a table load request 7229is 7230attempting to load a duplicate table. The compare is performed if the 7231table 7232signatures and table lengths match. This will allow different tables with 7233the same OEM Table ID and revision to be loaded - probably against the 7234ACPI 7235specification, but discovered in the field nonetheless. 7236 7237Added the changes.txt logfile to each of the zipped release packages. 7238 7239Code and Data Size: Current and previous core subsystem library sizes are 7240shown below. These are the code and data sizes for the acpica.lib produced 7241by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7242any ACPI driver or OSPM code. The debug version of the code includes the 7243debug output trace mechanism and has a much larger code and data size. 7244Note 7245that these values will vary depending on the efficiency of the compiler 7246and 7247the compiler options used during generation. 7248 7249 Previous Release: 7250 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7251 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 7252 Current Release: 7253 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7254 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 7255 7256 72572) iASL Compiler/Disassembler: 7258 7259Fixed a problem where incorrect AML code could be generated for Package 7260objects if optimization is disabled (via the -oa switch). 7261 7262Fixed a problem with where incorrect AML code is generated for variable- 7263length packages when the package length is not specified and the number of 7264initializer values is greater than 255. 7265 7266 7267---------------------------------------- 726829 July 2005. Summary of changes for version 20050729: 7269 72701) ACPI CA Core Subsystem: 7271 7272Implemented support to ignore an attempt to install/load a particular ACPI 7273table more than once. Apparently there exists BIOS code that repeatedly 7274attempts to load the same SSDT upon certain events. With assistance from 7275Venkatesh Pallipadi. 7276 7277Restructured the main interface to the AML parser in order to correctly 7278handle all exceptional conditions. This will prevent leakage of the 7279OwnerId 7280resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 7281some 7282machines. With assistance from Alexey Starikovskiy. 7283 7284Support for "module level code" has been disabled in this version due to a 7285number of issues that have appeared on various machines. The support can 7286be 7287enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 7288compilation. When the issues are fully resolved, the code will be enabled 7289by 7290default again. 7291 7292Modified the internal functions for debug print support to define the 7293FunctionName parameter as a (const char *) for compatibility with compiler 7294built-in macros such as __FUNCTION__, etc. 7295 7296Linted the entire ACPICA source tree for both 32-bit and 64-bit. 7297 7298Implemented support to display an object count summary for the AML 7299Debugger 7300commands Object and Methods. 7301 7302Code and Data Size: Current and previous core subsystem library sizes are 7303shown below. These are the code and data sizes for the acpica.lib produced 7304by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7305any ACPI driver or OSPM code. The debug version of the code includes the 7306debug output trace mechanism and has a much larger code and data size. 7307Note 7308that these values will vary depending on the efficiency of the compiler 7309and 7310the compiler options used during generation. 7311 7312 Previous Release: 7313 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 7314 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 7315 Current Release: 7316 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 7317 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 7318 7319 73202) iASL Compiler/Disassembler: 7321 7322Fixed a regression that appeared in the 20050708 version of the compiler 7323where an error message was inadvertently emitted for invocations of the 7324_OSI 7325reserved control method. 7326 7327---------------------------------------- 732808 July 2005. Summary of changes for version 20050708: 7329 73301) ACPI CA Core Subsystem: 7331 7332The use of the CPU stack in the debug version of the subsystem has been 7333considerably reduced. Previously, a debug structure was declared in every 7334function that used the debug macros. This structure has been removed in 7335favor of declaring the individual elements as parameters to the debug 7336functions. This reduces the cumulative stack use during nested execution 7337of 7338ACPI function calls at the cost of a small increase in the code size of 7339the 7340debug version of the subsystem. With assistance from Alexey Starikovskiy 7341and 7342Len Brown. 7343 7344Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 7345headers to define a macro that will return the current function name at 7346runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 7347by 7348the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 7349compiler-dependent header, the function name is saved on the CPU stack 7350(one 7351pointer per function.) This mechanism is used because apparently there 7352exists no standard ANSI-C defined macro that that returns the function 7353name. 7354 7355Redesigned and reimplemented the "Owner ID" mechanism used to track 7356namespace objects created/deleted by ACPI tables and control method 7357execution. A bitmap is now used to allocate and free the IDs, thus solving 7358the wraparound problem present in the previous implementation. The size of 7359the namespace node descriptor was reduced by 2 bytes as a result (Alexey 7360Starikovskiy). 7361 7362Removed the UINT32_BIT and UINT16_BIT types that were used for the 7363bitfield 7364flag definitions within the headers for the predefined ACPI tables. These 7365have been replaced by UINT8_BIT in order to increase the code portability 7366of 7367the subsystem. If the use of UINT8 remains a problem, we may be forced to 7368eliminate bitfields entirely because of a lack of portability. 7369 7370Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 7371This 7372is a frequently used function and this improvement increases the 7373performance 7374of the entire subsystem (Alexey Starikovskiy). 7375 7376Fixed several possible memory leaks and the inverse - premature object 7377deletion (Alexey Starikovskiy). 7378 7379Code and Data Size: Current and previous core subsystem library sizes are 7380shown below. These are the code and data sizes for the acpica.lib produced 7381by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7382any ACPI driver or OSPM code. The debug version of the code includes the 7383debug output trace mechanism and has a much larger code and data size. 7384Note 7385that these values will vary depending on the efficiency of the compiler 7386and 7387the compiler options used during generation. 7388 7389 Previous Release: 7390 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 7391 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 7392 Current Release: 7393 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 7394 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 7395 7396---------------------------------------- 739724 June 2005. Summary of changes for version 20050624: 7398 73991) ACPI CA Core Subsystem: 7400 7401Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 7402the host-defined cache object. This allows the OSL implementation to 7403define 7404and type this object in any manner desired, simplifying the OSL 7405implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 7406Linux, and should be defined in the OS-specific header file for other 7407operating systems as required. 7408 7409Changed the interface to AcpiOsAcquireObject to directly return the 7410requested object as the function return (instead of ACPI_STATUS.) This 7411change was made for performance reasons, since this is the purpose of the 7412interface in the first place. AcpiOsAcquireObject is now similar to the 7413AcpiOsAllocate interface. 7414 7415Implemented a new AML debugger command named Businfo. This command 7416displays 7417information about all devices that have an associate _PRT object. The 7418_ADR, 7419_HID, _UID, and _CID are displayed for these devices. 7420 7421Modified the initialization sequence in AcpiInitializeSubsystem to call 7422the 7423OSL interface AcpiOslInitialize first, before any local initialization. 7424This 7425change was required because the global initialization now calls OSL 7426interfaces. 7427 7428Enhanced the Dump command to display the entire contents of Package 7429objects 7430(including all sub-objects and their values.) 7431 7432Restructured the code base to split some files because of size and/or 7433because the code logically belonged in a separate file. New files are 7434listed 7435below. All makefiles and project files included in the ACPI CA release 7436have 7437been updated. 7438 utilities/utcache.c /* Local cache interfaces */ 7439 utilities/utmutex.c /* Local mutex support */ 7440 utilities/utstate.c /* State object support */ 7441 interpreter/parser/psloop.c /* Main AML parse loop */ 7442 7443Code and Data Size: Current and previous core subsystem library sizes are 7444shown below. These are the code and data sizes for the acpica.lib produced 7445by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7446any ACPI driver or OSPM code. The debug version of the code includes the 7447debug output trace mechanism and has a much larger code and data size. 7448Note 7449that these values will vary depending on the efficiency of the compiler 7450and 7451the compiler options used during generation. 7452 7453 Previous Release: 7454 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 7455 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 7456 Current Release: 7457 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 7458 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 7459 7460 74612) iASL Compiler/Disassembler: 7462 7463Fixed a regression introduced in version 20050513 where the use of a 7464Package 7465object within a Case() statement caused a compile time exception. The 7466original behavior has been restored (a Match() operator is emitted.) 7467 7468---------------------------------------- 746917 June 2005. Summary of changes for version 20050617: 7470 74711) ACPI CA Core Subsystem: 7472 7473Moved the object cache operations into the OS interface layer (OSL) to 7474allow 7475the host OS to handle these operations if desired (for example, the Linux 7476OSL will invoke the slab allocator). This support is optional; the compile 7477time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 7478code in the ACPI CA core. The new OSL interfaces are shown below. See 7479utalloc.c for an example implementation, and acpiosxf.h for the exact 7480interface definitions. With assistance from Alexey Starikovskiy. 7481 AcpiOsCreateCache 7482 AcpiOsDeleteCache 7483 AcpiOsPurgeCache 7484 AcpiOsAcquireObject 7485 AcpiOsReleaseObject 7486 7487Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 7488return 7489and restore a flags parameter. This fits better with many OS lock models. 7490Note: the current execution state (interrupt handler or not) is no longer 7491passed to these interfaces. If necessary, the OSL must determine this 7492state 7493by itself, a simple and fast operation. With assistance from Alexey 7494Starikovskiy. 7495 7496Fixed a problem in the ACPI table handling where a valid XSDT was assumed 7497present if the revision of the RSDP was 2 or greater. According to the 7498ACPI 7499specification, the XSDT is optional in all cases, and the table manager 7500therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 7501Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 7502only the RSDT. 7503 7504Fixed an interpreter problem with the Mid() operator in the case of an 7505input 7506string where the resulting output string is of zero length. It now 7507correctly 7508returns a valid, null terminated string object instead of a string object 7509with a null pointer. 7510 7511Fixed a problem with the control method argument handling to allow a store 7512to an Arg object that already contains an object of type Device. The 7513Device 7514object is now correctly overwritten. Previously, an error was returned. 7515 7516 7517Enhanced the debugger Find command to emit object values in addition to 7518the 7519found object pathnames. The output format is the same as the dump 7520namespace 7521command. 7522 7523Enhanced the debugger Set command. It now has the ability to set the value 7524of any Named integer object in the namespace (Previously, only method 7525locals 7526and args could be set.) 7527 7528Code and Data Size: Current and previous core subsystem library sizes are 7529shown below. These are the code and data sizes for the acpica.lib produced 7530by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7531any ACPI driver or OSPM code. The debug version of the code includes the 7532debug output trace mechanism and has a much larger code and data size. 7533Note 7534that these values will vary depending on the efficiency of the compiler 7535and 7536the compiler options used during generation. 7537 7538 Previous Release: 7539 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 7540 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 7541 Current Release: 7542 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 7543 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 7544 7545 75462) iASL Compiler/Disassembler: 7547 7548Fixed a regression in the disassembler where if/else/while constructs were 7549output incorrectly. This problem was introduced in the previous release 7550(20050526). This problem also affected the single-step disassembly in the 7551debugger. 7552 7553Fixed a problem where compiling the reserved _OSI method would randomly 7554(but 7555rarely) produce compile errors. 7556 7557Enhanced the disassembler to emit compilable code in the face of incorrect 7558AML resource descriptors. If the optional ResourceSourceIndex is present, 7559but the ResourceSource is not, do not emit the ResourceSourceIndex in the 7560disassembly. Otherwise, the resulting code cannot be compiled without 7561errors. 7562 7563---------------------------------------- 756426 May 2005. Summary of changes for version 20050526: 7565 75661) ACPI CA Core Subsystem: 7567 7568Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 7569the module level (not within a control method.) These opcodes are executed 7570exactly once at the time the table is loaded. This type of code was legal 7571up 7572until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 7573in 7574order to provide backwards compatibility with earlier BIOS 7575implementations. 7576This eliminates the "Encountered executable code at module level" warning 7577that was previously generated upon detection of such code. 7578 7579Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 7580inadvertently be generated during the lookup of namespace objects in the 7581second pass parse of ACPI tables and control methods. It appears that this 7582problem could occur during the resolution of forward references to 7583namespace 7584objects. 7585 7586Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 7587corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 7588allows the deadlock detection debug code to be compiled out in the normal 7589case, improving mutex performance (and overall subsystem performance) 7590considerably. 7591 7592Implemented a handful of miscellaneous fixes for possible memory leaks on 7593error conditions and error handling control paths. These fixes were 7594suggested by FreeBSD and the Coverity Prevent source code analysis tool. 7595 7596Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 7597to prevent a fault in this error case. 7598 7599Code and Data Size: Current and previous core subsystem library sizes are 7600shown below. These are the code and data sizes for the acpica.lib produced 7601by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7602any ACPI driver or OSPM code. The debug version of the code includes the 7603debug output trace mechanism and has a much larger code and data size. 7604Note 7605that these values will vary depending on the efficiency of the compiler 7606and 7607the compiler options used during generation. 7608 7609 Previous Release: 7610 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7611 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7612 Current Release: 7613 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 7614 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 7615 7616 76172) iASL Compiler/Disassembler: 7618 7619Implemented support to allow Type 1 and Type 2 ASL operators to appear at 7620the module level (not within a control method.) These operators will be 7621executed once at the time the table is loaded. This type of code was legal 7622up until the release of ACPI 2.0B (2002) and is now supported by the iASL 7623compiler in order to provide backwards compatibility with earlier BIOS ASL 7624code. 7625 7626The ACPI integer width (specified via the table revision ID or the -r 7627override, 32 or 64 bits) is now used internally during compile-time 7628constant 7629folding to ensure that constants are truncated to 32 bits if necessary. 7630Previously, the revision ID value was only emitted in the AML table 7631header. 7632 7633An error message is now generated for the Mutex and Method operators if 7634the 7635SyncLevel parameter is outside the legal range of 0 through 15. 7636 7637Fixed a problem with the Method operator ParameterTypes list handling 7638(ACPI 76393.0). Previously, more than 2 types or 2 arguments generated a syntax 7640error. 7641The actual underlying implementation of method argument typechecking is 7642still under development, however. 7643 7644---------------------------------------- 764513 May 2005. Summary of changes for version 20050513: 7646 76471) ACPI CA Core Subsystem: 7648 7649Implemented support for PCI Express root bridges -- added support for 7650device 7651PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 7652 7653The interpreter now automatically truncates incoming 64-bit constants to 765432 7655bits if currently executing out of a 32-bit ACPI table (Revision < 2). 7656This 7657also affects the iASL compiler constant folding. (Note: as per below, the 7658iASL compiler no longer allows 64-bit constants within 32-bit tables.) 7659 7660Fixed a problem where string and buffer objects with "static" pointers 7661(pointers to initialization data within an ACPI table) were not handled 7662consistently. The internal object copy operation now always copies the 7663data 7664to a newly allocated buffer, regardless of whether the source object is 7665static or not. 7666 7667Fixed a problem with the FromBCD operator where an implicit result 7668conversion was improperly performed while storing the result to the target 7669operand. Since this is an "explicit conversion" operator, the implicit 7670conversion should never be performed on the output. 7671 7672Fixed a problem with the CopyObject operator where a copy to an existing 7673named object did not always completely overwrite the existing object 7674stored 7675at name. Specifically, a buffer-to-buffer copy did not delete the existing 7676buffer. 7677 7678Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 7679structs for consistency. 7680 7681Code and Data Size: Current and previous core subsystem library sizes are 7682shown below. These are the code and data sizes for the acpica.lib produced 7683by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7684any ACPI driver or OSPM code. The debug version of the code includes the 7685debug output trace mechanism and has a much larger code and data size. 7686Note 7687that these values will vary depending on the efficiency of the compiler 7688and 7689the compiler options used during generation. 7690 7691 Previous Release: 7692 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7693 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7694 Current Release: (Same sizes) 7695 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7696 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7697 7698 76992) iASL Compiler/Disassembler: 7700 7701The compiler now emits a warning if an attempt is made to generate a 64- 7702bit 7703integer constant from within a 32-bit ACPI table (Revision < 2). The 7704integer 7705is truncated to 32 bits. 7706 7707Fixed a problem with large package objects: if the static length of the 7708package is greater than 255, the "variable length package" opcode is 7709emitted. Previously, this caused an error. This requires an update to the 7710ACPI spec, since it currently (incorrectly) states that packages larger 7711than 7712255 elements are not allowed. 7713 7714The disassembler now correctly handles variable length packages and 7715packages 7716larger than 255 elements. 7717 7718---------------------------------------- 771908 April 2005. Summary of changes for version 20050408: 7720 77211) ACPI CA Core Subsystem: 7722 7723Fixed three cases in the interpreter where an "index" argument to an ASL 7724function was still (internally) 32 bits instead of the required 64 bits. 7725This was the Index argument to the Index, Mid, and Match operators. 7726 7727The "strupr" function is now permanently local (AcpiUtStrupr), since this 7728is 7729not a POSIX-defined function and not present in most kernel-level C 7730libraries. All references to the C library strupr function have been 7731removed 7732from the headers. 7733 7734Completed the deployment of static functions/prototypes. All prototypes 7735with 7736the static attribute have been moved from the headers to the owning C 7737file. 7738 7739Implemented an extract option (-e) for the AcpiBin utility (AML binary 7740utility). This option allows the utility to extract individual ACPI tables 7741from the output of AcpiDmp. It provides the same functionality of the 7742acpixtract.pl perl script without the worry of setting the correct perl 7743options. AcpiBin runs on Windows and has not yet been generated/validated 7744in 7745the Linux/Unix environment (but should be soon). 7746 7747Updated and fixed the table dump option for AcpiBin (-d). This option 7748converts a single ACPI table to a hex/ascii file, similar to the output of 7749AcpiDmp. 7750 7751Code and Data Size: Current and previous core subsystem library sizes are 7752shown below. These are the code and data sizes for the acpica.lib produced 7753by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7754any ACPI driver or OSPM code. The debug version of the code includes the 7755debug output trace mechanism and has a much larger code and data size. 7756Note 7757that these values will vary depending on the efficiency of the compiler 7758and 7759the compiler options used during generation. 7760 7761 Previous Release: 7762 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 7763 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 7764 Current Release: 7765 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 7766 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 7767 7768 77692) iASL Compiler/Disassembler: 7770 7771Disassembler fix: Added a check to ensure that the table length found in 7772the 7773ACPI table header within the input file is not longer than the actual 7774input 7775file size. This indicates some kind of file or table corruption. 7776 7777---------------------------------------- 777829 March 2005. Summary of changes for version 20050329: 7779 77801) ACPI CA Core Subsystem: 7781 7782An error is now generated if an attempt is made to create a Buffer Field 7783of 7784length zero (A CreateField with a length operand of zero.) 7785 7786The interpreter now issues a warning whenever executable code at the 7787module 7788level is detected during ACPI table load. This will give some idea of the 7789prevalence of this type of code. 7790 7791Implemented support for references to named objects (other than control 7792methods) within package objects. 7793 7794Enhanced package object output for the debug object. Package objects are 7795now 7796completely dumped, showing all elements. 7797 7798Enhanced miscellaneous object output for the debug object. Any object can 7799now be written to the debug object (for example, a device object can be 7800written, and the type of the object will be displayed.) 7801 7802The "static" qualifier has been added to all local functions across both 7803the 7804core subsystem and the iASL compiler. 7805 7806The number of "long" lines (> 80 chars) within the source has been 7807significantly reduced, by about 1/3. 7808 7809Cleaned up all header files to ensure that all CA/iASL functions are 7810prototyped (even static functions) and the formatting is consistent. 7811 7812Two new header files have been added, acopcode.h and acnames.h. 7813 7814Removed several obsolete functions that were no longer used. 7815 7816Code and Data Size: Current and previous core subsystem library sizes are 7817shown below. These are the code and data sizes for the acpica.lib produced 7818by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7819any ACPI driver or OSPM code. The debug version of the code includes the 7820debug output trace mechanism and has a much larger code and data size. 7821Note 7822that these values will vary depending on the efficiency of the compiler 7823and 7824the compiler options used during generation. 7825 7826 Previous Release: 7827 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7828 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 7829 Current Release: 7830 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 7831 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 7832 7833 7834 78352) iASL Compiler/Disassembler: 7836 7837Fixed a problem with the resource descriptor generation/support. For the 7838ResourceSourceIndex and the ResourceSource fields, both must be present, 7839or 7840both must be not present - can't have one without the other. 7841 7842The compiler now returns non-zero from the main procedure if any errors 7843have 7844occurred during the compilation. 7845 7846 7847---------------------------------------- 784809 March 2005. Summary of changes for version 20050309: 7849 78501) ACPI CA Core Subsystem: 7851 7852The string-to-buffer implicit conversion code has been modified again 7853after 7854a change to the ACPI specification. In order to match the behavior of the 7855other major ACPI implementation, the target buffer is no longer truncated 7856if 7857the source string is smaller than an existing target buffer. This change 7858requires an update to the ACPI spec, and should eliminate the recent 7859AE_AML_BUFFER_LIMIT issues. 7860 7861The "implicit return" support was rewritten to a new algorithm that solves 7862the general case. Rather than attempt to determine when a method is about 7863to 7864exit, the result of every ASL operator is saved momentarily until the very 7865next ASL operator is executed. Therefore, no matter how the method exits, 7866there will always be a saved implicit return value. This feature is only 7867enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 7868AE_AML_NO_RETURN_VALUE errors when enabled. 7869 7870Implemented implicit conversion support for the predicate (operand) of the 7871If, Else, and While operators. String and Buffer arguments are 7872automatically 7873converted to Integers. 7874 7875Changed the string-to-integer conversion behavior to match the new ACPI 7876errata: "If no integer object exists, a new integer is created. The ASCII 7877string is interpreted as a hexadecimal constant. Each string character is 7878interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 7879with the first character as the most significant digit, and ending with 7880the 7881first non-hexadecimal character or end-of-string." This means that the 7882first 7883non-hex character terminates the conversion and this is the code that was 7884changed. 7885 7886Fixed a problem where the ObjectType operator would fail (fault) when used 7887on an Index of a Package which pointed to a null package element. The 7888operator now properly returns zero (Uninitialized) in this case. 7889 7890Fixed a problem where the While operator used excessive memory by not 7891properly popping the result stack during execution. There was no memory 7892leak 7893after execution, however. (Code provided by Valery Podrezov.) 7894 7895Fixed a problem where references to control methods within Package objects 7896caused the method to be invoked, instead of producing a reference object 7897pointing to the method. 7898 7899Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 7900improve performance and reduce code size. (Code provided by Alexey 7901Starikovskiy.) 7902 7903Code and Data Size: Current and previous core subsystem library sizes are 7904shown below. These are the code and data sizes for the acpica.lib produced 7905by the Microsoft Visual C++ 6.0 compiler, and these values do not include 7906any ACPI driver or OSPM code. The debug version of the code includes the 7907debug output trace mechanism and has a much larger code and data size. 7908Note 7909that these values will vary depending on the efficiency of the compiler 7910and 7911the compiler options used during generation. 7912 7913 Previous Release: 7914 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7915 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 7916 Current Release: 7917 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 7918 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 7919 7920 79212) iASL Compiler/Disassembler: 7922 7923Fixed a problem with the Return operator with no arguments. Since the AML 7924grammar for the byte encoding requires an operand for the Return opcode, 7925the 7926compiler now emits a Return(Zero) for this case. An ACPI specification 7927update has been written for this case. 7928 7929For tables other than the DSDT, namepath optimization is automatically 7930disabled. This is because SSDTs can be loaded anywhere in the namespace, 7931the 7932compiler has no knowledge of where, and thus cannot optimize namepaths. 7933 7934Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 7935inadvertently omitted from the ACPI specification, and will require an 7936update to the spec. 7937 7938The source file scan for ASCII characters is now optional (-a). This 7939change 7940was made because some vendors place non-ascii characters within comments. 7941However, the scan is simply a brute-force byte compare to ensure all 7942characters in the file are in the range 0x00 to 0x7F. 7943 7944Fixed a problem with the CondRefOf operator where the compiler was 7945inappropriately checking for the existence of the target. Since the point 7946of 7947the operator is to check for the existence of the target at run-time, the 7948compiler no longer checks for the target existence. 7949 7950Fixed a problem where errors generated from the internal AML interpreter 7951during constant folding were not handled properly, causing a fault. 7952 7953Fixed a problem with overly aggressive range checking for the Stall 7954operator. The valid range (max 255) is now only checked if the operand is 7955of 7956type Integer. All other operand types cannot be statically checked. 7957 7958Fixed a problem where control method references within the RefOf, DeRefOf, 7959and ObjectType operators were not treated properly. They are now treated 7960as 7961actual references, not method invocations. 7962 7963Fixed and enhanced the "list namespace" option (-ln). This option was 7964broken 7965a number of releases ago. 7966 7967Improved error handling for the Field, IndexField, and BankField 7968operators. 7969The compiler now cleanly reports and recovers from errors in the field 7970component (FieldUnit) list. 7971 7972Fixed a disassembler problem where the optional ResourceDescriptor fields 7973TRS and TTP were not always handled correctly. 7974 7975Disassembler - Comments in output now use "//" instead of "/*" 7976 7977---------------------------------------- 797828 February 2005. Summary of changes for version 20050228: 7979 79801) ACPI CA Core Subsystem: 7981 7982Fixed a problem where the result of an Index() operator (an object 7983reference) must increment the reference count on the target object for the 7984life of the object reference. 7985 7986Implemented AML Interpreter and Debugger support for the new ACPI 3.0 7987Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 7988WordSpace 7989resource descriptors. 7990 7991Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 7992Space Descriptor" string, indicating interpreter support for the 7993descriptors 7994above. 7995 7996Implemented header support for the new ACPI 3.0 FADT flag bits. 7997 7998Implemented header support for the new ACPI 3.0 PCI Express bits for the 7999PM1 8000status/enable registers. 8001 8002Updated header support for the MADT processor local Apic struct and MADT 8003platform interrupt source struct for new ACPI 3.0 fields. 8004 8005Implemented header support for the SRAT and SLIT ACPI tables. 8006 8007Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 8008flag 8009at runtime. 8010 8011Code and Data Size: Current and previous core subsystem library sizes are 8012shown below. These are the code and data sizes for the acpica.lib produced 8013by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8014any ACPI driver or OSPM code. The debug version of the code includes the 8015debug output trace mechanism and has a much larger code and data size. 8016Note 8017that these values will vary depending on the efficiency of the compiler 8018and 8019the compiler options used during generation. 8020 8021 Previous Release: 8022 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 8023 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 8024 Current Release: 8025 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8026 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 8027 8028 80292) iASL Compiler/Disassembler: 8030 8031Fixed a problem with the internal 64-bit String-to-integer conversion with 8032strings less than two characters long. 8033 8034Fixed a problem with constant folding where the result of the Index() 8035operator can not be considered a constant. This means that Index() cannot 8036be 8037a type3 opcode and this will require an update to the ACPI specification. 8038 8039Disassembler: Implemented support for the TTP, MTP, and TRS resource 8040descriptor fields. These fields were inadvertently ignored and not output 8041in 8042the disassembly of the resource descriptor. 8043 8044 8045 ---------------------------------------- 804611 February 2005. Summary of changes for version 20050211: 8047 80481) ACPI CA Core Subsystem: 8049 8050Implemented ACPI 3.0 support for implicit conversion within the Match() 8051operator. MatchObjects can now be of type integer, buffer, or string 8052instead 8053of just type integer. Package elements are implicitly converted to the 8054type 8055of the MatchObject. This change aligns the behavior of Match() with the 8056behavior of the other logical operators (LLess(), etc.) It also requires 8057an 8058errata change to the ACPI specification as this support was intended for 8059ACPI 3.0, but was inadvertently omitted. 8060 8061Fixed a problem with the internal implicit "to buffer" conversion. Strings 8062that are converted to buffers will cause buffer truncation if the string 8063is 8064smaller than the target buffer. Integers that are converted to buffers 8065will 8066not cause buffer truncation, only zero extension (both as per the ACPI 8067spec.) The problem was introduced when code was added to truncate the 8068buffer, but this should not be performed in all cases, only the string 8069case. 8070 8071Fixed a problem with the Buffer and Package operators where the 8072interpreter 8073would get confused if two such operators were used as operands to an ASL 8074operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 8075stack was not being popped after the execution of these operators, 8076resulting 8077in an AE_NO_RETURN_VALUE exception. 8078 8079Fixed a problem with constructs of the form Store(Index(...),...). The 8080reference object returned from Index was inadvertently resolved to an 8081actual 8082value. This problem was introduced in version 20050114 when the behavior 8083of 8084Store() was modified to restrict the object types that can be used as the 8085source operand (to match the ACPI specification.) 8086 8087Reduced excessive stack use within the AcpiGetObjectInfo procedure. 8088 8089Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 8090 8091Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 8092 8093Code and Data Size: Current and previous core subsystem library sizes are 8094shown below. These are the code and data sizes for the acpica.lib produced 8095by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8096any ACPI driver or OSPM code. The debug version of the code includes the 8097debug output trace mechanism and has a much larger code and data size. 8098Note 8099that these values will vary depending on the efficiency of the compiler 8100and 8101the compiler options used during generation. 8102 8103 Previous Release: 8104 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 8105 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 8106 Current Release: 8107 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 8108 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 8109 8110 81112) iASL Compiler/Disassembler: 8112 8113Fixed a code generation problem in the constant folding optimization code 8114where incorrect code was generated if a constant was reduced to a buffer 8115object (i.e., a reduced type 5 opcode.) 8116 8117Fixed a typechecking problem for the ToBuffer operator. Caused by an 8118incorrect return type in the internal opcode information table. 8119 8120---------------------------------------- 812125 January 2005. Summary of changes for version 20050125: 8122 81231) ACPI CA Core Subsystem: 8124 8125Fixed a recently introduced problem with the Global Lock where the 8126underlying semaphore was not created. This problem was introduced in 8127version 20050114, and caused an AE_AML_NO_OPERAND exception during an 8128Acquire() operation on _GL. 8129 8130The local object cache is now optional, and is disabled by default. Both 8131AcpiExec and the iASL compiler enable the cache because they run in user 8132mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 8133to enable the local cache. 8134 8135Fixed an issue in the internal function AcpiUtEvaluateObject concerning 8136the 8137optional "implicit return" support where an error was returned if no 8138return 8139object was expected, but one was implicitly returned. AE_OK is now 8140returned 8141in this case and the implicitly returned object is deleted. 8142AcpiUtEvaluateObject is only occasionally used, and only to execute 8143reserved 8144methods such as _STA and _INI where the return type is known up front. 8145 8146Fixed a few issues with the internal convert-to-integer code. It now 8147returns 8148an error if an attempt is made to convert a null string, a string of only 8149blanks/tabs, or a zero-length buffer. This affects both implicit 8150conversion 8151and explicit conversion via the ToInteger() operator. 8152 8153The internal debug code in AcpiUtAcquireMutex has been commented out. It 8154is 8155not needed for normal operation and should increase the performance of the 8156entire subsystem. The code remains in case it is needed for debug purposes 8157again. 8158 8159The AcpiExec source and makefile are included in the Unix/Linux package 8160for 8161the first time. 8162 8163Code and Data Size: Current and previous core subsystem library sizes are 8164shown below. These are the code and data sizes for the acpica.lib produced 8165by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8166any ACPI driver or OSPM code. The debug version of the code includes the 8167debug output trace mechanism and has a much larger code and data size. 8168Note 8169that these values will vary depending on the efficiency of the compiler 8170and 8171the compiler options used during generation. 8172 8173 Previous Release: 8174 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 8175 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 8176 Current Release: 8177 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 8178 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 8179 81802) iASL Compiler/Disassembler: 8181 8182Switch/Case support: A warning is now issued if the type of the Switch 8183value 8184cannot be determined at compile time. For example, Switch(Arg0) will 8185generate the warning, and the type is assumed to be an integer. As per the 8186ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 8187the 8188warning. 8189 8190Switch/Case support: Implemented support for buffer and string objects as 8191the switch value. This is an ACPI 3.0 feature, now that LEqual supports 8192buffers and strings. 8193 8194Switch/Case support: The emitted code for the LEqual() comparisons now 8195uses 8196the switch value as the first operand, not the second. The case value is 8197now 8198the second operand, and this allows the case value to be implicitly 8199converted to the type of the switch value, not the other way around. 8200 8201Switch/Case support: Temporary variables are now emitted immediately 8202within 8203the control method, not at the global level. This means that there are now 820436 temps available per-method, not 36 temps per-module as was the case 8205with 8206the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 8207 8208---------------------------------------- 820914 January 2005. Summary of changes for version 20050114: 8210 8211Added 2005 copyright to all module headers. This affects every module in 8212the core subsystem, iASL compiler, and the utilities. 8213 82141) ACPI CA Core Subsystem: 8215 8216Fixed an issue with the String-to-Buffer conversion code where the string 8217null terminator was not included in the buffer after conversion, but there 8218is existing ASL that assumes the string null terminator is included. This 8219is 8220the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 8221introduced in the previous version when the code was updated to correctly 8222set the converted buffer size as per the ACPI specification. The ACPI spec 8223is ambiguous and will be updated to specify that the null terminator must 8224be 8225included in the converted buffer. This also affects the ToBuffer() ASL 8226operator. 8227 8228Fixed a problem with the Mid() ASL/AML operator where it did not work 8229correctly on Buffer objects. Newly created sub-buffers were not being 8230marked 8231as initialized. 8232 8233 8234Fixed a problem in AcpiTbFindTable where incorrect string compares were 8235performed on the OemId and OemTableId table header fields. These fields 8236are 8237not null terminated, so strncmp is now used instead of strcmp. 8238 8239Implemented a restriction on the Store() ASL/AML operator to align the 8240behavior with the ACPI specification. Previously, any object could be 8241used 8242as the source operand. Now, the only objects that may be used are 8243Integers, 8244Buffers, Strings, Packages, Object References, and DDB Handles. If 8245necessary, the original behavior can be restored by enabling the 8246EnableInterpreterSlack flag. 8247 8248Enhanced the optional "implicit return" support to allow an implicit 8249return 8250value from methods that are invoked externally via the AcpiEvaluateObject 8251interface. This enables implicit returns from the _STA and _INI methods, 8252for example. 8253 8254Changed the Revision() ASL/AML operator to return the current version of 8255the 8256AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 8257returned 8258the supported ACPI version (This is the function of the _REV method). 8259 8260Updated the _REV predefined method to return the currently supported 8261version 8262of ACPI, now 3. 8263 8264Implemented batch mode option for the AcpiExec utility (-b). 8265 8266Code and Data Size: Current and previous core subsystem library sizes are 8267shown below. These are the code and data sizes for the acpica.lib produced 8268by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8269any ACPI driver or OSPM code. The debug version of the code includes the 8270debug output trace mechanism and has a much larger code and data size. 8271Note 8272that these values will vary depending on the efficiency of the compiler 8273and 8274the compiler options used during generation. 8275 8276 Previous Release: 8277 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8278 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 8279 Current Release: 8280 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 8281 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 8282 8283---------------------------------------- 828410 December 2004. Summary of changes for version 20041210: 8285 8286ACPI 3.0 support is nearing completion in both the iASL compiler and the 8287ACPI CA core subsystem. 8288 82891) ACPI CA Core Subsystem: 8290 8291Fixed a problem in the ToDecimalString operator where the resulting string 8292length was incorrectly calculated. The length is now calculated exactly, 8293eliminating incorrect AE_STRING_LIMIT exceptions. 8294 8295Fixed a problem in the ToHexString operator to allow a maximum 200 8296character 8297string to be produced. 8298 8299Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 8300routine where the length of the resulting buffer was not truncated to the 8301new size (if the target buffer already existed). 8302 8303Code and Data Size: Current and previous core subsystem library sizes are 8304shown below. These are the code and data sizes for the acpica.lib produced 8305by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8306any ACPI driver or OSPM code. The debug version of the code includes the 8307debug output trace mechanism and has a much larger code and data size. 8308Note 8309that these values will vary depending on the efficiency of the compiler 8310and 8311the compiler options used during generation. 8312 8313 Previous Release: 8314 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8315 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 8316 Current Release: 8317 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8318 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 8319 8320 83212) iASL Compiler/Disassembler: 8322 8323Implemented the new ACPI 3.0 resource template macros - DWordSpace, 8324ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 8325Includes support in the disassembler. 8326 8327Implemented support for the new (ACPI 3.0) parameter to the Register 8328macro, 8329AccessSize. 8330 8331Fixed a problem where the _HE resource name for the Interrupt macro was 8332referencing bit 0 instead of bit 1. 8333 8334Implemented check for maximum 255 interrupts in the Interrupt macro. 8335 8336Fixed a problem with the predefined resource descriptor names where 8337incorrect AML code was generated if the offset within the resource buffer 8338was 0 or 1. The optimizer shortened the AML code to a single byte opcode 8339but did not update the surrounding package lengths. 8340 8341Changes to the Dma macro: All channels within the channel list must be in 8342the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 8343optional (default is BusMaster). 8344 8345Implemented check for maximum 7 data bytes for the VendorShort macro. 8346 8347The ReadWrite parameter is now optional for the Memory32 and similar 8348macros. 8349 8350---------------------------------------- 835103 December 2004. Summary of changes for version 20041203: 8352 83531) ACPI CA Core Subsystem: 8354 8355The low-level field insertion/extraction code (exfldio) has been 8356completely 8357rewritten to eliminate unnecessary complexity, bugs, and boundary 8358conditions. 8359 8360Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 8361ToDecimalString 8362operators where the input operand could be inadvertently deleted if no 8363conversion was necessary (e.g., if the input to ToInteger was an Integer 8364object.) 8365 8366Fixed a problem with the ToDecimalString and ToHexString where an 8367incorrect 8368exception code was returned if the resulting string would be > 200 chars. 8369AE_STRING_LIMIT is now returned. 8370 8371Fixed a problem with the Concatenate operator where AE_OK was always 8372returned, even if the operation failed. 8373 8374Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 8375semaphores to be allocated. 8376 8377Code and Data Size: Current and previous core subsystem library sizes are 8378shown below. These are the code and data sizes for the acpica.lib produced 8379by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8380any ACPI driver or OSPM code. The debug version of the code includes the 8381debug output trace mechanism and has a much larger code and data size. 8382Note 8383that these values will vary depending on the efficiency of the compiler 8384and 8385the compiler options used during generation. 8386 8387 Previous Release: 8388 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8389 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8390 Current Release: 8391 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 8392 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 8393 8394 83952) iASL Compiler/Disassembler: 8396 8397Fixed typechecking for the ObjectType and SizeOf operators. Problem was 8398recently introduced in 20041119. 8399 8400Fixed a problem with the ToUUID macro where the upper nybble of each 8401buffer 8402byte was inadvertently set to zero. 8403 8404---------------------------------------- 840519 November 2004. Summary of changes for version 20041119: 8406 84071) ACPI CA Core Subsystem: 8408 8409Fixed a problem in the internal ConvertToInteger routine where new 8410integers 8411were not truncated to 32 bits for 32-bit ACPI tables. This routine 8412converts 8413buffers and strings to integers. 8414 8415Implemented support to store a value to an Index() on a String object. 8416This 8417is an ACPI 2.0 feature that had not yet been implemented. 8418 8419Implemented new behavior for storing objects to individual package 8420elements 8421(via the Index() operator). The previous behavior was to invoke the 8422implicit 8423conversion rules if an object was already present at the index. The new 8424behavior is to simply delete any existing object and directly store the 8425new 8426object. Although the ACPI specification seems unclear on this subject, 8427other 8428ACPI implementations behave in this manner. (This is the root of the 8429AE_BAD_HEX_CONSTANT issue.) 8430 8431Modified the RSDP memory scan mechanism to support the extended checksum 8432for 8433ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 8434RSDP signature is found with a valid checksum. 8435 8436Code and Data Size: Current and previous core subsystem library sizes are 8437shown below. These are the code and data sizes for the acpica.lib produced 8438by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8439any ACPI driver or OSPM code. The debug version of the code includes the 8440debug output trace mechanism and has a much larger code and data size. 8441Note 8442that these values will vary depending on the efficiency of the compiler 8443and 8444the compiler options used during generation. 8445 8446 Previous Release: 8447 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8448 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8449 Current Release: 8450 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8451 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8452 8453 84542) iASL Compiler/Disassembler: 8455 8456Fixed a missing semicolon in the aslcompiler.y file. 8457 8458---------------------------------------- 845905 November 2004. Summary of changes for version 20041105: 8460 84611) ACPI CA Core Subsystem: 8462 8463Implemented support for FADT revision 2. This was an interim table 8464(between 8465ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 8466 8467Implemented optional support to allow uninitialized LocalX and ArgX 8468variables in a control method. The variables are initialized to an 8469Integer 8470object with a value of zero. This support is enabled by setting the 8471AcpiGbl_EnableInterpreterSlack flag to TRUE. 8472 8473Implemented support for Integer objects for the SizeOf operator. Either 4 8474or 8 is returned, depending on the current integer size (32-bit or 64-bit, 8475depending on the parent table revision). 8476 8477Fixed a problem in the implementation of the SizeOf and ObjectType 8478operators 8479where the operand was resolved to a value too early, causing incorrect 8480return values for some objects. 8481 8482Fixed some possible memory leaks during exceptional conditions. 8483 8484Code and Data Size: Current and previous core subsystem library sizes are 8485shown below. These are the code and data sizes for the acpica.lib produced 8486by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8487any ACPI driver or OSPM code. The debug version of the code includes the 8488debug output trace mechanism and has a much larger code and data size. 8489Note 8490that these values will vary depending on the efficiency of the compiler 8491and 8492the compiler options used during generation. 8493 8494 Previous Release: 8495 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8496 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 8497 Current Release: 8498 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 8499 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 8500 8501 85022) iASL Compiler/Disassembler: 8503 8504Implemented support for all ACPI 3.0 reserved names and methods. 8505 8506Implemented all ACPI 3.0 grammar elements in the front-end, including 8507support for semicolons. 8508 8509Implemented the ACPI 3.0 Function() and ToUUID() macros 8510 8511Fixed a problem in the disassembler where a Scope() operator would not be 8512emitted properly if the target of the scope was in another table. 8513 8514---------------------------------------- 851515 October 2004. Summary of changes for version 20041015: 8516 8517Note: ACPI CA is currently undergoing an in-depth and complete formal 8518evaluation to test/verify the following areas. Other suggestions are 8519welcome. This will result in an increase in the frequency of releases and 8520the number of bug fixes in the next few months. 8521 - Functional tests for all ASL/AML operators 8522 - All implicit/explicit type conversions 8523 - Bit fields and operation regions 8524 - 64-bit math support and 32-bit-only "truncated" math support 8525 - Exceptional conditions, both compiler and interpreter 8526 - Dynamic object deletion and memory leaks 8527 - ACPI 3.0 support when implemented 8528 - External interfaces to the ACPI subsystem 8529 8530 85311) ACPI CA Core Subsystem: 8532 8533Fixed two alignment issues on 64-bit platforms - within debug statements 8534in 8535AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 8536Address 8537field within the non-aligned ACPI generic address structure. 8538 8539Fixed a problem in the Increment and Decrement operators where incorrect 8540operand resolution could result in the inadvertent modification of the 8541original integer when the integer is passed into another method as an 8542argument and the arg is then incremented/decremented. 8543 8544Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 8545bit 8546BCD number were truncated during conversion. 8547 8548Fixed a problem in the ToDecimal operator where the length of the 8549resulting 8550string could be set incorrectly too long if the input operand was a Buffer 8551object. 8552 8553Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 8554(0) 8555within a buffer would prematurely terminate a compare between buffer 8556objects. 8557 8558Added a check for string overflow (>200 characters as per the ACPI 8559specification) during the Concatenate operator with two string operands. 8560 8561Code and Data Size: Current and previous core subsystem library sizes are 8562shown below. These are the code and data sizes for the acpica.lib produced 8563by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8564any ACPI driver or OSPM code. The debug version of the code includes the 8565debug output trace mechanism and has a much larger code and data size. 8566Note 8567that these values will vary depending on the efficiency of the compiler 8568and 8569the compiler options used during generation. 8570 8571 Previous Release: 8572 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8573 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 8574 Current Release: 8575 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8576 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 8577 8578 8579 85802) iASL Compiler/Disassembler: 8581 8582Allow the use of the ObjectType operator on uninitialized Locals and Args 8583(returns 0 as per the ACPI specification). 8584 8585Fixed a problem where the compiler would fault if there was a syntax error 8586in the FieldName of all of the various CreateXXXField operators. 8587 8588Disallow the use of lower case letters within the EISAID macro, as per the 8589ACPI specification. All EISAID strings must be of the form "UUUNNNN" 8590Where 8591U is an uppercase letter and N is a hex digit. 8592 8593 8594---------------------------------------- 859506 October 2004. Summary of changes for version 20041006: 8596 85971) ACPI CA Core Subsystem: 8598 8599Implemented support for the ACPI 3.0 Timer operator. This ASL function 8600implements a 64-bit timer with 100 nanosecond granularity. 8601 8602Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 8603implement the ACPI 3.0 Timer operator. This allows the host OS to 8604implement 8605the timer with the best clock available. Also, it keeps the core subsystem 8606out of the clock handling business, since the host OS (usually) performs 8607this function. 8608 8609Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 8610functions use a 64-bit address which is part of the packed ACPI Generic 8611Address Structure. Since the structure is non-aligned, the alignment 8612macros 8613are now used to extract the address to a local variable before use. 8614 8615Fixed a problem where the ToInteger operator assumed all input strings 8616were 8617hexadecimal. The operator now handles both decimal strings and hex strings 8618(prefixed with "0x"). 8619 8620Fixed a problem where the string length in the string object created as a 8621result of the internal ConvertToString procedure could be incorrect. This 8622potentially affected all implicit conversions and also the ToDecimalString 8623and ToHexString operators. 8624 8625Fixed two problems in the ToString operator. If the length parameter was 8626zero, an incorrect string object was created and the value of the input 8627length parameter was inadvertently changed from zero to Ones. 8628 8629Fixed a problem where the optional ResourceSource string in the 8630ExtendedIRQ 8631resource macro was ignored. 8632 8633Simplified the interfaces to the internal division functions, reducing 8634code 8635size and complexity. 8636 8637Code and Data Size: Current and previous core subsystem library sizes are 8638shown below. These are the code and data sizes for the acpica.lib produced 8639by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8640any ACPI driver or OSPM code. The debug version of the code includes the 8641debug output trace mechanism and has a much larger code and data size. 8642Note 8643that these values will vary depending on the efficiency of the compiler 8644and 8645the compiler options used during generation. 8646 8647 Previous Release: 8648 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 8649 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 8650 Current Release: 8651 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8652 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 8653 8654 86552) iASL Compiler/Disassembler: 8656 8657Implemented support for the ACPI 3.0 Timer operator. 8658 8659Fixed a problem where the Default() operator was inadvertently ignored in 8660a 8661Switch/Case block. This was a problem in the translation of the Switch 8662statement to If...Else pairs. 8663 8664Added support to allow a standalone Return operator, with no parentheses 8665(or 8666operands). 8667 8668Fixed a problem with code generation for the ElseIf operator where the 8669translated Else...If parse tree was improperly constructed leading to the 8670loss of some code. 8671 8672---------------------------------------- 867322 September 2004. Summary of changes for version 20040922: 8674 86751) ACPI CA Core Subsystem: 8676 8677Fixed a problem with the implementation of the LNot() operator where 8678"Ones" 8679was not returned for the TRUE case. Changed the code to return Ones 8680instead 8681of (!Arg) which was usually 1. This change affects iASL constant folding 8682for 8683this operator also. 8684 8685Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 8686initialized properly -- Now zero the entire buffer in this case where the 8687buffer already exists. 8688 8689Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 8690Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 8691related code considerably. This will require changes/updates to all OS 8692interface layers (OSLs.) 8693 8694Implemented a new external interface, AcpiInstallExceptionHandler, to 8695allow 8696a system exception handler to be installed. This handler is invoked upon 8697any 8698run-time exception that occurs during control method execution. 8699 8700Added support for the DSDT in AcpiTbFindTable. This allows the 8701DataTableRegion() operator to access the local copy of the DSDT. 8702 8703Code and Data Size: Current and previous core subsystem library sizes are 8704shown below. These are the code and data sizes for the acpica.lib produced 8705by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8706any ACPI driver or OSPM code. The debug version of the code includes the 8707debug output trace mechanism and has a much larger code and data size. 8708Note 8709that these values will vary depending on the efficiency of the compiler 8710and 8711the compiler options used during generation. 8712 8713 Previous Release: 8714 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 8715 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 8716 Current Release: 8717 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 8718 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 8719 8720 87212) iASL Compiler/Disassembler: 8722 8723Fixed a problem with constant folding and the LNot operator. LNot was 8724returning 1 in the TRUE case, not Ones as per the ACPI specification. This 8725could result in the generation of an incorrect folded/reduced constant. 8726 8727End-Of-File is now allowed within a "//"-style comment. A parse error no 8728longer occurs if such a comment is at the very end of the input ASL source 8729file. 8730 8731Implemented the "-r" option to override the Revision in the table header. 8732The initial use of this option will be to simplify the evaluation of the 8733AML 8734interpreter by allowing a single ASL source module to be compiled for 8735either 873632-bit or 64-bit integers. 8737 8738 8739---------------------------------------- 874027 August 2004. Summary of changes for version 20040827: 8741 87421) ACPI CA Core Subsystem: 8743 8744- Implemented support for implicit object conversion in the non-numeric 8745logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 8746LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 8747the second operand is implicitly converted on the fly to match the type of 8748the first operand. For example: 8749 8750 LEqual (Source1, Source2) 8751 8752Source1 and Source2 must each evaluate to an integer, a string, or a 8753buffer. 8754The data type of Source1 dictates the required type of Source2. Source2 is 8755implicitly converted if necessary to match the type of Source1. 8756 8757- Updated and corrected the behavior of the string conversion support. 8758The 8759rules concerning conversion of buffers to strings (according to the ACPI 8760specification) are as follows: 8761 8762ToDecimalString - explicit byte-wise conversion of buffer to string of 8763decimal values (0-255) separated by commas. ToHexString - explicit byte- 8764wise 8765conversion of buffer to string of hex values (0-FF) separated by commas. 8766ToString - explicit byte-wise conversion of buffer to string. Byte-by- 8767byte 8768copy with no transform except NULL terminated. Any other implicit buffer- 8769to- 8770string conversion - byte-wise conversion of buffer to string of hex values 8771(0-FF) separated by spaces. 8772 8773- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 8774 8775- Fixed a problem in AcpiNsGetPathnameLength where the returned length was 8776one byte too short in the case of a node in the root scope. This could 8777cause a fault during debug output. 8778 8779- Code and Data Size: Current and previous core subsystem library sizes 8780are 8781shown below. These are the code and data sizes for the acpica.lib 8782produced 8783by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8784any ACPI driver or OSPM code. The debug version of the code includes the 8785debug output trace mechanism and has a much larger code and data size. 8786Note 8787that these values will vary depending on the efficiency of the compiler 8788and 8789the compiler options used during generation. 8790 8791 Previous Release: 8792 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 8793 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 8794 Current Release: 8795 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 8796 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 8797 8798 87992) iASL Compiler/Disassembler: 8800 8801- Fixed a Linux generation error. 8802 8803 8804---------------------------------------- 880516 August 2004. Summary of changes for version 20040816: 8806 88071) ACPI CA Core Subsystem: 8808 8809Designed and implemented support within the AML interpreter for the so- 8810called "implicit return". This support returns the result of the last ASL 8811operation within a control method, in the absence of an explicit Return() 8812operator. A few machines depend on this behavior, even though it is not 8813explicitly supported by the ASL language. It is optional support that can 8814be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 8815 8816Removed support for the PCI_Config address space from the internal low 8817level 8818hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 8819support was not used internally, and would not work correctly anyway 8820because 8821the PCI bus number and segment number were not supported. There are 8822separate interfaces for PCI configuration space access because of the 8823unique 8824interface. 8825 8826Code and Data Size: Current and previous core subsystem library sizes are 8827shown below. These are the code and data sizes for the acpica.lib 8828produced 8829by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8830any ACPI driver or OSPM code. The debug version of the code includes the 8831debug output trace mechanism and has a much larger code and data size. 8832Note 8833that these values will vary depending on the efficiency of the compiler 8834and 8835the compiler options used during generation. 8836 8837 Previous Release: 8838 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8839 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 8840 Current Release: 8841 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 8842 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 8843 8844 88452) iASL Compiler/Disassembler: 8846 8847Fixed a problem where constants in ASL expressions at the root level (not 8848within a control method) could be inadvertently truncated during code 8849generation. This problem was introduced in the 20040715 release. 8850 8851 8852---------------------------------------- 885315 July 2004. Summary of changes for version 20040715: 8854 88551) ACPI CA Core Subsystem: 8856 8857Restructured the internal HW GPE interfaces to pass/track the current 8858state 8859of interrupts (enabled/disabled) in order to avoid possible deadlock and 8860increase flexibility of the interfaces. 8861 8862Implemented a "lexicographical compare" for String and Buffer objects 8863within 8864the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 8865as per further clarification to the ACPI specification. Behavior is 8866similar 8867to C library "strcmp". 8868 8869Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 8870external function. In the 32-bit non-debug case, the stack use has been 8871reduced from 168 bytes to 32 bytes. 8872 8873Deployed a new run-time configuration flag, 8874AcpiGbl_EnableInterpreterSlack, 8875whose purpose is to allow the AML interpreter to forgive certain bad AML 8876constructs. Default setting is FALSE. 8877 8878Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 8879IO 8880support code. If enabled, it allows field access to go beyond the end of 8881a 8882region definition if the field is within the region length rounded up to 8883the 8884next access width boundary (a common coding error.) 8885 8886Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 8887ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 8888these 8889symbols are lowercased by the latest version of the AcpiSrc tool. 8890 8891The prototypes for the PCI interfaces in acpiosxf.h have been updated to 8892rename "Register" to simply "Reg" to prevent certain compilers from 8893complaining. 8894 8895Code and Data Size: Current and previous core subsystem library sizes are 8896shown below. These are the code and data sizes for the acpica.lib 8897produced 8898by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8899any ACPI driver or OSPM code. The debug version of the code includes the 8900debug output trace mechanism and has a much larger code and data size. 8901Note 8902that these values will vary depending on the efficiency of the compiler 8903and 8904the compiler options used during generation. 8905 8906 Previous Release: 8907 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8908 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 8909 Current Release: 8910 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 8911 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 8912 8913 89142) iASL Compiler/Disassembler: 8915 8916Implemented full support for Package objects within the Case() operator. 8917Note: The Break() operator is currently not supported within Case blocks 8918(TermLists) as there is some question about backward compatibility with 8919ACPI 89201.0 interpreters. 8921 8922 8923Fixed a problem where complex terms were not supported properly within the 8924Switch() operator. 8925 8926Eliminated extraneous warning for compiler-emitted reserved names of the 8927form "_T_x". (Used in Switch/Case operators.) 8928 8929Eliminated optimization messages for "_T_x" objects and small constants 8930within the DefinitionBlock operator. 8931 8932 8933---------------------------------------- 893415 June 2004. Summary of changes for version 20040615: 8935 89361) ACPI CA Core Subsystem: 8937 8938Implemented support for Buffer and String objects (as per ACPI 2.0) for 8939the 8940following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 8941LLessEqual. 8942 8943All directory names in the entire source package are lower case, as they 8944were in earlier releases. 8945 8946Implemented "Disassemble" command in the AML debugger that will 8947disassemble 8948a single control method. 8949 8950Code and Data Size: Current and previous core subsystem library sizes are 8951shown below. These are the code and data sizes for the acpica.lib 8952produced 8953by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8954any ACPI driver or OSPM code. The debug version of the code includes the 8955debug output trace mechanism and has a much larger code and data size. 8956Note 8957that these values will vary depending on the efficiency of the compiler 8958and 8959the compiler options used during generation. 8960 8961 Previous Release: 8962 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 8963 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 8964 8965 Current Release: 8966 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 8967 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 8968 8969 89702) iASL Compiler/Disassembler: 8971 8972Implemented support for Buffer and String objects (as per ACPI 2.0) for 8973the 8974following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 8975LLessEqual. 8976 8977All directory names in the entire source package are lower case, as they 8978were in earlier releases. 8979 8980Fixed a fault when using the -g or -d<nofilename> options if the FADT was 8981not found. 8982 8983Fixed an issue with the Windows version of the compiler where later 8984versions 8985of Windows place the FADT in the registry under the name "FADT" and not 8986"FACP" as earlier versions did. This applies when using the -g or - 8987d<nofilename> options. The compiler now looks for both strings as 8988necessary. 8989 8990Fixed a problem with compiler namepath optimization where a namepath 8991within 8992the Scope() operator could not be optimized if the namepath was a subpath 8993of 8994the current scope path. 8995 8996---------------------------------------- 899727 May 2004. Summary of changes for version 20040527: 8998 89991) ACPI CA Core Subsystem: 9000 9001Completed a new design and implementation for EBDA (Extended BIOS Data 9002Area) 9003support in the RSDP scan code. The original code improperly scanned for 9004the 9005EBDA by simply scanning from memory location 0 to 0x400. The correct 9006method 9007is to first obtain the EBDA pointer from within the BIOS data area, then 9008scan 1K of memory starting at the EBDA pointer. There appear to be few if 9009any machines that place the RSDP in the EBDA, however. 9010 9011Integrated a fix for a possible fault during evaluation of BufferField 9012arguments. Obsolete code that was causing the problem was removed. 9013 9014Found and fixed a problem in the Field Support Code where data could be 9015corrupted on a bit field read that starts on an aligned boundary but does 9016not end on an aligned boundary. Merged the read/write "datum length" 9017calculation code into a common procedure. 9018 9019Rolled in a couple of changes to the FreeBSD-specific header. 9020 9021 9022Code and Data Size: Current and previous core subsystem library sizes are 9023shown below. These are the code and data sizes for the acpica.lib 9024produced 9025by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9026any ACPI driver or OSPM code. The debug version of the code includes the 9027debug output trace mechanism and has a much larger code and data size. 9028Note 9029that these values will vary depending on the efficiency of the compiler 9030and 9031the compiler options used during generation. 9032 9033 Previous Release: 9034 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 9035 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 9036 Current Release: 9037 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 9038 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 9039 9040 90412) iASL Compiler/Disassembler: 9042 9043Fixed a generation warning produced by some overly-verbose compilers for a 904464-bit constant. 9045 9046---------------------------------------- 904714 May 2004. Summary of changes for version 20040514: 9048 90491) ACPI CA Core Subsystem: 9050 9051Fixed a problem where hardware GPE enable bits sometimes not set properly 9052during and after GPE method execution. Result of 04/27 changes. 9053 9054Removed extra "clear all GPEs" when sleeping/waking. 9055 9056Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 9057AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 9058to 9059the new AcpiEv* calls as appropriate. 9060 9061ACPI_OS_NAME was removed from the OS-specific headers. The default name 9062is 9063now "Microsoft Windows NT" for maximum compatibility. However this can be 9064changed by modifying the acconfig.h file. 9065 9066Allow a single invocation of AcpiInstallNotifyHandler for a handler that 9067traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 9068 9069Run _INI methods on ThermalZone objects. This is against the ACPI 9070specification, but there is apparently ASL code in the field that has 9071these 9072_INI methods, and apparently "other" AML interpreters execute them. 9073 9074Performed a full 16/32/64 bit lint that resulted in some small changes. 9075 9076Added a sleep simulation command to the AML debugger to test sleep code. 9077 9078Code and Data Size: Current and previous core subsystem library sizes are 9079shown below. These are the code and data sizes for the acpica.lib 9080produced 9081by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9082any ACPI driver or OSPM code. The debug version of the code includes the 9083debug output trace mechanism and has a much larger code and data size. 9084Note 9085that these values will vary depending on the efficiency of the compiler 9086and 9087the compiler options used during generation. 9088 9089 Previous Release: 9090 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 9091 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 9092 Current Release: 9093 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 9094 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 9095 9096---------------------------------------- 909727 April 2004. Summary of changes for version 20040427: 9098 90991) ACPI CA Core Subsystem: 9100 9101Completed a major overhaul of the GPE handling within ACPI CA. There are 9102now three types of GPEs: wake-only, runtime-only, and combination 9103wake/run. 9104The only GPEs allowed to be combination wake/run are for button-style 9105devices such as a control-method power button, control-method sleep 9106button, 9107or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 9108not 9109referenced by any _PRW methods are marked for "runtime" and hardware 9110enabled. Any GPE that is referenced by a _PRW method is marked for "wake" 9111(and disabled at runtime). However, at sleep time, only those GPEs that 9112have been specifically enabled for wake via the AcpiEnableGpe interface 9113will 9114actually be hardware enabled. 9115 9116A new external interface has been added, AcpiSetGpeType(), that is meant 9117to 9118be used by device drivers to force a GPE to a particular type. It will be 9119especially useful for the drivers for the button devices mentioned above. 9120 9121Completed restructuring of the ACPI CA initialization sequence so that 9122default operation region handlers are installed before GPEs are 9123initialized 9124and the _PRW methods are executed. This will prevent errors when the _PRW 9125methods attempt to access system memory or I/O space. 9126 9127GPE enable/disable no longer reads the GPE enable register. We now keep 9128the 9129enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 9130thus no longer depend on the hardware to maintain these bits. 9131 9132Always clear the wake status and fixed/GPE status bits before sleep, even 9133for state S5. 9134 9135Improved the AML debugger output for displaying the GPE blocks and their 9136current status. 9137 9138Added new strings for the _OSI method, of the form "Windows 2001 SPx" 9139where 9140x = 0,1,2,3,4. 9141 9142Fixed a problem where the physical address was incorrectly calculated when 9143the Load() operator was used to directly load from an Operation Region 9144(vs. 9145loading from a Field object.) Also added check for minimum table length 9146for 9147this case. 9148 9149Fix for multiple mutex acquisition. Restore original thread SyncLevel on 9150mutex release. 9151 9152Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 9153consistency with the other fields returned. 9154 9155Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 9156structure for each GPE in the system, so the size of this structure is 9157important. 9158 9159CPU stack requirement reduction: Cleaned up the method execution and 9160object 9161evaluation paths so that now a parameter structure is passed, instead of 9162copying the various method parameters over and over again. 9163 9164In evregion.c: Correctly exit and reenter the interpreter region if and 9165only if dispatching an operation region request to a user-installed 9166handler. 9167Do not exit/reenter when dispatching to a default handler (e.g., default 9168system memory or I/O handlers) 9169 9170 9171Notes for updating drivers for the new GPE support. The following changes 9172must be made to ACPI-related device drivers that are attached to one or 9173more 9174GPEs: (This information will be added to the ACPI CA Programmer 9175Reference.) 9176 91771) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 9178explicitly call AcpiEnableGpe. 91792) There is a new interface called AcpiSetGpeType. This should be called 9180before enabling the GPE. Also, this interface will automatically disable 9181the GPE if it is currently enabled. 91823) AcpiEnableGpe no longer supports a GPE type flag. 9183 9184Specific drivers that must be changed: 91851) EC driver: 9186 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 9187AeGpeHandler, NULL); 9188 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 9189 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 9190 91912) Button Drivers (Power, Lid, Sleep): 9192Run _PRW method under parent device 9193If _PRW exists: /* This is a control-method button */ 9194 Extract GPE number and possibly GpeDevice 9195 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 9196 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 9197 9198For all other devices that have _PRWs, we automatically set the GPE type 9199to 9200ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. This 9201must be done on a selective basis, usually requiring some kind of user app 9202to allow the user to pick the wake devices. 9203 9204 9205Code and Data Size: Current and previous core subsystem library sizes are 9206shown below. These are the code and data sizes for the acpica.lib 9207produced 9208by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9209any ACPI driver or OSPM code. The debug version of the code includes the 9210debug output trace mechanism and has a much larger code and data size. 9211Note 9212that these values will vary depending on the efficiency of the compiler 9213and 9214the compiler options used during generation. 9215 9216 Previous Release: 9217 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 9218 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 9219 Current Release: 9220 9221 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 9222 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 9223 9224 9225 9226---------------------------------------- 922702 April 2004. Summary of changes for version 20040402: 9228 92291) ACPI CA Core Subsystem: 9230 9231Fixed an interpreter problem where an indirect store through an ArgX 9232parameter was incorrectly applying the "implicit conversion rules" during 9233the store. From the ACPI specification: "If the target is a method local 9234or 9235argument (LocalX or ArgX), no conversion is performed and the result is 9236stored directly to the target". The new behavior is to disable implicit 9237conversion during ALL stores to an ArgX. 9238 9239Changed the behavior of the _PRW method scan to ignore any and all errors 9240returned by a given _PRW. This prevents the scan from aborting from the 9241failure of any single _PRW. 9242 9243Moved the runtime configuration parameters from the global init procedure 9244to 9245static variables in acglobal.h. This will allow the host to override the 9246default values easily. 9247 9248Code and Data Size: Current and previous core subsystem library sizes are 9249shown below. These are the code and data sizes for the acpica.lib 9250produced 9251by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9252any ACPI driver or OSPM code. The debug version of the code includes the 9253debug output trace mechanism and has a much larger code and data size. 9254Note 9255that these values will vary depending on the efficiency of the compiler 9256and 9257the compiler options used during generation. 9258 9259 Previous Release: 9260 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 9261 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 9262 Current Release: 9263 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 9264 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 9265 9266 92672) iASL Compiler/Disassembler: 9268 9269iASL now fully disassembles SSDTs. However, External() statements are not 9270generated automatically for unresolved symbols at this time. This is a 9271planned feature for future implementation. 9272 9273Fixed a scoping problem in the disassembler that occurs when the type of 9274the 9275target of a Scope() operator is overridden. This problem caused an 9276incorrectly nested internal namespace to be constructed. 9277 9278Any warnings or errors that are emitted during disassembly are now 9279commented 9280out automatically so that the resulting file can be recompiled without any 9281hand editing. 9282 9283---------------------------------------- 928426 March 2004. Summary of changes for version 20040326: 9285 92861) ACPI CA Core Subsystem: 9287 9288Implemented support for "wake" GPEs via interaction between GPEs and the 9289_PRW methods. Every GPE that is pointed to by one or more _PRWs is 9290identified as a WAKE GPE and by default will no longer be enabled at 9291runtime. Previously, we were blindly enabling all GPEs with a 9292corresponding 9293_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 9294We 9295believe this has been the cause of thousands of "spurious" GPEs on some 9296systems. 9297 9298This new GPE behavior is can be reverted to the original behavior (enable 9299ALL GPEs at runtime) via a runtime flag. 9300 9301Fixed a problem where aliased control methods could not access objects 9302properly. The proper scope within the namespace was not initialized 9303(transferred to the target of the aliased method) before executing the 9304target method. 9305 9306Fixed a potential race condition on internal object deletion on the return 9307object in AcpiEvaluateObject. 9308 9309Integrated a fix for resource descriptors where both _MEM and _MTP were 9310being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 9311wide, 0x0F instead of 0x03.) 9312 9313Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing 9314a 9315fault in some cases. 9316 9317Updated Notify() values for debug statements in evmisc.c 9318 9319Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 9320 9321Code and Data Size: Current and previous core subsystem library sizes are 9322shown below. These are the code and data sizes for the acpica.lib 9323produced 9324by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9325any ACPI driver or OSPM code. The debug version of the code includes the 9326debug output trace mechanism and has a much larger code and data size. 9327Note 9328that these values will vary depending on the efficiency of the compiler 9329and 9330the compiler options used during generation. 9331 9332 Previous Release: 9333 9334 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 9335 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 9336 Current Release: 9337 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 9338 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 9339 9340---------------------------------------- 934111 March 2004. Summary of changes for version 20040311: 9342 93431) ACPI CA Core Subsystem: 9344 9345Fixed a problem where errors occurring during the parse phase of control 9346method execution did not abort cleanly. For example, objects created and 9347installed in the namespace were not deleted. This caused all subsequent 9348invocations of the method to return the AE_ALREADY_EXISTS exception. 9349 9350Implemented a mechanism to force a control method to "Serialized" 9351execution 9352if the method attempts to create namespace objects. (The root of the 9353AE_ALREADY_EXISTS problem.) 9354 9355Implemented support for the predefined _OSI "internal" control method. 9356Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 9357"Windows 2001.1", and can be easily upgraded for new strings as necessary. 9358This feature will allow "other" operating systems to execute the fully 9359tested, "Windows" code path through the ASL code 9360 9361Global Lock Support: Now allows multiple acquires and releases with any 9362internal thread. Removed concept of "owning thread" for this special 9363mutex. 9364 9365Fixed two functions that were inappropriately declaring large objects on 9366the 9367CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 9368during 9369method execution considerably. 9370 9371Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 9372S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 9373 9374Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 9375defined on the machine. 9376 9377Implemented two runtime options: One to force all control method 9378execution 9379to "Serialized" to mimic Windows behavior, another to disable _OSI support 9380if it causes problems on a given machine. 9381 9382Code and Data Size: Current and previous core subsystem library sizes are 9383shown below. These are the code and data sizes for the acpica.lib 9384produced 9385by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9386any ACPI driver or OSPM code. The debug version of the code includes the 9387debug output trace mechanism and has a much larger code and data size. 9388Note 9389that these values will vary depending on the efficiency of the compiler 9390and 9391the compiler options used during generation. 9392 9393 Previous Release: 9394 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 9395 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 9396 Current Release: 9397 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 9398 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 9399 94002) iASL Compiler/Disassembler: 9401 9402Fixed an array size problem for FreeBSD that would cause the compiler to 9403fault. 9404 9405---------------------------------------- 940620 February 2004. Summary of changes for version 20040220: 9407 9408 94091) ACPI CA Core Subsystem: 9410 9411Implemented execution of _SxD methods for Device objects in the 9412GetObjectInfo interface. 9413 9414Fixed calls to _SST method to pass the correct arguments. 9415 9416Added a call to _SST on wake to restore to "working" state. 9417 9418Check for End-Of-Buffer failure case in the WalkResources interface. 9419 9420Integrated fix for 64-bit alignment issue in acglobal.h by moving two 9421structures to the beginning of the file. 9422 9423After wake, clear GPE status register(s) before enabling GPEs. 9424 9425After wake, clear/enable power button. (Perhaps we should clear/enable 9426all 9427fixed events upon wake.) 9428 9429Fixed a couple of possible memory leaks in the Namespace manager. 9430 9431Integrated latest acnetbsd.h file. 9432 9433---------------------------------------- 943411 February 2004. Summary of changes for version 20040211: 9435 9436 94371) ACPI CA Core Subsystem: 9438 9439Completed investigation and implementation of the call-by-reference 9440mechanism for control method arguments. 9441 9442Fixed a problem where a store of an object into an indexed package could 9443fail if the store occurs within a different method than the method that 9444created the package. 9445 9446Fixed a problem where the ToDecimal operator could return incorrect 9447results. 9448 9449Fixed a problem where the CopyObject operator could fail on some of the 9450more 9451obscure objects (e.g., Reference objects.) 9452 9453Improved the output of the Debug object to display buffer, package, and 9454index objects. 9455 9456Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 9457the expected result. 9458 9459Added permanent ACPI_REPORT_ERROR macros for all instances of the 9460ACPI_AML_INTERNAL exception. 9461 9462Integrated latest version of acfreebsd.h 9463 9464---------------------------------------- 946516 January 2004. Summary of changes for version 20040116: 9466 9467The purpose of this release is primarily to update the copyright years in 9468each module, thus causing a huge number of diffs. There are a few small 9469functional changes, however. 9470 94711) ACPI CA Core Subsystem: 9472 9473Improved error messages when there is a problem finding one or more of the 9474required base ACPI tables 9475 9476Reintroduced the definition of APIC_HEADER in actbl.h 9477 9478Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 9479 9480Removed extraneous reference to NewObj in dsmthdat.c 9481 94822) iASL compiler 9483 9484Fixed a problem introduced in December that disabled the correct 9485disassembly 9486of Resource Templates 9487 9488 9489---------------------------------------- 949003 December 2003. Summary of changes for version 20031203: 9491 94921) ACPI CA Core Subsystem: 9493 9494Changed the initialization of Operation Regions during subsystem 9495init to perform two entire walks of the ACPI namespace; The first 9496to initialize the regions themselves, the second to execute the 9497_REG methods. This fixed some interdependencies across _REG 9498methods found on some machines. 9499 9500Fixed a problem where a Store(Local0, Local1) could simply update 9501the object reference count, and not create a new copy of the 9502object if the Local1 is uninitialized. 9503 9504Implemented support for the _SST reserved method during sleep 9505transitions. 9506 9507Implemented support to clear the SLP_TYP and SLP_EN bits when 9508waking up, this is apparently required by some machines. 9509 9510When sleeping, clear the wake status only if SleepState is not S5. 9511 9512Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 9513pointer arithmetic advanced a string pointer too far. 9514 9515Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 9516could be returned if the requested table has not been loaded. 9517 9518Within the support for IRQ resources, restructured the handling of 9519the active and edge/level bits. 9520 9521Fixed a few problems in AcpiPsxExecute() where memory could be 9522leaked under certain error conditions. 9523 9524Improved error messages for the cases where the ACPI mode could 9525not be entered. 9526 9527Code and Data Size: Current and previous core subsystem library 9528sizes are shown below. These are the code and data sizes for the 9529acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9530these values do not include any ACPI driver or OSPM code. The 9531debug version of the code includes the debug output trace 9532mechanism and has a much larger code and data size. Note that 9533these values will vary depending on the efficiency of the compiler 9534and the compiler options used during generation. 9535 9536 Previous Release (20031029): 9537 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 9538 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 9539 Current Release: 9540 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 9541 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 9542 95432) iASL Compiler/Disassembler: 9544 9545Implemented a fix for the iASL disassembler where a bad index was 9546generated. This was most noticeable on 64-bit platforms 9547 9548 9549---------------------------------------- 955029 October 2003. Summary of changes for version 20031029: 9551 95521) ACPI CA Core Subsystem: 9553 9554 9555Fixed a problem where a level-triggered GPE with an associated 9556_Lxx control method was incorrectly cleared twice. 9557 9558Fixed a problem with the Field support code where an access can 9559occur beyond the end-of-region if the field is non-aligned but 9560extends to the very end of the parent region (resulted in an 9561AE_AML_REGION_LIMIT exception.) 9562 9563Fixed a problem with ACPI Fixed Events where an RT Clock handler 9564would not get invoked on an RTC event. The RTC event bitmasks for 9565the PM1 registers were not being initialized properly. 9566 9567Implemented support for executing _STA and _INI methods for 9568Processor objects. Although this is currently not part of the 9569ACPI specification, there is existing ASL code that depends on the 9570init-time execution of these methods. 9571 9572Implemented and deployed a GetDescriptorName function to decode 9573the various types of internal descriptors. Guards against null 9574descriptors during debug output also. 9575 9576Implemented and deployed a GetNodeName function to extract the 4- 9577character namespace node name. This function simplifies the debug 9578and error output, as well as guarding against null pointers during 9579output. 9580 9581Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 9582simplify the debug and error output of 64-bit integers. This 9583macro replaces the HIDWORD and LODWORD macros for dumping these 9584integers. 9585 9586Updated the implementation of the Stall() operator to only call 9587AcpiOsStall(), and also return an error if the operand is larger 9588than 255. This preserves the required behavior of not 9589relinquishing the processor, as would happen if AcpiOsSleep() was 9590called for "long stalls". 9591 9592Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 9593initialized are now treated as NOOPs. 9594 9595Cleaned up a handful of warnings during 64-bit generation. 9596 9597Fixed a reported error where and incorrect GPE number was passed 9598to the GPE dispatch handler. This value is only used for error 9599output, however. Used this opportunity to clean up and streamline 9600the GPE dispatch code. 9601 9602Code and Data Size: Current and previous core subsystem library 9603sizes are shown below. These are the code and data sizes for the 9604acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9605these values do not include any ACPI driver or OSPM code. The 9606 9607debug version of the code includes the debug output trace 9608mechanism and has a much larger code and data size. Note that 9609these values will vary depending on the efficiency of the compiler 9610and the compiler options used during generation. 9611 9612 Previous Release (20031002): 9613 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 9614 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 9615 Current Release: 9616 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 9617 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 9618 9619 96202) iASL Compiler/Disassembler: 9621 9622Updated the iASL compiler to return an error if the operand to the 9623Stall() operator is larger than 255. 9624 9625 9626---------------------------------------- 962702 October 2003. Summary of changes for version 20031002: 9628 9629 96301) ACPI CA Core Subsystem: 9631 9632Fixed a problem with Index Fields where the index was not 9633incremented for fields that require multiple writes to the 9634index/data registers (Fields that are wider than the data 9635register.) 9636 9637Fixed a problem with all Field objects where a write could go 9638beyond the end-of-field if the field was larger than the access 9639granularity and therefore required multiple writes to complete the 9640request. An extra write beyond the end of the field could happen 9641inadvertently. 9642 9643Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 9644would incorrectly be returned if the width of the Data Register 9645was larger than the specified field access width. 9646 9647Completed fixes for LoadTable() and Unload() and verified their 9648operation. Implemented full support for the "DdbHandle" object 9649throughout the ACPI CA subsystem. 9650 9651Implemented full support for the MADT and ECDT tables in the ACPI 9652CA header files. Even though these tables are not directly 9653consumed by ACPI CA, the header definitions are useful for ACPI 9654device drivers. 9655 9656Integrated resource descriptor fixes posted to the Linux ACPI 9657list. This included checks for minimum descriptor length, and 9658support for trailing NULL strings within descriptors that have 9659optional string elements. 9660 9661Code and Data Size: Current and previous core subsystem library 9662sizes are shown below. These are the code and data sizes for the 9663acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9664these values do not include any ACPI driver or OSPM code. The 9665debug version of the code includes the debug output trace 9666mechanism and has a much larger code and data size. Note that 9667these values will vary depending on the efficiency of the compiler 9668and the compiler options used during generation. 9669 9670 Previous Release (20030918): 9671 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 9672 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 9673 Current Release: 9674 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 9675 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 9676 9677 96782) iASL Compiler: 9679 9680Implemented detection of non-ASCII characters within the input 9681source ASL file. This catches attempts to compile binary (AML) 9682files early in the compile, with an informative error message. 9683 9684Fixed a problem where the disassembler would fault if the output 9685filename could not be generated or if the output file could not be 9686opened. 9687 9688---------------------------------------- 968918 September 2003. Summary of changes for version 20030918: 9690 9691 96921) ACPI CA Core Subsystem: 9693 9694Found and fixed a longstanding problem with the late execution of 9695the various deferred AML opcodes (such as Operation Regions, 9696Buffer Fields, Buffers, and Packages). If the name string 9697specified for the name of the new object placed the object in a 9698scope other than the current scope, the initialization/execution 9699of the opcode failed. The solution to this problem was to 9700implement a mechanism where the late execution of such opcodes 9701does not attempt to lookup/create the name a second time in an 9702incorrect scope. This fixes the "region size computed 9703incorrectly" problem. 9704 9705Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 9706Global Lock AE_BAD_PARAMETER error. 9707 9708Fixed several 64-bit issues with prototypes, casting and data 9709types. 9710 9711Removed duplicate prototype from acdisasm.h 9712 9713Fixed an issue involving EC Operation Region Detach (Shaohua Li) 9714 9715Code and Data Size: Current and previous core subsystem library 9716sizes are shown below. These are the code and data sizes for the 9717acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9718these values do not include any ACPI driver or OSPM code. The 9719debug version of the code includes the debug output trace 9720mechanism and has a much larger code and data size. Note that 9721these values will vary depending on the efficiency of the compiler 9722and the compiler options used during generation. 9723 9724 Previous Release: 9725 9726 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 9727 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 9728 Current Release: 9729 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 9730 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 9731 9732 97332) Linux: 9734 9735Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 9736correct sleep time in seconds. 9737 9738---------------------------------------- 973914 July 2003. Summary of changes for version 20030619: 9740 97411) ACPI CA Core Subsystem: 9742 9743Parse SSDTs in order discovered, as opposed to reverse order 9744(Hrvoje Habjanic) 9745 9746Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 9747Klausner, 9748 Nate Lawson) 9749 9750 97512) Linux: 9752 9753Dynamically allocate SDT list (suggested by Andi Kleen) 9754 9755proc function return value cleanups (Andi Kleen) 9756 9757Correctly handle NMI watchdog during long stalls (Andrew Morton) 9758 9759Make it so acpismp=force works (reported by Andrew Morton) 9760 9761 9762---------------------------------------- 976319 June 2003. Summary of changes for version 20030619: 9764 97651) ACPI CA Core Subsystem: 9766 9767Fix To/FromBCD, eliminating the need for an arch-specific #define. 9768 9769Do not acquire a semaphore in the S5 shutdown path. 9770 9771Fix ex_digits_needed for 0. (Takayoshi Kochi) 9772 9773Fix sleep/stall code reversal. (Andi Kleen) 9774 9775Revert a change having to do with control method calling 9776semantics. 9777 97782) Linux: 9779 9780acpiphp update (Takayoshi Kochi) 9781 9782Export acpi_disabled for sonypi (Stelian Pop) 9783 9784Mention acpismp=force in config help 9785 9786Re-add acpitable.c and acpismp=force. This improves backwards 9787 9788compatibility and also cleans up the code to a significant degree. 9789 9790Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 9791 9792---------------------------------------- 979322 May 2003. Summary of changes for version 20030522: 9794 97951) ACPI CA Core Subsystem: 9796 9797Found and fixed a reported problem where an AE_NOT_FOUND error 9798occurred occasionally during _BST evaluation. This turned out to 9799be an Owner ID allocation issue where a called method did not get 9800a new ID assigned to it. Eventually, (after 64k calls), the Owner 9801ID UINT16 would wraparound so that the ID would be the same as the 9802caller's and the called method would delete the caller's 9803namespace. 9804 9805Implemented extended error reporting for control methods that are 9806aborted due to a run-time exception. Output includes the exact 9807AML instruction that caused the method abort, a dump of the method 9808locals and arguments at the time of the abort, and a trace of all 9809nested control method calls. 9810 9811Modified the interpreter to allow the creation of buffers of zero 9812length from the AML code. Implemented new code to ensure that no 9813attempt is made to actually allocate a memory buffer (of length 9814zero) - instead, a simple buffer object with a NULL buffer pointer 9815and length zero is created. A warning is no longer issued when 9816the AML attempts to create a zero-length buffer. 9817 9818Implemented a workaround for the "leading asterisk issue" in 9819_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 9820asterisk is automatically removed if present in any HID, UID, or 9821CID strings. The iASL compiler will still flag this asterisk as 9822an error, however. 9823 9824Implemented full support for _CID methods that return a package of 9825multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 9826now additionally returns a device _CID list if present. This 9827required a change to the external interface in order to pass an 9828ACPI_BUFFER object as a parameter since the _CID list is of 9829variable length. 9830 9831Fixed a problem with the new AE_SAME_HANDLER exception where 9832handler initialization code did not know about this exception. 9833 9834Code and Data Size: Current and previous core subsystem library 9835sizes are shown below. These are the code and data sizes for the 9836acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 9837these values do not include any ACPI driver or OSPM code. The 9838debug version of the code includes the debug output trace 9839mechanism and has a much larger code and data size. Note that 9840these values will vary depending on the efficiency of the compiler 9841and the compiler options used during generation. 9842 9843 Previous Release (20030509): 9844 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 9845 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 9846 Current Release: 9847 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 9848 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 9849 9850 98512) Linux: 9852 9853Fixed a bug in which we would reinitialize the ACPI interrupt 9854after it was already working, thus disabling all ACPI and the IRQs 9855for any other device sharing the interrupt. (Thanks to Stian 9856Jordet) 9857 9858Toshiba driver update (John Belmonte) 9859 9860Return only 0 or 1 for our interrupt handler status (Andrew 9861Morton) 9862 9863 98643) iASL Compiler: 9865 9866Fixed a reported problem where multiple (nested) ElseIf() 9867statements were not handled correctly by the compiler, resulting 9868in incorrect warnings and incorrect AML code. This was a problem 9869in both the ASL parser and the code generator. 9870 9871 98724) Documentation: 9873 9874Added changes to existing interfaces, new exception codes, and new 9875text concerning reference count object management versus garbage 9876collection. 9877 9878---------------------------------------- 987909 May 2003. Summary of changes for version 20030509. 9880 9881 98821) ACPI CA Core Subsystem: 9883 9884Changed the subsystem initialization sequence to hold off 9885installation of address space handlers until the hardware has been 9886initialized and the system has entered ACPI mode. This is because 9887the installation of space handlers can cause _REG methods to be 9888run. Previously, the _REG methods could potentially be run before 9889ACPI mode was enabled. 9890 9891Fixed some memory leak issues related to address space handler and 9892notify handler installation. There were some problems with the 9893reference count mechanism caused by the fact that the handler 9894objects are shared across several namespace objects. 9895 9896Fixed a reported problem where reference counts within the 9897namespace were not properly updated when named objects created by 9898method execution were deleted. 9899 9900Fixed a reported problem where multiple SSDTs caused a deletion 9901issue during subsystem termination. Restructured the table data 9902structures to simplify the linked lists and the related code. 9903 9904Fixed a problem where the table ID associated with secondary 9905tables (SSDTs) was not being propagated into the namespace objects 9906created by those tables. This would only present a problem for 9907tables that are unloaded at run-time, however. 9908 9909Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 9910type as the length parameter (instead of UINT32). 9911 9912Solved a long-standing problem where an ALREADY_EXISTS error 9913appears on various systems. This problem could happen when there 9914are multiple PCI_Config operation regions under a single PCI root 9915bus. This doesn't happen very frequently, but there are some 9916systems that do this in the ASL. 9917 9918Fixed a reported problem where the internal DeleteNode function 9919was incorrectly handling the case where a namespace node was the 9920first in the parent's child list, and had additional peers (not 9921the only child, but first in the list of children.) 9922 9923Code and Data Size: Current core subsystem library sizes are shown 9924below. These are the code and data sizes for the acpica.lib 9925produced by the Microsoft Visual C++ 6.0 compiler, and these 9926values do not include any ACPI driver or OSPM code. The debug 9927version of the code includes the debug output trace mechanism and 9928has a much larger code and data size. Note that these values will 9929vary depending on the efficiency of the compiler and the compiler 9930options used during generation. 9931 9932 Previous Release 9933 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 9934 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 9935 Current Release: 9936 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 9937 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 9938 9939 99402) Linux: 9941 9942Allow ":" in OS override string (Ducrot Bruno) 9943 9944Kobject fix (Greg KH) 9945 9946 99473 iASL Compiler/Disassembler: 9948 9949Fixed a problem in the generation of the C source code files (AML 9950is emitted in C source statements for BIOS inclusion) where the 9951Ascii dump that appears within a C comment at the end of each line 9952could cause a compile time error if the AML sequence happens to 9953have an open comment or close comment sequence embedded. 9954 9955 9956---------------------------------------- 995724 April 2003. Summary of changes for version 20030424. 9958 9959 99601) ACPI CA Core Subsystem: 9961 9962Support for big-endian systems has been implemented. Most of the 9963support has been invisibly added behind big-endian versions of the 9964ACPI_MOVE_* macros. 9965 9966Fixed a problem in AcpiHwDisableGpeBlock() and 9967AcpiHwClearGpeBlock() where an incorrect offset was passed to the 9968low level hardware write routine. The offset parameter was 9969actually eliminated from the low level read/write routines because 9970they had become obsolete. 9971 9972Fixed a problem where a handler object was deleted twice during 9973the removal of a fixed event handler. 9974 9975 99762) Linux: 9977 9978A fix for SMP systems with link devices was contributed by 9979 9980Compaq's Dan Zink. 9981 9982(2.5) Return whether we handled the interrupt in our IRQ handler. 9983(Linux ISRs no longer return void, so we can propagate the handler 9984return value from the ACPI CA core back to the OS.) 9985 9986 9987 99883) Documentation: 9989 9990The ACPI CA Programmer Reference has been updated to reflect new 9991interfaces and changes to existing interfaces. 9992 9993---------------------------------------- 999428 March 2003. Summary of changes for version 20030328. 9995 99961) ACPI CA Core Subsystem: 9997 9998The GPE Block Device support has been completed. New interfaces 9999are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 10000interfaces (enable, disable, clear, getstatus) have been split 10001into separate interfaces for Fixed Events and General Purpose 10002Events (GPEs) in order to support GPE Block Devices properly. 10003 10004Fixed a problem where the error message "Failed to acquire 10005semaphore" would appear during operations on the embedded 10006controller (EC). 10007 10008Code and Data Size: Current core subsystem library sizes are shown 10009below. These are the code and data sizes for the acpica.lib 10010produced by the Microsoft Visual C++ 6.0 compiler, and these 10011values do not include any ACPI driver or OSPM code. The debug 10012version of the code includes the debug output trace mechanism and 10013has a much larger code and data size. Note that these values will 10014vary depending on the efficiency of the compiler and the compiler 10015options used during generation. 10016 10017 Previous Release 10018 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 10019 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 10020 Current Release: 10021 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 10022 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 10023 10024 10025---------------------------------------- 1002628 February 2003. Summary of changes for version 20030228. 10027 10028 100291) ACPI CA Core Subsystem: 10030 10031The GPE handling and dispatch code has been completely overhauled 10032in preparation for support of GPE Block Devices (ID ACPI0006). 10033This affects internal data structures and code only; there should 10034be no differences visible externally. One new file has been 10035added, evgpeblk.c 10036 10037The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 10038fields that are used to determine the GPE block lengths. The 10039REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 10040structures are ignored. This is per the ACPI specification but it 10041isn't very clear. The full 256 Block 0/1 GPEs are now supported 10042(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 10043 10044In the SCI interrupt handler, removed the read of the PM1_CONTROL 10045register to look at the SCI_EN bit. On some machines, this read 10046causes an SMI event and greatly slows down SCI events. (This may 10047in fact be the cause of slow battery status response on some 10048systems.) 10049 10050Fixed a problem where a store of a NULL string to a package object 10051could cause the premature deletion of the object. This was seen 10052during execution of the battery _BIF method on some systems, 10053resulting in no battery data being returned. 10054 10055Added AcpiWalkResources interface to simplify parsing of resource 10056lists. 10057 10058Code and Data Size: Current core subsystem library sizes are shown 10059below. These are the code and data sizes for the acpica.lib 10060produced by the Microsoft Visual C++ 6.0 compiler, and these 10061values do not include any ACPI driver or OSPM code. The debug 10062version of the code includes the debug output trace mechanism and 10063has a much larger code and data size. Note that these values will 10064vary depending on the efficiency of the compiler and the compiler 10065options used during generation. 10066 10067 Previous Release 10068 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10069 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10070 Current Release: 10071 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 10072 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 10073 10074 100752) Linux 10076 10077S3 fixes (Ole Rohne) 10078 10079Update ACPI PHP driver with to use new acpi_walk_resource API 10080(Bjorn Helgaas) 10081 10082Add S4BIOS support (Pavel Machek) 10083 10084Map in entire table before performing checksum (John Stultz) 10085 10086Expand the mem= cmdline to allow the specification of reserved and 10087ACPI DATA blocks (Pavel Machek) 10088 10089Never use ACPI on VISWS 10090 10091Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 10092 10093Revert a change that allowed P_BLK lengths to be 4 or 5. This is 10094causing us to think that some systems support C2 when they really 10095don't. 10096 10097Do not count processor objects for non-present CPUs (Thanks to 10098Dominik Brodowski) 10099 10100 101013) iASL Compiler: 10102 10103Fixed a problem where ASL include files could not be found and 10104opened. 10105 10106Added support for the _PDC reserved name. 10107 10108 10109---------------------------------------- 1011022 January 2003. Summary of changes for version 20030122. 10111 10112 101131) ACPI CA Core Subsystem: 10114 10115Added a check for constructs of the form: Store (Local0, Local0) 10116where Local0 is not initialized. Apparently, some BIOS 10117programmers believe that this is a NOOP. Since this store doesn't 10118do anything anyway, the new prototype behavior will ignore this 10119error. This is a case where we can relax the strict checking in 10120the interpreter in the name of compatibility. 10121 10122 101232) Linux 10124 10125The AcpiSrc Source Conversion Utility has been released with the 10126Linux package for the first time. This is the utility that is 10127used to convert the ACPI CA base source code to the Linux version. 10128 10129(Both) Handle P_BLK lengths shorter than 6 more gracefully 10130 10131(Both) Move more headers to include/acpi, and delete an unused 10132header. 10133 10134(Both) Move drivers/acpi/include directory to include/acpi 10135 10136(Both) Boot functions don't use cmdline, so don't pass it around 10137 10138(Both) Remove include of unused header (Adrian Bunk) 10139 10140(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 10141the 10142former now also includes the latter, acpiphp.h only needs the one, 10143now. 10144 10145(2.5) Make it possible to select method of bios restoring after S3 10146resume. [=> no more ugly ifdefs] (Pavel Machek) 10147 10148(2.5) Make proc write interfaces work (Pavel Machek) 10149 10150(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 10151 10152(2.5) Break out ACPI Perf code into its own module, under cpufreq 10153(Dominik Brodowski) 10154 10155(2.4) S4BIOS support (Ducrot Bruno) 10156 10157(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 10158Visinoni) 10159 10160 101613) iASL Compiler: 10162 10163Added support to disassemble SSDT and PSDTs. 10164 10165Implemented support to obtain SSDTs from the Windows registry if 10166available. 10167 10168 10169---------------------------------------- 1017009 January 2003. Summary of changes for version 20030109. 10171 101721) ACPI CA Core Subsystem: 10173 10174Changed the behavior of the internal Buffer-to-String conversion 10175function. The current ACPI specification states that the contents 10176of the buffer are "converted to a string of two-character 10177hexadecimal numbers, each separated by a space". Unfortunately, 10178this definition is not backwards compatible with existing ACPI 1.0 10179implementations (although the behavior was not defined in the ACPI 101801.0 specification). The new behavior simply copies data from the 10181buffer to the string until a null character is found or the end of 10182the buffer is reached. The new String object is always null 10183terminated. This problem was seen during the generation of _BIF 10184battery data where incorrect strings were returned for battery 10185type, etc. This will also require an errata to the ACPI 10186specification. 10187 10188Renamed all instances of NATIVE_UINT and NATIVE_INT to 10189ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 10190 10191Copyright in all module headers (both Linux and non-Linux) has be 10192updated to 2003. 10193 10194Code and Data Size: Current core subsystem library sizes are shown 10195below. These are the code and data sizes for the acpica.lib 10196produced by the Microsoft Visual C++ 6.0 compiler, and these 10197values do not include any ACPI driver or OSPM code. The debug 10198version of the code includes the debug output trace mechanism and 10199has a much larger code and data size. Note that these values will 10200vary depending on the efficiency of the compiler and the compiler 10201options used during generation. 10202 10203 Previous Release 10204 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10205 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10206 Current Release: 10207 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10208 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10209 10210 102112) Linux 10212 10213Fixed an oops on module insertion/removal (Matthew Tippett) 10214 10215(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 10216 10217(2.5) Replace pr_debug (Randy Dunlap) 10218 10219(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 10220 10221(Both) Eliminate spawning of thread from timer callback, in favor 10222of schedule_work() 10223 10224(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 10225 10226(Both) Added define for Fixed Function HW region (Matthew Wilcox) 10227 10228(Both) Add missing statics to button.c (Pavel Machek) 10229 10230Several changes have been made to the source code translation 10231utility that generates the Linux Code in order to make the code 10232more "Linux-like": 10233 10234All typedefs on structs and unions have been removed in keeping 10235with the Linux coding style. 10236 10237Removed the non-Linux SourceSafe module revision number from each 10238module header. 10239 10240Completed major overhaul of symbols to be lowercased for linux. 10241Doubled the number of symbols that are lowercased. 10242 10243Fixed a problem where identifiers within procedure headers and 10244within quotes were not fully lower cased (they were left with a 10245starting capital.) 10246 10247Some C macros whose only purpose is to allow the generation of 16- 10248bit code are now completely removed in the Linux code, increasing 10249readability and maintainability. 10250 10251---------------------------------------- 10252 1025312 December 2002. Summary of changes for version 20021212. 10254 10255 102561) ACPI CA Core Subsystem: 10257 10258Fixed a problem where the creation of a zero-length AML Buffer 10259would cause a fault. 10260 10261Fixed a problem where a Buffer object that pointed to a static AML 10262buffer (in an ACPI table) could inadvertently be deleted, causing 10263memory corruption. 10264 10265Fixed a problem where a user buffer (passed in to the external 10266ACPI CA interfaces) could be overwritten if the buffer was too 10267small to complete the operation, causing memory corruption. 10268 10269Fixed a problem in the Buffer-to-String conversion code where a 10270string of length one was always returned, regardless of the size 10271of the input Buffer object. 10272 10273Removed the NATIVE_CHAR data type across the entire source due to 10274lack of need and lack of consistent use. 10275 10276Code and Data Size: Current core subsystem library sizes are shown 10277below. These are the code and data sizes for the acpica.lib 10278produced by the Microsoft Visual C++ 6.0 compiler, and these 10279values do not include any ACPI driver or OSPM code. The debug 10280version of the code includes the debug output trace mechanism and 10281has a much larger code and data size. Note that these values will 10282vary depending on the efficiency of the compiler and the compiler 10283options used during generation. 10284 10285 Previous Release 10286 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 10287 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 10288 Current Release: 10289 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 10290 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 10291 10292 10293---------------------------------------- 1029405 December 2002. Summary of changes for version 20021205. 10295 102961) ACPI CA Core Subsystem: 10297 10298Fixed a problem where a store to a String or Buffer object could 10299cause corruption of the DSDT if the object type being stored was 10300the same as the target object type and the length of the object 10301being stored was equal to or smaller than the original (existing) 10302target object. This was seen to cause corruption of battery _BIF 10303buffers if the _BIF method modified the buffer on the fly. 10304 10305Fixed a problem where an internal error was generated if a control 10306method invocation was used in an OperationRegion, Buffer, or 10307Package declaration. This was caused by the deferred parsing of 10308the control method and thus the deferred creation of the internal 10309method object. The solution to this problem was to create the 10310internal method object at the moment the method is encountered in 10311the first pass - so that subsequent references to the method will 10312able to obtain the required parameter count and thus properly 10313parse the method invocation. This problem presented itself as an 10314AE_AML_INTERNAL during the pass 1 parse phase during table load. 10315 10316Fixed a problem where the internal String object copy routine did 10317not always allocate sufficient memory for the target String object 10318and caused memory corruption. This problem was seen to cause 10319"Allocation already present in list!" errors as memory allocation 10320became corrupted. 10321 10322Implemented a new function for the evaluation of namespace objects 10323that allows the specification of the allowable return object 10324types. This simplifies a lot of code that checks for a return 10325object of one or more specific objects returned from the 10326evaluation (such as _STA, etc.) This may become and external 10327function if it would be useful to ACPI-related drivers. 10328 10329Completed another round of prefixing #defines with "ACPI_" for 10330clarity. 10331 10332Completed additional code restructuring to allow more modular 10333linking for iASL compiler and AcpiExec. Several files were split 10334creating new files. New files: nsparse.c dsinit.c evgpe.c 10335 10336Implemented an abort mechanism to terminate an executing control 10337method via the AML debugger. This feature is useful for debugging 10338control methods that depend (wait) for specific hardware 10339responses. 10340 10341Code and Data Size: Current core subsystem library sizes are shown 10342below. These are the code and data sizes for the acpica.lib 10343produced by the Microsoft Visual C++ 6.0 compiler, and these 10344values do not include any ACPI driver or OSPM code. The debug 10345version of the code includes the debug output trace mechanism and 10346has a much larger code and data size. Note that these values will 10347vary depending on the efficiency of the compiler and the compiler 10348options used during generation. 10349 10350 Previous Release 10351 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10352 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 10353 Current Release: 10354 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 10355 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 10356 10357 103582) iASL Compiler/Disassembler 10359 10360Fixed a compiler code generation problem for "Interrupt" Resource 10361Descriptors. If specified in the ASL, the optional "Resource 10362Source Index" and "Resource Source" fields were not inserted into 10363the correct location within the AML resource descriptor, creating 10364an invalid descriptor. 10365 10366Fixed a disassembler problem for "Interrupt" resource descriptors. 10367The optional "Resource Source Index" and "Resource Source" fields 10368were ignored. 10369 10370 10371---------------------------------------- 1037222 November 2002. Summary of changes for version 20021122. 10373 10374 103751) ACPI CA Core Subsystem: 10376 10377Fixed a reported problem where an object stored to a Method Local 10378or Arg was not copied to a new object during the store - the 10379object pointer was simply copied to the Local/Arg. This caused 10380all subsequent operations on the Local/Arg to also affect the 10381original source of the store operation. 10382 10383Fixed a problem where a store operation to a Method Local or Arg 10384was not completed properly if the Local/Arg contained a reference 10385(from RefOf) to a named field. The general-purpose store-to- 10386namespace-node code is now used so that this case is handled 10387automatically. 10388 10389Fixed a problem where the internal object copy routine would cause 10390a protection fault if the object being copied was a Package and 10391contained either 1) a NULL package element or 2) a nested sub- 10392package. 10393 10394Fixed a problem with the GPE initialization that resulted from an 10395ambiguity in the ACPI specification. One section of the 10396specification states that both the address and length of the GPE 10397block must be zero if the block is not supported. Another section 10398implies that only the address need be zero if the block is not 10399supported. The code has been changed so that both the address and 10400the length must be non-zero to indicate a valid GPE block (i.e., 10401if either the address or the length is zero, the GPE block is 10402invalid.) 10403 10404Code and Data Size: Current core subsystem library sizes are shown 10405below. These are the code and data sizes for the acpica.lib 10406produced by the Microsoft Visual C++ 6.0 compiler, and these 10407values do not include any ACPI driver or OSPM code. The debug 10408version of the code includes the debug output trace mechanism and 10409has a much larger code and data size. Note that these values will 10410vary depending on the efficiency of the compiler and the compiler 10411options used during generation. 10412 10413 Previous Release 10414 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 10415 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 10416 Current Release: 10417 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10418 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 10419 10420 104212) Linux 10422 10423Cleaned up EC driver. Exported an external EC read/write 10424interface. By going through this, other drivers (most notably 10425sonypi) will be able to serialize access to the EC. 10426 10427 104283) iASL Compiler/Disassembler 10429 10430Implemented support to optionally generate include files for both 10431ASM and C (the -i switch). This simplifies BIOS development by 10432automatically creating include files that contain external 10433declarations for the symbols that are created within the 10434 10435(optionally generated) ASM and C AML source files. 10436 10437 10438---------------------------------------- 1043915 November 2002. Summary of changes for version 20021115. 10440 104411) ACPI CA Core Subsystem: 10442 10443Fixed a memory leak problem where an error during resolution of 10444 10445method arguments during a method invocation from another method 10446failed to cleanup properly by deleting all successfully resolved 10447argument objects. 10448 10449Fixed a problem where the target of the Index() operator was not 10450correctly constructed if the source object was a package. This 10451problem has not been detected because the use of a target operand 10452with Index() is very rare. 10453 10454Fixed a problem with the Index() operator where an attempt was 10455made to delete the operand objects twice. 10456 10457Fixed a problem where an attempt was made to delete an operand 10458twice during execution of the CondRefOf() operator if the target 10459did not exist. 10460 10461Implemented the first of perhaps several internal create object 10462functions that create and initialize a specific object type. This 10463consolidates duplicated code wherever the object is created, thus 10464shrinking the size of the subsystem. 10465 10466Implemented improved debug/error messages for errors that occur 10467during nested method invocations. All executing method pathnames 10468are displayed (with the error) as the call stack is unwound - thus 10469simplifying debug. 10470 10471Fixed a problem introduced in the 10/02 release that caused 10472premature deletion of a buffer object if a buffer was used as an 10473ASL operand where an integer operand is required (Thus causing an 10474implicit object conversion from Buffer to Integer.) The change in 10475the 10/02 release was attempting to fix a memory leak (albeit 10476incorrectly.) 10477 10478Code and Data Size: Current core subsystem library sizes are shown 10479below. These are the code and data sizes for the acpica.lib 10480produced by the Microsoft Visual C++ 6.0 compiler, and these 10481values do not include any ACPI driver or OSPM code. The debug 10482version of the code includes the debug output trace mechanism and 10483has a much larger code and data size. Note that these values will 10484vary depending on the efficiency of the compiler and the compiler 10485options used during generation. 10486 10487 Previous Release 10488 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 10489 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 10490 Current Release: 10491 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 10492 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 10493 10494 104952) Linux 10496 10497Changed the implementation of the ACPI semaphores to use down() 10498instead of down_interruptable(). It is important that the 10499execution of ACPI control methods not be interrupted by signals. 10500Methods must run to completion, or the system may be left in an 10501unknown/unstable state. 10502 10503Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 10504(Shawn Starr) 10505 10506 105073) iASL Compiler/Disassembler 10508 10509 10510Changed the default location of output files. All output files 10511are now placed in the current directory by default instead of in 10512the directory of the source file. This change may affect some 10513existing makefiles, but it brings the behavior of the compiler in 10514line with other similar tools. The location of the output files 10515can be overridden with the -p command line switch. 10516 10517 10518---------------------------------------- 1051911 November 2002. Summary of changes for version 20021111. 10520 10521 105220) ACPI Specification 2.0B is released and is now available at: 10523http://www.acpi.info/index.html 10524 10525 105261) ACPI CA Core Subsystem: 10527 10528Implemented support for the ACPI 2.0 SMBus Operation Regions. 10529This includes the early detection and handoff of the request to 10530the SMBus region handler (avoiding all of the complex field 10531support code), and support for the bidirectional return packet 10532from an SMBus write operation. This paves the way for the 10533development of SMBus drivers in each host operating system. 10534 10535Fixed a problem where the semaphore WAIT_FOREVER constant was 10536defined as 32 bits, but must be 16 bits according to the ACPI 10537specification. This had the side effect of causing ASL 10538Mutex/Event timeouts even though the ASL code requested a wait 10539forever. Changed all internal references to the ACPI timeout 10540parameter to 16 bits to prevent future problems. Changed the name 10541of WAIT_FOREVER to ACPI_WAIT_FOREVER. 10542 10543Code and Data Size: Current core subsystem library sizes are shown 10544below. These are the code and data sizes for the acpica.lib 10545produced by the Microsoft Visual C++ 6.0 compiler, and these 10546values do not include any ACPI driver or OSPM code. The debug 10547version of the code includes the debug output trace mechanism and 10548has a much larger code and data size. Note that these values will 10549vary depending on the efficiency of the compiler and the compiler 10550options used during generation. 10551 10552 Previous Release 10553 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10554 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 10555 Current Release: 10556 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 10557 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 10558 10559 105602) Linux 10561 10562Module loading/unloading fixes (John Cagle) 10563 10564 105653) iASL Compiler/Disassembler 10566 10567Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 10568 10569Implemented support for the disassembly of all SMBus protocol 10570keywords (SMBQuick, SMBWord, etc.) 10571 10572---------------------------------------- 1057301 November 2002. Summary of changes for version 20021101. 10574 10575 105761) ACPI CA Core Subsystem: 10577 10578Fixed a problem where platforms that have a GPE1 block but no GPE0 10579block were not handled correctly. This resulted in a "GPE 10580overlap" error message. GPE0 is no longer required. 10581 10582Removed code added in the previous release that inserted nodes 10583into the namespace in alphabetical order. This caused some side- 10584effects on various machines. The root cause of the problem is 10585still under investigation since in theory, the internal ordering 10586of the namespace nodes should not matter. 10587 10588 10589Enhanced error reporting for the case where a named object is not 10590found during control method execution. The full ACPI namepath 10591(name reference) of the object that was not found is displayed in 10592this case. 10593 10594Note: as a result of the overhaul of the namespace object types in 10595the previous release, the namespace nodes for the predefined 10596scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 10597instead of ACPI_TYPE_ANY. This simplifies the namespace 10598management code but may affect code that walks the namespace tree 10599looking for specific object types. 10600 10601Code and Data Size: Current core subsystem library sizes are shown 10602below. These are the code and data sizes for the acpica.lib 10603produced by the Microsoft Visual C++ 6.0 compiler, and these 10604values do not include any ACPI driver or OSPM code. The debug 10605version of the code includes the debug output trace mechanism and 10606has a much larger code and data size. Note that these values will 10607vary depending on the efficiency of the compiler and the compiler 10608options used during generation. 10609 10610 Previous Release 10611 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 10612 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 10613 Current Release: 10614 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 10615 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 10616 10617 106182) Linux 10619 10620Fixed a problem introduced in the previous release where the 10621Processor and Thermal objects were not recognized and installed in 10622/proc. This was related to the scope type change described above. 10623 10624 106253) iASL Compiler/Disassembler 10626 10627Implemented the -g option to get all of the required ACPI tables 10628from the registry and save them to files (Windows version of the 10629compiler only.) The required tables are the FADT, FACS, and DSDT. 10630 10631Added ACPI table checksum validation during table disassembly in 10632order to catch corrupted tables. 10633 10634 10635---------------------------------------- 1063622 October 2002. Summary of changes for version 20021022. 10637 106381) ACPI CA Core Subsystem: 10639 10640Implemented a restriction on the Scope operator that the target 10641must already exist in the namespace at the time the operator is 10642encountered (during table load or method execution). In other 10643words, forward references are not allowed and Scope() cannot 10644create a new object. This changes the previous behavior where the 10645interpreter would create the name if not found. This new behavior 10646correctly enables the search-to-root algorithm during namespace 10647lookup of the target name. Because of this upsearch, this fixes 10648the known Compaq _SB_.OKEC problem and makes both the AML 10649interpreter and iASL compiler compatible with other ACPI 10650implementations. 10651 10652Completed a major overhaul of the internal ACPI object types for 10653the ACPI Namespace and the associated operand objects. Many of 10654these types had become obsolete with the introduction of the two- 10655pass namespace load. This cleanup simplifies the code and makes 10656the entire namespace load mechanism much clearer and easier to 10657understand. 10658 10659Improved debug output for tracking scope opening/closing to help 10660diagnose scoping issues. The old scope name as well as the new 10661scope name are displayed. Also improved error messages for 10662problems with ASL Mutex objects and error messages for GPE 10663problems. 10664 10665Cleaned up the namespace dump code, removed obsolete code. 10666 10667All string output (for all namespace/object dumps) now uses the 10668common ACPI string output procedure which handles escapes properly 10669and does not emit non-printable characters. 10670 10671Fixed some issues with constants in the 64-bit version of the 10672local C library (utclib.c) 10673 10674 106752) Linux 10676 10677EC Driver: No longer attempts to acquire the Global Lock at 10678interrupt level. 10679 10680 106813) iASL Compiler/Disassembler 10682 10683Implemented ACPI 2.0B grammar change that disallows all Type 1 and 106842 opcodes outside of a control method. This means that the 10685"executable" operators (versus the "namespace" operators) cannot 10686be used at the table level; they can only be used within a control 10687method. 10688 10689Implemented the restriction on the Scope() operator where the 10690target must already exist in the namespace at the time the 10691operator is encountered (during ASL compilation). In other words, 10692forward references are not allowed and Scope() cannot create a new 10693object. This makes the iASL compiler compatible with other ACPI 10694implementations and makes the Scope() implementation adhere to the 10695ACPI specification. 10696 10697Fixed a problem where namepath optimization for the Alias operator 10698was optimizing the wrong path (of the two namepaths.) This caused 10699a "Missing alias link" error message. 10700 10701Fixed a problem where an "unknown reserved name" warning could be 10702incorrectly generated for names like "_SB" when the trailing 10703underscore is not used in the original ASL. 10704 10705Fixed a problem where the reserved name check did not handle 10706NamePaths with multiple NameSegs correctly. The first nameseg of 10707the NamePath was examined instead of the last NameSeg. 10708 10709 10710---------------------------------------- 10711 1071202 October 2002. Summary of changes for this release. 10713 10714 107151) ACPI CA Core Subsystem version 20021002: 10716 10717Fixed a problem where a store/copy of a string to an existing 10718string did not always set the string length properly in the String 10719object. 10720 10721Fixed a reported problem with the ToString operator where the 10722behavior was identical to the ToHexString operator instead of just 10723simply converting a raw buffer to a string data type. 10724 10725Fixed a problem where CopyObject and the other "explicit" 10726conversion operators were not updating the internal namespace node 10727type as part of the store operation. 10728 10729Fixed a memory leak during implicit source operand conversion 10730where the original object was not deleted if it was converted to a 10731new object of a different type. 10732 10733Enhanced error messages for all problems associated with namespace 10734lookups. Common procedure generates and prints the lookup name as 10735well as the formatted status. 10736 10737Completed implementation of a new design for the Alias support 10738within the namespace. The existing design did not handle the case 10739where a new object was assigned to one of the two names due to the 10740use of an explicit conversion operator, resulting in the two names 10741pointing to two different objects. The new design simply points 10742the Alias name to the original name node - not to the object. 10743This results in a level of indirection that must be handled in the 10744name resolution mechanism. 10745 10746Code and Data Size: Current core subsystem library sizes are shown 10747below. These are the code and data sizes for the acpica.lib 10748produced by the Microsoft Visual C++ 6.0 compiler, and these 10749values do not include any ACPI driver or OSPM code. The debug 10750version of the code includes the debug output trace mechanism and 10751has a larger code and data size. Note that these values will vary 10752depending on the efficiency of the compiler and the compiler 10753options used during generation. 10754 10755 Previous Release 10756 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 10757 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 10758 Current Release: 10759 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 10760 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 10761 10762 107632) Linux 10764 10765Initialize thermal driver's timer before it is used. (Knut 10766Neumann) 10767 10768Allow handling negative celsius values. (Kochi Takayoshi) 10769 10770Fix thermal management and make trip points. R/W (Pavel Machek) 10771 10772Fix /proc/acpi/sleep. (P. Christeas) 10773 10774IA64 fixes. (David Mosberger) 10775 10776Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 10777 10778Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 10779Brodowski) 10780 10781 107823) iASL Compiler/Disassembler 10783 10784Clarified some warning/error messages. 10785 10786 10787---------------------------------------- 1078818 September 2002. Summary of changes for this release. 10789 10790 107911) ACPI CA Core Subsystem version 20020918: 10792 10793Fixed a reported problem with reference chaining (via the Index() 10794and RefOf() operators) in the ObjectType() and SizeOf() operators. 10795The definition of these operators includes the dereferencing of 10796all chained references to return information on the base object. 10797 10798Fixed a problem with stores to indexed package elements - the 10799existing code would not complete the store if an "implicit 10800conversion" was not performed. In other words, if the existing 10801object (package element) was to be replaced completely, the code 10802didn't handle this case. 10803 10804Relaxed typechecking on the ASL "Scope" operator to allow the 10805target name to refer to an object of type Integer, String, or 10806Buffer, in addition to the scoping object types (Device, 10807predefined Scopes, Processor, PowerResource, and ThermalZone.) 10808This allows existing AML code that has workarounds for a bug in 10809Windows to function properly. A warning is issued, however. This 10810affects both the AML interpreter and the iASL compiler. Below is 10811an example of this type of ASL code: 10812 10813 Name(DEB,0x00) 10814 Scope(DEB) 10815 { 10816 10817Fixed some reported problems with 64-bit integer support in the 10818local implementation of C library functions (clib.c) 10819 10820 108212) Linux 10822 10823Use ACPI fix map region instead of IOAPIC region, since it is 10824undefined in non-SMP. 10825 10826Ensure that the SCI has the proper polarity and trigger, even on 10827systems that do not have an interrupt override entry in the MADT. 10828 108292.5 big driver reorganization (Pat Mochel) 10830 10831Use early table mapping code from acpitable.c (Andi Kleen) 10832 10833New blacklist entries (Andi Kleen) 10834 10835Blacklist improvements. Split blacklist code out into a separate 10836file. Move checking the blacklist to very early. Previously, we 10837would use ACPI tables, and then halfway through init, check the 10838blacklist -- too late. Now, it's early enough to completely fall- 10839back to non-ACPI. 10840 10841 108423) iASL Compiler/Disassembler version 20020918: 10843 10844Fixed a problem where the typechecking code didn't know that an 10845alias could point to a method. In other words, aliases were not 10846being dereferenced during typechecking. 10847 10848 10849---------------------------------------- 1085029 August 2002. Summary of changes for this release. 10851 108521) ACPI CA Core Subsystem Version 20020829: 10853 10854If the target of a Scope() operator already exists, it must be an 10855object type that actually opens a scope -- such as a Device, 10856Method, Scope, etc. This is a fatal runtime error. Similar error 10857check has been added to the iASL compiler also. 10858 10859Tightened up the namespace load to disallow multiple names in the 10860same scope. This previously was allowed if both objects were of 10861the same type. (i.e., a lookup was the same as entering a new 10862name). 10863 10864 108652) Linux 10866 10867Ensure that the ACPI interrupt has the proper trigger and 10868polarity. 10869 10870local_irq_disable is extraneous. (Matthew Wilcox) 10871 10872Make "acpi=off" actually do what it says, and not use the ACPI 10873interpreter *or* the tables. 10874 10875Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 10876Takayoshi) 10877 10878 108793) iASL Compiler/Disassembler Version 20020829: 10880 10881Implemented namepath optimization for name declarations. For 10882example, a declaration like "Method (\_SB_.ABCD)" would get 10883optimized to "Method (ABCD)" if the declaration is within the 10884\_SB_ scope. This optimization is in addition to the named 10885reference path optimization first released in the previous 10886version. This would seem to complete all possible optimizations 10887for namepaths within the ASL/AML. 10888 10889If the target of a Scope() operator already exists, it must be an 10890object type that actually opens a scope -- such as a Device, 10891Method, Scope, etc. 10892 10893Implemented a check and warning for unreachable code in the same 10894block below a Return() statement. 10895 10896Fixed a problem where the listing file was not generated if the 10897compiler aborted if the maximum error count was exceeded (200). 10898 10899Fixed a problem where the typechecking of method return values was 10900broken. This includes the check for a return value when the 10901method is invoked as a TermArg (a return value is expected.) 10902 10903Fixed a reported problem where EOF conditions during a quoted 10904string or comment caused a fault. 10905 10906 10907---------------------------------------- 1090815 August 2002. Summary of changes for this release. 10909 109101) ACPI CA Core Subsystem Version 20020815: 10911 10912Fixed a reported problem where a Store to a method argument that 10913contains a reference did not perform the indirect store correctly. 10914This problem was created during the conversion to the new 10915reference object model - the indirect store to a method argument 10916code was not updated to reflect the new model. 10917 10918Reworked the ACPI mode change code to better conform to ACPI 2.0, 10919handle corner cases, and improve code legibility (Kochi Takayoshi) 10920 10921Fixed a problem with the pathname parsing for the carat (^) 10922prefix. The heavy use of the carat operator by the new namepath 10923optimization in the iASL compiler uncovered a problem with the AML 10924interpreter handling of this prefix. In the case where one or 10925more carats precede a single nameseg, the nameseg was treated as 10926standalone and the search rule (to root) was inadvertently 10927applied. This could cause both the iASL compiler and the 10928interpreter to find the wrong object or to miss the error that 10929should occur if the object does not exist at that exact pathname. 10930 10931Found and fixed the problem where the HP Pavilion DSDT would not 10932load. This was a relatively minor tweak to the table loading code 10933(a problem caused by the unexpected encounter with a method 10934invocation not within a control method), but it does not solve the 10935overall issue of the execution of AML code at the table level. 10936This investigation is still ongoing. 10937 10938Code and Data Size: Current core subsystem library sizes are shown 10939below. These are the code and data sizes for the acpica.lib 10940produced by the Microsoft Visual C++ 6.0 compiler, and these 10941values do not include any ACPI driver or OSPM code. The debug 10942version of the code includes the debug output trace mechanism and 10943has a larger code and data size. Note that these values will vary 10944depending on the efficiency of the compiler and the compiler 10945options used during generation. 10946 10947 Previous Release 10948 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 10949 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 10950 Current Release: 10951 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 10952 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 10953 10954 109552) Linux 10956 10957Remove redundant slab.h include (Brad Hards) 10958 10959Fix several bugs in thermal.c (Herbert Nachtnebel) 10960 10961Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 10962 10963Change acpi_system_suspend to use updated irq functions (Pavel 10964Machek) 10965 10966Export acpi_get_firmware_table (Matthew Wilcox) 10967 10968Use proper root proc entry for ACPI (Kochi Takayoshi) 10969 10970Fix early-boot table parsing (Bjorn Helgaas) 10971 10972 109733) iASL Compiler/Disassembler 10974 10975Reworked the compiler options to make them more consistent and to 10976use two-letter options where appropriate. We were running out of 10977sensible letters. This may break some makefiles, so check the 10978current options list by invoking the compiler with no parameters. 10979 10980Completed the design and implementation of the ASL namepath 10981optimization option for the compiler. This option optimizes all 10982references to named objects to the shortest possible path. The 10983first attempt tries to utilize a single nameseg (4 characters) and 10984the "search-to-root" algorithm used by the interpreter. If that 10985cannot be used (because either the name is not in the search path 10986or there is a conflict with another object with the same name), 10987the pathname is optimized using the carat prefix (usually a 10988shorter string than specifying the entire path from the root.) 10989 10990Implemented support to obtain the DSDT from the Windows registry 10991(when the disassembly option is specified with no input file). 10992Added this code as the implementation for AcpiOsTableOverride in 10993the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 10994utility) to scan memory for the DSDT to the AcpiOsTableOverride 10995function in the DOS OSL to make the disassembler truly OS 10996independent. 10997 10998Implemented a new option to disassemble and compile in one step. 10999When used without an input filename, this option will grab the 11000DSDT from the local machine, disassemble it, and compile it in one 11001step. 11002 11003Added a warning message for invalid escapes (a backslash followed 11004by any character other than the allowable escapes). This catches 11005the quoted string error "\_SB_" (which should be "\\_SB_" ). 11006 11007Also, there are numerous instances in the ACPI specification where 11008this error occurs. 11009 11010Added a compiler option to disable all optimizations. This is 11011basically the "compatibility mode" because by using this option, 11012the AML code will come out exactly the same as other ASL 11013compilers. 11014 11015Added error messages for incorrectly ordered dependent resource 11016functions. This includes: missing EndDependentFn macro at end of 11017dependent resource list, nested dependent function macros (both 11018start and end), and missing StartDependentFn macro. These are 11019common errors that should be caught at compile time. 11020 11021Implemented _OSI support for the disassembler and compiler. _OSI 11022must be included in the namespace for proper disassembly (because 11023the disassembler must know the number of arguments.) 11024 11025Added an "optimization" message type that is optional (off by 11026default). This message is used for all optimizations - including 11027constant folding, integer optimization, and namepath optimization. 11028 11029---------------------------------------- 1103025 July 2002. Summary of changes for this release. 11031 11032 110331) ACPI CA Core Subsystem Version 20020725: 11034 11035The AML Disassembler has been enhanced to produce compilable ASL 11036code and has been integrated into the iASL compiler (see below) as 11037well as the single-step disassembly for the AML debugger and the 11038disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 11039resource templates and macros are fully supported. The 11040disassembler has been tested on over 30 different AML files, 11041producing identical AML when the resulting disassembled ASL file 11042is recompiled with the same ASL compiler. 11043 11044Modified the Resource Manager to allow zero interrupts and zero 11045dma channels during the GetCurrentResources call. This was 11046causing problems on some platforms. 11047 11048Added the AcpiOsRedirectOutput interface to the OSL to simplify 11049output redirection for the AcpiOsPrintf and AcpiOsVprintf 11050interfaces. 11051 11052Code and Data Size: Current core subsystem library sizes are shown 11053below. These are the code and data sizes for the acpica.lib 11054produced by the Microsoft Visual C++ 6.0 compiler, and these 11055values do not include any ACPI driver or OSPM code. The debug 11056version of the code includes the debug output trace mechanism and 11057has a larger code and data size. Note that these values will vary 11058depending on the efficiency of the compiler and the compiler 11059options used during generation. 11060 11061 Previous Release 11062 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 11063 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 11064 Current Release: 11065 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 11066 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 11067 11068 110692) Linux 11070 11071Fixed a panic in the EC driver (Dominik Brodowski) 11072 11073Implemented checksum of the R/XSDT itself during Linux table scan 11074(Richard Schaal) 11075 11076 110773) iASL compiler 11078 11079The AML disassembler is integrated into the compiler. The "-d" 11080option invokes the disassembler to completely disassemble an 11081input AML file, producing as output a text ASL file with the 11082extension ".dsl" (to avoid name collisions with existing .asl 11083source files.) A future enhancement will allow the disassembler 11084to obtain the BIOS DSDT from the registry under Windows. 11085 11086Fixed a problem with the VendorShort and VendorLong resource 11087descriptors where an invalid AML sequence was created. 11088 11089Implemented a fix for BufferData term in the ASL parser. It was 11090inadvertently defined twice, allowing invalid syntax to pass and 11091causing reduction conflicts. 11092 11093Fixed a problem where the Ones opcode could get converted to a 11094value of zero if "Ones" was used where a byte, word or dword value 11095was expected. The 64-bit value is now truncated to the correct 11096size with the correct value. 11097 11098 11099 11100---------------------------------------- 1110102 July 2002. Summary of changes for this release. 11102 11103 111041) ACPI CA Core Subsystem Version 20020702: 11105 11106The Table Manager code has been restructured to add several new 11107features. Tables that are not required by the core subsystem 11108(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 11109validated in any way and are returned from AcpiGetFirmwareTable if 11110requested. The AcpiOsTableOverride interface is now called for 11111each table that is loaded by the subsystem in order to allow the 11112host to override any table it chooses. Previously, only the DSDT 11113could be overridden. Added one new files, tbrsdt.c and 11114tbgetall.c. 11115 11116Fixed a problem with the conversion of internal package objects to 11117external objects (when a package is returned from a control 11118method.) The return buffer length was set to zero instead of the 11119proper length of the package object. 11120 11121Fixed a reported problem with the use of the RefOf and DeRefOf 11122operators when passing reference arguments to control methods. A 11123new type of Reference object is used internally for references 11124produced by the RefOf operator. 11125 11126Added additional error messages in the Resource Manager to explain 11127AE_BAD_DATA errors when they occur during resource parsing. 11128 11129Split the AcpiEnableSubsystem into two primitives to enable a 11130finer granularity initialization sequence. These two calls should 11131be called in this order: AcpiEnableSubsystem (flags), 11132AcpiInitializeObjects (flags). The flags parameter remains the 11133same. 11134 11135 111362) Linux 11137 11138Updated the ACPI utilities module to understand the new style of 11139fully resolved package objects that are now returned from the core 11140subsystem. This eliminates errors of the form: 11141 11142 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 11143 acpi_utils-0430 [145] acpi_evaluate_reference: 11144 Invalid element in package (not a device reference) 11145 11146The method evaluation utility uses the new buffer allocation 11147scheme instead of calling AcpiEvaluate Object twice. 11148 11149Added support for ECDT. This allows the use of the Embedded 11150 11151Controller before the namespace has been fully initialized, which 11152is necessary for ACPI 2.0 support, and for some laptops to 11153initialize properly. (Laptops using ECDT are still rare, so only 11154limited testing was performed of the added functionality.) 11155 11156Fixed memory leaks in the EC driver. 11157 11158Eliminated a brittle code structure in acpi_bus_init(). 11159 11160Eliminated the acpi_evaluate() helper function in utils.c. It is 11161no longer needed since acpi_evaluate_object can optionally 11162allocate memory for the return object. 11163 11164Implemented fix for keyboard hang when getting battery readings on 11165some systems (Stephen White) 11166 11167PCI IRQ routing update (Dominik Brodowski) 11168 11169Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 11170support 11171 11172---------------------------------------- 1117311 June 2002. Summary of changes for this release. 11174 11175 111761) ACPI CA Core Subsystem Version 20020611: 11177 11178Fixed a reported problem where constants such as Zero and One 11179appearing within _PRT packages were not handled correctly within 11180the resource manager code. Originally reported against the ASL 11181compiler because the code generator now optimizes integers to 11182their minimal AML representation (i.e. AML constants if possible.) 11183The _PRT code now handles all AML constant opcodes correctly 11184(Zero, One, Ones, Revision). 11185 11186Fixed a problem with the Concatenate operator in the AML 11187interpreter where a buffer result object was incorrectly marked as 11188not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 11189 11190All package sub-objects are now fully resolved before they are 11191returned from the external ACPI interfaces. This means that name 11192strings are resolved to object handles, and constant operators 11193(Zero, One, Ones, Revision) are resolved to Integers. 11194 11195Implemented immediate resolution of the AML Constant opcodes 11196(Zero, One, Ones, Revision) to Integer objects upon detection 11197within the AML stream. This has simplified and reduced the 11198generated code size of the subsystem by eliminating about 10 11199switch statements for these constants (which previously were 11200contained in Reference objects.) The complicating issues are that 11201the Zero opcode is used as a "placeholder" for unspecified 11202optional target operands and stores to constants are defined to be 11203no-ops. 11204 11205Code and Data Size: Current core subsystem library sizes are shown 11206below. These are the code and data sizes for the acpica.lib 11207produced by the Microsoft Visual C++ 6.0 compiler, and these 11208values do not include any ACPI driver or OSPM code. The debug 11209version of the code includes the debug output trace mechanism and 11210has a larger code and data size. Note that these values will vary 11211depending on the efficiency of the compiler and the compiler 11212options used during generation. 11213 11214 Previous Release 11215 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 11216 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 11217 Current Release: 11218 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 11219 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 11220 11221 112222) Linux 11223 11224 11225Added preliminary support for obtaining _TRA data for PCI root 11226bridges (Bjorn Helgaas). 11227 11228 112293) iASL Compiler Version X2046: 11230 11231Fixed a problem where the "_DDN" reserved name was defined to be a 11232control method with one argument. There are no arguments, and 11233_DDN does not have to be a control method. 11234 11235Fixed a problem with the Linux version of the compiler where the 11236source lines printed with error messages were the wrong lines. 11237This turned out to be the "LF versus CR/LF" difference between 11238Windows and Unix. This appears to be the longstanding issue 11239concerning listing output and error messages. 11240 11241Fixed a problem with the Linux version of compiler where opcode 11242names within error messages were wrong. This was caused by a 11243slight difference in the output of the Flex tool on Linux versus 11244Windows. 11245 11246Fixed a problem with the Linux compiler where the hex output files 11247contained some garbage data caused by an internal buffer overrun. 11248 11249 11250---------------------------------------- 1125117 May 2002. Summary of changes for this release. 11252 11253 112541) ACPI CA Core Subsystem Version 20020517: 11255 11256Implemented a workaround to an BIOS bug discovered on the HP 11257OmniBook where the FADT revision number and the table size are 11258inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 11259behavior is to fallback to using only the ACPI 1.0 fields of the 11260FADT if the table is too small to be a ACPI 2.0 table as claimed 11261by the revision number. Although this is a BIOS bug, this is a 11262case where the workaround is simple enough and with no side 11263effects, so it seemed prudent to add it. A warning message is 11264issued, however. 11265 11266Implemented minimum size checks for the fixed-length ACPI tables - 11267- the FADT and FACS, as well as consistency checks between the 11268revision number and the table size. 11269 11270Fixed a reported problem in the table override support where the 11271new table pointer was incorrectly treated as a physical address 11272instead of a logical address. 11273 11274Eliminated the use of the AE_AML_ERROR exception and replaced it 11275with more descriptive codes. 11276 11277Fixed a problem where an exception would occur if an ASL Field was 11278defined with no named Field Units underneath it (used by some 11279index fields). 11280 11281Code and Data Size: Current core subsystem library sizes are shown 11282below. These are the code and data sizes for the acpica.lib 11283produced by the Microsoft Visual C++ 6.0 compiler, and these 11284values do not include any ACPI driver or OSPM code. The debug 11285version of the code includes the debug output trace mechanism and 11286has a larger code and data size. Note that these values will vary 11287depending on the efficiency of the compiler and the compiler 11288options used during generation. 11289 11290 Previous Release 11291 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 11292 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 11293 Current Release: 11294 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 11295 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 11296 11297 11298 112992) Linux 11300 11301Much work done on ACPI init (MADT and PCI IRQ routing support). 11302(Paul D. and Dominik Brodowski) 11303 11304Fix PCI IRQ-related panic on boot (Sam Revitch) 11305 11306Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 11307 11308Fix "MHz" typo (Dominik Brodowski) 11309 11310Fix RTC year 2000 issue (Dominik Brodowski) 11311 11312Preclude multiple button proc entries (Eric Brunet) 11313 11314Moved arch-specific code out of include/platform/aclinux.h 11315 113163) iASL Compiler Version X2044: 11317 11318Implemented error checking for the string used in the EISAID macro 11319(Usually used in the definition of the _HID object.) The code now 11320strictly enforces the PnP format - exactly 7 characters, 3 11321uppercase letters and 4 hex digits. 11322 11323If a raw string is used in the definition of the _HID object 11324(instead of the EISAID macro), the string must contain all 11325alphanumeric characters (e.g., "*PNP0011" is not allowed because 11326of the asterisk.) 11327 11328Implemented checking for invalid use of ACPI reserved names for 11329most of the name creation operators (Name, Device, Event, Mutex, 11330OperationRegion, PowerResource, Processor, and ThermalZone.) 11331Previously, this check was only performed for control methods. 11332 11333Implemented an additional check on the Name operator to emit an 11334error if a reserved name that must be implemented in ASL as a 11335control method is used. We know that a reserved name must be a 11336method if it is defined with input arguments. 11337 11338The warning emitted when a namespace object reference is not found 11339during the cross reference phase has been changed into an error. 11340The "External" directive should be used for names defined in other 11341modules. 11342 11343 113444) Tools and Utilities 11345 11346The 16-bit tools (adump16 and aexec16) have been regenerated and 11347tested. 11348 11349Fixed a problem with the output of both acpidump and adump16 where 11350the indentation of closing parentheses and brackets was not 11351 11352aligned properly with the parent block. 11353 11354 11355---------------------------------------- 1135603 May 2002. Summary of changes for this release. 11357 11358 113591) ACPI CA Core Subsystem Version 20020503: 11360 11361Added support a new OSL interface that allows the host operating 11362 11363system software to override the DSDT found in the firmware - 11364AcpiOsTableOverride. With this interface, the OSL can examine the 11365version of the firmware DSDT and replace it with a different one 11366if desired. 11367 11368Added new external interfaces for accessing ACPI registers from 11369device drivers and other system software - AcpiGetRegister and 11370AcpiSetRegister. This was simply an externalization of the 11371existing AcpiHwBitRegister interfaces. 11372 11373Fixed a regression introduced in the previous build where the 11374ASL/AML CreateField operator always returned an error, 11375"destination must be a NS Node". 11376 11377Extended the maximum time (before failure) to successfully enable 11378ACPI mode to 3 seconds. 11379 11380Code and Data Size: Current core subsystem library sizes are shown 11381below. These are the code and data sizes for the acpica.lib 11382produced by the Microsoft Visual C++ 6.0 compiler, and these 11383values do not include any ACPI driver or OSPM code. The debug 11384version of the code includes the debug output trace mechanism and 11385has a larger code and data size. Note that these values will vary 11386depending on the efficiency of the compiler and the compiler 11387options used during generation. 11388 11389 Previous Release 11390 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 11391 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 11392 Current Release: 11393 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 11394 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 11395 11396 113972) Linux 11398 11399Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 11400free. While 3 out of 4 of our in-house systems work fine, the last 11401one still hangs when testing the LAPIC timer. 11402 11403Renamed many files in 2.5 kernel release to omit "acpi_" from the 11404name. 11405 11406Added warning on boot for Presario 711FR. 11407 11408Sleep improvements (Pavel Machek) 11409 11410ACPI can now be built without CONFIG_PCI enabled. 11411 11412IA64: Fixed memory map functions (JI Lee) 11413 11414 114153) iASL Compiler Version X2043: 11416 11417Added support to allow the compiler to be integrated into the MS 11418VC++ development environment for one-button compilation of single 11419files or entire projects -- with error-to-source-line mapping. 11420 11421Implemented support for compile-time constant folding for the 11422Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 11423specification. This allows the ASL writer to use expressions 11424instead of Integer/Buffer/String constants in terms that must 11425evaluate to constants at compile time and will also simplify the 11426emitted AML in any such sub-expressions that can be folded 11427(evaluated at compile-time.) This increases the size of the 11428compiler significantly because a portion of the ACPI CA AML 11429interpreter is included within the compiler in order to pre- 11430evaluate constant expressions. 11431 11432 11433Fixed a problem with the "Unicode" ASL macro that caused the 11434compiler to fault. (This macro is used in conjunction with the 11435_STR reserved name.) 11436 11437Implemented an AML opcode optimization to use the Zero, One, and 11438Ones opcodes where possible to further reduce the size of integer 11439constants and thus reduce the overall size of the generated AML 11440code. 11441 11442Implemented error checking for new reserved terms for ACPI version 114432.0A. 11444 11445Implemented the -qr option to display the current list of ACPI 11446reserved names known to the compiler. 11447 11448Implemented the -qc option to display the current list of ASL 11449operators that are allowed within constant expressions and can 11450therefore be folded at compile time if the operands are constants. 11451 11452 114534) Documentation 11454 11455Updated the Programmer's Reference for new interfaces, data types, 11456and memory allocation model options. 11457 11458Updated the iASL Compiler User Reference to apply new format and 11459add information about new features and options. 11460 11461---------------------------------------- 1146219 April 2002. Summary of changes for this release. 11463 114641) ACPI CA Core Subsystem Version 20020419: 11465 11466The source code base for the Core Subsystem has been completely 11467cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 11468versions. The Lint option files used are included in the 11469/acpi/generate/lint directory. 11470 11471Implemented enhanced status/error checking across the entire 11472Hardware manager subsystem. Any hardware errors (reported from 11473the OSL) are now bubbled up and will abort a running control 11474method. 11475 11476 11477Fixed a problem where the per-ACPI-table integer width (32 or 64) 11478was stored only with control method nodes, causing a fault when 11479non-control method code was executed during table loading. The 11480solution implemented uses a global variable to indicate table 11481width across the entire ACPI subsystem. Therefore, ACPI CA does 11482not support mixed integer widths across different ACPI tables 11483(DSDT, SSDT). 11484 11485Fixed a problem where NULL extended fields (X fields) in an ACPI 114862.0 ACPI FADT caused the table load to fail. Although the 11487existing ACPI specification is a bit fuzzy on this topic, the new 11488behavior is to fall back on a ACPI 1.0 field if the corresponding 11489ACPI 2.0 X field is zero (even though the table revision indicates 11490a full ACPI 2.0 table.) The ACPI specification will be updated to 11491clarify this issue. 11492 11493Fixed a problem with the SystemMemory operation region handler 11494where memory was always accessed byte-wise even if the AML- 11495specified access width was larger than a byte. This caused 11496problems on systems with memory-mapped I/O. Memory is now 11497accessed with the width specified. On systems that do not support 11498non-aligned transfers, a check is made to guarantee proper address 11499alignment before proceeding in order to avoid an AML-caused 11500alignment fault within the kernel. 11501 11502 11503Fixed a problem with the ExtendedIrq resource where only one byte 11504of the 4-byte Irq field was extracted. 11505 11506Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 11507function was out of date and required a rewrite. 11508 11509Code and Data Size: Current core subsystem library sizes are shown 11510below. These are the code and data sizes for the acpica.lib 11511produced by the Microsoft Visual C++ 6.0 compiler, and these 11512values do not include any ACPI driver or OSPM code. The debug 11513version of the code includes the debug output trace mechanism and 11514has a larger code and data size. Note that these values will vary 11515depending on the efficiency of the compiler and the compiler 11516options used during generation. 11517 11518 Previous Release 11519 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 11520 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 11521 Current Release: 11522 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 11523 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 11524 11525 115262) Linux 11527 11528PCI IRQ routing fixes (Dominik Brodowski) 11529 11530 115313) iASL Compiler Version X2042: 11532 11533Implemented an additional compile-time error check for a field 11534unit whose size + minimum access width would cause a run-time 11535access beyond the end-of-region. Previously, only the field size 11536itself was checked. 11537 11538The Core subsystem and iASL compiler now share a common parse 11539object in preparation for compile-time evaluation of the type 115403/4/5 ASL operators. 11541 11542 11543---------------------------------------- 11544Summary of changes for this release: 03_29_02 11545 115461) ACPI CA Core Subsystem Version 20020329: 11547 11548Implemented support for late evaluation of TermArg operands to 11549Buffer and Package objects. This allows complex expressions to be 11550used in the declarations of these object types. 11551 11552Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 115531.0, if the field was larger than 32 bits, it was returned as a 11554buffer - otherwise it was returned as an integer. In ACPI 2.0, 11555the field is returned as a buffer only if the field is larger than 1155664 bits. The TableRevision is now considered when making this 11557conversion to avoid incompatibility with existing ASL code. 11558 11559Implemented logical addressing for AcpiOsGetRootPointer. This 11560allows an RSDP with either a logical or physical address. With 11561this support, the host OS can now override all ACPI tables with 11562one logical RSDP. Includes implementation of "typed" pointer 11563support to allow a common data type for both physical and logical 11564pointers internally. This required a change to the 11565AcpiOsGetRootPointer interface. 11566 11567Implemented the use of ACPI 2.0 Generic Address Structures for all 11568GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 11569mapped I/O for these ACPI features. 11570 11571Initialization now ignores not only non-required tables (All 11572tables other than the FADT, FACS, DSDT, and SSDTs), but also does 11573not validate the table headers of unrecognized tables. 11574 11575Fixed a problem where a notify handler could only be 11576installed/removed on an object of type Device. All "notify" 11577 11578objects are now supported -- Devices, Processor, Power, and 11579Thermal. 11580 11581Removed most verbosity from the ACPI_DB_INFO debug level. Only 11582critical information is returned when this debug level is enabled. 11583 11584Code and Data Size: Current core subsystem library sizes are shown 11585below. These are the code and data sizes for the acpica.lib 11586produced by the Microsoft Visual C++ 6.0 compiler, and these 11587values do not include any ACPI driver or OSPM code. The debug 11588version of the code includes the debug output trace mechanism and 11589has a larger code and data size. Note that these values will vary 11590depending on the efficiency of the compiler and the compiler 11591options used during generation. 11592 11593 Previous Release 11594 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 11595 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 11596 Current Release: 11597 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 11598 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 11599 11600 116012) Linux: 11602 11603The processor driver (acpi_processor.c) now fully supports ACPI 116042.0-based processor performance control (e.g. Intel(R) 11605SpeedStep(TM) technology) Note that older laptops that only have 11606the Intel "applet" interface are not supported through this. The 11607'limit' and 'performance' interface (/proc) are fully functional. 11608[Note that basic policy for controlling performance state 11609transitions will be included in the next version of ospmd.] The 11610idle handler was modified to more aggressively use C2, and PIIX4 11611errata handling underwent a complete overhaul (big thanks to 11612Dominik Brodowski). 11613 11614Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 11615based devices in the ACPI namespace are now dynamically bound 11616(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 11617This allows, among other things, ACPI to resolve bus numbers for 11618subordinate PCI bridges. 11619 11620Enhanced PCI IRQ routing to get the proper bus number for _PRT 11621entries defined underneath PCI bridges. 11622 11623Added IBM 600E to bad bios list due to invalid _ADR value for 11624PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 11625 11626In the process of adding full MADT support (e.g. IOAPIC) for IA32 11627(acpi.c, mpparse.c) -- stay tuned. 11628 11629Added back visual differentiation between fixed-feature and 11630control-method buttons in dmesg. Buttons are also subtyped (e.g. 11631button/power/PWRF) to simplify button identification. 11632 11633We no longer use -Wno-unused when compiling debug. Please ignore 11634any "_THIS_MODULE defined but not used" messages. 11635 11636Can now shut down the system using "magic sysrq" key. 11637 11638 116393) iASL Compiler version 2041: 11640 11641Fixed a problem where conversion errors for hex/octal/decimal 11642constants were not reported. 11643 11644Implemented a fix for the General Register template Address field. 11645This field was 8 bits when it should be 64. 11646 11647Fixed a problem where errors/warnings were no longer being emitted 11648within the listing output file. 11649 11650Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 11651exactly 4 characters, alphanumeric only. 11652 11653 11654 11655 11656---------------------------------------- 11657Summary of changes for this release: 03_08_02 11658 11659 116601) ACPI CA Core Subsystem Version 20020308: 11661 11662Fixed a problem with AML Fields where the use of the "AccessAny" 11663keyword could cause an interpreter error due to attempting to read 11664or write beyond the end of the parent Operation Region. 11665 11666Fixed a problem in the SystemMemory Operation Region handler where 11667an attempt was made to map memory beyond the end of the region. 11668This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 11669errors on some Linux systems. 11670 11671Fixed a problem where the interpreter/namespace "search to root" 11672algorithm was not functioning for some object types. Relaxed the 11673internal restriction on the search to allow upsearches for all 11674external object types as well as most internal types. 11675 11676 116772) Linux: 11678 11679We now use safe_halt() macro versus individual calls to sti | hlt. 11680 11681Writing to the processor limit interface should now work. "echo 1" 11682will increase the limit, 2 will decrease, and 0 will reset to the 11683 11684default. 11685 11686 116873) ASL compiler: 11688 11689Fixed segfault on Linux version. 11690 11691 11692---------------------------------------- 11693Summary of changes for this release: 02_25_02 11694 116951) ACPI CA Core Subsystem: 11696 11697 11698Fixed a problem where the GPE bit masks were not initialized 11699properly, causing erratic GPE behavior. 11700 11701Implemented limited support for multiple calling conventions. The 11702code can be generated with either the VPL (variable parameter 11703list, or "C") convention, or the FPL (fixed parameter list, or 11704"Pascal") convention. The core subsystem is about 3.4% smaller 11705when generated with FPL. 11706 11707 117082) Linux 11709 11710Re-add some /proc/acpi/event functionality that was lost during 11711the rewrite 11712 11713Resolved issue with /proc events for fixed-feature buttons showing 11714up as the system device. 11715 11716Fixed checks on C2/C3 latencies to be inclusive of maximum values. 11717 11718Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 11719 11720Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 11721 11722Fixed limit interface & usage to fix bugs with passive cooling 11723hysterisis. 11724 11725Restructured PRT support. 11726 11727 11728---------------------------------------- 11729Summary of changes for this label: 02_14_02 11730 11731 117321) ACPI CA Core Subsystem: 11733 11734Implemented support in AcpiLoadTable to allow loading of FACS and 11735FADT tables. 11736 11737Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 11738been removed. All 64-bit platforms should be migrated to the ACPI 117392.0 tables. The actbl71.h header has been removed from the source 11740tree. 11741 11742All C macros defined within the subsystem have been prefixed with 11743"ACPI_" to avoid collision with other system include files. 11744 11745Removed the return value for the two AcpiOsPrint interfaces, since 11746it is never used and causes lint warnings for ignoring the return 11747value. 11748 11749Added error checking to all internal mutex acquire and release 11750calls. Although a failure from one of these interfaces is 11751probably a fatal system error, these checks will cause the 11752immediate abort of the currently executing method or interface. 11753 11754Fixed a problem where the AcpiSetCurrentResources interface could 11755fault. This was a side effect of the deployment of the new memory 11756allocation model. 11757 11758Fixed a couple of problems with the Global Lock support introduced 11759in the last major build. The "common" (1.0/2.0) internal FACS was 11760being overwritten with the FACS signature and clobbering the 11761Global Lock pointer. Also, the actual firmware FACS was being 11762unmapped after construction of the "common" FACS, preventing 11763access to the actual Global Lock field within it. The "common" 11764internal FACS is no longer installed as an actual ACPI table; it 11765is used simply as a global. 11766 11767Code and Data Size: Current core subsystem library sizes are shown 11768below. These are the code and data sizes for the acpica.lib 11769produced by the Microsoft Visual C++ 6.0 compiler, and these 11770values do not include any ACPI driver or OSPM code. The debug 11771version of the code includes the debug output trace mechanism and 11772has a larger code and data size. Note that these values will vary 11773depending on the efficiency of the compiler and the compiler 11774options used during generation. 11775 11776 Previous Release (02_07_01) 11777 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 11778 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 11779 Current Release: 11780 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 11781 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 11782 11783 117842) Linux 11785 11786Updated Linux-specific code for core macro and OSL interface 11787changes described above. 11788 11789Improved /proc/acpi/event. It now can be opened only once and has 11790proper poll functionality. 11791 11792Fixed and restructured power management (acpi_bus). 11793 11794Only create /proc "view by type" when devices of that class exist. 11795 11796Fixed "charging/discharging" bug (and others) in acpi_battery. 11797 11798Improved thermal zone code. 11799 11800 118013) ASL Compiler, version X2039: 11802 11803 11804Implemented the new compiler restriction on ASL String hex/octal 11805escapes to non-null, ASCII values. An error results if an invalid 11806value is used. (This will require an ACPI 2.0 specification 11807change.) 11808 11809AML object labels that are output to the optional C and ASM source 11810are now prefixed with both the ACPI table signature and table ID 11811to help guarantee uniqueness within a large BIOS project. 11812 11813 11814---------------------------------------- 11815Summary of changes for this label: 02_01_02 11816 118171) ACPI CA Core Subsystem: 11818 11819ACPI 2.0 support is complete in the entire Core Subsystem and the 11820ASL compiler. All new ACPI 2.0 operators are implemented and all 11821other changes for ACPI 2.0 support are complete. With 11822simultaneous code and data optimizations throughout the subsystem, 11823ACPI 2.0 support has been implemented with almost no additional 11824cost in terms of code and data size. 11825 11826Implemented a new mechanism for allocation of return buffers. If 11827the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 11828be allocated on behalf of the caller. Consolidated all return 11829buffer validation and allocation to a common procedure. Return 11830buffers will be allocated via the primary OSL allocation interface 11831since it appears that a separate pool is not needed by most users. 11832If a separate pool is required for these buffers, the caller can 11833still use the original mechanism and pre-allocate the buffer(s). 11834 11835Implemented support for string operands within the DerefOf 11836operator. 11837 11838Restructured the Hardware and Event managers to be table driven, 11839simplifying the source code and reducing the amount of generated 11840code. 11841 11842Split the common read/write low-level ACPI register bitfield 11843procedure into a separate read and write, simplifying the code 11844considerably. 11845 11846Obsoleted the AcpiOsCallocate OSL interface. This interface was 11847used only a handful of times and didn't have enough critical mass 11848for a separate interface. Replaced with a common calloc procedure 11849in the core. 11850 11851Fixed a reported problem with the GPE number mapping mechanism 11852that allows GPE1 numbers to be non-contiguous with GPE0. 11853Reorganized the GPE information and shrunk a large array that was 11854originally large enough to hold info for all possible GPEs (256) 11855to simply large enough to hold all GPEs up to the largest GPE 11856number on the machine. 11857 11858Fixed a reported problem with resource structure alignment on 64- 11859bit platforms. 11860 11861Changed the AcpiEnableEvent and AcpiDisableEvent external 11862interfaces to not require any flags for the common case of 11863enabling/disabling a GPE. 11864 11865Implemented support to allow a "Notify" on a Processor object. 11866 11867Most TBDs in comments within the source code have been resolved 11868and eliminated. 11869 11870 11871Fixed a problem in the interpreter where a standalone parent 11872prefix (^) was not handled correctly in the interpreter and 11873debugger. 11874 11875Removed obsolete and unnecessary GPE save/restore code. 11876 11877Implemented Field support in the ASL Load operator. This allows a 11878table to be loaded from a named field, in addition to loading a 11879table directly from an Operation Region. 11880 11881Implemented timeout and handle support in the external Global Lock 11882interfaces. 11883 11884Fixed a problem in the AcpiDump utility where pathnames were no 11885longer being generated correctly during the dump of named objects. 11886 11887Modified the AML debugger to give a full display of if/while 11888predicates instead of just one AML opcode at a time. (The 11889predicate can have several nested ASL statements.) The old method 11890was confusing during single stepping. 11891 11892Code and Data Size: Current core subsystem library sizes are shown 11893below. These are the code and data sizes for the acpica.lib 11894produced by the Microsoft Visual C++ 6.0 compiler, and these 11895values do not include any ACPI driver or OSPM code. The debug 11896version of the code includes the debug output trace mechanism and 11897has a larger code and data size. Note that these values will vary 11898depending on the efficiency of the compiler and the compiler 11899options used during generation. 11900 11901 Previous Release (12_18_01) 11902 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 11903 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 11904 Current Release: 11905 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 11906 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 11907 119082) Linux 11909 11910 Implemented fix for PIIX reverse throttling errata (Processor 11911driver) 11912 11913Added new Limit interface (Processor and Thermal drivers) 11914 11915New thermal policy (Thermal driver) 11916 11917Many updates to /proc 11918 11919Battery "low" event support (Battery driver) 11920 11921Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 11922 11923IA32 - IA64 initialization unification, no longer experimental 11924 11925Menuconfig options redesigned 11926 119273) ASL Compiler, version X2037: 11928 11929Implemented several new output features to simplify integration of 11930AML code into firmware: 1) Output the AML in C source code with 11931labels for each named ASL object. The original ASL source code 11932is interleaved as C comments. 2) Output the AML in ASM source code 11933with labels and interleaved ASL source. 3) Output the AML in 11934raw hex table form, in either C or ASM. 11935 11936Implemented support for optional string parameters to the 11937LoadTable operator. 11938 11939Completed support for embedded escape sequences within string 11940literals. The compiler now supports all single character escapes 11941as well as the Octal and Hex escapes. Note: the insertion of a 11942null byte into a string literal (via the hex/octal escape) causes 11943the string to be immediately terminated. A warning is issued. 11944 11945Fixed a problem where incorrect AML was generated for the case 11946where an ASL namepath consists of a single parent prefix ( 11947 11948) with no trailing name segments. 11949 11950The compiler has been successfully generated with a 64-bit C 11951compiler. 11952 11953 11954 11955 11956---------------------------------------- 11957Summary of changes for this label: 12_18_01 11958 119591) Linux 11960 11961Enhanced blacklist with reason and severity fields. Any table's 11962signature may now be used to identify a blacklisted system. 11963 11964Call _PIC control method to inform the firmware which interrupt 11965model the OS is using. Turn on any disabled link devices. 11966 11967Cleaned up busmgr /proc error handling (Andreas Dilger) 11968 11969 2) ACPI CA Core Subsystem: 11970 11971Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 11972while loop) 11973 11974Completed implementation of the ACPI 2.0 "Continue", 11975"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 11976operators. All new ACPI 2.0 operators are now implemented in both 11977the ASL compiler and the AML interpreter. The only remaining ACPI 119782.0 task is support for the String data type in the DerefOf 11979operator. Fixed a problem with AcquireMutex where the status code 11980was lost if the caller had to actually wait for the mutex. 11981 11982Increased the maximum ASL Field size from 64K bits to 4G bits. 11983 11984Completed implementation of the external Global Lock interfaces -- 11985AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 11986Handler parameters were added. 11987 11988Completed another pass at removing warnings and issues when 11989compiling with 64-bit compilers. The code now compiles cleanly 11990with the Intel 64-bit C/C++ compiler. Most notably, the pointer 11991add and subtract (diff) macros have changed considerably. 11992 11993 11994Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1199564-bit platforms, 32-bits on all others. This type is used 11996wherever memory allocation and/or the C sizeof() operator is used, 11997and affects the OSL memory allocation interfaces AcpiOsAllocate 11998and AcpiOsCallocate. 11999 12000Implemented sticky user breakpoints in the AML debugger. 12001 12002Code and Data Size: Current core subsystem library sizes are shown 12003below. These are the code and data sizes for the acpica.lib 12004produced by the Microsoft Visual C++ 6.0 compiler, and these 12005values do not include any ACPI driver or OSPM code. The debug 12006version of the code includes the debug output trace mechanism and 12007has a larger code and data size. Note that these values will vary 12008depending on the efficiency of the compiler and the compiler 12009options used during generation. 12010 12011 Previous Release (12_05_01) 12012 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 12013 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 12014 Current Release: 12015 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 12016 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 12017 12018 3) ASL Compiler, version X2034: 12019 12020Now checks for (and generates an error if detected) the use of a 12021Break or Continue statement without an enclosing While statement. 12022 12023 12024Successfully generated the compiler with the Intel 64-bit C 12025compiler. 12026 12027 ---------------------------------------- 12028Summary of changes for this label: 12_05_01 12029 12030 1) ACPI CA Core Subsystem: 12031 12032The ACPI 2.0 CopyObject operator is fully implemented. This 12033operator creates a new copy of an object (and is also used to 12034bypass the "implicit conversion" mechanism of the Store operator.) 12035 12036The ACPI 2.0 semantics for the SizeOf operator are fully 12037implemented. The change is that performing a SizeOf on a 12038reference object causes an automatic dereference of the object to 12039tha actual value before the size is evaluated. This behavior was 12040undefined in ACPI 1.0. 12041 12042The ACPI 2.0 semantics for the Extended IRQ resource descriptor 12043have been implemented. The interrupt polarity and mode are now 12044independently set. 12045 12046Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 12047appearing in Package objects were not properly converted to 12048integers when the internal Package was converted to an external 12049object (via the AcpiEvaluateObject interface.) 12050 12051Fixed a problem with the namespace object deletion mechanism for 12052objects created by control methods. There were two parts to this 12053problem: 1) Objects created during the initialization phase method 12054parse were not being deleted, and 2) The object owner ID mechanism 12055to track objects was broken. 12056 12057Fixed a problem where the use of the ASL Scope operator within a 12058control method would result in an invalid opcode exception. 12059 12060Fixed a problem introduced in the previous label where the buffer 12061length required for the _PRT structure was not being returned 12062correctly. 12063 12064Code and Data Size: Current core subsystem library sizes are shown 12065below. These are the code and data sizes for the acpica.lib 12066produced by the Microsoft Visual C++ 6.0 compiler, and these 12067values do not include any ACPI driver or OSPM code. The debug 12068version of the code includes the debug output trace mechanism and 12069has a larger code and data size. Note that these values will vary 12070depending on the efficiency of the compiler and the compiler 12071options used during generation. 12072 12073 Previous Release (11_20_01) 12074 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 12075 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 12076 12077 Current Release: 12078 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 12079 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 12080 12081 2) Linux: 12082 12083Updated all files to apply cleanly against 2.4.16. 12084 12085Added basic PCI Interrupt Routing Table (PRT) support for IA32 12086(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 12087version supports both static and dyanmic PRT entries, but dynamic 12088entries are treated as if they were static (not yet 12089reconfigurable). Architecture- specific code to use this data is 12090absent on IA32 but should be available shortly. 12091 12092Changed the initialization sequence to start the ACPI interpreter 12093(acpi_init) prior to initialization of the PCI driver (pci_init) 12094in init/main.c. This ordering is required to support PRT and 12095facilitate other (future) enhancement. A side effect is that the 12096ACPI bus driver and certain device drivers can no longer be loaded 12097as modules. 12098 12099Modified the 'make menuconfig' options to allow PCI Interrupt 12100Routing support to be included without the ACPI Bus and other 12101device drivers. 12102 12103 3) ASL Compiler, version X2033: 12104 12105Fixed some issues with the use of the new CopyObject and 12106DataTableRegion operators. Both are fully functional. 12107 12108 ---------------------------------------- 12109Summary of changes for this label: 11_20_01 12110 12111 20 November 2001. Summary of changes for this release. 12112 12113 1) ACPI CA Core Subsystem: 12114 12115Updated Index support to match ACPI 2.0 semantics. Storing a 12116Integer, String, or Buffer to an Index of a Buffer will store only 12117the least-significant byte of the source to the Indexed buffer 12118byte. Multiple writes are not performed. 12119 12120Fixed a problem where the access type used in an AccessAs ASL 12121operator was not recorded correctly into the field object. 12122 12123Fixed a problem where ASL Event objects were created in a 12124signalled state. Events are now created in an unsignalled state. 12125 12126The internal object cache is now purged after table loading and 12127initialization to reduce the use of dynamic kernel memory -- on 12128the assumption that object use is greatest during the parse phase 12129of the entire table (versus the run-time use of individual control 12130methods.) 12131 12132ACPI 2.0 variable-length packages are now fully operational. 12133 12134Code and Data Size: Code and Data optimizations have permitted new 12135feature development with an actual reduction in the library size. 12136Current core subsystem library sizes are shown below. These are 12137the code and data sizes for the acpica.lib produced by the 12138Microsoft Visual C++ 6.0 compiler, and these values do not include 12139any ACPI driver or OSPM code. The debug version of the code 12140includes the debug output trace mechanism and has a larger code 12141and data size. Note that these values will vary depending on the 12142efficiency of the compiler and the compiler options used during 12143generation. 12144 12145 Previous Release (11_09_01): 12146 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 12147 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 12148 12149 Current Release: 12150 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 12151 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 12152 12153 2) Linux: 12154 12155Enhanced the ACPI boot-time initialization code to allow the use 12156of Local APIC tables for processor enumeration on IA-32, and to 12157pave the way for a fully MPS-free boot (on SMP systems) in the 12158near future. This functionality replaces 12159arch/i386/kernel/acpitables.c, which was introduced in an earlier 121602.4.15-preX release. To enable this feature you must add 12161"acpi_boot=on" to the kernel command line -- see the help entry 12162for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 12163the works... 12164 12165Restructured the configuration options to allow boot-time table 12166parsing support without inclusion of the ACPI Interpreter (and 12167other) code. 12168 12169NOTE: This release does not include fixes for the reported events, 12170power-down, and thermal passive cooling issues (coming soon). 12171 12172 3) ASL Compiler: 12173 12174Added additional typechecking for Fields within restricted access 12175Operation Regions. All fields within EC and CMOS regions must be 12176declared with ByteAcc. All fields withing SMBus regions must be 12177declared with the BufferAcc access type. 12178 12179Fixed a problem where the listing file output of control methods 12180no longer interleaved the actual AML code with the ASL source 12181code. 12182 12183 12184 12185 12186---------------------------------------- 12187Summary of changes for this label: 11_09_01 12188 121891) ACPI CA Core Subsystem: 12190 12191Implemented ACPI 2.0-defined support for writes to fields with a 12192Buffer, String, or Integer source operand that is smaller than the 12193target field. In these cases, the source operand is zero-extended 12194to fill the target field. 12195 12196Fixed a problem where a Field starting bit offset (within the 12197parent operation region) was calculated incorrectly if the 12198 12199alignment of the field differed from the access width. This 12200affected CreateWordField, CreateDwordField, CreateQwordField, and 12201possibly other fields that use the "AccessAny" keyword. 12202 12203Fixed a problem introduced in the 11_02_01 release where indirect 12204stores through method arguments did not operate correctly. 12205 122062) Linux: 12207 12208Implemented boot-time ACPI table parsing support 12209(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 12210facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 12211legacy BIOS interfaces (e.g. MPS) for the configuration of system 12212processors, memory, and interrupts during setup_arch(). Note that 12213this patch does not include the required architecture-specific 12214changes required to apply this information -- subsequent patches 12215will be posted for both IA32 and IA64 to achieve this. 12216 12217Added low-level sleep support for IA32 platforms, courtesy of Pat 12218Mochel. This allows IA32 systems to transition to/from various 12219sleeping states (e.g. S1, S3), although the lack of a centralized 12220driver model and power-manageable drivers will prevent its 12221(successful) use on most systems. 12222 12223Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 12224submenu, unified IA32 and IA64 options, added new "Boot using ACPI 12225tables" option, etc. 12226 12227Increased the default timeout for the EC driver from 1ms to 10ms 12228(1000 cycles of 10us) to try to address AE_TIME errors during EC 12229transactions. 12230 12231 ---------------------------------------- 12232Summary of changes for this label: 11_02_01 12233 122341) ACPI CA Core Subsystem: 12235 12236ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 12237(QWordAcc keyword). All ACPI 2.0 64-bit support is now 12238implemented. 12239 12240OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 12241changes to support ACPI 2.0 Qword field access. Read/Write 12242PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 12243accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 12244the value parameter for the address space handler interface is now 12245an ACPI_INTEGER. OSL implementations of these interfaces must now 12246handle the case where the Width parameter is 64. 12247 12248Index Fields: Fixed a problem where unaligned bit assembly and 12249disassembly for IndexFields was not supported correctly. 12250 12251Index and Bank Fields: Nested Index and Bank Fields are now 12252supported. During field access, a check is performed to ensure 12253that the value written to an Index or Bank register is not out of 12254the range of the register. The Index (or Bank) register is 12255written before each access to the field data. Future support will 12256include allowing individual IndexFields to be wider than the 12257DataRegister width. 12258 12259Fields: Fixed a problem where the AML interpreter was incorrectly 12260attempting to write beyond the end of a Field/OpRegion. This was 12261a boundary case that occurred when a DWORD field was written to a 12262BYTE access OpRegion, forcing multiple writes and causing the 12263interpreter to write one datum too many. 12264 12265Fields: Fixed a problem with Field/OpRegion access where the 12266starting bit address of a field was incorrectly calculated if the 12267current access type was wider than a byte (WordAcc, DwordAcc, or 12268QwordAcc). 12269 12270Fields: Fixed a problem where forward references to individual 12271FieldUnits (individual Field names within a Field definition) were 12272not resolved during the AML table load. 12273 12274Fields: Fixed a problem where forward references from a Field 12275definition to the parent Operation Region definition were not 12276resolved during the AML table load. 12277 12278Fields: Duplicate FieldUnit names within a scope are now detected 12279during AML table load. 12280 12281Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 12282returned an incorrect name for the root node. 12283 12284Code and Data Size: Code and Data optimizations have permitted new 12285feature development with an actual reduction in the library size. 12286Current core subsystem library sizes are shown below. These are 12287the code and data sizes for the acpica.lib produced by the 12288Microsoft Visual C++ 6.0 compiler, and these values do not include 12289any ACPI driver or OSPM code. The debug version of the code 12290includes the debug output trace mechanism and has a larger code 12291and data size. Note that these values will vary depending on the 12292efficiency of the compiler and the compiler options used during 12293generation. 12294 12295 Previous Release (10_18_01): 12296 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 12297 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 12298 12299 Current Release: 12300 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 12301 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 12302 12303 2) Linux: 12304 12305Improved /proc processor output (Pavel Machek) Re-added 12306MODULE_LICENSE("GPL") to all modules. 12307 12308 3) ASL Compiler version X2030: 12309 12310Duplicate FieldUnit names within a scope are now detected and 12311flagged as errors. 12312 12313 4) Documentation: 12314 12315Programmer Reference updated to reflect OSL and address space 12316handler interface changes described above. 12317 12318---------------------------------------- 12319Summary of changes for this label: 10_18_01 12320 12321ACPI CA Core Subsystem: 12322 12323Fixed a problem with the internal object reference count mechanism 12324that occasionally caused premature object deletion. This resolves 12325all of the outstanding problem reports where an object is deleted 12326in the middle of an interpreter evaluation. Although this problem 12327only showed up in rather obscure cases, the solution to the 12328problem involved an adjustment of all reference counts involving 12329objects attached to namespace nodes. 12330 12331Fixed a problem with Field support in the interpreter where 12332writing to an aligned field whose length is an exact multiple (2 12333or greater) of the field access granularity would cause an attempt 12334to write beyond the end of the field. 12335 12336The top level AML opcode execution functions within the 12337interpreter have been renamed with a more meaningful and 12338consistent naming convention. The modules exmonad.c and 12339exdyadic.c were eliminated. New modules are exoparg1.c, 12340exoparg2.c, exoparg3.c, and exoparg6.c. 12341 12342Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 12343 12344Fixed a problem where the AML debugger was causing some internal 12345objects to not be deleted during subsystem termination. 12346 12347Fixed a problem with the external AcpiEvaluateObject interface 12348where the subsystem would fault if the named object to be 12349evaluated refered to a constant such as Zero, Ones, etc. 12350 12351Fixed a problem with IndexFields and BankFields where the 12352subsystem would fault if the index, data, or bank registers were 12353not defined in the same scope as the field itself. 12354 12355Added printf format string checking for compilers that support 12356this feature. Corrected more than 50 instances of issues with 12357format specifiers within invocations of ACPI_DEBUG_PRINT 12358throughout the core subsystem code. 12359 12360The ASL "Revision" operator now returns the ACPI support level 12361implemented in the core - the value "2" since the ACPI 2.0 support 12362is more than 50% implemented. 12363 12364Enhanced the output of the AML debugger "dump namespace" command 12365to output in a more human-readable form. 12366 12367Current core subsystem library code sizes are shown below. These 12368 12369are the code and data sizes for the acpica.lib produced by the 12370Microsoft Visual C++ 6.0 compiler, and these values do not include 12371any ACPI driver or OSPM code. The debug version of the code 12372includes the full debug trace mechanism -- leading to a much 12373 12374larger code and data size. Note that these values will vary 12375depending on the efficiency of the compiler and the compiler 12376options used during generation. 12377 12378 Previous Label (09_20_01): 12379 Non-Debug Version: 65K Code, 5K Data, 70K Total 12380 Debug Version: 138K Code, 58K Data, 196K Total 12381 12382 This Label: 12383 12384 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 12385 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 12386 12387Linux: 12388 12389Implemented a "Bad BIOS Blacklist" to track machines that have 12390known ASL/AML problems. 12391 12392Enhanced the /proc interface for the thermal zone driver and added 12393support for _HOT (the critical suspend trip point). The 'info' 12394file now includes threshold/policy information, and allows setting 12395of _SCP (cooling preference) and _TZP (polling frequency) values 12396to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 12397frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 12398preference to the passive/quiet mode (if supported by the ASL). 12399 12400Implemented a workaround for a gcc bug that resuted in an OOPs 12401when loading the control method battery driver. 12402 12403 ---------------------------------------- 12404Summary of changes for this label: 09_20_01 12405 12406 ACPI CA Core Subsystem: 12407 12408The AcpiEnableEvent and AcpiDisableEvent interfaces have been 12409modified to allow individual GPE levels to be flagged as wake- 12410enabled (i.e., these GPEs are to remain enabled when the platform 12411sleeps.) 12412 12413The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 12414support wake-enabled GPEs. This means that upon entering the 12415sleep state, all GPEs that are not wake-enabled are disabled. 12416When leaving the sleep state, these GPEs are reenabled. 12417 12418A local double-precision divide/modulo module has been added to 12419enhance portability to OS kernels where a 64-bit math library is 12420not available. The new module is "utmath.c". 12421 12422Several optimizations have been made to reduce the use of CPU 12423stack. Originally over 2K, the maximum stack usage is now below 124242K at 1860 bytes (1.82k) 12425 12426Fixed a problem with the AcpiGetFirmwareTable interface where the 12427root table pointer was not mapped into a logical address properly. 12428 12429Fixed a problem where a NULL pointer was being dereferenced in the 12430interpreter code for the ASL Notify operator. 12431 12432Fixed a problem where the use of the ASL Revision operator 12433returned an error. This operator now returns the current version 12434of the ACPI CA core subsystem. 12435 12436Fixed a problem where objects passed as control method parameters 12437to AcpiEvaluateObject were always deleted at method termination. 12438However, these objects may end up being stored into the namespace 12439by the called method. The object reference count mechanism was 12440applied to these objects instead of a force delete. 12441 12442Fixed a problem where static strings or buffers (contained in the 12443AML code) that are declared as package elements within the ASL 12444code could cause a fault because the interpreter would attempt to 12445delete them. These objects are now marked with the "static 12446object" flag to prevent any attempt to delete them. 12447 12448Implemented an interpreter optimization to use operands directly 12449from the state object instead of extracting the operands to local 12450variables. This reduces stack use and code size, and improves 12451performance. 12452 12453The module exxface.c was eliminated as it was an unnecessary extra 12454layer of code. 12455 12456Current core subsystem library code sizes are shown below. These 12457are the code and data sizes for the acpica.lib produced by the 12458Microsoft Visual C++ 6.0 compiler, and these values do not include 12459any ACPI driver or OSPM code. The debug version of the code 12460includes the full debug trace mechanism -- leading to a much 12461larger code and data size. Note that these values will vary 12462depending on the efficiency of the compiler and the compiler 12463options used during generation. 12464 12465 Non-Debug Version: 65K Code, 5K Data, 70K Total 12466(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 12467Total (Previously 195K) 12468 12469Linux: 12470 12471Support for ACPI 2.0 64-bit integers has been added. All ACPI 12472Integer objects are now 64 bits wide 12473 12474All Acpi data types and structures are now in lower case. Only 12475Acpi macros are upper case for differentiation. 12476 12477 Documentation: 12478 12479Changes to the external interfaces as described above. 12480 12481 ---------------------------------------- 12482Summary of changes for this label: 08_31_01 12483 12484 ACPI CA Core Subsystem: 12485 12486A bug with interpreter implementation of the ASL Divide operator 12487was found and fixed. The implicit function return value (not the 12488explicit store operands) was returning the remainder instead of 12489the quotient. This was a longstanding bug and it fixes several 12490known outstanding issues on various platforms. 12491 12492The ACPI_DEBUG_PRINT and function trace entry/exit macros have 12493been further optimized for size. There are 700 invocations of the 12494DEBUG_PRINT macro alone, so each optimization reduces the size of 12495the debug version of the subsystem significantly. 12496 12497A stack trace mechanism has been implemented. The maximum stack 12498usage is about 2K on 32-bit platforms. The debugger command "stat 12499stack" will display the current maximum stack usage. 12500 12501All public symbols and global variables within the subsystem are 12502now prefixed with the string "Acpi". This keeps all of the 12503symbols grouped together in a kernel map, and avoids conflicts 12504with other kernel subsystems. 12505 12506Most of the internal fixed lookup tables have been moved into the 12507code segment via the const operator. 12508 12509Several enhancements have been made to the interpreter to both 12510reduce the code size and improve performance. 12511 12512Current core subsystem library code sizes are shown below. These 12513are the code and data sizes for the acpica.lib produced by the 12514Microsoft Visual C++ 6.0 compiler, and these values do not include 12515any ACPI driver or OSPM code. The debug version of the code 12516includes the full debug trace mechanism which contains over 700 12517invocations of the DEBUG_PRINT macro, 500 function entry macro 12518invocations, and over 900 function exit macro invocations -- 12519leading to a much larger code and data size. Note that these 12520values will vary depending on the efficiency of the compiler and 12521the compiler options used during generation. 12522 12523 Non-Debug Version: 64K Code, 5K Data, 69K Total 12524Debug Version: 137K Code, 58K Data, 195K Total 12525 12526 Linux: 12527 12528Implemented wbinvd() macro, pending a kernel-wide definition. 12529 12530Fixed /proc/acpi/event to handle poll() and short reads. 12531 12532 ASL Compiler, version X2026: 12533 12534Fixed a problem introduced in the previous label where the AML 12535 12536code emitted for package objects produced packages with zero 12537length. 12538 12539 ---------------------------------------- 12540Summary of changes for this label: 08_16_01 12541 12542ACPI CA Core Subsystem: 12543 12544The following ACPI 2.0 ASL operators have been implemented in the 12545AML interpreter (These are already supported by the Intel ASL 12546compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 12547ToBuffer. Support for 64-bit AML constants is implemented in the 12548AML parser, debugger, and disassembler. 12549 12550The internal memory tracking mechanism (leak detection code) has 12551been upgraded to reduce the memory overhead (a separate tracking 12552block is no longer allocated for each memory allocation), and now 12553supports all of the internal object caches. 12554 12555The data structures and code for the internal object caches have 12556been coelesced and optimized so that there is a single cache and 12557memory list data structure and a single group of functions that 12558implement generic cache management. This has reduced the code 12559size in both the debug and release versions of the subsystem. 12560 12561The DEBUG_PRINT macro(s) have been optimized for size and replaced 12562by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 12563different, because it generates a single call to an internal 12564function. This results in a savings of about 90 bytes per 12565invocation, resulting in an overall code and data savings of about 1256616% in the debug version of the subsystem. 12567 12568 Linux: 12569 12570Fixed C3 disk corruption problems and re-enabled C3 on supporting 12571machines. 12572 12573Integrated low-level sleep code by Patrick Mochel. 12574 12575Further tweaked source code Linuxization. 12576 12577Other minor fixes. 12578 12579 ASL Compiler: 12580 12581Support for ACPI 2.0 variable length packages is fixed/completed. 12582 12583Fixed a problem where the optional length parameter for the ACPI 125842.0 ToString operator. 12585 12586Fixed multiple extraneous error messages when a syntax error is 12587detected within the declaration line of a control method. 12588 12589 ---------------------------------------- 12590Summary of changes for this label: 07_17_01 12591 12592ACPI CA Core Subsystem: 12593 12594Added a new interface named AcpiGetFirmwareTable to obtain any 12595ACPI table via the ACPI signature. The interface can be called at 12596any time during kernel initialization, even before the kernel 12597virtual memory manager is initialized and paging is enabled. This 12598allows kernel subsystems to obtain ACPI tables very early, even 12599before the ACPI CA subsystem is initialized. 12600 12601Fixed a problem where Fields defined with the AnyAcc attribute 12602could be resolved to the incorrect address under the following 12603conditions: 1) the field width is larger than 8 bits and 2) the 12604parent operation region is not defined on a DWORD boundary. 12605 12606Fixed a problem where the interpreter is not being locked during 12607namespace initialization (during execution of the _INI control 12608methods), causing an error when an attempt is made to release it 12609later. 12610 12611ACPI 2.0 support in the AML Interpreter has begun and will be 12612ongoing throughout the rest of this year. In this label, The Mod 12613operator is implemented. 12614 12615Added a new data type to contain full PCI addresses named 12616ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 12617and Function values. 12618 12619 Linux: 12620 12621Enhanced the Linux version of the source code to change most 12622capitalized ACPI type names to lowercase. For example, all 12623instances of ACPI_STATUS are changed to acpi_status. This will 12624result in a large diff, but the change is strictly cosmetic and 12625aligns the CA code closer to the Linux coding standard. 12626 12627OSL Interfaces: 12628 12629The interfaces to the PCI configuration space have been changed to 12630add the PCI Segment number and to split the single 32-bit combined 12631DeviceFunction field into two 16-bit fields. This was 12632accomplished by moving the four values that define an address in 12633PCI configuration space (segment, bus, device, and function) to 12634the new ACPI_PCI_ID structure. 12635 12636The changes to the PCI configuration space interfaces led to a 12637reexamination of the complete set of address space access 12638interfaces for PCI, I/O, and Memory. The previously existing 18 12639interfaces have proven difficult to maintain (any small change 12640must be propagated across at least 6 interfaces) and do not easily 12641allow for future expansion to 64 bits if necessary. Also, on some 12642systems, it would not be appropriate to demultiplex the access 12643width (8, 16, 32,or 64) before calling the OSL if the 12644corresponding native OS interfaces contain a similar access width 12645parameter. For these reasons, the 18 address space interfaces 12646have been replaced by these 6 new ones: 12647 12648AcpiOsReadPciConfiguration 12649AcpiOsWritePciConfiguration 12650AcpiOsReadMemory 12651AcpiOsWriteMemory 12652AcpiOsReadPort 12653AcpiOsWritePort 12654 12655Added a new interface named AcpiOsGetRootPointer to allow the OSL 12656to perform the platform and/or OS-specific actions necessary to 12657obtain the ACPI RSDP table pointer. On IA-32 platforms, this 12658interface will simply call down to the CA core to perform the low- 12659memory search for the table. On IA-64, the RSDP is obtained from 12660EFI. Migrating this interface to the OSL allows the CA core to 12661 12662remain OS and platform independent. 12663 12664Added a new interface named AcpiOsSignal to provide a generic 12665"function code and pointer" interface for various miscellaneous 12666signals and notifications that must be made to the host OS. The 12667first such signals are intended to support the ASL Fatal and 12668Breakpoint operators. In the latter case, the AcpiOsBreakpoint 12669interface has been obsoleted. 12670 12671The definition of the AcpiFormatException interface has been 12672changed to simplify its use. The caller no longer must supply a 12673buffer to the call; A pointer to a const string is now returned 12674directly. This allows the call to be easily used in printf 12675statements, etc. since the caller does not have to manage a local 12676buffer. 12677 12678 12679 ASL Compiler, Version X2025: 12680 12681The ACPI 2.0 Switch/Case/Default operators have been implemented 12682and are fully functional. They will work with all ACPI 1.0 12683interpreters, since the operators are simply translated to If/Else 12684pairs. 12685 12686The ACPI 2.0 ElseIf operator is implemented and will also work 12687with 1.0 interpreters, for the same reason. 12688 12689Implemented support for ACPI 2.0 variable-length packages. These 12690packages have a separate opcode, and their size is determined by 12691the interpreter at run-time. 12692 12693Documentation The ACPI CA Programmer Reference has been updated to 12694reflect the new interfaces and changes to existing interfaces. 12695 12696 ------------------------------------------ 12697Summary of changes for this label: 06_15_01 12698 12699 ACPI CA Core Subsystem: 12700 12701Fixed a problem where a DWORD-accessed field within a Buffer 12702object would get its byte address inadvertently rounded down to 12703the nearest DWORD. Buffers are always Byte-accessible. 12704 12705 ASL Compiler, version X2024: 12706 12707Fixed a problem where the Switch() operator would either fault or 12708hang the compiler. Note however, that the AML code for this ACPI 127092.0 operator is not yet implemented. 12710 12711Compiler uses the new AcpiOsGetTimer interface to obtain compile 12712timings. 12713 12714Implementation of the CreateField operator automatically converts 12715a reference to a named field within a resource descriptor from a 12716byte offset to a bit offset if required. 12717 12718Added some missing named fields from the resource descriptor 12719support. These are the names that are automatically created by the 12720compiler to reference fields within a descriptor. They are only 12721valid at compile time and are not passed through to the AML 12722interpreter. 12723 12724Resource descriptor named fields are now typed as Integers and 12725subject to compile-time typechecking when used in expressions. 12726 12727 ------------------------------------------ 12728Summary of changes for this label: 05_18_01 12729 12730 ACPI CA Core Subsystem: 12731 12732Fixed a couple of problems in the Field support code where bits 12733from adjacent fields could be returned along with the proper field 12734bits. Restructured the field support code to improve performance, 12735readability and maintainability. 12736 12737New DEBUG_PRINTP macro automatically inserts the procedure name 12738into the output, saving hundreds of copies of procedure name 12739strings within the source, shrinking the memory footprint of the 12740debug version of the core subsystem. 12741 12742 Source Code Structure: 12743 12744The source code directory tree was restructured to reflect the 12745current organization of the component architecture. Some files 12746and directories have been moved and/or renamed. 12747 12748 Linux: 12749 12750Fixed leaking kacpidpc processes. 12751 12752Fixed queueing event data even when /proc/acpi/event is not 12753opened. 12754 12755 ASL Compiler, version X2020: 12756 12757Memory allocation performance enhancement - over 24X compile time 12758improvement on large ASL files. Parse nodes and namestring 12759buffers are now allocated from a large internal compiler buffer. 12760 12761The temporary .SRC file is deleted unless the "-s" option is 12762specified 12763 12764The "-d" debug output option now sends all output to the .DBG file 12765instead of the console. 12766 12767"External" second parameter is now optional 12768 12769"ElseIf" syntax now properly allows the predicate 12770 12771Last operand to "Load" now recognized as a Target operand 12772 12773Debug object can now be used anywhere as a normal object. 12774 12775ResourceTemplate now returns an object of type BUFFER 12776 12777EISAID now returns an object of type INTEGER 12778 12779"Index" now works with a STRING operand 12780 12781"LoadTable" now accepts optional parameters 12782 12783"ToString" length parameter is now optional 12784 12785"Interrupt (ResourceType," parse error fixed. 12786 12787"Register" with a user-defined region space parse error fixed 12788 12789Escaped backslash at the end of a string ("\\") scan/parse error 12790fixed 12791 12792"Revision" is now an object of type INTEGER. 12793 12794 12795 12796------------------------------------------ 12797Summary of changes for this label: 05_02_01 12798 12799Linux: 12800 12801/proc/acpi/event now blocks properly. 12802 12803Removed /proc/sys/acpi. You can still dump your DSDT from 12804/proc/acpi/dsdt. 12805 12806 ACPI CA Core Subsystem: 12807 12808Fixed a problem introduced in the previous label where some of the 12809"small" resource descriptor types were not recognized. 12810 12811Improved error messages for the case where an ASL Field is outside 12812the range of the parent operation region. 12813 12814 ASL Compiler, version X2018: 12815 12816 12817Added error detection for ASL Fields that extend beyond the length 12818of the parent operation region (only if the length of the region 12819is known at compile time.) This includes fields that have a 12820minimum access width that is smaller than the parent region, and 12821individual field units that are partially or entirely beyond the 12822extent of the parent. 12823 12824 12825 12826------------------------------------------ 12827Summary of changes for this label: 04_27_01 12828 12829 ACPI CA Core Subsystem: 12830 12831Fixed a problem where the namespace mutex could be released at the 12832wrong time during execution of AcpiRemoveAddressSpaceHandler. 12833 12834Added optional thread ID output for debug traces, to simplify 12835debugging of multiple threads. Added context switch notification 12836when the debug code realizes that a different thread is now 12837executing ACPI code. 12838 12839Some additional external data types have been prefixed with the 12840string "ACPI_" for consistency. This may effect existing code. 12841The data types affected are the external callback typedefs - e.g., 12842 12843WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 12844 12845 Linux: 12846 12847Fixed an issue with the OSL semaphore implementation where a 12848thread was waking up with an error from receiving a SIGCHLD 12849signal. 12850 12851Linux version of ACPI CA now uses the system C library for string 12852manipulation routines instead of a local implementation. 12853 12854Cleaned up comments and removed TBDs. 12855 12856 ASL Compiler, version X2017: 12857 12858Enhanced error detection and reporting for all file I/O 12859operations. 12860 12861 Documentation: 12862 12863Programmer Reference updated to version 1.06. 12864 12865 12866 12867------------------------------------------ 12868Summary of changes for this label: 04_13_01 12869 12870 ACPI CA Core Subsystem: 12871 12872Restructured support for BufferFields and RegionFields. 12873BankFields support is now fully operational. All known 32-bit 12874limitations on field sizes have been removed. Both BufferFields 12875and (Operation) RegionFields are now supported by the same field 12876management code. 12877 12878Resource support now supports QWORD address and IO resources. The 1287916/32/64 bit address structures and the Extended IRQ structure 12880have been changed to properly handle Source Resource strings. 12881 12882A ThreadId of -1 is now used to indicate a "mutex not acquired" 12883condition internally and must never be returned by AcpiOsThreadId. 12884This reserved value was changed from 0 since Unix systems allow a 12885thread ID of 0. 12886 12887Linux: 12888 12889Driver code reorganized to enhance portability 12890 12891Added a kernel configuration option to control ACPI_DEBUG 12892 12893Fixed the EC driver to honor _GLK. 12894 12895ASL Compiler, version X2016: 12896 12897Fixed support for the "FixedHw" keyword. Previously, the FixedHw 12898address space was set to 0, not 0x7f as it should be. 12899 12900 ------------------------------------------ 12901Summary of changes for this label: 03_13_01 12902 12903 ACPI CA Core Subsystem: 12904 12905During ACPI initialization, the _SB_._INI method is now run if 12906present. 12907 12908Notify handler fix - notifies are deferred until the parent method 12909completes execution. This fixes the "mutex already acquired" 12910issue seen occasionally. 12911 12912Part of the "implicit conversion" rules in ACPI 2.0 have been 12913found to cause compatibility problems with existing ASL/AML. The 12914convert "result-to-target-type" implementation has been removed 12915for stores to method Args and Locals. Source operand conversion 12916is still fully implemented. Possible changes to ACPI 2.0 12917specification pending. 12918 12919Fix to AcpiRsCalculatePciRoutingTableLength to return correct 12920length. 12921 12922Fix for compiler warnings for 64-bit compiles. 12923 12924 Linux: 12925 12926/proc output aligned for easier parsing. 12927 12928Release-version compile problem fixed. 12929 12930New kernel configuration options documented in Configure.help. 12931 12932IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 12933context" message. 12934 12935 OSPM: 12936 12937Power resource driver integrated with bus manager. 12938 12939Fixed kernel fault during active cooling for thermal zones. 12940 12941Source Code: 12942 12943The source code tree has been restructured. 12944 12945 12946 12947------------------------------------------ 12948Summary of changes for this label: 03_02_01 12949 12950 Linux OS Services Layer (OSL): 12951 12952Major revision of all Linux-specific code. 12953 12954Modularized all ACPI-specific drivers. 12955 12956Added new thermal zone and power resource drivers. 12957 12958Revamped /proc interface (new functionality is under /proc/acpi). 12959 12960New kernel configuration options. 12961 12962 Linux known issues: 12963 12964New kernel configuration options not documented in Configure.help 12965yet. 12966 12967 12968Module dependencies not currently implemented. If used, they 12969should be loaded in this order: busmgr, power, ec, system, 12970processor, battery, ac_adapter, button, thermal. 12971 12972Modules will not load if CONFIG_MODVERSION is set. 12973 12974IBM 600E - entering S5 may reboot instead of shutting down. 12975 12976IBM 600E - Sleep button may generate "Invalid <NULL> context" 12977message. 12978 12979Some systems may fail with "execution mutex already acquired" 12980message. 12981 12982 ACPI CA Core Subsystem: 12983 12984Added a new OSL Interface, AcpiOsGetThreadId. This was required 12985for the deadlock detection code. Defined to return a non-zero, 32- 12986bit thread ID for the currently executing thread. May be a non- 12987zero constant integer on single-thread systems. 12988 12989Implemented deadlock detection for internal subsystem mutexes. We 12990may add conditional compilation for this code (debug only) later. 12991 12992ASL/AML Mutex object semantics are now fully supported. This 12993includes multiple acquires/releases by owner and support for the 12994 12995Mutex SyncLevel parameter. 12996 12997A new "Force Release" mechanism automatically frees all ASL 12998Mutexes that have been acquired but not released when a thread 12999exits the interpreter. This forces conformance to the ACPI spec 13000("All mutexes must be released when an invocation exits") and 13001prevents deadlocked ASL threads. This mechanism can be expanded 13002(later) to monitor other resource acquisitions if OEM ASL code 13003continues to misbehave (which it will). 13004 13005Several new ACPI exception codes have been added for the Mutex 13006support. 13007 13008Recursive method calls are now allowed and supported (the ACPI 13009spec does in fact allow recursive method calls.) The number of 13010recursive calls is subject to the restrictions imposed by the 13011SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 13012parameter. 13013 13014Implemented support for the SyncLevel parameter for control 13015methods (ACPI 2.0 feature) 13016 13017Fixed a deadlock problem when multiple threads attempted to use 13018the interpreter. 13019 13020Fixed a problem where the string length of a String package 13021element was not always set in a package returned from 13022AcpiEvaluateObject. 13023 13024Fixed a problem where the length of a String package element was 13025not always included in the length of the overall package returned 13026from AcpiEvaluateObject. 13027 13028Added external interfaces (Acpi*) to the ACPI debug memory 13029manager. This manager keeps a list of all outstanding 13030allocations, and can therefore detect memory leaks and attempts to 13031free memory blocks more than once. Useful for code such as the 13032power manager, etc. May not be appropriate for device drivers. 13033Performance with the debug code enabled is slow. 13034 13035The ACPI Global Lock is now an optional hardware element. 13036 13037 ASL Compiler Version X2015: 13038 13039Integrated changes to allow the compiler to be generated on 13040multiple platforms. 13041 13042Linux makefile added to generate the compiler on Linux 13043 13044 Source Code: 13045 13046All platform-specific headers have been moved to their own 13047subdirectory, Include/Platform. 13048 13049New source file added, Interpreter/ammutex.c 13050 13051New header file, Include/acstruct.h 13052 13053 Documentation: 13054 13055The programmer reference has been updated for the following new 13056interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 13057 13058 ------------------------------------------ 13059Summary of changes for this label: 02_08_01 13060 13061Core ACPI CA Subsystem: Fixed a problem where an error was 13062incorrectly returned if the return resource buffer was larger than 13063the actual data (in the resource interfaces). 13064 13065References to named objects within packages are resolved to the 13066 13067full pathname string before packages are returned directly (via 13068the AcpiEvaluateObject interface) or indirectly via the resource 13069interfaces. 13070 13071Linux OS Services Layer (OSL): 13072 13073Improved /proc battery interface. 13074 13075 13076Added C-state debugging output and other miscellaneous fixes. 13077 13078ASL Compiler Version X2014: 13079 13080All defined method arguments can now be used as local variables, 13081including the ones that are not actually passed in as parameters. 13082The compiler tracks initialization of the arguments and issues an 13083exception if they are used without prior assignment (just like 13084locals). 13085 13086The -o option now specifies a filename prefix that is used for all 13087output files, including the AML output file. Otherwise, the 13088default behavior is as follows: 1) the AML goes to the file 13089specified in the DSDT. 2) all other output files use the input 13090source filename as the base. 13091 13092 ------------------------------------------ 13093Summary of changes for this label: 01_25_01 13094 13095Core ACPI CA Subsystem: Restructured the implementation of object 13096store support within the interpreter. This includes support for 13097the Store operator as well as any ASL operators that include a 13098target operand. 13099 13100Partially implemented support for Implicit Result-to-Target 13101conversion. This is when a result object is converted on the fly 13102to the type of an existing target object. Completion of this 13103support is pending further analysis of the ACPI specification 13104concerning this matter. 13105 13106CPU-specific code has been removed from the subsystem (hardware 13107directory). 13108 13109New Power Management Timer functions added 13110 13111Linux OS Services Layer (OSL): Moved system state transition code 13112to the core, fixed it, and modified Linux OSL accordingly. 13113 13114Fixed C2 and C3 latency calculations. 13115 13116 13117We no longer use the compilation date for the version message on 13118initialization, but retrieve the version from AcpiGetSystemInfo(). 13119 13120Incorporated for fix Sony VAIO machines. 13121 13122Documentation: The Programmer Reference has been updated and 13123reformatted. 13124 13125 13126ASL Compiler: Version X2013: Fixed a problem where the line 13127numbering and error reporting could get out of sync in the 13128presence of multiple include files. 13129 13130 ------------------------------------------ 13131Summary of changes for this label: 01_15_01 13132 13133Core ACPI CA Subsystem: 13134 13135Implemented support for type conversions in the execution of the 13136ASL Concatenate operator (The second operand is converted to 13137match the type of the first operand before concatenation.) 13138 13139Support for implicit source operand conversion is partially 13140implemented. The ASL source operand types Integer, Buffer, and 13141String are freely interchangeable for most ASL operators and are 13142converted by the interpreter on the fly as required. Implicit 13143Target operand conversion (where the result is converted to the 13144target type before storing) is not yet implemented. 13145 13146Support for 32-bit and 64-bit BCD integers is implemented. 13147 13148Problem fixed where a field read on an aligned field could cause a 13149read past the end of the field. 13150 13151New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 13152does not return a value, but the caller expects one. (The ASL 13153compiler flags this as a warning.) 13154 13155ASL Compiler: 13156 13157Version X2011: 131581. Static typechecking of all operands is implemented. This 13159prevents the use of invalid objects (such as using a Package where 13160an Integer is required) at compile time instead of at interpreter 13161run-time. 131622. The ASL source line is printed with ALL errors and warnings. 131633. Bug fix for source EOF without final linefeed. 131644. Debug option is split into a parse trace and a namespace trace. 131655. Namespace output option (-n) includes initial values for 13166integers and strings. 131676. Parse-only option added for quick syntax checking. 131687. Compiler checks for duplicate ACPI name declarations 13169 13170Version X2012: 131711. Relaxed typechecking to allow interchangeability between 13172strings, integers, and buffers. These types are now converted by 13173the interpreter at runtime. 131742. Compiler reports time taken by each internal subsystem in the 13175debug output file. 13176 13177 13178 ------------------------------------------ 13179Summary of changes for this label: 12_14_00 13180 13181ASL Compiler: 13182 13183This is the first official release of the compiler. Since the 13184compiler requires elements of the Core Subsystem, this label 13185synchronizes everything. 13186 13187------------------------------------------ 13188Summary of changes for this label: 12_08_00 13189 13190 13191Fixed a problem where named references within the ASL definition 13192of both OperationRegions and CreateXXXFields did not work 13193properly. The symptom was an AE_AML_OPERAND_TYPE during 13194initialization of the region/field. This is similar (but not 13195related internally) to the problem that was fixed in the last 13196label. 13197 13198Implemented both 32-bit and 64-bit support for the BCD ASL 13199functions ToBCD and FromBCD. 13200 13201Updated all legal headers to include "2000" in the copyright 13202years. 13203 13204 ------------------------------------------ 13205Summary of changes for this label: 12_01_00 13206 13207Fixed a problem where method invocations within the ASL definition 13208of both OperationRegions and CreateXXXFields did not work 13209properly. The symptom was an AE_AML_OPERAND_TYPE during 13210initialization of the region/field: 13211 13212 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 13213[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 13214(0x3005) 13215 13216Fixed a problem where operators with more than one nested 13217subexpression would fail. The symptoms were varied, by mostly 13218AE_AML_OPERAND_TYPE errors. This was actually a rather serious 13219problem that has gone unnoticed until now. 13220 13221 Subtract (Add (1,2), Multiply (3,4)) 13222 13223Fixed a problem where AcpiGetHandle didn't quite get fixed in the 13224previous build (The prefix part of a relative path was handled 13225incorrectly). 13226 13227Fixed a problem where Operation Region initialization failed if 13228the operation region name was a "namepath" instead of a simple 13229"nameseg". Symptom was an AE_NO_OPERAND error. 13230 13231Fixed a problem where an assignment to a local variable via the 13232indirect RefOf mechanism only worked for the first such 13233assignment. Subsequent assignments were ignored. 13234 13235 ------------------------------------------ 13236Summary of changes for this label: 11_15_00 13237 13238ACPI 2.0 table support with backwards support for ACPI 1.0 and the 132390.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 13240the AML interpreter does NOT have support for the new 2.0 ASL 13241grammar terms at this time. 13242 13243All ACPI hardware access is via the GAS structures in the ACPI 2.0 13244FADT. 13245 13246All physical memory addresses across all platforms are now 64 bits 13247wide. Logical address width remains dependent on the platform 13248(i.e., "void *"). 13249 13250AcpiOsMapMemory interface changed to a 64-bit physical address. 13251 13252The AML interpreter integer size is now 64 bits, as per the ACPI 132532.0 specification. 13254 13255For backwards compatibility with ACPI 1.0, ACPI tables with a 13256revision number less than 2 use 32-bit integers only. 13257 13258Fixed a problem where the evaluation of OpRegion operands did not 13259always resolve them to numbers properly. 13260 13261------------------------------------------ 13262Summary of changes for this label: 10_20_00 13263 13264Fix for CBN_._STA issue. This fix will allow correct access to 13265CBN_ OpRegions when the _STA returns 0x8. 13266 13267Support to convert ACPI constants (Ones, Zeros, One) to actual 13268values before a package object is returned 13269 13270Fix for method call as predicate to if/while construct causing 13271incorrect if/while behavior 13272 13273Fix for Else block package lengths sometimes calculated wrong (if 13274block > 63 bytes) 13275 13276Fix for Processor object length field, was always zero 13277 13278Table load abort if FACP sanity check fails 13279 13280Fix for problem with Scope(name) if name already exists 13281 13282Warning emitted if a named object referenced cannot be found 13283(resolved) during method execution. 13284 13285 13286 13287 13288 13289------------------------------------------ 13290Summary of changes for this label: 9_29_00 13291 13292New table initialization interfaces: AcpiInitializeSubsystem no 13293longer has any parameters AcpiFindRootPointer - Find the RSDP (if 13294necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 13295>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 13296AcpiLoadTables 13297 13298Note: These interface changes require changes to all existing OSDs 13299 13300The PCI_Config default address space handler is always installed 13301at the root namespace object. 13302 13303------------------------------------------- 13304Summary of changes for this label: 09_15_00 13305 13306The new initialization architecture is implemented. New 13307interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 13308AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 13309 13310(Namespace is automatically loaded when a table is loaded) 13311 13312The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1331352 bytes to 32 bytes. There is usually one of these for every 13314namespace object, so the memory savings is significant. 13315 13316Implemented just-in-time evaluation of the CreateField operators. 13317 13318Bug fixes for IA-64 support have been integrated. 13319 13320Additional code review comments have been implemented 13321 13322The so-called "third pass parse" has been replaced by a final walk 13323through the namespace to initialize all operation regions (address 13324spaces) and fields that have not yet been initialized during the 13325execution of the various _INI and REG methods. 13326 13327New file - namespace/nsinit.c 13328 13329------------------------------------------- 13330Summary of changes for this label: 09_01_00 13331 13332Namespace manager data structures have been reworked to change the 13333primary object from a table to a single object. This has 13334resulted in dynamic memory savings of 3X within the namespace and 133352X overall in the ACPI CA subsystem. 13336 13337Fixed problem where the call to AcpiEvFindPciRootBuses was 13338inadvertently left commented out. 13339 13340Reduced the warning count when generating the source with the GCC 13341compiler. 13342 13343Revision numbers added to each module header showing the 13344SourceSafe version of the file. Please refer to this version 13345number when giving us feedback or comments on individual modules. 13346 13347The main object types within the subsystem have been renamed to 13348clarify their purpose: 13349 13350ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 13351ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 13352ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 13353 13354NOTE: no changes to the initialization sequence are included in 13355this label. 13356 13357------------------------------------------- 13358Summary of changes for this label: 08_23_00 13359 13360Fixed problem where TerminateControlMethod was being called 13361multiple times per method 13362 13363Fixed debugger problem where single stepping caused a semaphore to 13364be oversignalled 13365 13366Improved performance through additional parse object caching - 13367added ACPI_EXTENDED_OP type 13368 13369------------------------------------------- 13370Summary of changes for this label: 08_10_00 13371 13372Parser/Interpreter integration: Eliminated the creation of 13373complete parse trees for ACPI tables and control methods. 13374Instead, parse subtrees are created and then deleted as soon as 13375they are processed (Either entered into the namespace or executed 13376by the interpreter). This reduces the use of dynamic kernel 13377memory significantly. (about 10X) 13378 13379Exception codes broken into classes and renumbered. Be sure to 13380recompile all code that includes acexcep.h. Hopefully we won't 13381have to renumber the codes again now that they are split into 13382classes (environment, programmer, AML code, ACPI table, and 13383internal). 13384 13385Fixed some additional alignment issues in the Resource Manager 13386subcomponent 13387 13388Implemented semaphore tracking in the AcpiExec utility, and fixed 13389several places where mutexes/semaphores were being unlocked 13390without a corresponding lock operation. There are no known 13391semaphore or mutex "leaks" at this time. 13392 13393Fixed the case where an ASL Return operator is used to return an 13394unnamed package. 13395 13396------------------------------------------- 13397Summary of changes for this label: 07_28_00 13398 13399Fixed a problem with the way addresses were calculated in 13400AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 13401manifested itself when a Field was created with WordAccess or 13402DwordAccess, but the field unit defined within the Field was less 13403 13404than a Word or Dword. 13405 13406Fixed a problem in AmlDumpOperands() module's loop to pull 13407operands off of the operand stack to display information. The 13408problem manifested itself as a TLB error on 64-bit systems when 13409accessing an operand stack with two or more operands. 13410 13411Fixed a problem with the PCI configuration space handlers where 13412context was getting confused between accesses. This required a 13413change to the generic address space handler and address space 13414setup definitions. Handlers now get both a global handler context 13415(this is the one passed in by the user when executing 13416AcpiInstallAddressSpaceHandler() and a specific region context 13417that is unique to each region (For example, the _ADR, _SEG and 13418_BBN values associated with a specific region). The generic 13419function definitions have changed to the following: 13420 13421typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 13422UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 13423*HandlerContext, // This used to be void *Context void 13424*RegionContext); // This is an additional parameter 13425 13426typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 13427RegionHandle, UINT32 Function, void *HandlerContext, void 13428**RegionContext); // This used to be **ReturnContext 13429 13430------------------------------------------- 13431Summary of changes for this label: 07_21_00 13432 13433Major file consolidation and rename. All files within the 13434interpreter have been renamed as well as most header files. This 13435was done to prevent collisions with existing files in the host 13436OSs -- filenames such as "config.h" and "global.h" seem to be 13437quite common. The VC project files have been updated. All 13438makefiles will require modification. 13439 13440The parser/interpreter integration continues in Phase 5 with the 13441implementation of a complete 2-pass parse (the AML is parsed 13442twice) for each table; This avoids the construction of a huge 13443parse tree and therefore reduces the amount of dynamic memory 13444required by the subsystem. Greater use of the parse object cache 13445means that performance is unaffected. 13446 13447Many comments from the two code reviews have been rolled in. 13448 13449The 64-bit alignment support is complete. 13450 13451------------------------------------------- 13452Summary of changes for this label: 06_30_00 13453 13454With a nod and a tip of the hat to the technology of yesteryear, 13455we've added support in the source code for 80 column output 13456devices. The code is now mostly constrained to 80 columns or 13457less to support environments and editors that 1) cannot display 13458or print more than 80 characters on a single line, and 2) cannot 13459disable line wrapping. 13460 13461A major restructuring of the namespace data structure has been 13462completed. The result is 1) cleaner and more 13463understandable/maintainable code, and 2) a significant reduction 13464in the dynamic memory requirement for each named ACPI object 13465(almost half). 13466 13467------------------------------------------- 13468Summary of changes for this label: 06_23_00 13469 13470Linux support has been added. In order to obtain approval to get 13471the ACPI CA subsystem into the Linux kernel, we've had to make 13472quite a few changes to the base subsystem that will affect all 13473users (all the changes are generic and OS- independent). The 13474effects of these global changes have been somewhat far reaching. 13475Files have been merged and/or renamed and interfaces have been 13476renamed. The major changes are described below. 13477 13478Osd* interfaces renamed to AcpiOs* to eliminate namespace 13479pollution/confusion within our target kernels. All OSD 13480interfaces must be modified to match the new naming convention. 13481 13482Files merged across the subsystem. A number of the smaller source 13483and header files have been merged to reduce the file count and 13484increase the density of the existing files. There are too many 13485to list here. In general, makefiles that call out individual 13486files will require rebuilding. 13487 13488Interpreter files renamed. All interpreter files now have the 13489prefix am* instead of ie* and is*. 13490 13491Header files renamed: The acapi.h file is now acpixf.h. The 13492acpiosd.h file is now acpiosxf.h. We are removing references to 13493the acronym "API" since it is somewhat windowsy. The new name is 13494"external interface" or xface or xf in the filenames.j 13495 13496 13497All manifest constants have been forced to upper case (some were 13498mixed case.) Also, the string "ACPI_" has been prepended to many 13499(not all) of the constants, typedefs, and structs. 13500 13501The globals "DebugLevel" and "DebugLayer" have been renamed 13502"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 13503 13504All other globals within the subsystem are now prefixed with 13505"AcpiGbl_" Internal procedures within the subsystem are now 13506prefixed with "Acpi" (with only a few exceptions). The original 13507two-letter abbreviation for the subcomponent remains after "Acpi" 13508- for example, CmCallocate became AcpiCmCallocate. 13509 13510Added a source code translation/conversion utility. Used to 13511generate the Linux source code, it can be modified to generate 13512other types of source as well. Can also be used to cleanup 13513existing source by removing extraneous spaces and blank lines. 13514Found in tools/acpisrc/* 13515 13516OsdUnMapMemory was renamed to OsdUnmapMemory and then 13517AcpiOsUnmapMemory. (UnMap became Unmap). 13518 13519A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 13520When set to one, this indicates that the caller wants to use the 13521 13522semaphore as a mutex, not a counting semaphore. ACPI CA uses 13523both types. However, implementers of this call may want to use 13524different OS primitives depending on the type of semaphore 13525requested. For example, some operating systems provide separate 13526 13527"mutex" and "semaphore" interfaces - where the mutex interface is 13528much faster because it doesn't have all the overhead of a full 13529semaphore implementation. 13530 13531Fixed a deadlock problem where a method that accesses the PCI 13532address space can block forever if it is the first access to the 13533space. 13534 13535------------------------------------------- 13536Summary of changes for this label: 06_02_00 13537 13538Support for environments that cannot handle unaligned data 13539accesses (e.g. firmware and OS environments devoid of alignment 13540handler technology namely SAL/EFI and the IA-64 Linux kernel) has 13541been added (via configurable macros) in these three areas: - 13542Transfer of data from the raw AML byte stream is done via byte 13543moves instead of word/dword/qword moves. - External objects are 13544aligned within the user buffer, including package elements (sub- 13545objects). - Conversion of name strings to UINT32 Acpi Names is now 13546done byte-wise. 13547 13548The Store operator was modified to mimic Microsoft's 13549implementation when storing to a Buffer Field. 13550 13551Added a check of the BM_STS bit before entering C3. 13552 13553The methods subdirectory has been obsoleted and removed. A new 13554file, cmeval.c subsumes the functionality. 13555 13556A 16-bit (DOS) version of AcpiExec has been developed. The 13557makefile is under the acpiexec directory. 13558