1---------------------------------------- 227 June 2014. Summary of changes for version 20140627: 3 41) ACPICA kernel-resident subsystem: 5 6Formatted Output: Implemented local versions of standard formatted output 7utilities such as printf, etc. Over time, it has been discovered that 8there are in fact many portability issues with printf, and the addition 9of this feature will fix/prevent these issues once and for all. Some 10known issues are summarized below: 11 121) Output of 64-bit values is not portable. For example, UINT64 is %ull 13for the Linux kernel and is %uI64 for some MSVC versions. 142) Invoking printf consistently in a manner that is portable across both 1532-bit and 64-bit platforms is difficult at best in many situations. 163) The output format for pointers varies from system to system (leading 17zeros especially), and leads to inconsistent output from ACPICA across 18platforms. 194) Certain platform-specific printf formats may conflict with ACPICA use. 205) If there is no local C library available, ACPICA now has local support 21for printf. 22 23-- To address these printf issues in a complete manner, ACPICA now 24directly implements a small subset of printf format specifiers, only 25those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 26 27Implemented support for ACPICA generation within the EFI environment. 28Initially, the AcpiDump utility is supported in the UEFI shell 29environment. Lv Zheng. 30 31Added a new external interface, AcpiLogError, to improve ACPICA 32portability. This allows the host to redirect error messages from the 33ACPICA utilities. Lv Zheng. 34 35Added and deployed new OSL file I/O interfaces to improve ACPICA 36portability: 37 AcpiOsOpenFile 38 AcpiOsCloseFile 39 AcpiOsReadFile 40 AcpiOsWriteFile 41 AcpiOsGetFileOffset 42 AcpiOsSetFileOffset 43There are C library implementations of these functions in the new file 44service_layers/oslibcfs.c -- however, the functions can be implemented by 45the local host in any way necessary. Lv Zheng. 46 47Implemented a mechanism to disable/enable ACPI table checksum validation 48at runtime. This can be useful when loading tables very early during OS 49initialization when it may not be possible to map the entire table in 50order to compute the checksum. Lv Zheng. 51 52Fixed a buffer allocation issue for the Generic Serial Bus support. 53Originally, a fixed buffer length was used. This change allows for 54variable-length buffers based upon the protocol indicated by the field 55access attributes. Reported by Lan Tianyu. Lv Zheng. 56 57Fixed a problem where an object detached from a namespace node was not 58properly terminated/cleared and could cause a circular list problem if 59reattached. ACPICA BZ 1063. David Box. 60 61Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 62 63Fixed a possible memory leak in an error return path within the function 64AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 65 66Example Code and Data Size: These are the sizes for the OS-independent 67acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 68debug version of the code includes the debug output trace mechanism and 69has a much larger code and data size. 70 71 Current Release: 72 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 73 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 74 Previous Release: 75 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 76 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 77 78 792) iASL Compiler/Disassembler and Tools: 80 81Disassembler: Add dump of ASCII equivalent text within a comment at the 82end of each line of the output for the Buffer() ASL operator. 83 84AcpiDump: Miscellaneous changes: 85 Fixed repetitive table dump in -n mode. 86 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 87the ACPI 2.0 GUID fails. 88 89iASL: Fixed a problem where the compiler could fault if incorrectly given 90an acpidump output file as input. ACPICA BZ 1088. David Box. 91 92AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 93they are invoked without any arguments. 94 95Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 961086. Colin Ian King. 97 98Disassembler: Cleaned up a block of code that extracts a parent Op 99object. Added a comment that explains that the parent is guaranteed to be 100valid in this case. ACPICA BZ 1069. 101 102---------------------------------------- 10324 April 2014. Summary of changes for version 20140424: 104 1051) ACPICA kernel-resident subsystem: 106 107Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 108Some of these tables are known to contain a trailing NULL entry. Lv 109Zheng. 110 111Removed an extraneous error message for the case where there are a large 112number of system GPEs (> 124). This was the "32-bit FADT register is too 113long to convert to GAS struct" message, which is irrelevant for GPEs 114since the GPEx_BLK_LEN fields of the FADT are always used instead of the 115(limited capacity) GAS bit length. Also, several changes to ensure proper 116support for GPE numbers > 255, where some "GPE number" fields were 8-bits 117internally. 118 119Implemented and deployed additional configuration support for the public 120ACPICA external interfaces. Entire classes of interfaces can now be 121easily modified or configured out, replaced by stubbed inline functions 122by default. Lv Zheng. 123 124Moved all public ACPICA runtime configuration globals to the public 125ACPICA external interface file for convenience. Also, removed some 126obsolete/unused globals. See the file acpixf.h. Lv Zheng. 127 128Documentation: Added a new section to the ACPICA reference describing the 129maximum number of GPEs that can be supported by the FADT-defined GPEs in 130block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 131reference. 132 133Example Code and Data Size: These are the sizes for the OS-independent 134acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 135debug version of the code includes the debug output trace mechanism and 136has a much larger code and data size. 137 138 Current Release: 139 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 140 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 141 Previous Release: 142 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 143 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 144 145 1462) iASL Compiler/Disassembler and Tools: 147 148iASL and disassembler: Add full support for the LPIT table (Low Power 149Idle Table). Includes support in the disassembler, data table compiler, 150and template generator. 151 152AcpiDump utility: 1531) Add option to force the use of the RSDT (over the XSDT). 1542) Improve validation of the RSDP signature (use 8 chars instead of 4). 155 156iASL: Add check for predefined packages that are too large. For 157predefined names that contain subpackages, check if each subpackage is 158too large. (Check for too small already exists.) 159 160Debugger: Updated the GPE command (which simulates a GPE by executing the 161GPE code paths in ACPICA). The GPE device is now optional, and defaults 162to the GPE 0/1 FADT-defined blocks. 163 164Unix application OSL: Update line-editing support. Add additional error 165checking and take care not to reset terminal attributes on exit if they 166were never set. This should help guarantee that the terminal is always 167left in the previous state on program exit. 168 169---------------------------------------- 17025 March 2014. Summary of changes for version 20140325: 171 1721) ACPICA kernel-resident subsystem: 173 174Updated the auto-serialize feature for control methods. This feature 175automatically serializes all methods that create named objects in order 176to prevent runtime errors. The update adds support to ignore the 177currently executing AML SyncLevel when invoking such a method, in order 178to prevent disruption of any existing SyncLevel priorities that may exist 179in the AML code. Although the use of SyncLevels is relatively rare, this 180change fixes a regression where an AE_AML_MUTEX_ORDER exception can 181appear on some machines starting with the 20140214 release. 182 183Added a new external interface to allow the host to install ACPI tables 184very early, before the namespace is even created. AcpiInstallTable gives 185the host additional flexibility for ACPI table management. Tables can be 186installed directly by the host as if they had originally appeared in the 187XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 188(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 189with additional internal restructuring and cleanup. See the ACPICA 190Reference for interface details. Lv Zheng. 191 192Added validation of the checksum for all incoming dynamically loaded 193tables (via external interfaces or via AML Load/LoadTable operators). Lv 194Zheng. 195 196Updated the use of the AcpiOsWaitEventsComplete interface during Notify 197and GPE handler removal. Restructured calls to eliminate possible race 198conditions. Lv Zheng. 199 200Added a warning for the use/execution of the ASL/AML Unload (table) 201operator. This will help detect and identify machines that use this 202operator if and when it is ever used. This operator has never been seen 203in the field and the usage model and possible side-effects of the drastic 204runtime action of a full table removal are unknown. 205 206Reverted the use of #pragma push/pop which was introduced in the 20140214 207release. It appears that push and pop are not implemented by enough 208compilers to make the use of this feature feasible for ACPICA at this 209time. However, these operators may be deployed in a future ACPICA 210release. 211 212Added the missing EXPORT_SYMBOL macros for the install and remove SCI 213handler interfaces. 214 215Source code generation: 2161) Disabled the use of the "strchr" macro for the gcc-specific 217generation. For some versions of gcc, this macro can periodically expose 218a compiler bug which in turn causes compile-time error(s). 2192) Added support for PPC64 compilation. Colin Ian King. 220 221Example Code and Data Size: These are the sizes for the OS-independent 222acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 223debug version of the code includes the debug output trace mechanism and 224has a much larger code and data size. 225 226 Current Release: 227 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 228 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 229 Previous Release: 230 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 231 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 232 233 2342) iASL Compiler/Disassembler and Tools: 235 236Disassembler: Added several new features to improve the readability of 237the resulting ASL code. Extra information is emitted within comment 238fields in the ASL code: 2391) Known _HID/_CID values are decoded to descriptive text. 2402) Standard values for the Notify() operator are decoded to descriptive 241text. 2423) Target operands are expanded to full pathnames (in a comment) when 243possible. 244 245Disassembler: Miscellaneous updates for extern() handling: 2461) Abort compiler if file specified by -fe option does not exist. 2472) Silence unnecessary warnings about argument count mismatches. 2483) Update warning messages concerning unresolved method externals. 2494) Emit "UnknownObj" keyword for externals whose type cannot be 250determined. 251 252AcpiHelp utility: 2531) Added the -a option to display both the ASL syntax and the AML 254encoding for an input ASL operator. This effectively displays all known 255information about an ASL operator with one AcpiHelp invocation. 2562) Added substring match support (similar to a wildcard) for the -i 257(_HID/PNP IDs) option. 258 259iASL/Disassembler: Since this tool does not yet support execution on big- 260endian machines, added detection of endianness and an error message if 261execution is attempted on big-endian. Support for big-endian within iASL 262is a feature that is on the ACPICA to-be-done list. 263 264AcpiBin utility: 2651) Remove option to extract binary files from an acpidump; this function 266is made obsolete by the AcpiXtract utility. 2672) General cleanup of open files and allocated buffers. 268 269---------------------------------------- 27014 February 2014. Summary of changes for version 20140214: 271 2721) ACPICA kernel-resident subsystem: 273 274Implemented a new mechanism to proactively prevent problems with ill- 275behaved reentrant control methods that create named ACPI objects. This 276behavior is illegal as per the ACPI specification, but is nonetheless 277frequently seen in the field. Previously, this could lead to an 278AE_ALREADY_EXISTS exception if the method was actually entered by more 279than one thread. This new mechanism detects such methods at table load 280time and marks them "serialized" to prevent reentrancy. A new global 281option, AcpiGbl_AutoSerializeMethods, has been added to disable this 282feature if desired. This mechanism and global option obsoletes and 283supersedes the previous AcpiGbl_SerializeAllMethods option. 284 285Added the "Windows 2013" string to the _OSI support. ACPICA will now 286respond TRUE to _OSI queries with this string. It is the stated policy of 287ACPICA to add new strings to the _OSI support as soon as possible after 288they are defined. See the full ACPICA _OSI policy which has been added to 289the utilities/utosi.c file. 290 291Hardened/updated the _PRT return value auto-repair code: 2921) Do not abort the repair on a single subpackage failure, continue to 293check all subpackages. 2942) Add check for the minimum subpackage length (4). 2953) Properly handle extraneous NULL package elements. 296 297Added support to avoid the possibility of infinite loops when traversing 298object linked lists. Never allow an infinite loop, even in the face of 299corrupted object lists. 300 301ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 302pack(pop) directives to ensure that the ACPICA headers are independent of 303compiler settings or other host headers. 304 305Example Code and Data Size: These are the sizes for the OS-independent 306acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 307debug version of the code includes the debug output trace mechanism and 308has a much larger code and data size. 309 310 Current Release: 311 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 312 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 313 Previous Release: 314 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 315 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 316 317 3182) iASL Compiler/Disassembler and Tools: 319 320iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 321first reserved field was incorrectly forced to have a value of zero. This 322change correctly forces the field to have a value of one. ACPICA BZ 1081. 323 324Debugger: Added missing support for the "Extra" and "Data" subobjects 325when displaying object data. 326 327Debugger: Added support to display entire object linked lists when 328displaying object data. 329 330iASL: Removed the obsolete -g option to obtain ACPI tables from the 331Windows registry. This feature has been superseded by the acpidump 332utility. 333 334---------------------------------------- 33514 January 2014. Summary of changes for version 20140114: 336 3371) ACPICA kernel-resident subsystem: 338 339Updated all ACPICA copyrights and signons to 2014. Added the 2014 340copyright to all module headers and signons, including the standard Linux 341header. This affects virtually every file in the ACPICA core subsystem, 342iASL compiler, all ACPICA utilities, and the test suites. 343 344Improved parameter validation for AcpiInstallGpeBlock. Added the 345following checks: 3461) The incoming device handle refers to type ACPI_TYPE_DEVICE. 3472) There is not already a GPE block attached to the device. 348Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 349device. 350 351Correctly support "references" in the ACPI_OBJECT. This change fixes the 352support to allow references (namespace nodes) to be passed as arguments 353to control methods via the evaluate object interface. This is probably 354most useful for testing purposes, however. 355 356Improved support for 32/64 bit physical addresses in printf()-like 357output. This change improves the support for physical addresses in printf 358debug statements and other output on both 32-bit and 64-bit hosts. It 359consistently outputs the appropriate number of bytes for each host. The 360%p specifier is unsatisfactory since it does not emit uniform output on 361all hosts/clib implementations (on some, leading zeros are not supported, 362leading to difficult-to-read output). 363 364Example Code and Data Size: These are the sizes for the OS-independent 365acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 366debug version of the code includes the debug output trace mechanism and 367has a much larger code and data size. 368 369 Current Release: 370 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 371 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 372 Previous Release: 373 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 374 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 375 376 3772) iASL Compiler/Disassembler and Tools: 378 379iASL: Fix a possible fault when using the Connection() operator. Fixes a 380problem if the parent Field definition for the Connection operator refers 381to an operation region that does not exist. ACPICA BZ 1064. 382 383AcpiExec: Load of local test tables is now optional. The utility has the 384capability to load some various tables to test features of ACPICA. 385However, there are enough of them that the output of the utility became 386confusing. With this change, only the required local tables are displayed 387(RSDP, XSDT, etc.) along with the actual tables loaded via the command 388line specification. This makes the default output simler and easier to 389understand. The -el command line option restores the original behavior 390for testing purposes. 391 392AcpiExec: Added support for overlapping operation regions. This change 393expands the simulation of operation regions by supporting regions that 394overlap within the given address space. Supports SystemMemory and 395SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 396 397AcpiExec: Added region handler support for PCI_Config and EC spaces. This 398allows AcpiExec to simulate these address spaces, similar to the current 399support for SystemMemory and SystemIO. 400 401Debugger: Added new command to read/write/compare all namespace objects. 402The command "test objects" will exercise the entire namespace by writing 403new values to each data object, and ensuring that the write was 404successful. The original value is then restored and verified. 405 406Debugger: Added the "test predefined" command. This change makes this 407test public and puts it under the new "test" command. The test executes 408each and every predefined name within the current namespace. 409 410---------------------------------------- 41118 December 2013. Summary of changes for version 20131218: 412 413Global note: The ACPI 5.0A specification was released this month. There 414are no changes needed for ACPICA since this release of ACPI is an 415errata/clarification release. The specification is available at 416acpi.info. 417 418 4191) ACPICA kernel-resident subsystem: 420 421Added validation of the XSDT root table if it is present. Some older 422platforms contain an XSDT that is ill-formed or otherwise invalid (such 423as containing some or all entries that are NULL pointers). This change 424adds a new function to validate the XSDT before actually using it. If the 425XSDT is found to be invalid, ACPICA will now automatically fall back to 426using the RSDT instead. Original implementation by Zhao Yakui. Ported to 427ACPICA and enhanced by Lv Zheng and Bob Moore. 428 429Added a runtime option to ignore the XSDT and force the use of the RSDT. 430This change adds a runtime option that will force ACPICA to use the RSDT 431instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 432requires that an XSDT be used instead of the RSDT, the XSDT has been 433found to be corrupt or ill-formed on some machines. Lv Zheng. 434 435Added a runtime option to favor 32-bit FADT register addresses over the 43664-bit addresses. This change adds an option to favor 32-bit FADT 437addresses when there is a conflict between the 32-bit and 64-bit versions 438of the same register. The default behavior is to use the 64-bit version 439in accordance with the ACPI specification. This can now be overridden via 440the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 441 442During the change above, the internal "Convert FADT" and "Verify FADT" 443functions have been merged to simplify the code, making it easier to 444understand and maintain. ACPICA BZ 933. 445 446Improve exception reporting and handling for GPE block installation. 447Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 448status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 449 450Added helper macros to extract bus/segment numbers from the HEST table. 451This change adds two macros to extract the encoded bus and segment 452numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 453Betty Dall <betty.dall@hp.com> 454 455Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 456by ACPICA. It is not a public macro, so it should have no effect on 457existing OSV code. Lv Zheng. 458 459Example Code and Data Size: These are the sizes for the OS-independent 460acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 461debug version of the code includes the debug output trace mechanism and 462has a much larger code and data size. 463 464 Current Release: 465 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 466 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 467 Previous Release: 468 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 469 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 470 471 4722) iASL Compiler/Disassembler and Tools: 473 474Disassembler: Improved pathname support for emitted External() 475statements. This change adds full pathname support for external names 476that have been resolved internally by the inclusion of additional ACPI 477tables (via the iASL -e option). Without this change, the disassembler 478can emit multiple externals for the same object, or it become confused 479when the Scope() operator is used on an external object. Overall, greatly 480improves the ability to actually recompile the emitted ASL code when 481objects a referenced across multiple ACPI tables. Reported by Michael 482Tsirkin (mst@redhat.com). 483 484Tests/ASLTS: Updated functional control suite to execute with no errors. 485David Box. Fixed several errors related to the testing of the interpreter 486slack mode. Lv Zheng. 487 488iASL: Added support to detect names that are declared within a control 489method, but are unused (these are temporary names that are only valid 490during the time the method is executing). A remark is issued for these 491cases. ACPICA BZ 1022. 492 493iASL: Added full support for the DBG2 table. Adds full disassembler, 494table compiler, and template generator support for the DBG2 table (Debug 495Port 2 table). 496 497iASL: Added full support for the PCCT table, update the table definition. 498Updates the PCCT table definition in the actbl3.h header and adds table 499compiler and template generator support. 500 501iASL: Added an option to emit only error messages (no warnings/remarks). 502The -ve option will enable only error messages, warnings and remarks are 503suppressed. This can simplify debugging when only the errors are 504important, such as when an ACPI table is disassembled and there are many 505warnings and remarks -- but only the actual errors are of real interest. 506 507Example ACPICA code (source/tools/examples): Updated the example code so 508that it builds to an actual working program, not just example code. Added 509ACPI tables and execution of an example control method in the DSDT. Added 510makefile support for Unix generation. 511 512---------------------------------------- 51315 November 2013. Summary of changes for version 20131115: 514 515This release is available at https://acpica.org/downloads 516 517 5181) ACPICA kernel-resident subsystem: 519 520Resource Manager: Fixed loop termination for the "get AML length" 521function. The loop previously had an error termination on a NULL resource 522pointer, which can never happen since the loop simply increments a valid 523resource pointer. This fix changes the loop to terminate with an error on 524an invalid end-of-buffer condition. The problem can be seen as an 525infinite loop by callers to AcpiSetCurrentResources with an invalid or 526corrupted resource descriptor, or a resource descriptor that is missing 527an END_TAG descriptor. Reported by Dan Carpenter 528<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 529 530Table unload and ACPICA termination: Delete all attached data objects 531during namespace node deletion. This fix updates namespace node deletion 532to delete the entire list of attached objects (attached via 533AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 5341024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 535 536ACPICA termination: Added support to delete all objects attached to the 537root namespace node. This fix deletes any and all objects that have been 538attached to the root node via AcpiAttachData. Previously, none of these 539objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 540 541Debug output: Do not emit the function nesting level for the in-kernel 542build. The nesting level is really only useful during a single-thread 543execution. Therefore, only enable this output for the AcpiExec utility. 544Also, only emit the thread ID when executing under AcpiExec (Context 545switches are still always detected and a message is emitted). ACPICA BZ 546972. 547 548Example Code and Data Size: These are the sizes for the OS-independent 549acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 550debug version of the code includes the debug output trace mechanism and 551has a much larger code and data size. 552 553 Current Release: 554 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 555 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 556 Previous Release: 557 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 558 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 559 560 5612) iASL Compiler/Disassembler and Tools: 562 563AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 564correct portable POSIX header for terminal control functions. 565 566Disassembler: Fixed control method invocation issues related to the use 567of the CondRefOf() operator. The problem is seen in the disassembly where 568control method invocations may not be disassembled properly if the 569control method name has been used previously as an argument to CondRefOf. 570The solution is to not attempt to emit an external declaration for the 571CondRefOf target (it is not necessary in the first place). This prevents 572disassembler object type confusion. ACPICA BZ 988. 573 574Unix Makefiles: Added an option to disable compiler optimizations and the 575_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 576with optimizations (reportedly, gcc 4.4 for example). This change adds a 577command line option for make (NOOPT) that disables all compiler 578optimizations and the _FORTIFY_SOURCE compiler flag. The default 579optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 5801034. Lv Zheng, Bob Moore. 581 582Tests/ASLTS: Added options to specify individual test cases and modes. 583This allows testers running aslts.sh to optionally specify individual 584test modes and test cases. Also added an option to disable the forced 585generation of the ACPICA tools from source if desired. Lv Zheng. 586 587---------------------------------------- 58827 September 2013. Summary of changes for version 20130927: 589 590This release is available at https://acpica.org/downloads 591 592 5931) ACPICA kernel-resident subsystem: 594 595Fixed a problem with store operations to reference objects. This change 596fixes a problem where a Store operation to an ArgX object that contained 597a 598reference to a field object did not complete the automatic dereference 599and 600then write to the actual field object. Instead, the object type of the 601field object was inadvertently changed to match the type of the source 602operand. The new behavior will actually write to the field object (buffer 603field or field unit), thus matching the correct ACPI-defined behavior. 604 605Implemented support to allow the host to redefine individual OSL 606prototypes. This change enables the host to redefine OSL prototypes found 607in the acpiosxf.h file. This allows the host to implement OSL interfaces 608with a macro or inlined function. Further, it allows the host to add any 609additional required modifiers such as __iomem, __init, __exit, etc., as 610necessary on a per-interface basis. Enables maximum flexibility for the 611OSL interfaces. Lv Zheng. 612 613Hardcoded the access width for the FADT-defined reset register. The ACPI 614specification requires the reset register width to be 8 bits. ACPICA now 615hardcodes the width to 8 and ignores the FADT width value. This provides 616compatibility with other ACPI implementations that have allowed BIOS code 617with bad register width values to go unnoticed. Matthew Garett, Bob 618Moore, 619Lv Zheng. 620 621Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 622used 623in the OSL header (acpiosxf). The change modifies the position of this 624macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 625build issues if the OSL defines the implementation of the interface to be 626an inline stub function. Lv Zheng. 627 628Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 629initialization interfaces. This change adds a new macro for the main init 630and terminate external interfaces in order to support hosts that require 631additional or different processing for these functions. Changed from 632ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 633Zheng, Bob Moore. 634 635Cleaned up the memory allocation macros for configurability. In the 636common 637case, the ACPI_ALLOCATE and related macros now resolve directly to their 638respective AcpiOs* OSL interfaces. Two options: 6391) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 640default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 6412) For AcpiExec (and for debugging), the macros can optionally be 642resolved 643to the local ACPICA interfaces that track each allocation (local tracking 644is used to immediately detect memory leaks). 645Lv Zheng. 646 647Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 648to predefine this macro to either TRUE or FALSE during the system build. 649 650Replaced __FUNCTION_ with __func__ in the gcc-specific header. 651 652Example Code and Data Size: These are the sizes for the OS-independent 653acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 654debug version of the code includes the debug output trace mechanism and 655has a much larger code and data size. 656 657 Current Release: 658 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 659 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 660 Previous Release: 661 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 662 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 663 664 6652) iASL Compiler/Disassembler and Tools: 666 667iASL: Implemented wildcard support for the -e option. This simplifies use 668when there are many SSDTs that must be included to resolve external 669method 670declarations. ACPICA BZ 1041. Example: 671 iasl -e ssdt*.dat -d dsdt.dat 672 673AcpiExec: Add history/line-editing for Unix/Linux systems. This change 674adds a portable module that implements full history and limited line 675editing for Unix and Linux systems. It does not use readline() due to 676portability issues. Instead it uses the POSIX termio interface to put the 677terminal in raw input mode so that the various special keys can be 678trapped 679(such as up/down-arrow for history support and left/right-arrow for line 680editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 681 682AcpiXtract: Add support to handle (ignore) "empty" lines containing only 683one or more spaces. This provides compatible with early or different 684versions of the AcpiDump utility. ACPICA BZ 1044. 685 686AcpiDump: Do not ignore tables that contain only an ACPI table header. 687Apparently, some BIOSs create SSDTs that contain an ACPI table header but 688no other data. This change adds support to dump these tables. Any tables 689shorter than the length of an ACPI table header remain in error (an error 690message is emitted). Reported by Yi Li. 691 692Debugger: Echo actual command along with the "unknown command" message. 693 694---------------------------------------- 69523 August 2013. Summary of changes for version 20130823: 696 6971) ACPICA kernel-resident subsystem: 698 699Implemented support for host-installed System Control Interrupt (SCI) 700handlers. Certain ACPI functionality requires the host to handle raw 701SCIs. For example, the "SCI Doorbell" that is defined for memory power 702state support requires the host device driver to handle SCIs to examine 703if the doorbell has been activated. Multiple SCI handlers can be 704installed to allow for future expansion. New external interfaces are 705AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 706details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 707 708Operation region support: Never locally free the handler "context" 709pointer. This change removes some dangerous code that attempts to free 710the handler context pointer in some (rare) circumstances. The owner of 711the handler owns this pointer and the ACPICA code should never touch it. 712Although not seen to be an issue in any kernel, it did show up as a 713problem (fault) under AcpiExec. Also, set the internal storage field for 714the context pointer to zero when the region is deactivated, simply for 715sanity. David Box. ACPICA BZ 1039. 716 717AcpiRead: On error, do not modify the return value target location. If an 718error happens in the middle of a split 32/32 64-bit I/O operation, do not 719modify the target of the return value pointer. Makes the code consistent 720with the rest of ACPICA. Bjorn Helgaas. 721 722Example Code and Data Size: These are the sizes for the OS-independent 723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 724debug version of the code includes the debug output trace mechanism and 725has a much larger code and data size. 726 727 Current Release: 728 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 729 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 730 Previous Release: 731 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 732 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 733 734 7352) iASL Compiler/Disassembler and Tools: 736 737AcpiDump: Implemented several new features and fixed some problems: 7381) Added support to dump the RSDP, RSDT, and XSDT tables. 7392) Added support for multiple table instances (SSDT, UEFI). 7403) Added option to dump "customized" (overridden) tables (-c). 7414) Fixed a problem where some table filenames were improperly 742constructed. 7435) Improved some error messages, removed some unnecessary messages. 744 745iASL: Implemented additional support for disassembly of ACPI tables that 746contain invocations of external control methods. The -fe<file> option 747allows the import of a file that specifies the external methods along 748with the required number of arguments for each -- allowing for the 749correct disassembly of the table. This is a workaround for a limitation 750of AML code where the disassembler often cannot determine the number of 751arguments required for an external control method and generates incorrect 752ASL code. See the iASL reference for details. ACPICA BZ 1030. 753 754Debugger: Implemented a new command (paths) that displays the full 755pathnames (namepaths) and object types of all objects in the namespace. 756This is an alternative to the namespace command. 757 758Debugger: Implemented a new command (sci) that invokes the SCI dispatch 759mechanism and any installed handlers. 760 761iASL: Fixed a possible segfault for "too many parent prefixes" condition. 762This can occur if there are too many parent prefixes in a namepath (for 763example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 764 765Application OSLs: Set the return value for the PCI read functions. These 766functions simply return AE_OK, but should set the return value to zero 767also. This change implements this. ACPICA BZ 1038. 768 769Debugger: Prevent possible command line buffer overflow. Increase the 770size of a couple of the debugger line buffers, and ensure that overflow 771cannot happen. ACPICA BZ 1037. 772 773iASL: Changed to abort immediately on serious errors during the parsing 774phase. Due to the nature of ASL, there is no point in attempting to 775compile these types of errors, and they typically end up causing a 776cascade of hundreds of errors which obscure the original problem. 777 778---------------------------------------- 77925 July 2013. Summary of changes for version 20130725: 780 7811) ACPICA kernel-resident subsystem: 782 783Fixed a problem with the DerefOf operator where references to FieldUnits 784and BufferFields incorrectly returned the parent object, not the actual 785value of the object. After this change, a dereference of a FieldUnit 786reference results in a read operation on the field to get the value, and 787likewise, the appropriate BufferField value is extracted from the target 788buffer. 789 790Fixed a problem where the _WAK method could cause a fault under these 791circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 792method returned no value. The problem is rarely seen because most kernels 793run ACPICA in slack mode. 794 795For the DerefOf operator, a fatal error now results if an attempt is made 796to dereference a reference (created by the Index operator) to a NULL 797package element. Provides compatibility with other ACPI implementations, 798and this behavior will be added to a future version of the ACPI 799specification. 800 801The ACPI Power Management Timer (defined in the FADT) is now optional. 802This provides compatibility with other ACPI implementations and will 803appear in the next version of the ACPI specification. If there is no PM 804Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 805zero in the FADT indicates no PM timer. 806 807Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 808allows the host to globally enable/disable all vendor strings, all 809feature strings, or both. Intended to be primarily used for debugging 810purposes only. Lv Zheng. 811 812Expose the collected _OSI data to the host via a global variable. This 813data tracks the highest level vendor ID that has been invoked by the BIOS 814so that the host (and potentially ACPICA itself) can change behaviors 815based upon the age of the BIOS. 816 817Example Code and Data Size: These are the sizes for the OS-independent 818acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 819debug version of the code includes the debug output trace mechanism and 820has a much larger code and data size. 821 822 Current Release: 823 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 824 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 825 Previous Release: 826 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 827 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 828 829 8302) iASL Compiler/Disassembler and Tools: 831 832iASL: Created the following enhancements for the -so option (create 833offset table): 8341)Add offsets for the last nameseg in each namepath for every supported 835object type 8362)Add support for Processor, Device, Thermal Zone, and Scope objects 8373)Add the actual AML opcode for the parent object of every supported 838object type 8394)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 840 841Disassembler: Emit all unresolved external symbols in a single block. 842These are external references to control methods that could not be 843resolved, and thus, the disassembler had to make a guess at the number of 844arguments to parse. 845 846iASL: The argument to the -T option (create table template) is now 847optional. If not specified, the default table is a DSDT, typically the 848most common case. 849 850---------------------------------------- 85126 June 2013. Summary of changes for version 20130626: 852 8531) ACPICA kernel-resident subsystem: 854 855Fixed an issue with runtime repair of the _CST object. Null or invalid 856elements were not always removed properly. Lv Zheng. 857 858Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 859FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 860the maximum number of GPEs is 1016. Use of multiple GPE block devices 861makes the system-wide number of GPEs essentially unlimited. 862 863Example Code and Data Size: These are the sizes for the OS-independent 864acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 865debug version of the code includes the debug output trace mechanism and 866has a much larger code and data size. 867 868 Current Release: 869 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 870 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 871 Previous Release: 872 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 873 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 874 875 8762) iASL Compiler/Disassembler and Tools: 877 878Portable AcpiDump: Implemented full support for the Linux and FreeBSD 879hosts. Now supports Linux, FreeBSD, and Windows. 880 881Disassembler: Added some missing types for the HEST and EINJ tables: "Set 882Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 883 884iASL/Preprocessor: Implemented full support for nested 885#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 886 887Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 888max. The original purpose of this constraint was to limit the amount of 889debug output. However, the string function in question (UtPrintString) is 890now used for the disassembler also, where 256 bytes is insufficient. 891Reported by RehabMan@GitHub. 892 893iASL/DataTables: Fixed some problems and issues with compilation of DMAR 894tables. ACPICA BZ 999. Lv Zheng. 895 896iASL: Fixed a couple of error exit issues that could result in a "Could 897not delete <file>" message during ASL compilation. 898 899AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 900the actual signatures for these tables are "FACP" and "APIC", 901respectively. 902 903AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 904tables are allowed to have multiple instances. 905 906---------------------------------------- 90717 May 2013. Summary of changes for version 20130517: 908 9091) ACPICA kernel-resident subsystem: 910 911Fixed a regression introduced in version 20130328 for _INI methods. This 912change fixes a problem introduced in 20130328 where _INI methods are no 913longer executed properly because of a memory block that was not 914initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 915<tomasz.nowicki@linaro.org>. 916 917Fixed a possible problem with the new extended sleep registers in the 918ACPI 9195.0 FADT. Do not use these registers (even if populated) unless the HW- 920reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 9211020. Lv Zheng. 922 923Implemented return value repair code for _CST predefined objects: Sort 924the 925list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 926 927Implemented a debug-only option to disable loading of SSDTs from the 928RSDT/XSDT during ACPICA initialization. This can be useful for debugging 929ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 930acglobal.h - ACPICA BZ 1005. Lv Zheng. 931 932Fixed some issues in the ACPICA initialization and termination code: 933Tomasz Nowicki <tomasz.nowicki@linaro.org> 9341) Clear events initialized flag upon event component termination. ACPICA 935BZ 1013. 9362) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 9373) Delete global lock pending lock during termination. ACPICA BZ 1012. 9384) Clear debug buffer global on termination to prevent possible multiple 939delete. ACPICA BZ 1010. 940 941Standardized all switch() blocks across the entire source base. After 942many 943years, different formatting for switch() had crept in. This change makes 944the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 945 946Split some files to enhance ACPICA modularity and configurability: 9471) Split buffer dump routines into utilities/utbuffer.c 9482) Split internal error message routines into utilities/uterror.c 9493) Split table print utilities into tables/tbprint.c 9504) Split iASL command-line option processing into asloptions.c 951 952Makefile enhancements: 9531) Support for all new files above. 9542) Abort make on errors from any subcomponent. Chao Guan. 9553) Add build support for Apple Mac OS X. Liang Qi. 956 957Example Code and Data Size: These are the sizes for the OS-independent 958acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 959debug version of the code includes the debug output trace mechanism and 960has a much larger code and data size. 961 962 Current Release: 963 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 964 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 965 Previous Release: 966 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 967 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 968 969 9702) iASL Compiler/Disassembler and Tools: 971 972New utility: Implemented an easily portable version of the acpidump 973utility to extract ACPI tables from the system (or a file) in an ASCII 974hex 975dump format. The top-level code implements the various command line 976options, file I/O, and table dump routines. To port to a new host, only 977three functions need to be implemented to get tables -- since this 978functionality is OS-dependent. See the tools/acpidump/apmain.c module and 979the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 9801) The Windows version obtains the ACPI tables from the Registry. 9812) The Linux version is under development. 9823) Other hosts - If an OS-dependent module is submitted, it will be 983distributed with ACPICA. 984 985iASL: Fixed a regression for -D preprocessor option (define symbol). A 986restructuring/change to the initialization sequence caused this option to 987no longer work properly. 988 989iASL: Implemented a mechanism to disable specific warnings and remarks. 990Adds a new command line option, "-vw <messageid> as well as "#pragma 991disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 992 993iASL: Fix for too-strict package object validation. The package object 994validation for return values from the predefined names is a bit too 995strict, it does not allow names references within the package (which will 996be resolved at runtime.) These types of references cannot be validated at 997compile time. This change ignores named references within package objects 998for names that return or define static packages. 999 1000Debugger: Fixed the 80-character command line limitation for the History 1001command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 1002 1003iASL: Added control method and package support for the -so option 1004(generates AML offset table for BIOS support.) 1005 1006iASL: issue a remark if a non-serialized method creates named objects. If 1007a thread blocks within the method for any reason, and another thread 1008enters the method, the method will fail because an attempt will be made 1009to 1010create the same (named) object twice. In this case, issue a remark that 1011the method should be marked serialized. NOTE: may become a warning later. 1012ACPICA BZ 909. 1013 1014---------------------------------------- 101518 April 2013. Summary of changes for version 20130418: 1016 10171) ACPICA kernel-resident subsystem: 1018 1019Fixed a possible buffer overrun during some rare but specific field unit 1020read operations. This overrun can only happen if the DSDT version is 1 -- 1021meaning that all AML integers are 32 bits -- and the field length is 1022between 33 and 55 bits long. During the read, an internal buffer object 1023is 1024created for the field unit because the field is larger than an integer 1025(32 1026bits). However, in this case, the buffer will be incorrectly written 1027beyond the end because the buffer length is less than the internal 1028minimum 1029of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 1030long, but a full 8 bytes will be written. 1031 1032Updated the Embedded Controller "orphan" _REG method support. This refers 1033to _REG methods under the EC device that have no corresponding operation 1034region. This is allowed by the ACPI specification. This update removes a 1035dependency on the existence an ECDT table. It will execute an orphan _REG 1036method as long as the operation region handler for the EC is installed at 1037the EC device node and not the namespace root. Rui Zhang (original 1038update), Bob Moore (update/integrate). 1039 1040Implemented run-time argument typechecking for all predefined ACPI names 1041(_STA, _BIF, etc.) This change performs object typechecking on all 1042incoming arguments for all predefined names executed via 1043AcpiEvaluateObject. This ensures that ACPI-related device drivers are 1044passing correct object types as well as the correct number of arguments 1045(therefore identifying any issues immediately). Also, the ASL/namespace 1046definition of the predefined name is checked against the ACPI 1047specification for the proper argument count. Adds one new file, 1048nsarguments.c 1049 1050Changed an exception code for the ASL UnLoad() operator. Changed the 1051exception code for the case where the input DdbHandle is invalid, from 1052AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 1053 1054Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 1055global makefile. The use of this flag causes compiler errors on earlier 1056versions of GCC, so it has been removed for compatibility. 1057 1058Miscellaneous cleanup: 10591) Removed some unused/obsolete macros 10602) Fixed a possible memory leak in the _OSI support 10613) Removed an unused variable in the predefined name support 10624) Windows OSL: remove obsolete reference to a memory list field 1063 1064Example Code and Data Size: These are the sizes for the OS-independent 1065acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1066debug version of the code includes the debug output trace mechanism and 1067has a much larger code and data size. 1068 1069 Current Release: 1070 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1071 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1072 Previous Release: 1073 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1074 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1075 1076 10772) iASL Compiler/Disassembler and Tools: 1078 1079AcpiExec: Added installation of a handler for the SystemCMOS address 1080space. This prevents control method abort if a method accesses this 1081space. 1082 1083AcpiExec: Added support for multiple EC devices, and now install EC 1084operation region handler(s) at the actual EC device instead of the 1085namespace root. This reflects the typical behavior of host operating 1086systems. 1087 1088AcpiExec: Updated to ensure that all operation region handlers are 1089installed before the _REG methods are executed. This prevents a _REG 1090method from aborting if it accesses an address space has no handler. 1091AcpiExec installs a handler for every possible address space. 1092 1093Debugger: Enhanced the "handlers" command to display non-root handlers. 1094This change enhances the handlers command to display handlers associated 1095with individual devices throughout the namespace, in addition to the 1096currently supported display of handlers associated with the root 1097namespace 1098node. 1099 1100ASL Test Suite: Several test suite errors have been identified and 1101resolved, reducing the total error count during execution. Chao Guan. 1102 1103---------------------------------------- 110428 March 2013. Summary of changes for version 20130328: 1105 11061) ACPICA kernel-resident subsystem: 1107 1108Fixed several possible race conditions with the internal object reference 1109counting mechanism. Some of the external ACPICA interfaces update object 1110reference counts without holding the interpreter or namespace lock. This 1111change adds a spinlock to protect reference count updates on the internal 1112ACPICA objects. Reported by and with assistance from Andriy Gapon 1113(avg@FreeBSD.org). 1114 1115FADT support: Removed an extraneous warning for very large GPE register 1116sets. This change removes a size mismatch warning if the legacy length 1117field for a GPE register set is larger than the 64-bit GAS structure can 1118accommodate. GPE register sets can be larger than the 255-bit width 1119limitation of the GAS structure. Linn Crosetto (linn@hp.com). 1120 1121_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 1122return from this interface. Handles a possible timeout case if 1123ACPI_WAIT_FOREVER is modified by the host to be a value less than 1124"forever". Jung-uk Kim. 1125 1126Predefined name support: Add allowed/required argument type information 1127to 1128the master predefined info table. This change adds the infrastructure to 1129enable typechecking on incoming arguments for all predefined 1130methods/objects. It does not actually contain the code that will fully 1131utilize this information, this is still under development. Also condenses 1132some duplicate code for the predefined names into a new module, 1133utilities/utpredef.c 1134 1135Example Code and Data Size: These are the sizes for the OS-independent 1136acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1137debug version of the code includes the debug output trace mechanism and 1138has a much larger code and data size. 1139 1140 Previous Release: 1141 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1142 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1143 Current Release: 1144 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1145 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1146 1147 11482) iASL Compiler/Disassembler and Tools: 1149 1150iASL: Implemented a new option to simplify the development of ACPI- 1151related 1152BIOS code. Adds support for a new "offset table" output file. The -so 1153option will create a C table containing the AML table offsets of various 1154named objects in the namespace so that BIOS code can modify them easily 1155at 1156boot time. This can simplify BIOS runtime code by eliminating expensive 1157searches for "magic values", enhancing boot times and adding greater 1158reliability. With assistance from Lee Hamel. 1159 1160iASL: Allow additional predefined names to return zero-length packages. 1161Now, all predefined names that are defined by the ACPI specification to 1162return a "variable-length package of packages" are allowed to return a 1163zero length top-level package. This allows the BIOS to tell the host that 1164the requested feature is not supported, and supports existing BIOS/ASL 1165code and practices. 1166 1167iASL: Changed the "result not used" warning to an error. This is the case 1168where an ASL operator is effectively a NOOP because the result of the 1169operation is not stored anywhere. For example: 1170 Add (4, Local0) 1171There is no target (missing 3rd argument), nor is the function return 1172value used. This is potentially a very serious problem -- since the code 1173was probably intended to do something, but for whatever reason, the value 1174was not stored. Therefore, this issue has been upgraded from a warning to 1175an error. 1176 1177AcpiHelp: Added allowable/required argument types to the predefined names 1178info display. This feature utilizes the recent update to the predefined 1179names table (above). 1180 1181---------------------------------------- 118214 February 2013. Summary of changes for version 20130214: 1183 11841) ACPICA Kernel-resident Subsystem: 1185 1186Fixed a possible regression on some hosts: Reinstated the safe return 1187macros (return_ACPI_STATUS, etc.) that ensure that the argument is 1188evaluated only once. Although these macros are not needed for the ACPICA 1189code itself, they are often used by ACPI-related host device drivers 1190where 1191the safe feature may be necessary. 1192 1193Fixed several issues related to the ACPI 5.0 reduced hardware support 1194(SOC): Now ensure that if the platform declares itself as hardware- 1195reduced 1196via the FADT, the following functions become NOOPs (and always return 1197AE_OK) because ACPI is always enabled by definition on these machines: 1198 AcpiEnable 1199 AcpiDisable 1200 AcpiHwGetMode 1201 AcpiHwSetMode 1202 1203Dynamic Object Repair: Implemented additional runtime repairs for 1204predefined name return values. Both of these repairs can simplify code in 1205the related device drivers that invoke these methods: 12061) For the _STR and _MLS names, automatically repair/convert an ASCII 1207string to a Unicode buffer. 12082) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 1209a 1210lone end tag descriptor in the following cases: A Return(0) was executed, 1211a null buffer was returned, or no object at all was returned (non-slack 1212mode only). Adds a new file, nsconvert.c 1213ACPICA BZ 998. Bob Moore, Lv Zheng. 1214 1215Resource Manager: Added additional code to prevent possible infinite 1216loops 1217while traversing corrupted or ill-formed resource template buffers. Check 1218for zero-length resource descriptors in all code that loops through 1219resource templates (the length field is used to index through the 1220template). This change also hardens the external AcpiWalkResources and 1221AcpiWalkResourceBuffer interfaces. 1222 1223Local Cache Manager: Enhanced the main data structure to eliminate an 1224unnecessary mechanism to access the next object in the list. Actually 1225provides a small performance enhancement for hosts that use the local 1226ACPICA cache manager. Jung-uk Kim. 1227 1228Example Code and Data Size: These are the sizes for the OS-independent 1229acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1230debug version of the code includes the debug output trace mechanism and 1231has a much larger code and data size. 1232 1233 Previous Release: 1234 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1235 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1236 Current Release: 1237 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1238 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1239 1240 12412) iASL Compiler/Disassembler and Tools: 1242 1243iASL/Disassembler: Fixed several issues with the definition of the ACPI 12445.0 RASF table (RAS Feature Table). This change incorporates late changes 1245that were made to the ACPI 5.0 specification. 1246 1247iASL/Disassembler: Added full support for the following new ACPI tables: 1248 1) The MTMR table (MID Timer Table) 1249 2) The VRTC table (Virtual Real Time Clock Table). 1250Includes header file, disassembler, table compiler, and template support 1251for both tables. 1252 1253iASL: Implemented compile-time validation of package objects returned by 1254predefined names. This new feature validates static package objects 1255returned by the various predefined names defined to return packages. Both 1256object types and package lengths are validated, for both parent packages 1257and sub-packages, if any. The code is similar in structure and behavior 1258to 1259the runtime repair mechanism within the AML interpreter and uses the 1260existing predefined name information table. Adds a new file, aslprepkg.c. 1261ACPICA BZ 938. 1262 1263iASL: Implemented auto-detection of binary ACPI tables for disassembly. 1264This feature detects a binary file with a valid ACPI table header and 1265invokes the disassembler automatically. Eliminates the need to 1266specifically invoke the disassembler with the -d option. ACPICA BZ 862. 1267 1268iASL/Disassembler: Added several warnings for the case where there are 1269unresolved control methods during the disassembly. This can potentially 1270cause errors when the output file is compiled, because the disassembler 1271assumes zero method arguments in these cases (it cannot determine the 1272actual number of arguments without resolution/definition of the method). 1273 1274Debugger: Added support to display all resources with a single command. 1275Invocation of the resources command with no arguments will now display 1276all 1277resources within the current namespace. 1278 1279AcpiHelp: Added descriptive text for each ACPICA exception code displayed 1280via the -e option. 1281 1282---------------------------------------- 128317 January 2013. Summary of changes for version 20130117: 1284 12851) ACPICA Kernel-resident Subsystem: 1286 1287Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 1288return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 1289objects to return a package containing one integer, most BIOS code 1290returns 1291two integers and the previous code reflects that. However, we also need 1292to 1293support BIOS code that actually implements to the ACPI spec, and this 1294change reflects this. 1295 1296Fixed two issues with the ACPI_DEBUG_PRINT macros: 12971) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 1298C compilers that require this support. 12992) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 1300ACPI_DEBUG is already used by many of the various hosts. 1301 1302Updated all ACPICA copyrights and signons to 2013. Added the 2013 1303copyright to all module headers and signons, including the standard Linux 1304header. This affects virtually every file in the ACPICA core subsystem, 1305iASL compiler, all ACPICA utilities, and the test suites. 1306 1307Example Code and Data Size: These are the sizes for the OS-independent 1308acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1309debug version of the code includes the debug output trace mechanism and 1310has a much larger code and data size. 1311 1312 Previous Release: 1313 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1314 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1315 Current Release: 1316 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1317 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1318 1319 13202) iASL Compiler/Disassembler and Tools: 1321 1322Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 1323prevent a possible fault on some hosts. Some C libraries modify the arg 1324pointer parameter to vfprintf making it difficult to call it twice in the 1325AcpiOsVprintf function. Use a local buffer to workaround this issue. This 1326does not affect the Windows OSL since the Win C library does not modify 1327the arg pointer. Chao Guan, Bob Moore. 1328 1329iASL: Fixed a possible infinite loop when the maximum error count is 1330reached. If an output file other than the .AML file is specified (such as 1331a listing file), and the maximum number of errors is reached, do not 1332attempt to flush data to the output file(s) as the compiler is aborting. 1333This can cause an infinite loop as the max error count code essentially 1334keeps calling itself. 1335 1336iASL/Disassembler: Added an option (-in) to ignore NOOP 1337opcodes/operators. 1338Implemented for both the compiler and the disassembler. Often, the NOOP 1339opcode is used as padding for packages that are changed dynamically by 1340the 1341BIOS. When disassembled and recompiled, these NOOPs will cause syntax 1342errors. This option causes the disassembler to ignore all NOOP opcodes 1343(0xA3), and it also causes the compiler to ignore all ASL source code 1344NOOP 1345statements as well. 1346 1347Debugger: Enhanced the Sleep command to execute all sleep states. This 1348change allows Sleep to be invoked with no arguments and causes the 1349debugger to execute all of the sleep states, 0-5, automatically. 1350 1351---------------------------------------- 135220 December 2012. Summary of changes for version 20121220: 1353 13541) ACPICA Kernel-resident Subsystem: 1355 1356Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 1357alternate entry point for AcpiWalkResources and improves the usability of 1358the resource manager by accepting as input a buffer containing the output 1359of either a _CRS, _PRS, or _AEI method. The key functionality is that the 1360input buffer is not deleted by this interface so that it can be used by 1361the host later. See the ACPICA reference for details. 1362 1363Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 1364(DSDT version < 2). The constant will be truncated and this warning 1365reflects that behavior. 1366 1367Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 1368ExtendedInterrupt, and GpioInt descriptors. This change adds support to 1369both get and set the new wake bit in these descriptors, separately from 1370the existing share bit. Reported by Aaron Lu. 1371 1372Interpreter: Fix Store() when an implicit conversion is not possible. For 1373example, in the cases such as a store of a string to an existing package 1374object, implement the store as a CopyObject(). This is a small departure 1375from the ACPI specification which states that the control method should 1376be 1377aborted in this case. However, the ASLTS suite depends on this behavior. 1378 1379Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 1380macros: check if debug output is currently enabled as soon as possible to 1381minimize performance impact if debug is in fact not enabled. 1382 1383Source code restructuring: Cleanup to improve modularity. The following 1384new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 1385psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 1386Associated makefiles and project files have been updated. 1387 1388Changed an exception code for LoadTable operator. For the case where one 1389of the input strings is too long, change the returned exception code from 1390AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 1391 1392Fixed a possible memory leak in dispatcher error path. On error, delete 1393the mutex object created during method mutex creation. Reported by 1394tim.gardner@canonical.com. 1395 1396Example Code and Data Size: These are the sizes for the OS-independent 1397acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1398debug version of the code includes the debug output trace mechanism and 1399has a much larger code and data size. 1400 1401 Previous Release: 1402 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 1403 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1404 Current Release: 1405 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1406 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1407 1408 14092) iASL Compiler/Disassembler and Tools: 1410 1411iASL: Disallow a method call as argument to the ObjectType ASL operator. 1412This change tracks an errata to the ACPI 5.0 document. The AML grammar 1413will not allow the interpreter to differentiate between a method and a 1414method invocation when these are used as an argument to the ObjectType 1415operator. The ACPI specification change is to disallow a method 1416invocation 1417(UserTerm) for the ObjectType operator. 1418 1419Finish support for the TPM2 and CSRT tables in the headers, table 1420compiler, and disassembler. 1421 1422Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 1423always expires immediately if the semaphore is not available. The 1424original 1425code was using a relative-time timeout, but sem_timedwait requires the 1426use 1427of an absolute time. 1428 1429iASL: Added a remark if the Timer() operator is used within a 32-bit 1430table. This operator returns a 64-bit time value that will be truncated 1431within a 32-bit table. 1432 1433iASL Source code restructuring: Cleanup to improve modularity. The 1434following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 1435aslmethod.c, and aslfileio.c. Associated makefiles and project files have 1436been updated. 1437 1438 1439---------------------------------------- 144014 November 2012. Summary of changes for version 20121114: 1441 14421) ACPICA Kernel-resident Subsystem: 1443 1444Implemented a performance enhancement for ACPI/AML Package objects. This 1445change greatly increases the performance of Package objects within the 1446interpreter. It changes the processing of reference counts for packages 1447by 1448optimizing for the most common case where the package sub-objects are 1449either Integers, Strings, or Buffers. Increases the overall performance 1450of 1451the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 14522X.) 1453Chao Guan. ACPICA BZ 943. 1454 1455Implemented and deployed common macros to extract flag bits from resource 1456descriptors. Improves readability and maintainability of the code. Fixes 1457a 1458problem with the UART serial bus descriptor for the number of data bits 1459flags (was incorrectly 2 bits, should be 3). 1460 1461Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 1462of the macros and changed the SETx macros to the style of (destination, 1463source). Also added ACPI_CASTx companion macros. Lv Zheng. 1464 1465Example Code and Data Size: These are the sizes for the OS-independent 1466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1467debug version of the code includes the debug output trace mechanism and 1468has a much larger code and data size. 1469 1470 Previous Release: 1471 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 1472 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1473 Current Release: 1474 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 1475 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1476 1477 14782) iASL Compiler/Disassembler and Tools: 1479 1480Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 1481adds the ShareAndWake and ExclusiveAndWake flags which were added to the 1482Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 1483 1484Disassembler: Fixed a problem with external declaration generation. Fixes 1485a problem where an incorrect pathname could be generated for an external 1486declaration if the original reference to the object includes leading 1487carats (^). ACPICA BZ 984. 1488 1489Debugger: Completed a major update for the Disassemble<method> command. 1490This command was out-of-date and did not properly disassemble control 1491methods that had any reasonable complexity. This fix brings the command 1492up 1493to the same level as the rest of the disassembler. Adds one new file, 1494dmdeferred.c, which is existing code that is now common with the main 1495disassembler and the debugger disassemble command. ACPICA MZ 978. 1496 1497iASL: Moved the parser entry prototype to avoid a duplicate declaration. 1498Newer versions of Bison emit this prototype, so moved the prototype out 1499of 1500the iASL header to where it is actually used in order to avoid a 1501duplicate 1502declaration. 1503 1504iASL/Tools: Standardized use of the stream I/O functions: 1505 1) Ensure check for I/O error after every fopen/fread/fwrite 1506 2) Ensure proper order of size/count arguments for fread/fwrite 1507 3) Use test of (Actual != Requested) after all fwrite, and most fread 1508 4) Standardize I/O error messages 1509Improves reliability and maintainability of the code. Bob Moore, Lv 1510Zheng. 1511ACPICA BZ 981. 1512 1513Disassembler: Prevent duplicate External() statements. During generation 1514of external statements, detect similar pathnames that are actually 1515duplicates such as these: 1516 External (\ABCD) 1517 External (ABCD) 1518Remove all leading '\' characters from pathnames during the external 1519statement generation so that duplicates will be detected and tossed. 1520ACPICA BZ 985. 1521 1522Tools: Replace low-level I/O with stream I/O functions. Replace 1523open/read/write/close with the stream I/O equivalents 1524fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 1525Moore. 1526 1527AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 1528name header so that AcpiXtract recognizes the output file/table. 1529 1530iASL: Remove obsolete -2 option flag. Originally intended to force the 1531compiler/disassembler into an ACPI 2.0 mode, this was never implemented 1532and the entire concept is now obsolete. 1533 1534---------------------------------------- 153518 October 2012. Summary of changes for version 20121018: 1536 1537 15381) ACPICA Kernel-resident Subsystem: 1539 1540Updated support for the ACPI 5.0 MPST table. Fixes some problems 1541introduced by late changes to the table as it was added to the ACPI 5.0 1542specification. Includes header, disassembler, and data table compiler 1543support as well as a new version of the MPST template. 1544 1545AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 15465.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 1547methods: _HID, _CID, and _UID. 1548 1549Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 1550ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 1551name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 1552names for their various drivers. Affects the AcpiGetObjectInfo external 1553interface, and other internal interfaces as well. 1554 1555Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 1556This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 1557on machines that support non-aligned transfers. Optimizes for this case 1558rather than using a strncpy. With assistance from Zheng Lv. 1559 1560Resource Manager: Small fix for buffer size calculation. Fixed a one byte 1561error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 1562 1563Added a new debug print message for AML mutex objects that are force- 1564released. At control method termination, any currently acquired mutex 1565objects are force-released. Adds a new debug-only message for each one 1566that is released. 1567 1568Audited/updated all ACPICA return macros and the function debug depth 1569counter: 1) Ensure that all functions that use the various TRACE macros 1570also use the appropriate ACPICA return macros. 2) Ensure that all normal 1571return statements surround the return expression (value) with parens to 1572ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 1573Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 1574 1575Global source code changes/maintenance: All extra lines at the start and 1576end of each source file have been removed for consistency. Also, within 1577comments, all new sentences start with a single space instead of a double 1578space, again for consistency across the code base. 1579 1580Example Code and Data Size: These are the sizes for the OS-independent 1581acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1582debug version of the code includes the debug output trace mechanism and 1583has a much larger code and data size. 1584 1585 Previous Release: 1586 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 1587 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 1588 Current Release: 1589 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 1590 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1591 1592 15932) iASL Compiler/Disassembler and Tools: 1594 1595AcpiExec: Improved the algorithm used for memory leak/corruption 1596detection. Added some intelligence to the code that maintains the global 1597list of allocated memory. The list is now ordered by allocated memory 1598address, significantly improving performance. When running AcpiExec on 1599the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 1600on the platform and/or the environment. Note, this performance 1601enhancement affects the AcpiExec utility only, not the kernel-resident 1602ACPICA code. 1603 1604Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 1605the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 1606incorrect table offset reported for invalid opcodes. Report the original 160732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 1608 1609Disassembler: Enhanced the -vt option to emit the binary table data in 1610hex format to assist with debugging. 1611 1612Fixed a potential filename buffer overflow in osunixdir.c. Increased the 1613size of file structure. Colin Ian King. 1614 1615---------------------------------------- 161613 September 2012. Summary of changes for version 20120913: 1617 1618 16191) ACPICA Kernel-resident Subsystem: 1620 1621ACPI 5.0: Added two new notify types for the Hardware Error Notification 1622Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 1623and 1624MCE(6). 1625 1626Table Manager: Merged/removed duplicate code in the root table resize 1627functions. One function is external, the other is internal. Lv Zheng, 1628ACPICA 1629BZ 846. 1630 1631Makefiles: Completely removed the obsolete "Linux" makefiles under 1632acpica/generate/linux. These makefiles are obsolete and have been 1633replaced 1634by 1635the generic unix makefiles under acpica/generate/unix. 1636 1637Makefiles: Ensure that binary files always copied properly. Minor rule 1638change 1639to ensure that the final binary output files are always copied up to the 1640appropriate binary directory (bin32 or bin64.) 1641 1642Example Code and Data Size: These are the sizes for the OS-independent 1643acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1644debug 1645version of the code includes the debug output trace mechanism and has a 1646much 1647larger code and data size. 1648 1649 Previous Release: 1650 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 1651 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 1652 Current Release: 1653 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 1654 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 1655 1656 16572) iASL Compiler/Disassembler and Tools: 1658 1659Disassembler: Fixed a possible fault during the disassembly of resource 1660descriptors when a second parse is required because of the invocation of 1661external control methods within the table. With assistance from 1662adq@lidskialf.net. ACPICA BZ 976. 1663 1664iASL: Fixed a namepath optimization problem. An error can occur if the 1665parse 1666node that contains the namepath to be optimized does not have a parent 1667node 1668that is a named object. This change fixes the problem. 1669 1670iASL: Fixed a regression where the AML file is not deleted on errors. The 1671AML 1672output file should be deleted if there are any errors during the 1673compiler. 1674The 1675only exception is if the -f (force output) option is used. ACPICA BZ 974. 1676 1677iASL: Added a feature to automatically increase internal line buffer 1678sizes. 1679Via realloc(), automatically increase the internal line buffer sizes as 1680necessary to support very long source code lines. The current version of 1681the 1682preprocessor requires a buffer long enough to contain full source code 1683lines. 1684This change increases the line buffer(s) if the input lines go beyond the 1685current buffer size. This eliminates errors that occurred when a source 1686code 1687line was longer than the buffer. 1688 1689iASL: Fixed a problem with constant folding in method declarations. The 1690SyncLevel term is a ByteConstExpr, and incorrect code would be generated 1691if a 1692Type3 opcode was used. 1693 1694Debugger: Improved command help support. For incorrect argument count, 1695display 1696full help for the command. For help command itself, allow an argument to 1697specify a command. 1698 1699Test Suites: Several bug fixes for the ASLTS suite reduces the number of 1700errors during execution of the suite. Guan Chao. 1701 1702---------------------------------------- 170316 August 2012. Summary of changes for version 20120816: 1704 1705 17061) ACPICA Kernel-resident Subsystem: 1707 1708Removed all use of the deprecated _GTS and _BFS predefined methods. The 1709_GTS 1710(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 1711deprecated and will probably be removed from the ACPI specification. 1712Windows 1713does not invoke them, and reportedly never will. The final nail in the 1714coffin 1715is that the ACPI specification states that these methods must be run with 1716interrupts off, which is not going to happen in a kernel interpreter. 1717Note: 1718Linux has removed all use of the methods also. It was discovered that 1719invoking these functions caused failures on some machines, probably 1720because 1721they were never tested since Windows does not call them. Affects two 1722external 1723interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 1724ACPICA BZ 969. 1725 1726Implemented support for complex bit-packed buffers returned from the _PLD 1727(Physical Location of Device) predefined method. Adds a new external 1728interface, AcpiDecodePldBuffer that parses the buffer into a more usable 1729C 1730structure. Note: C Bitfields cannot be used for this type of predefined 1731structure since the memory layout of individual bitfields is not defined 1732by 1733the C language. In addition, there are endian concerns where a compiler 1734will 1735change the bitfield ordering based on the machine type. The new ACPICA 1736interface eliminates these issues, and should be called after _PLD is 1737executed. ACPICA BZ 954. 1738 1739Implemented a change to allow a scope change to root (via "Scope (\)") 1740during 1741execution of module-level ASL code (code that is executed at table load 1742time.) Lin Ming. 1743 1744Added the Windows8/Server2012 string for the _OSI method. This change 1745adds 1746a 1747new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 17482012. 1749 1750Added header support for the new ACPI tables DBG2 (Debug Port Table Type 17512) 1752and CSRT (Core System Resource Table). 1753 1754Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 1755names. This simplifies access to the buffers returned by these predefined 1756names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 1757 1758GPE support: Removed an extraneous parameter from the various low-level 1759internal GPE functions. Tang Feng. 1760 1761Removed the linux makefiles from the unix packages. The generate/linux 1762makefiles are obsolete and have been removed from the unix tarball 1763release 1764packages. The replacement makefiles are under generate/unix, and there is 1765a 1766top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 1767 1768Updates for Unix makefiles: 17691) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 17702) Update linker flags (move to end of command line) for AcpiExec 1771utility. 1772Guan Chao. 1773 1774Split ACPICA initialization functions to new file, utxfinit.c. Split from 1775utxface.c to improve modularity and reduce file size. 1776 1777Example Code and Data Size: These are the sizes for the OS-independent 1778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1779debug version of the code includes the debug output trace mechanism and 1780has a 1781much larger code and data size. 1782 1783 Previous Release: 1784 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 1785 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 1786 Current Release: 1787 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 1788 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 1789 1790 17912) iASL Compiler/Disassembler and Tools: 1792 1793iASL: Fixed a problem with constant folding for fixed-length constant 1794expressions. The constant-folding code was not being invoked for constant 1795expressions that allow the use of type 3/4/5 opcodes to generate 1796constants 1797for expressions such as ByteConstExpr, WordConstExpr, etc. This could 1798result 1799in the generation of invalid AML bytecode. ACPICA BZ 970. 1800 1801iASL: Fixed a generation issue on newer versions of Bison. Newer versions 1802apparently automatically emit some of the necessary externals. This 1803change 1804handles these versions in order to eliminate generation warnings. 1805 1806Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 1807 1808Disassembler: Add support to decode _PLD buffers. The decoded buffer 1809appears 1810within comments in the output file. 1811 1812Debugger: Fixed a regression with the "Threads" command where 1813AE_BAD_PARAMETER was always returned. 1814 1815---------------------------------------- 181611 July 2012. Summary of changes for version 20120711: 1817 18181) ACPICA Kernel-resident Subsystem: 1819 1820Fixed a possible fault in the return package object repair code. Fixes a 1821problem that can occur when a lone package object is wrapped with an 1822outer 1823package object in order to force conformance to the ACPI specification. 1824Can 1825affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 1826_DLM, 1827_CSD, _PSD, _TSD. 1828 1829Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 1830PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 1831ARB_DIS bit must be implemented in the host-dependent C3 processor power 1832state 1833support. Note, ARB_DIS is obsolete and only applies to older chipsets, 1834both 1835Intel and other vendors. (for Intel: ICH4-M and earlier) 1836 1837This change removes the code to disable/enable bus master arbitration 1838during 1839suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 1840causes 1841resume problems on some machines. The change has been in use for over 1842seven 1843years within Linux. 1844 1845Implemented two new external interfaces to support host-directed dynamic 1846ACPI 1847table load and unload. They are intended to simplify the host 1848implementation 1849of hot-plug support: 1850 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 1851 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 1852table. 1853See the ACPICA reference for additional details. Adds one new file, 1854components/tables/tbxfload.c 1855 1856Implemented and deployed two new interfaces for errors and warnings that 1857are 1858known to be caused by BIOS/firmware issues: 1859 AcpiBiosError: Prints "ACPI Firmware Error" message. 1860 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 1861Deployed these new interfaces in the ACPICA Table Manager code for ACPI 1862table 1863and FADT errors. Additional deployment to be completed as appropriate in 1864the 1865future. The associated conditional macros are ACPI_BIOS_ERROR and 1866ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 1867ACPICA 1868BZ 1869843. 1870 1871Implicit notify support: ensure that no memory allocation occurs within a 1872critical region. This fix moves a memory allocation outside of the time 1873that a 1874spinlock is held. Fixes issues on systems that do not allow this 1875behavior. 1876Jung-uk Kim. 1877 1878Split exception code utilities and tables into a new file, 1879utilities/utexcep.c 1880 1881Example Code and Data Size: These are the sizes for the OS-independent 1882acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1883debug 1884version of the code includes the debug output trace mechanism and has a 1885much 1886larger code and data size. 1887 1888 Previous Release: 1889 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 1890 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 1891 Current Release: 1892 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 1893 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 1894 1895 18962) iASL Compiler/Disassembler and Tools: 1897 1898iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 1899of 19000. Jung-uk Kim. 1901 1902Debugger: Enhanced the "tables" command to emit additional information 1903about 1904the current set of ACPI tables, including the owner ID and flags decode. 1905 1906Debugger: Reimplemented the "unload" command to use the new 1907AcpiUnloadParentTable external interface. This command was disable 1908previously 1909due to need for an unload interface. 1910 1911AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 1912option 1913will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 1914 1915---------------------------------------- 191620 June 2012. Summary of changes for version 20120620: 1917 1918 19191) ACPICA Kernel-resident Subsystem: 1920 1921Implemented support to expand the "implicit notify" feature to allow 1922multiple 1923devices to be notified by a single GPE. This feature automatically 1924generates a 1925runtime device notification in the absence of a BIOS-provided GPE control 1926method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 1927notify is 1928provided by ACPICA for Windows compatibility, and is a workaround for 1929BIOS 1930AML 1931code errors. See the description of the AcpiSetupGpeForWake interface in 1932the 1933APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 1934 1935Changed some comments and internal function names to simplify and ensure 1936correctness of the Linux code translation. No functional changes. 1937 1938Example Code and Data Size: These are the sizes for the OS-independent 1939acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1940debug 1941version of the code includes the debug output trace mechanism and has a 1942much 1943larger code and data size. 1944 1945 Previous Release: 1946 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 1947 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 1948 Current Release: 1949 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 1950 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 1951 1952 19532) iASL Compiler/Disassembler and Tools: 1954 1955Disassembler: Added support to emit short, commented descriptions for the 1956ACPI 1957predefined names in order to improve the readability of the disassembled 1958output. ACPICA BZ 959. Changes include: 1959 1) Emit descriptions for all standard predefined names (_INI, _STA, 1960_PRW, 1961etc.) 1962 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 1963 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 1964etc.) 1965 1966AcpiSrc: Fixed several long-standing Linux code translation issues. 1967Argument 1968descriptions in function headers are now translated properly to lower 1969case 1970and 1971underscores. ACPICA BZ 961. Also fixes translation problems such as 1972these: 1973(old -> new) 1974 i_aSL -> iASL 1975 00-7_f -> 00-7F 1976 16_k -> 16K 1977 local_fADT -> local_FADT 1978 execute_oSI -> execute_OSI 1979 1980iASL: Fixed a problem where null bytes were inadvertently emitted into 1981some 1982listing files. 1983 1984iASL: Added the existing debug options to the standard help screen. There 1985are 1986no longer two different help screens. ACPICA BZ 957. 1987 1988AcpiHelp: Fixed some typos in the various predefined name descriptions. 1989Also 1990expand some of the descriptions where appropriate. 1991 1992iASL: Fixed the -ot option (display compile times/statistics). Was not 1993working 1994properly for standard output; only worked for the debug file case. 1995 1996---------------------------------------- 199718 May 2012. Summary of changes for version 20120518: 1998 1999 20001) ACPICA Core Subsystem: 2001 2002Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 2003defined 2004to block until asynchronous events such as notifies and GPEs have 2005completed. 2006Within ACPICA, it is only called before a notify or GPE handler is 2007removed/uninstalled. It also may be useful for the host OS within related 2008drivers such as the Embedded Controller driver. See the ACPICA reference 2009for 2010additional information. ACPICA BZ 868. 2011 2012ACPI Tables: Added a new error message for a possible overflow failure 2013during 2014the conversion of FADT 32-bit legacy register addresses to internal 2015common 201664- 2017bit GAS structure representation. The GAS has a one-byte "bit length" 2018field, 2019thus limiting the register length to 255 bits. ACPICA BZ 953. 2020 2021Example Code and Data Size: These are the sizes for the OS-independent 2022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2023debug 2024version of the code includes the debug output trace mechanism and has a 2025much 2026larger code and data size. 2027 2028 Previous Release: 2029 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2030 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2031 Current Release: 2032 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2033 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2034 2035 20362) iASL Compiler/Disassembler and Tools: 2037 2038iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 2039macro. 2040This keyword was added late in the ACPI 5.0 release cycle and was not 2041implemented until now. 2042 2043Disassembler: Added support for Operation Region externals. Adds missing 2044support for operation regions that are defined in another table, and 2045referenced locally via a Field or BankField ASL operator. Now generates 2046the 2047correct External statement. 2048 2049Disassembler: Several additional fixes for the External() statement 2050generation 2051related to some ASL operators. Also, order the External() statements 2052alphabetically in the disassembler output. Fixes the External() 2053generation 2054for 2055the Create* field, Alias, and Scope operators: 2056 1) Create* buffer field operators - fix type mismatch warning on 2057disassembly 2058 2) Alias - implement missing External support 2059 3) Scope - fix to make sure all necessary externals are emitted. 2060 2061iASL: Improved pathname support. For include files, merge the prefix 2062pathname 2063with the file pathname and eliminate unnecessary components. Convert 2064backslashes in all pathnames to forward slashes, for readability. Include 2065file 2066pathname changes affect both #include and Include() type operators. 2067 2068iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 2069end 2070of a valid line by inserting a newline and then returning the EOF during 2071the 2072next call to GetNextLine. Prevents the line from being ignored due to EOF 2073condition. 2074 2075iASL: Implemented some changes to enhance the IDE support (-vi option.) 2076Error 2077and Warning messages are now correctly recognized for both the source 2078code 2079browser and the global error and warning counts. 2080 2081---------------------------------------- 208220 April 2012. Summary of changes for version 20120420: 2083 2084 20851) ACPICA Core Subsystem: 2086 2087Implemented support for multiple notify handlers. This change adds 2088support 2089to 2090allow multiple system and device notify handlers on Device, Thermal Zone, 2091and 2092Processor objects. This can simplify the host OS notification 2093implementation. 2094Also re-worked and restructured the entire notify support code to 2095simplify 2096handler installation, handler removal, notify event queuing, and notify 2097dispatch to handler(s). Note: there can still only be two global notify 2098handlers - one for system notifies and one for device notifies. There are 2099no 2100changes to the existing handler install/remove interfaces. Lin Ming, Bob 2101Moore, Rafael Wysocki. 2102 2103Fixed a regression in the package repair code where the object reference 2104count was calculated incorrectly. Regression was introduced in the commit 2105"Support to add Package wrappers". 2106 2107Fixed a couple possible memory leaks in the AML parser, in the error 2108recovery 2109path. Jesper Juhl, Lin Ming. 2110 2111Example Code and Data Size: These are the sizes for the OS-independent 2112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2113debug version of the code includes the debug output trace mechanism and 2114has a 2115much larger code and data size. 2116 2117 Previous Release: 2118 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2119 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2120 Current Release: 2121 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2122 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2123 2124 21252) iASL Compiler/Disassembler and Tools: 2126 2127iASL: Fixed a problem with the resource descriptor support where the 2128length 2129of the StartDependentFn and StartDependentFnNoPrio descriptors were not 2130included in cumulative descriptor offset, resulting in incorrect values 2131for 2132resource tags within resource descriptors appearing after a 2133StartDependent* 2134descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 2135 2136iASL and Preprocessor: Implemented full support for the #line directive 2137to 2138correctly track original source file line numbers through the .i 2139preprocessor 2140output file - for error and warning messages. 2141 2142iASL: Expand the allowable byte constants for address space IDs. 2143Previously, 2144the allowable range was 0x80-0xFF (user-defined spaces), now the range is 21450x0A-0xFF to allow for custom and new IDs without changing the compiler. 2146 2147iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 2148 2149iASL: Add option to completely disable the preprocessor (-Pn). 2150 2151iASL: Now emit all error/warning messages to standard error (stderr) by 2152default (instead of the previous stdout). 2153 2154ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 2155Update 2156for resource descriptor offset fix above. Update/cleanup error output 2157routines. Enable and send iASL errors/warnings to an error logfile 2158(error.txt). Send all other iASL output to a logfile (compiler.txt). 2159Fixed 2160several extraneous "unrecognized operator" messages. 2161 2162---------------------------------------- 216320 March 2012. Summary of changes for version 20120320: 2164 2165 21661) ACPICA Core Subsystem: 2167 2168Enhanced the sleep/wake interfaces to optionally execute the _GTS method 2169(Going To Sleep) and the _BFS method (Back From Sleep). Windows 2170apparently 2171does not execute these methods, and therefore these methods are often 2172untested. It has been seen on some systems where the execution of these 2173methods causes errors and also prevents the machine from entering S5. It 2174is 2175therefore suggested that host operating systems do not execute these 2176methods 2177by default. In the future, perhaps these methods can be optionally 2178executed 2179based on the age of the system and/or what is the newest version of 2180Windows 2181that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 2182and 2183AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 2184Ming. 2185 2186Fixed a problem where the length of the local/common FADT was set too 2187early. 2188The local FADT table length cannot be set to the common length until the 2189original length has been examined. There is code that checks the table 2190length 2191and sets various fields appropriately. This can affect older machines 2192with 2193early FADT versions. For example, this can cause inadvertent writes to 2194the 2195CST_CNT register. Julian Anastasov. 2196 2197Fixed a mapping issue related to a physical table override. Use the 2198deferred 2199mapping mechanism for tables loaded via the physical override OSL 2200interface. 2201This allows for early mapping before the virtual memory manager is 2202available. 2203Thomas Renninger, Bob Moore. 2204 2205Enhanced the automatic return-object repair code: Repair a common problem 2206with 2207predefined methods that are defined to return a variable-length Package 2208of 2209sub-objects. If there is only one sub-object, some BIOS ASL code 2210mistakenly 2211simply returns the single object instead of a Package with one sub- 2212object. 2213This new support will repair this error by wrapping a Package object 2214around 2215the original object, creating the correct and expected Package with one 2216sub- 2217object. Names that can be repaired in this manner include: _ALR, _CSD, 2218_HPX, 2219_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 2220939. 2221 2222Changed the exception code returned for invalid ACPI paths passed as 2223parameters to external interfaces such as AcpiEvaluateObject. Was 2224AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 2225 2226Example Code and Data Size: These are the sizes for the OS-independent 2227acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2228debug 2229version of the code includes the debug output trace mechanism and has a 2230much 2231larger code and data size. 2232 2233 Previous Release: 2234 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2235 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2236 Current Release: 2237 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2238 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2239 2240 22412) iASL Compiler/Disassembler and Tools: 2242 2243iASL: Added the infrastructure and initial implementation of a integrated 2244C- 2245like preprocessor. This will simplify BIOS development process by 2246eliminating 2247the need for a separate preprocessing step during builds. On Windows, it 2248also 2249eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 2250features including full #define() macro support are still under 2251development. 2252These preprocessor directives are supported: 2253 #define 2254 #elif 2255 #else 2256 #endif 2257 #error 2258 #if 2259 #ifdef 2260 #ifndef 2261 #include 2262 #pragma message 2263 #undef 2264 #warning 2265In addition, these new command line options are supported: 2266 -D <symbol> Define symbol for preprocessor use 2267 -li Create preprocessed output file (*.i) 2268 -P Preprocess only and create preprocessor output file (*.i) 2269 2270Table Compiler: Fixed a problem where the equals operator within an 2271expression 2272did not work properly. 2273 2274Updated iASL to use the current versions of Bison/Flex. Updated the 2275Windows 2276project file to invoke these tools from the standard location. ACPICA BZ 2277904. 2278Versions supported: 2279 Flex for Windows: V2.5.4 2280 Bison for Windows: V2.4.1 2281 2282---------------------------------------- 228315 February 2012. Summary of changes for version 20120215: 2284 2285 22861) ACPICA Core Subsystem: 2287 2288There have been some major changes to the sleep/wake support code, as 2289described below (a - e). 2290 2291a) The AcpiLeaveSleepState has been split into two interfaces, similar to 2292AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 2293AcpiLeaveSleepStatePrep. This allows the host to perform actions between 2294the 2295time the _BFS method is called and the _WAK method is called. NOTE: all 2296hosts 2297must update their wake/resume code or else sleep/wake will not work 2298properly. 2299Rafael Wysocki. 2300 2301b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 2302_WAK 2303method. Some machines require that the GPEs are enabled before the _WAK 2304method 2305is executed. Thomas Renninger. 2306 2307c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 2308bit. 2309Some BIOS code assumes that WAK_STS will be cleared on resume and use it 2310to 2311determine whether the system is rebooting or resuming. Matthew Garrett. 2312 2313d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 2314Sleep) to 2315match the ACPI specification requirement. Rafael Wysocki. 2316 2317e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 2318registers within the V5 FADT. This support adds two new files: 2319hardware/hwesleep.c implements the support for the new registers. Moved 2320all 2321sleep/wake external interfaces to hardware/hwxfsleep.c. 2322 2323 2324Added a new OSL interface for ACPI table overrides, 2325AcpiOsPhysicalTableOverride. This interface allows the host to override a 2326table via a physical address, instead of the logical address required by 2327AcpiOsTableOverride. This simplifies the host implementation. Initial 2328implementation by Thomas Renninger. The ACPICA implementation creates a 2329single 2330shared function for table overrides that attempts both a logical and a 2331physical override. 2332 2333Expanded the OSL memory read/write interfaces to 64-bit data 2334(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 2335transfer support for GAS register structures passed to AcpiRead and 2336AcpiWrite. 2337 2338Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 2339custom 2340build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 2341model. 2342See the ACPICA reference for details. ACPICA BZ 942. This option removes 2343about 234410% of the code and 5% of the static data, and the following hardware 2345ACPI 2346features become unavailable: 2347 PM Event and Control registers 2348 SCI interrupt (and handler) 2349 Fixed Events 2350 General Purpose Events (GPEs) 2351 Global Lock 2352 ACPI PM timer 2353 FACS table (Waking vectors and Global Lock) 2354 2355Updated the unix tarball directory structure to match the ACPICA git 2356source 2357tree. This ensures that the generic unix makefiles work properly (in 2358generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 2359867. 2360 2361Updated the return value of the _REV predefined method to integer value 5 2362to 2363reflect ACPI 5.0 support. 2364 2365Moved the external ACPI PM timer interface prototypes to the public 2366acpixf.h 2367file where they belong. 2368 2369Example Code and Data Size: These are the sizes for the OS-independent 2370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2371debug 2372version of the code includes the debug output trace mechanism and has a 2373much 2374larger code and data size. 2375 2376 Previous Release: 2377 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 2378 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 2379 Current Release: 2380 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2381 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2382 2383 23842) iASL Compiler/Disassembler and Tools: 2385 2386Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 2387descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 2388incorrectly displayed. 2389 2390AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 2391specification. 2392 2393---------------------------------------- 239411 January 2012. Summary of changes for version 20120111: 2395 2396 23971) ACPICA Core Subsystem: 2398 2399Implemented a new mechanism to allow host device drivers to check for 2400address 2401range conflicts with ACPI Operation Regions. Both SystemMemory and 2402SystemIO 2403address spaces are supported. A new external interface, 2404AcpiCheckAddressRange, 2405allows drivers to check an address range against the ACPI namespace. See 2406the 2407ACPICA reference for additional details. Adds one new file, 2408utilities/utaddress.c. Lin Ming, Bob Moore. 2409 2410Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 2411Control 2412and 2413Status registers, update the ACPI 5.0 flags, and update internal data 2414structures to handle an FADT larger than 256 bytes. The size of the ACPI 24155.0 2416FADT is 268 bytes. 2417 2418Updated all ACPICA copyrights and signons to 2012. Added the 2012 2419copyright to 2420all module headers and signons, including the standard Linux header. This 2421affects virtually every file in the ACPICA core subsystem, iASL compiler, 2422and 2423all ACPICA utilities. 2424 2425Example Code and Data Size: These are the sizes for the OS-independent 2426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2427debug 2428version of the code includes the debug output trace mechanism and has a 2429much 2430larger code and data size. 2431 2432 Previous Release: 2433 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 2434 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 2435 Current Release: 2436 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 2437 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 2438 2439 24402) iASL Compiler/Disassembler and Tools: 2441 2442Disassembler: fixed a problem with the automatic resource tag generation 2443support. Fixes a problem where the resource tags are inadvertently not 2444constructed if the table being disassembled contains external references 2445to 2446control methods. Moved the actual construction of the tags to after the 2447final 2448namespace is constructed (after 2nd parse is invoked due to external 2449control 2450method references.) ACPICA BZ 941. 2451 2452Table Compiler: Make all "generic" operators caseless. These are the 2453operators 2454like UINT8, String, etc. Making these caseless improves ease-of-use. 2455ACPICA BZ 2456934. 2457 2458---------------------------------------- 245923 November 2011. Summary of changes for version 20111123: 2460 24610) ACPI 5.0 Support: 2462 2463This release contains full support for the ACPI 5.0 specification, as 2464summarized below. 2465 2466Reduced Hardware Support: 2467------------------------- 2468 2469This support allows for ACPI systems without the usual ACPI hardware. 2470This 2471support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 2472will 2473not attempt to initialize or use any of the usual ACPI hardware. Note, 2474when 2475this flag is set, all of the following ACPI hardware is assumed to be not 2476present and is not initialized or accessed: 2477 2478 General Purpose Events (GPEs) 2479 Fixed Events (PM1a/PM1b and PM Control) 2480 Power Management Timer and Console Buttons (power/sleep) 2481 Real-time Clock Alarm 2482 Global Lock 2483 System Control Interrupt (SCI) 2484 The FACS is assumed to be non-existent 2485 2486ACPI Tables: 2487------------ 2488 2489All new tables and updates to existing tables are fully supported in the 2490ACPICA headers (for use by device drivers), the disassembler, and the 2491iASL 2492Data Table Compiler. ACPI 5.0 defines these new tables: 2493 2494 BGRT /* Boot Graphics Resource Table */ 2495 DRTM /* Dynamic Root of Trust for Measurement table */ 2496 FPDT /* Firmware Performance Data Table */ 2497 GTDT /* Generic Timer Description Table */ 2498 MPST /* Memory Power State Table */ 2499 PCCT /* Platform Communications Channel Table */ 2500 PMTT /* Platform Memory Topology Table */ 2501 RASF /* RAS Feature table */ 2502 2503Operation Regions/SpaceIDs: 2504--------------------------- 2505 2506All new operation regions are fully supported by the iASL compiler, the 2507disassembler, and the ACPICA runtime code (for dispatch to region 2508handlers.) 2509The new operation region Space IDs are: 2510 2511 GeneralPurposeIo 2512 GenericSerialBus 2513 2514Resource Descriptors: 2515--------------------- 2516 2517All new ASL resource descriptors are fully supported by the iASL 2518compiler, 2519the 2520ASL/AML disassembler, and the ACPICA runtime Resource Manager code 2521(including 2522all new predefined resource tags). New descriptors are: 2523 2524 FixedDma 2525 GpioIo 2526 GpioInt 2527 I2cSerialBus 2528 SpiSerialBus 2529 UartSerialBus 2530 2531ASL/AML Operators, New and Modified: 2532------------------------------------ 2533 2534One new operator is added, the Connection operator, which is used to 2535associate 2536a GeneralPurposeIo or GenericSerialBus resource descriptor with 2537individual 2538field objects within an operation region. Several new protocols are 2539associated 2540with the AccessAs operator. All are fully supported by the iASL compiler, 2541disassembler, and runtime ACPICA AML interpreter: 2542 2543 Connection // Declare Field Connection 2544attributes 2545 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 2546 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 2547Protocol 2548 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 2549 RawDataBuffer // Data type for Vendor Data 2550fields 2551 2552Predefined ASL/AML Objects: 2553--------------------------- 2554 2555All new predefined objects/control-methods are supported by the iASL 2556compiler 2557and the ACPICA runtime validation/repair (arguments and return values.) 2558New 2559predefined names include the following: 2560 2561Standard Predefined Names (Objects or Control Methods): 2562 _AEI, _CLS, _CPC, _CWS, _DEP, 2563 _DLM, _EVT, _GCP, _CRT, _GWS, 2564 _HRV, _PRE, _PSE, _SRT, _SUB. 2565 2566Resource Tags (Names used to access individual fields within resource 2567descriptors): 2568 _DBT, _DPL, _DRS, _END, _FLC, 2569 _IOR, _LIN, _MOD, _PAR, _PHA, 2570 _PIN, _PPI, _POL, _RXL, _SLV, 2571 _SPE, _STB, _TXL, _VEN. 2572 2573ACPICA External Interfaces: 2574--------------------------- 2575 2576Several new interfaces have been defined for use by ACPI-related device 2577drivers and other host OS services: 2578 2579AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 2580to 2581acquire and release AML mutexes that are defined in the DSDT/SSDT tables 2582provided by the BIOS. They are intended to be used in conjunction with 2583the 2584ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 2585mutual exclusion with the AML code/interpreter. 2586 2587AcpiGetEventResources: Returns the (formatted) resource descriptors as 2588defined 2589by the ACPI 5.0 _AEI object (ACPI Event Information). This object 2590provides 2591resource descriptors associated with hardware-reduced platform events, 2592similar 2593to the AcpiGetCurrentResources interface. 2594 2595Operation Region Handlers: For General Purpose IO and Generic Serial Bus 2596operation regions, information about the Connection() object and any 2597optional 2598length information is passed to the region handler within the Context 2599parameter. 2600 2601AcpiBufferToResource: This interface converts a raw AML buffer containing 2602a 2603resource template or resource descriptor to the ACPI_RESOURCE internal 2604format 2605suitable for use by device drivers. Can be used by an operation region 2606handler 2607to convert the Connection() buffer object into a ACPI_RESOURCE. 2608 2609Miscellaneous/Tools/TestSuites: 2610------------------------------- 2611 2612Support for extended _HID names (Four alpha characters instead of three). 2613Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 2614Support for ACPI 5.0 features in the ASLTS test suite. 2615Fully updated documentation (ACPICA and iASL reference documents.) 2616 2617ACPI Table Definition Language: 2618------------------------------- 2619 2620Support for this language was implemented and released as a subsystem of 2621the 2622iASL compiler in 2010. (See the iASL compiler User Guide.) 2623 2624 2625Non-ACPI 5.0 changes for this release: 2626-------------------------------------- 2627 26281) ACPICA Core Subsystem: 2629 2630Fix a problem with operation region declarations where a failure can 2631occur 2632if 2633the region name and an argument that evaluates to an object (such as the 2634region address) are in different namespace scopes. Lin Ming, ACPICA BZ 2635937. 2636 2637Do not abort an ACPI table load if an invalid space ID is found within. 2638This 2639will be caught later if the offending method is executed. ACPICA BZ 925. 2640 2641Fixed an issue with the FFixedHW space ID where the ID was not always 2642recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 2643 2644Fixed a problem with the 32-bit generation of the unix-specific OSL 2645(osunixxf.c). Lin Ming, ACPICA BZ 936. 2646 2647Several changes made to enable generation with the GCC 4.6 compiler. 2648ACPICA BZ 2649935. 2650 2651New error messages: Unsupported I/O requests (not 8/16/32 bit), and 2652Index/Bank 2653field registers out-of-range. 2654 26552) iASL Compiler/Disassembler and Tools: 2656 2657iASL: Implemented the __PATH__ operator, which returns the full pathname 2658of 2659the current source file. 2660 2661AcpiHelp: Automatically display expanded keyword information for all ASL 2662operators. 2663 2664Debugger: Add "Template" command to disassemble/dump resource template 2665buffers. 2666 2667Added a new master script to generate and execute the ASLTS test suite. 2668Automatically handles 32- and 64-bit generation. See tests/aslts.sh 2669 2670iASL: Fix problem with listing generation during processing of the 2671Switch() 2672operator where AML listing was disabled until the entire Switch block was 2673completed. 2674 2675iASL: Improve support for semicolon statement terminators. Fix "invalid 2676character" message for some cases when the semicolon is used. Semicolons 2677are 2678now allowed after every <Term> grammar element. ACPICA BZ 927. 2679 2680iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 2681923. 2682 2683Disassembler: Fix problem with disassembly of the DataTableRegion 2684operator 2685where an inadvertent "Unhandled deferred opcode" message could be 2686generated. 2687 26883) Example Code and Data Size 2689 2690These are the sizes for the OS-independent acpica.lib produced by the 2691Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 2692includes the debug output trace mechanism and has a much larger code and 2693data 2694size. 2695 2696 Previous Release: 2697 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2698 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2699 Current Release: 2700 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 2701 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 2702 2703---------------------------------------- 270422 September 2011. Summary of changes for version 20110922: 2705 27060) ACPI 5.0 News: 2707 2708Support for ACPI 5.0 in ACPICA has been underway for several months and 2709will 2710be released at the same time that ACPI 5.0 is officially released. 2711 2712The ACPI 5.0 specification is on track for release in the next few 2713months. 2714 27151) ACPICA Core Subsystem: 2716 2717Fixed a problem where the maximum sleep time for the Sleep() operator was 2718intended to be limited to two seconds, but was inadvertently limited to 271920 2720seconds instead. 2721 2722Linux and Unix makefiles: Added header file dependencies to ensure 2723correct 2724generation of ACPICA core code and utilities. Also simplified the 2725makefiles 2726considerably through the use of the vpath variable to specify search 2727paths. 2728ACPICA BZ 924. 2729 27302) iASL Compiler/Disassembler and Tools: 2731 2732iASL: Implemented support to check the access length for all fields 2733created to 2734access named Resource Descriptor fields. For example, if a resource field 2735is 2736defined to be two bits, a warning is issued if a CreateXxxxField() is 2737used 2738with an incorrect bit length. This is implemented for all current 2739resource 2740descriptor names. ACPICA BZ 930. 2741 2742Disassembler: Fixed a byte ordering problem with the output of 24-bit and 274356- 2744bit integers. 2745 2746iASL: Fixed a couple of issues associated with variable-length package 2747objects. 1) properly handle constants like One, Ones, Zero -- do not make 2748a 2749VAR_PACKAGE when these are used as a package length. 2) Allow the 2750VAR_PACKAGE 2751opcode (in addition to PACKAGE) when validating object types for 2752predefined 2753names. 2754 2755iASL: Emit statistics for all output files (instead of just the ASL input 2756and 2757AML output). Includes listings, hex files, etc. 2758 2759iASL: Added -G option to the table compiler to allow the compilation of 2760custom 2761ACPI tables. The only part of a table that is required is the standard 276236- 2763byte 2764ACPI header. 2765 2766AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 2767headers), 2768which also adds correct 64-bit support. Also, now all output filenames 2769are 2770completely lower case. 2771 2772AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 2773loading table files. A warning is issued for any such tables. The only 2774exception is an FADT. This also fixes a possible fault when attempting to 2775load 2776non-AML tables. ACPICA BZ 932. 2777 2778AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 2779a 2780missing table terminator could cause a fault when using the -p option. 2781 2782AcpiSrc: Fixed a possible divide-by-zero fault when generating file 2783statistics. 2784 27853) Example Code and Data Size 2786 2787These are the sizes for the OS-independent acpica.lib produced by the 2788Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 2789includes the debug output trace mechanism and has a much larger code and 2790data 2791size. 2792 2793 Previous Release (VC 9.0): 2794 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2795 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2796 Current Release (VC 9.0): 2797 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2798 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2799 2800 2801---------------------------------------- 280223 June 2011. Summary of changes for version 20110623: 2803 28041) ACPI CA Core Subsystem: 2805 2806Updated the predefined name repair mechanism to not attempt repair of a 2807_TSS 2808return object if a _PSS object is present. We can only sort the _TSS 2809return 2810package if there is no _PSS within the same scope. This is because if 2811_PSS 2812is 2813present, the ACPI specification dictates that the _TSS Power Dissipation 2814field 2815is to be ignored, and therefore some BIOSs leave garbage values in the 2816_TSS 2817Power field(s). In this case, it is best to just return the _TSS package 2818as- 2819is. Reported by, and fixed with assistance from Fenghua Yu. 2820 2821Added an option to globally disable the control method return value 2822validation 2823and repair. This runtime option can be used to disable return value 2824repair 2825if 2826this is causing a problem on a particular machine. Also added an option 2827to 2828AcpiExec (-dr) to set this disable flag. 2829 2830All makefiles and project files: Major changes to improve generation of 2831ACPICA 2832tools. ACPICA BZ 912: 2833 Reduce default optimization levels to improve compatibility 2834 For Linux, add strict-aliasing=0 for gcc 4 2835 Cleanup and simplify use of command line defines 2836 Cleanup multithread library support 2837 Improve usage messages 2838 2839Linux-specific header: update handling of THREAD_ID and pthread. For the 284032- 2841bit case, improve casting to eliminate possible warnings, especially with 2842the 2843acpica tools. 2844 2845Example Code and Data Size: These are the sizes for the OS-independent 2846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2847debug 2848version of the code includes the debug output trace mechanism and has a 2849much 2850larger code and data size. 2851 2852 Previous Release (VC 9.0): 2853 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 2854 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2855 Current Release (VC 9.0): 2856 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2857 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2858 28592) iASL Compiler/Disassembler and Tools: 2860 2861With this release, a new utility named "acpihelp" has been added to the 2862ACPICA 2863package. This utility summarizes the ACPI specification chapters for the 2864ASL 2865and AML languages. It generates under Linux/Unix as well as Windows, and 2866provides the following functionality: 2867 Find/display ASL operator(s) -- with description and syntax. 2868 Find/display ASL keyword(s) -- with exact spelling and descriptions. 2869 Find/display ACPI predefined name(s) -- with description, number 2870 of arguments, and the return value data type. 2871 Find/display AML opcode name(s) -- with opcode, arguments, and 2872grammar. 2873 Decode/display AML opcode -- with opcode name, arguments, and 2874grammar. 2875 2876Service Layers: Make multi-thread support configurable. Conditionally 2877compile 2878the multi-thread support so that threading libraries will not be linked 2879if 2880not 2881necessary. The only tool that requires multi-thread support is AcpiExec. 2882 2883iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 2884of 2885Bison appear to want the interface to yyerror to be a const char * (or at 2886least this is a problem when generating iASL on some systems.) ACPICA BZ 2887923 2888Pierre Lejeune. 2889 2890Tools: Fix for systems where O_BINARY is not defined. Only used for 2891Windows 2892versions of the tools. 2893 2894---------------------------------------- 289527 May 2011. Summary of changes for version 20110527: 2896 28971) ACPI CA Core Subsystem: 2898 2899ASL Load() operator: Reinstate most restrictions on the incoming ACPI 2900table 2901signature. Now, only allow SSDT, OEMx, and a null signature. History: 2902 1) Originally, we checked the table signature for "SSDT" or "PSDT". 2903 (PSDT is now obsolete.) 2904 2) We added support for OEMx tables, signature "OEM" plus a fourth 2905 "don't care" character. 2906 3) Valid tables were encountered with a null signature, so we just 2907 gave up on validating the signature, (05/2008). 2908 4) We encountered non-AML tables such as the MADT, which caused 2909 interpreter errors and kernel faults. So now, we once again allow 2910 only SSDT, OEMx, and now, also a null signature. (05/2011). 2911 2912Added the missing _TDL predefined name to the global name list in order 2913to 2914enable validation. Affects both the core ACPICA code and the iASL 2915compiler. 2916 2917Example Code and Data Size: These are the sizes for the OS-independent 2918acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2919debug 2920version of the code includes the debug output trace mechanism and has a 2921much 2922larger code and data size. 2923 2924 Previous Release (VC 9.0): 2925 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 2926 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 2927 Current Release (VC 9.0): 2928 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 2929 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2930 29312) iASL Compiler/Disassembler and Tools: 2932 2933Debugger/AcpiExec: Implemented support for "complex" method arguments on 2934the 2935debugger command line. This adds support beyond simple integers -- 2936including 2937Strings, Buffers, and Packages. Includes support for nested packages. 2938Increased the default command line buffer size to accommodate these 2939arguments. 2940See the ACPICA reference for details and syntax. ACPICA BZ 917. 2941 2942Debugger/AcpiExec: Implemented support for "default" method arguments for 2943the 2944Execute/Debug command. Now, the debugger will always invoke a control 2945method 2946with the required number of arguments -- even if the command line 2947specifies 2948none or insufficient arguments. It uses default integer values for any 2949missing 2950arguments. Also fixes a bug where only six method arguments maximum were 2951supported instead of the required seven. 2952 2953Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 2954and 2955also return status in order to prevent buffer overruns. See the ACPICA 2956reference for details and syntax. ACPICA BZ 921 2957 2958iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 2959makefiles to simplify support for the two different but similar parser 2960generators, bison and yacc. 2961 2962Updated the generic unix makefile for gcc 4. The default gcc version is 2963now 2964expected to be 4 or greater, since options specific to gcc 4 are used. 2965 2966---------------------------------------- 296713 April 2011. Summary of changes for version 20110413: 2968 29691) ACPI CA Core Subsystem: 2970 2971Implemented support to execute a so-called "orphan" _REG method under the 2972EC 2973device. This change will force the execution of a _REG method underneath 2974the 2975EC 2976device even if there is no corresponding operation region of type 2977EmbeddedControl. Fixes a problem seen on some machines and apparently is 2978compatible with Windows behavior. ACPICA BZ 875. 2979 2980Added more predefined methods that are eligible for automatic NULL 2981package 2982element removal. This change adds another group of predefined names to 2983the 2984list 2985of names that can be repaired by having NULL package elements dynamically 2986removed. This group are those methods that return a single variable- 2987length 2988package containing simple data types such as integers, buffers, strings. 2989This 2990includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 2991_PSL, 2992_Sx, 2993and _TZD. ACPICA BZ 914. 2994 2995Split and segregated all internal global lock functions to a new file, 2996evglock.c. 2997 2998Updated internal address SpaceID for DataTable regions. Moved this 2999internal 3000space 3001id in preparation for ACPI 5.0 changes that will include some new space 3002IDs. 3003This 3004change should not affect user/host code. 3005 3006Example Code and Data Size: These are the sizes for the OS-independent 3007acpica.lib 3008produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3009version of 3010the code includes the debug output trace mechanism and has a much larger 3011code 3012and 3013data size. 3014 3015 Previous Release (VC 9.0): 3016 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3017 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3018 Current Release (VC 9.0): 3019 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3020 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3021 30222) iASL Compiler/Disassembler and Tools: 3023 3024iASL/DTC: Major update for new grammar features. Allow generic data types 3025in 3026custom ACPI tables. Field names are now optional. Any line can be split 3027to 3028multiple lines using the continuation char (\). Large buffers now use 3029line- 3030continuation character(s) and no colon on the continuation lines. See the 3031grammar 3032update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 3033Moore. 3034 3035iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 3036statements. 3037Since the parser stuffs a "zero" as the return value for these statements 3038(due 3039to 3040the underlying AML grammar), they were seen as "return with value" by the 3041iASL 3042semantic checking. They are now seen correctly as "null" return 3043statements. 3044 3045iASL: Check if a_REG declaration has a corresponding Operation Region. 3046Adds a 3047check for each _REG to ensure that there is in fact a corresponding 3048operation 3049region declaration in the same scope. If not, the _REG method is not very 3050useful 3051since it probably won't be executed. ACPICA BZ 915. 3052 3053iASL/DTC: Finish support for expression evaluation. Added a new 3054expression 3055parser 3056that implements c-style operator precedence and parenthesization. ACPICA 3057bugzilla 3058908. 3059 3060Disassembler/DTC: Remove support for () and <> style comments in data 3061tables. 3062Now 3063that DTC has full expression support, we don't want to have comment 3064strings 3065that 3066start with a parentheses or a less-than symbol. Now, only the standard /* 3067and 3068// 3069comments are supported, as well as the bracket [] comments. 3070 3071AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 3072"unusual" 3073headers in the acpidump file. Update the header validation to support 3074these 3075tables. Problem introduced in previous AcpiXtract version in the change 3076to 3077support "wrong checksum" error messages emitted by acpidump utility. 3078 3079iASL: Add a * option to generate all template files (as a synonym for 3080ALL) 3081as 3082in 3083"iasl -T *" or "iasl -T ALL". 3084 3085iASL/DTC: Do not abort compiler on fatal errors. We do not want to 3086completely 3087abort the compiler on "fatal" errors, simply should abort the current 3088compile. 3089This allows multiple compiles with a single (possibly wildcard) compiler 3090invocation. 3091 3092---------------------------------------- 309316 March 2011. Summary of changes for version 20110316: 3094 30951) ACPI CA Core Subsystem: 3096 3097Fixed a problem caused by a _PRW method appearing at the namespace root 3098scope 3099during the setup of wake GPEs. A fault could occur if a _PRW directly 3100under 3101the 3102root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 3103 3104Implemented support for "spurious" Global Lock interrupts. On some 3105systems, a 3106global lock interrupt can occur without the pending flag being set. Upon 3107a 3108GL 3109interrupt, we now ensure that a thread is actually waiting for the lock 3110before 3111signaling GL availability. Rafael Wysocki, Bob Moore. 3112 3113Example Code and Data Size: These are the sizes for the OS-independent 3114acpica.lib 3115produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3116version of 3117the code includes the debug output trace mechanism and has a much larger 3118code 3119and 3120data size. 3121 3122 Previous Release (VC 9.0): 3123 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3124 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3125 Current Release (VC 9.0): 3126 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3127 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3128 31292) iASL Compiler/Disassembler and Tools: 3130 3131Implemented full support for the "SLIC" ACPI table. Includes support in 3132the 3133header files, disassembler, table compiler, and template generator. Bob 3134Moore, 3135Lin Ming. 3136 3137AcpiXtract: Correctly handle embedded comments and messages from 3138AcpiDump. 3139Apparently some or all versions of acpidump will occasionally emit a 3140comment 3141like 3142"Wrong checksum", etc., into the dump file. This was causing problems for 3143AcpiXtract. ACPICA BZ 905. 3144 3145iASL: Fix the Linux makefile by removing an inadvertent double file 3146inclusion. 3147ACPICA BZ 913. 3148 3149AcpiExec: Update installation of operation region handlers. Install one 3150handler 3151for a user-defined address space. This is used by the ASL test suite 3152(ASLTS). 3153 3154---------------------------------------- 315511 February 2011. Summary of changes for version 20110211: 3156 31571) ACPI CA Core Subsystem: 3158 3159Added a mechanism to defer _REG methods for some early-installed 3160handlers. 3161Most user handlers should be installed before call to 3162AcpiEnableSubsystem. 3163However, Event handlers and region handlers should be installed after 3164AcpiInitializeObjects. Override handlers for the "default" regions should 3165be 3166installed early, however. This change executes all _REG methods for the 3167default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 3168chicken/egg issues between them. ACPICA BZ 848. 3169 3170Implemented an optimization for GPE detection. This optimization will 3171simply 3172ignore GPE registers that contain no enabled GPEs -- there is no need to 3173read the register since this information is available internally. This 3174becomes more important on machines with a large GPE space. ACPICA 3175bugzilla 3176884. Lin Ming. Suggestion from Joe Liu. 3177 3178Removed all use of the highly unreliable FADT revision field. The 3179revision 3180number in the FADT has been found to be completely unreliable and cannot 3181be 3182trusted. Only the actual table length can be used to infer the version. 3183This 3184change updates the ACPICA core and the disassembler so that both no 3185longer 3186even look at the FADT version and instead depend solely upon the FADT 3187length. 3188 3189Fix an unresolved name issue for the no-debug and no-error-message source 3190generation cases. The _AcpiModuleName was left undefined in these cases, 3191but 3192it is actually needed as a parameter to some interfaces. Define 3193_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 3194 3195Split several large files (makefiles and project files updated) 3196 utglobal.c -> utdecode.c 3197 dbcomds.c -> dbmethod.c dbnames.c 3198 dsopcode.c -> dsargs.c dscontrol.c 3199 dsload.c -> dsload2.c 3200 aslanalyze.c -> aslbtypes.c aslwalks.c 3201 3202Example Code and Data Size: These are the sizes for the OS-independent 3203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3204debug version of the code includes the debug output trace mechanism and 3205has 3206a much larger code and data size. 3207 3208 Previous Release (VC 9.0): 3209 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3210 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3211 Current Release (VC 9.0): 3212 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3213 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3214 32152) iASL Compiler/Disassembler and Tools: 3216 3217iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 3218These are useful C-style macros with the standard definitions. ACPICA 3219bugzilla 898. 3220 3221iASL/DTC: Added support for integer expressions and labels. Support for 3222full 3223expressions for all integer fields in all ACPI tables. Support for labels 3224in 3225"generic" portions of tables such as UEFI. See the iASL reference manual. 3226 3227Debugger: Added a command to display the status of global handlers. The 3228"handlers" command will display op region, fixed event, and miscellaneous 3229global handlers. installation status -- and for op regions, whether 3230default 3231or user-installed handler will be used. 3232 3233iASL: Warn if reserved method incorrectly returns a value. Many 3234predefined 3235names are defined such that they do not return a value. If implemented as 3236a 3237method, issue a warning if such a name explicitly returns a value. ACPICA 3238Bugzilla 855. 3239 3240iASL: Added detection of GPE method name conflicts. Detects a conflict 3241where 3242there are two GPE methods of the form _Lxy and _Exy in the same scope. 3243(For 3244example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 3245 3246iASL/DTC: Fixed a couple input scanner issues with comments and line 3247numbers. Comment remover could get confused and miss a comment ending. 3248Fixed 3249a problem with line counter maintenance. 3250 3251iASL/DTC: Reduced the severity of some errors from fatal to error. There 3252is 3253no need to abort on simple errors within a field definition. 3254 3255Debugger: Simplified the output of the help command. All help output now 3256in 3257a single screen, instead of help subcommands. ACPICA Bugzilla 897. 3258 3259---------------------------------------- 326012 January 2011. Summary of changes for version 20110112: 3261 32621) ACPI CA Core Subsystem: 3263 3264Fixed a race condition between method execution and namespace walks that 3265can 3266possibly cause a fault. The problem was apparently introduced in version 326720100528 as a result of a performance optimization that reduces the 3268number 3269of 3270namespace walks upon method exit by using the delete_namespace_subtree 3271function instead of the delete_namespace_by_owner function used 3272previously. 3273Bug is a missing namespace lock in the delete_namespace_subtree function. 3274dana.myers@oracle.com 3275 3276Fixed several issues and a possible fault with the automatic "serialized" 3277method support. History: This support changes a method to "serialized" on 3278the 3279fly if the method generates an AE_ALREADY_EXISTS error, indicating the 3280possibility that it cannot handle reentrancy. This fix repairs a couple 3281of 3282issues seen in the field, especially on machines with many cores: 3283 3284 1) Delete method children only upon the exit of the last thread, 3285 so as to not delete objects out from under other running threads 3286 (and possibly causing a fault.) 3287 2) Set the "serialized" bit for the method only upon the exit of the 3288 Last thread, so as to not cause deadlock when running threads 3289 attempt to exit. 3290 3) Cleanup the use of the AML "MethodFlags" and internal method flags 3291 so that there is no longer any confusion between the two. 3292 3293 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 3294 3295Debugger: Now lock the namespace for duration of a namespace dump. 3296Prevents 3297issues if the namespace is changing dynamically underneath the debugger. 3298Especially affects temporary namespace nodes, since the debugger displays 3299these also. 3300 3301Updated the ordering of include files. The ACPICA headers should appear 3302before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 3303set 3304any necessary compiler-specific defines, etc. Affects the ACPI-related 3305tools 3306and utilities. 3307 3308Updated all ACPICA copyrights and signons to 2011. Added the 2011 3309copyright 3310to all module headers and signons, including the Linux header. This 3311affects 3312virtually every file in the ACPICA core subsystem, iASL compiler, and all 3313utilities. 3314 3315Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 3316project files for VC++ 6.0 are now obsolete. New project files can be 3317found 3318under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 3319details. 3320 3321Example Code and Data Size: These are the sizes for the OS-independent 3322acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3323debug version of the code includes the debug output trace mechanism and 3324has a 3325much larger code and data size. 3326 3327 Previous Release (VC 6.0): 3328 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3329 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3330 Current Release (VC 9.0): 3331 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3332 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3333 33342) iASL Compiler/Disassembler and Tools: 3335 3336iASL: Added generic data types to the Data Table compiler. Add "generic" 3337data 3338types such as UINT32, String, Unicode, etc., to simplify the generation 3339of 3340platform-defined tables such as UEFI. Lin Ming. 3341 3342iASL: Added listing support for the Data Table Compiler. Adds listing 3343support 3344(-l) to display actual binary output for each line of input code. 3345 3346---------------------------------------- 334709 December 2010. Summary of changes for version 20101209: 3348 33491) ACPI CA Core Subsystem: 3350 3351Completed the major overhaul of the GPE support code that was begun in 3352July 33532010. Major features include: removal of _PRW execution in ACPICA (host 3354executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 3355changes to existing interfaces, simplification of GPE handler operation, 3356and 3357a handful of new interfaces: 3358 3359 AcpiUpdateAllGpes 3360 AcpiFinishGpe 3361 AcpiSetupGpeForWake 3362 AcpiSetGpeWakeMask 3363 One new file, evxfgpe.c to consolidate all external GPE interfaces. 3364 3365See the ACPICA Programmer Reference for full details and programming 3366information. See the new section 4.4 "General Purpose Event (GPE) 3367Support" 3368for a full overview, and section 8.7 "ACPI General Purpose Event 3369Management" 3370for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 3371Ming, 3372Bob Moore, Rafael Wysocki. 3373 3374Implemented a new GPE feature for Windows compatibility, the "Implicit 3375Wake 3376GPE Notify". This feature will automatically issue a Notify(2) on a 3377device 3378when a Wake GPE is received if there is no corresponding GPE method or 3379handler. ACPICA BZ 870. 3380 3381Fixed a problem with the Scope() operator during table parse and load 3382phase. 3383During load phase (table load or method execution), the scope operator 3384should 3385not enter the target into the namespace. Instead, it should open a new 3386scope 3387at the target location. Linux BZ 19462, ACPICA BZ 882. 3388 3389Example Code and Data Size: These are the sizes for the OS-independent 3390acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3391debug version of the code includes the debug output trace mechanism and 3392has a 3393much larger code and data size. 3394 3395 Previous Release: 3396 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3397 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3398 Current Release: 3399 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3400 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3401 34022) iASL Compiler/Disassembler and Tools: 3403 3404iASL: Relax the alphanumeric restriction on _CID strings. These strings 3405are 3406"bus-specific" per the ACPI specification, and therefore any characters 3407are 3408acceptable. The only checks that can be performed are for a null string 3409and 3410perhaps for a leading asterisk. ACPICA BZ 886. 3411 3412iASL: Fixed a problem where a syntax error that caused a premature EOF 3413condition on the source file emitted a very confusing error message. The 3414premature EOF is now detected correctly. ACPICA BZ 891. 3415 3416Disassembler: Decode the AccessSize within a Generic Address Structure 3417(byte 3418access, word access, etc.) Note, this field does not allow arbitrary bit 3419access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 3420 3421New: AcpiNames utility - Example namespace dump utility. Shows an example 3422of 3423ACPICA configuration for a minimal namespace dump utility. Uses table and 3424namespace managers, but no AML interpreter. Does not add any 3425functionality 3426over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 3427partition and configure ACPICA. ACPICA BZ 883. 3428 3429AML Debugger: Increased the debugger buffer size for method return 3430objects. 3431Was 4K, increased to 16K. Also enhanced error messages for debugger 3432method 3433execution, including the buffer overflow case. 3434 3435---------------------------------------- 343613 October 2010. Summary of changes for version 20101013: 3437 34381) ACPI CA Core Subsystem: 3439 3440Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 3441now 3442clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 3443HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 3444 3445Changed the type of the predefined namespace object _TZ from ThermalZone 3446to 3447Device. This was found to be confusing to the host software that 3448processes 3449the various thermal zones, since _TZ is not really a ThermalZone. 3450However, 3451a 3452Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 3453Zhang. 3454 3455Added Windows Vista SP2 to the list of supported _OSI strings. The actual 3456string is "Windows 2006 SP2". 3457 3458Eliminated duplicate code in AcpiUtExecute* functions. Now that the 3459nsrepair 3460code automatically repairs _HID-related strings, this type of code is no 3461longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 3462878. 3463 3464Example Code and Data Size: These are the sizes for the OS-independent 3465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3466debug version of the code includes the debug output trace mechanism and 3467has a 3468much larger code and data size. 3469 3470 Previous Release: 3471 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3472 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3473 Current Release: 3474 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3475 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3476 34772) iASL Compiler/Disassembler and Tools: 3478 3479iASL: Implemented additional compile-time validation for _HID strings. 3480The 3481non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 3482length 3483of 3484the string must be exactly seven or eight characters. For both _HID and 3485_CID 3486strings, all characters must be alphanumeric. ACPICA BZ 874. 3487 3488iASL: Allow certain "null" resource descriptors. Some BIOS code creates 3489descriptors that are mostly or all zeros, with the expectation that they 3490will 3491be filled in at runtime. iASL now allows this as long as there is a 3492"resource 3493tag" (name) associated with the descriptor, which gives the ASL a handle 3494needed to modify the descriptor. ACPICA BZ 873. 3495 3496Added single-thread support to the generic Unix application OSL. 3497Primarily 3498for iASL support, this change removes the use of semaphores in the 3499single- 3500threaded ACPICA tools/applications - increasing performance. The 3501_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 3502option. ACPICA BZ 879. 3503 3504AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 3505support 3506for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 3507 3508iASL: Moved all compiler messages to a new file, aslmessages.h. 3509 3510---------------------------------------- 351115 September 2010. Summary of changes for version 20100915: 3512 35131) ACPI CA Core Subsystem: 3514 3515Removed the AcpiOsDerivePciId OSL interface. The various host 3516implementations 3517of this function were not OS-dependent and are now obsolete and can be 3518removed from all host OSLs. This function has been replaced by 3519AcpiHwDerivePciId, which is now part of the ACPICA core code. 3520AcpiHwDerivePciId has been implemented without recursion. Adds one new 3521module, hwpci.c. ACPICA BZ 857. 3522 3523Implemented a dynamic repair for _HID and _CID strings. The following 3524problems are now repaired at runtime: 1) Remove a leading asterisk in the 3525string, and 2) the entire string is uppercased. Both repairs are in 3526accordance with the ACPI specification and will simplify host driver 3527code. 3528ACPICA BZ 871. 3529 3530The ACPI_THREAD_ID type is no longer configurable, internally it is now 3531always UINT64. This simplifies the ACPICA code, especially any printf 3532output. 3533UINT64 is the only common data type for all thread_id types across all 3534operating systems. It is now up to the host OSL to cast the native 3535thread_id 3536type to UINT64 before returning the value to ACPICA (via 3537AcpiOsGetThreadId). 3538Lin Ming, Bob Moore. 3539 3540Added the ACPI_INLINE type to enhance the ACPICA configuration. The 3541"inline" 3542keyword is not standard across compilers, and this type allows inline to 3543be 3544configured on a per-compiler basis. Lin Ming. 3545 3546Made the system global AcpiGbl_SystemAwakeAndRunning publically 3547available. 3548Added an extern for this boolean in acpixf.h. Some hosts utilize this 3549value 3550during suspend/restore operations. ACPICA BZ 869. 3551 3552All code that implements error/warning messages with the "ACPI:" prefix 3553has 3554been moved to a new module, utxferror.c. 3555 3556The UINT64_OVERLAY was moved to utmath.c, which is the only module where 3557it 3558is used. ACPICA BZ 829. Lin Ming, Bob Moore. 3559 3560Example Code and Data Size: These are the sizes for the OS-independent 3561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3562debug version of the code includes the debug output trace mechanism and 3563has a 3564much larger code and data size. 3565 3566 Previous Release: 3567 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 3568 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 3569 Current Release: 3570 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3571 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3572 35732) iASL Compiler/Disassembler and Tools: 3574 3575iASL/Disassembler: Write ACPI errors to stderr instead of the output 3576file. 3577This keeps the output files free of random error messages that may 3578originate 3579from within the namespace/interpreter code. Used this opportunity to 3580merge 3581all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 3582866. Lin Ming, Bob Moore. 3583 3584Tools: update some printfs for ansi warnings on size_t. Handle width 3585change 3586of size_t on 32-bit versus 64-bit generations. Lin Ming. 3587 3588---------------------------------------- 358906 August 2010. Summary of changes for version 20100806: 3590 35911) ACPI CA Core Subsystem: 3592 3593Designed and implemented a new host interface to the _OSI support code. 3594This 3595will allow the host to dynamically add or remove multiple _OSI strings, 3596as 3597well as install an optional handler that is called for each _OSI 3598invocation. 3599Also added a new AML debugger command, 'osi' to display and modify the 3600global 3601_OSI string table, and test support in the AcpiExec utility. See the 3602ACPICA 3603reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 3604New Functions: 3605 AcpiInstallInterface - Add an _OSI string. 3606 AcpiRemoveInterface - Delete an _OSI string. 3607 AcpiInstallInterfaceHandler - Install optional _OSI handler. 3608Obsolete Functions: 3609 AcpiOsValidateInterface - no longer used. 3610New Files: 3611 source/components/utilities/utosi.c 3612 3613Re-introduced the support to enable multi-byte transfers for Embedded 3614Controller (EC) operation regions. A reported problem was found to be a 3615bug 3616in the host OS, not in the multi-byte support. Previously, the maximum 3617data 3618size passed to the EC operation region handler was a single byte. There 3619are 3620often EC Fields larger than one byte that need to be transferred, and it 3621is 3622useful for the EC driver to lock these as a single transaction. This 3623change 3624enables single transfers larger than 8 bits. This effectively changes the 3625access to the EC space from ByteAcc to AnyAcc, and will probably require 3626changes to the host OS Embedded Controller driver to enable 16/32/64/256- 3627bit 3628transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 3629 3630Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 3631prototype in acpiosxf.h had the output value pointer as a (void *). 3632It should be a (UINT64 *). This may affect some host OSL code. 3633 3634Fixed a couple problems with the recently modified Linux makefiles for 3635iASL 3636and AcpiExec. These new makefiles place the generated object files in the 3637local directory so that there can be no collisions between the files that 3638are 3639shared between them that are compiled with different options. 3640 3641Example Code and Data Size: These are the sizes for the OS-independent 3642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3643debug version of the code includes the debug output trace mechanism and 3644has a 3645much larger code and data size. 3646 3647 Previous Release: 3648 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3649 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 3650 Current Release: 3651 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 3652 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 3653 36542) iASL Compiler/Disassembler and Tools: 3655 3656iASL/Disassembler: Added a new option (-da, "disassemble all") to load 3657the 3658namespace from and disassemble an entire group of AML files. Useful for 3659loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 3660and 3661disassembling with one simple command. ACPICA BZ 865. Lin Ming. 3662 3663iASL: Allow multiple invocations of -e option. This change allows 3664multiple 3665uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 3666834. 3667Lin Ming. 3668 3669---------------------------------------- 367002 July 2010. Summary of changes for version 20100702: 3671 36721) ACPI CA Core Subsystem: 3673 3674Implemented several updates to the recently added GPE reference count 3675support. The model for "wake" GPEs is changing to give the host OS 3676complete 3677control of these GPEs. Eventually, the ACPICA core will not execute any 3678_PRW 3679methods, since the host already must execute them. Also, additional 3680changes 3681were made to help ensure that the reference counts are kept in proper 3682synchronization with reality. Rafael J. Wysocki. 3683 36841) Ensure that GPEs are not enabled twice during initialization. 36852) Ensure that GPE enable masks stay in sync with the reference count. 36863) Do not inadvertently enable GPEs when writing GPE registers. 36874) Remove the internal wake reference counter and add new AcpiGpeWakeup 3688interface. This interface will set or clear individual GPEs for wakeup. 36895) Remove GpeType argument from AcpiEnable and AcpiDisable. These 3690interfaces 3691are now used for "runtime" GPEs only. 3692 3693Changed the behavior of the GPE install/remove handler interfaces. The 3694GPE 3695is 3696no longer disabled during this process, as it was found to cause problems 3697on 3698some machines. Rafael J. Wysocki. 3699 3700Reverted a change introduced in version 20100528 to enable Embedded 3701Controller multi-byte transfers. This change was found to cause problems 3702with 3703Index Fields and possibly Bank Fields. It will be reintroduced when these 3704problems have been resolved. 3705 3706Fixed a problem with references to Alias objects within Package Objects. 3707A 3708reference to an Alias within the definition of a Package was not always 3709resolved properly. Aliases to objects like Processors, Thermal zones, 3710etc. 3711were resolved to the actual object instead of a reference to the object 3712as 3713it 3714should be. Package objects are only allowed to contain integer, string, 3715buffer, package, and reference objects. Redhat bugzilla 608648. 3716 3717Example Code and Data Size: These are the sizes for the OS-independent 3718acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3719debug version of the code includes the debug output trace mechanism and 3720has a 3721much larger code and data size. 3722 3723 Previous Release: 3724 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3725 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 3726 Current Release: 3727 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3728 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 3729 37302) iASL Compiler/Disassembler and Tools: 3731 3732iASL: Implemented a new compiler subsystem to allow definition and 3733compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 3734These 3735are called "ACPI Data Tables", and the new compiler is the "Data Table 3736Compiler". This compiler is intended to simplify the existing error-prone 3737process of creating these tables for the BIOS, as well as allowing the 3738disassembly, modification, recompilation, and override of existing ACPI 3739data 3740tables. See the iASL User Guide for detailed information. 3741 3742iASL: Implemented a new Template Generator option in support of the new 3743Data 3744Table Compiler. This option will create examples of all known ACPI tables 3745that can be used as the basis for table development. See the iASL 3746documentation and the -T option. 3747 3748Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 3749Descriptor Table). 3750 3751Updated the Linux makefiles for iASL and AcpiExec to place the generated 3752object files in the local directory so that there can be no collisions 3753between the shared files between them that are generated with different 3754options. 3755 3756Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 3757Use 3758the #define __APPLE__ to enable this support. 3759 3760---------------------------------------- 376128 May 2010. Summary of changes for version 20100528: 3762 3763Note: The ACPI 4.0a specification was released on April 5, 2010 and is 3764available at www.acpi.info. This is primarily an errata release. 3765 37661) ACPI CA Core Subsystem: 3767 3768Undefined ACPI tables: We are looking for the definitions for the 3769following 3770ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 3771 3772Implemented support to enable multi-byte transfers for Embedded 3773Controller 3774(EC) operation regions. Previously, the maximum data size passed to the 3775EC 3776operation region handler was a single byte. There are often EC Fields 3777larger 3778than one byte that need to be transferred, and it is useful for the EC 3779driver 3780to lock these as a single transaction. This change enables single 3781transfers 3782larger than 8 bits. This effectively changes the access to the EC space 3783from 3784ByteAcc to AnyAcc, and will probably require changes to the host OS 3785Embedded 3786Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 3787bit 3788transfers. Alexey Starikovskiy, Lin Ming 3789 3790Implemented a performance enhancement for namespace search and access. 3791This 3792change enhances the performance of namespace searches and walks by adding 3793a 3794backpointer to the parent in each namespace node. On large namespaces, 3795this 3796change can improve overall ACPI performance by up to 9X. Adding a pointer 3797to 3798each namespace node increases the overall size of the internal namespace 3799by 3800about 5%, since each namespace entry usually consists of both a namespace 3801node and an ACPI operand object. However, this is the first growth of the 3802namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 3803 3804Implemented a performance optimization that reduces the number of 3805namespace 3806walks. On control method exit, only walk the namespace if the method is 3807known 3808to have created namespace objects outside of its local scope. Previously, 3809the 3810entire namespace was traversed on each control method exit. This change 3811can 3812improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 3813Moore. 3814 3815Added support to truncate I/O addresses to 16 bits for Windows 3816compatibility. 3817Some ASL code has been seen in the field that inadvertently has bits set 3818above bit 15. This feature is optional and is enabled if the BIOS 3819requests 3820any Windows OSI strings. It can also be enabled by the host OS. Matthew 3821Garrett, Bob Moore. 3822 3823Added support to limit the maximum time for the ASL Sleep() operator. To 3824prevent accidental deep sleeps, limit the maximum time that Sleep() will 3825actually sleep. Configurable, the default maximum is two seconds. ACPICA 3826bugzilla 854. 3827 3828Added run-time validation support for the _WDG and_WED Microsoft 3829predefined 3830methods. These objects are defined by "Windows Instrumentation", and are 3831not 3832part of the ACPI spec. ACPICA BZ 860. 3833 3834Expanded all statistic counters used during namespace and device 3835initialization from 16 to 32 bits in order to support very large 3836namespaces. 3837 3838Replaced all instances of %d in printf format specifiers with %u since 3839nearly 3840all integers in ACPICA are unsigned. 3841 3842Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 3843returned 3844as AE_NO_HANDLER. 3845 3846Example Code and Data Size: These are the sizes for the OS-independent 3847acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3848debug version of the code includes the debug output trace mechanism and 3849has a 3850much larger code and data size. 3851 3852 Previous Release: 3853 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 3854 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 3855 Current Release: 3856 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3857 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 3858 38592) iASL Compiler/Disassembler and Tools: 3860 3861iASL: Added compiler support for the _WDG and_WED Microsoft predefined 3862methods. These objects are defined by "Windows Instrumentation", and are 3863not 3864part of the ACPI spec. ACPICA BZ 860. 3865 3866AcpiExec: added option to disable the memory tracking mechanism. The -dt 3867option will disable the tracking mechanism, which improves performance 3868considerably. 3869 3870AcpiExec: Restructured the command line options into -d (disable) and -e 3871(enable) options. 3872 3873---------------------------------------- 387428 April 2010. Summary of changes for version 20100428: 3875 38761) ACPI CA Core Subsystem: 3877 3878Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 3879including FADT-based and GPE Block Devices, execute any _PRW methods in 3880the 3881new table, and process any _Lxx/_Exx GPE methods in the new table. Any 3882runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 3883immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 3884Devices. Provides compatibility with other ACPI implementations. Two new 3885files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 3886Moore. 3887 3888Fixed a regression introduced in version 20100331 within the table 3889manager 3890where initial table loading could fail. This was introduced in the fix 3891for 3892AcpiReallocateRootTable. Also, renamed some of fields in the table 3893manager 3894data structures to clarify their meaning and use. 3895 3896Fixed a possible allocation overrun during internal object copy in 3897AcpiUtCopySimpleObject. The original code did not correctly handle the 3898case 3899where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 3900847. 3901 3902Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 3903possible access beyond end-of-allocation. Also, now fully validate 3904descriptor 3905(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 3906 3907Example Code and Data Size: These are the sizes for the OS-independent 3908acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3909debug version of the code includes the debug output trace mechanism and 3910has a 3911much larger code and data size. 3912 3913 Previous Release: 3914 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 3915 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 3916 Current Release: 3917 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 3918 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 3919 39202) iASL Compiler/Disassembler and Tools: 3921 3922iASL: Implemented Min/Max/Len/Gran validation for address resource 3923descriptors. This change implements validation for the address fields 3924that 3925are common to all address-type resource descriptors. These checks are 3926implemented: Checks for valid Min/Max, length within the Min/Max window, 3927valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 3928per 3929table 6-40 in the ACPI 4.0a specification. Also split the large 3930aslrestype1.c 3931and aslrestype2.c files into five new files. ACPICA BZ 840. 3932 3933iASL: Added support for the _Wxx predefined names. This support was 3934missing 3935and these names were not recognized by the compiler as valid predefined 3936names. ACPICA BZ 851. 3937 3938iASL: Added an error for all predefined names that are defined to return 3939no 3940value and thus must be implemented as Control Methods. These include all 3941of 3942the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 3943names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 3944 3945iASL: Implemented the -ts option to emit hex AML data in ASL format, as 3946an 3947ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 3948be 3949dynamically loaded via the Load() operator. Also cleaned up output for 3950the 3951- 3952ta and -tc options. ACPICA BZ 853. 3953 3954Tests: Added a new file with examples of extended iASL error checking. 3955Demonstrates the advanced error checking ability of the iASL compiler. 3956Available at tests/misc/badcode.asl. 3957 3958---------------------------------------- 395931 March 2010. Summary of changes for version 20100331: 3960 39611) ACPI CA Core Subsystem: 3962 3963Completed a major update for the GPE support in order to improve support 3964for 3965shared GPEs and to simplify both host OS and ACPICA code. Added a 3966reference 3967count mechanism to support shared GPEs that require multiple device 3968drivers. 3969Several external interfaces have changed. One external interface has been 3970removed. One new external interface was added. Most of the GPE external 3971interfaces now use the GPE spinlock instead of the events mutex (and the 3972Flags parameter for many GPE interfaces has been removed.) See the 3973updated 3974ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 3975Rafael 3976Wysocki. ACPICA BZ 831. 3977 3978Changed: 3979 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 3980Removed: 3981 AcpiSetGpeType 3982New: 3983 AcpiSetGpe 3984 3985Implemented write support for DataTable operation regions. These regions 3986are 3987defined via the DataTableRegion() operator. Previously, only read support 3988was 3989implemented. The ACPI specification allows DataTableRegions to be 3990read/write, 3991however. 3992 3993Implemented a new subsystem option to force a copy of the DSDT to local 3994memory. Optionally copy the entire DSDT to local memory (instead of 3995simply 3996mapping it.) There are some (albeit very rare) BIOSs that corrupt or 3997replace 3998the original DSDT, creating the need for this option. Default is FALSE, 3999do 4000not copy the DSDT. 4001 4002Implemented detection of a corrupted or replaced DSDT. This change adds 4003support to detect a DSDT that has been corrupted and/or replaced from 4004outside 4005the OS (by firmware). This is typically catastrophic for the system, but 4006has 4007been seen on some machines. Once this problem has been detected, the DSDT 4008copy option can be enabled via system configuration. Lin Ming, Bob Moore. 4009 4010Fixed two problems with AcpiReallocateRootTable during the root table 4011copy. 4012When copying the root table to the new allocation, the length used was 4013incorrect. The new size was used instead of the current table size, 4014meaning 4015too much data was copied. Also, the count of available slots for ACPI 4016tables 4017was not set correctly. Alexey Starikovskiy, Bob Moore. 4018 4019Example Code and Data Size: These are the sizes for the OS-independent 4020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4021debug version of the code includes the debug output trace mechanism and 4022has a 4023much larger code and data size. 4024 4025 Previous Release: 4026 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4027 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4028 Current Release: 4029 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4030 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4031 40322) iASL Compiler/Disassembler and Tools: 4033 4034iASL: Implement limited typechecking for values returned from predefined 4035control methods. The type of any returned static (unnamed) object is now 4036validated. For example, Return(1). ACPICA BZ 786. 4037 4038iASL: Fixed a predefined name object verification regression. Fixes a 4039problem 4040introduced in version 20100304. An error is incorrectly generated if a 4041predefined name is declared as a static named object with a value defined 4042using the keywords "Zero", "One", or "Ones". Lin Ming. 4043 4044iASL: Added Windows 7 support for the -g option (get local ACPI tables) 4045by 4046reducing the requested registry access rights. ACPICA BZ 842. 4047 4048Disassembler: fixed a possible fault when generating External() 4049statements. 4050Introduced in commit ae7d6fd: Properly handle externals with parent- 4051prefix 4052(carat). Fixes a string length allocation calculation. Lin Ming. 4053 4054---------------------------------------- 405504 March 2010. Summary of changes for version 20100304: 4056 40571) ACPI CA Core Subsystem: 4058 4059Fixed a possible problem with the AML Mutex handling function 4060AcpiExReleaseMutex where the function could fault under the very rare 4061condition when the interpreter has blocked, the interpreter lock is 4062released, 4063the interpreter is then reentered via the same thread, and attempts to 4064acquire an AML mutex that was previously acquired. FreeBSD report 140979. 4065Lin 4066Ming. 4067 4068Implemented additional configuration support for the AML "Debug Object". 4069Output from the debug object can now be enabled via a global variable, 4070AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 4071debugging. 4072This debug output is now available in the release version of ACPICA 4073instead 4074of just the debug version. Also, the entire debug output module can now 4075be 4076configured out of the ACPICA build if desired. One new file added, 4077executer/exdebug.c. Lin Ming, Bob Moore. 4078 4079Added header support for the ACPI MCHI table (Management Controller Host 4080Interface Table). This table was added in ACPI 4.0, but the defining 4081document 4082has only recently become available. 4083 4084Standardized output of integer values for ACPICA warnings/errors. Always 4085use 40860x prefix for hex output, always use %u for unsigned integer decimal 4087output. 4088Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 4089400 4090invocations.) These invocations were converted from the original 4091ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 4092 4093Example Code and Data Size: These are the sizes for the OS-independent 4094acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4095debug version of the code includes the debug output trace mechanism and 4096has a 4097much larger code and data size. 4098 4099 Previous Release: 4100 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4101 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4102 Current Release: 4103 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4104 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4105 41062) iASL Compiler/Disassembler and Tools: 4107 4108iASL: Implemented typechecking support for static (non-control method) 4109predefined named objects that are declared with the Name() operator. For 4110example, the type of this object is now validated to be of type Integer: 4111Name(_BBN, 1). This change migrates the compiler to using the core 4112predefined 4113name table instead of maintaining a local version. Added a new file, 4114aslpredef.c. ACPICA BZ 832. 4115 4116Disassembler: Added support for the ACPI 4.0 MCHI table. 4117 4118---------------------------------------- 411921 January 2010. Summary of changes for version 20100121: 4120 41211) ACPI CA Core Subsystem: 4122 4123Added the 2010 copyright to all module headers and signons. This affects 4124virtually every file in the ACPICA core subsystem, the iASL compiler, the 4125tools/utilities, and the test suites. 4126 4127Implemented a change to the AcpiGetDevices interface to eliminate 4128unnecessary 4129invocations of the _STA method. In the case where a specific _HID is 4130requested, do not run _STA until a _HID match is found. This eliminates 4131potentially dozens of _STA calls during a search for a particular 4132device/HID, 4133which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 4134 4135Implemented an additional repair for predefined method return values. 4136Attempt 4137to repair unexpected NULL elements within returned Package objects. 4138Create 4139an 4140Integer of value zero, a NULL String, or a zero-length Buffer as 4141appropriate. 4142ACPICA BZ 818. Lin Ming, Bob Moore. 4143 4144Removed the obsolete ACPI_INTEGER data type. This type was introduced as 4145the 4146code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 4147(with 414864-bit AML integers). It is now obsolete and this change removes it from 4149the 4150ACPICA code base, replaced by UINT64. The original typedef has been 4151retained 4152for now for compatibility with existing device driver code. ACPICA BZ 4153824. 4154 4155Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 4156in 4157the parse tree object. 4158 4159Added additional warning options for the gcc-4 generation. Updated the 4160source 4161accordingly. This includes some code restructuring to eliminate 4162unreachable 4163code, elimination of some gotos, elimination of unused return values, 4164some 4165additional casting, and removal of redundant declarations. 4166 4167Example Code and Data Size: These are the sizes for the OS-independent 4168acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4169debug version of the code includes the debug output trace mechanism and 4170has a 4171much larger code and data size. 4172 4173 Previous Release: 4174 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4175 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4176 Current Release: 4177 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4178 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4179 41802) iASL Compiler/Disassembler and Tools: 4181 4182No functional changes for this release. 4183 4184---------------------------------------- 418514 December 2009. Summary of changes for version 20091214: 4186 41871) ACPI CA Core Subsystem: 4188 4189Enhanced automatic data type conversions for predefined name repairs. 4190This 4191change expands the automatic repairs/conversions for predefined name 4192return 4193values to make Integers, Strings, and Buffers fully interchangeable. 4194Also, 4195a 4196Buffer can be converted to a Package of Integers if necessary. The 4197nsrepair.c 4198module was completely restructured. Lin Ming, Bob Moore. 4199 4200Implemented automatic removal of null package elements during predefined 4201name 4202repairs. This change will automatically remove embedded and trailing NULL 4203package elements from returned package objects that are defined to 4204contain 4205a 4206variable number of sub-packages. The driver is then presented with a 4207package 4208with no null elements to deal with. ACPICA BZ 819. 4209 4210Implemented a repair for the predefined _FDE and _GTM names. The expected 4211return value for both names is a Buffer of 5 DWORDs. This repair fixes 4212two 4213possible problems (both seen in the field), where a package of integers 4214is 4215returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 4216Kim. 4217 4218Implemented additional module-level code support. This change will 4219properly 4220execute module-level code that is not at the root of the namespace (under 4221a 4222Device object, etc.). Now executes the code within the current scope 4223instead 4224of the root. ACPICA BZ 762. Lin Ming. 4225 4226Fixed possible mutex acquisition errors when running _REG methods. Fixes 4227a 4228problem where mutex errors can occur when running a _REG method that is 4229in 4230the same scope as a method-defined operation region or an operation 4231region 4232under a module-level IF block. This type of code is rare, so the problem 4233has 4234not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 4235 4236Fixed a possible memory leak during module-level code execution. An 4237object 4238could be leaked for each block of executed module-level code if the 4239interpreter slack mode is enabled This change deletes any implicitly 4240returned 4241object from the module-level code block. Lin Ming. 4242 4243Removed messages for successful predefined repair(s). The repair 4244mechanism 4245was considered too wordy. Now, messages are only unconditionally emitted 4246if 4247the return object cannot be repaired. Existing messages for successful 4248repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 4249827. 4250 4251Example Code and Data Size: These are the sizes for the OS-independent 4252acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4253debug version of the code includes the debug output trace mechanism and 4254has a 4255much larger code and data size. 4256 4257 Previous Release: 4258 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4259 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4260 Current Release: 4261 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4262 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4263 42642) iASL Compiler/Disassembler and Tools: 4265 4266iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 4267files 4268were no longer automatically removed at the termination of the compile. 4269 4270acpiexec: Implemented the -f option to specify default region fill value. 4271This option specifies the value used to initialize buffers that simulate 4272operation regions. Default value is zero. Useful for debugging problems 4273that 4274depend on a specific initial value for a region or field. 4275 4276---------------------------------------- 427712 November 2009. Summary of changes for version 20091112: 4278 42791) ACPI CA Core Subsystem: 4280 4281Implemented a post-order callback to AcpiWalkNamespace. The existing 4282interface only has a pre-order callback. This change adds an additional 4283parameter for a post-order callback which will be more useful for bus 4284scans. 4285ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 4286 4287Modified the behavior of the operation region memory mapping cache for 4288SystemMemory. Ensure that the memory mappings created for operation 4289regions 4290do not cross 4K page boundaries. Crossing a page boundary while mapping 4291regions can cause kernel warnings on some hosts if the pages have 4292different 4293attributes. Such regions are probably BIOS bugs, and this is the 4294workaround. 4295Linux BZ 14445. Lin Ming. 4296 4297Implemented an automatic repair for predefined methods that must return 4298sorted lists. This change will repair (by sorting) packages returned by 4299_ALR, 4300_PSS, and _TSS. Drivers can now assume that the packages are correctly 4301sorted 4302and do not contain NULL package elements. Adds one new file, 4303namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 4304 4305Fixed a possible fault during predefined name validation if a return 4306Package 4307object contains NULL elements. Also adds a warning if a NULL element is 4308followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 4309may 4310include repair or removal of all such NULL elements where possible. 4311 4312Implemented additional module-level executable AML code support. This 4313change 4314will execute module-level code that is not at the root of the namespace 4315(under a Device object, etc.) at table load time. Module-level executable 4316AML 4317code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 4318 4319Implemented a new internal function to create Integer objects. This 4320function 4321simplifies miscellaneous object creation code. ACPICA BZ 823. 4322 4323Reduced the severity of predefined repair messages, Warning to Info. 4324Since 4325the object was successfully repaired, a warning is too severe. Reduced to 4326an 4327info message for now. These messages may eventually be changed to debug- 4328only. 4329ACPICA BZ 812. 4330 4331Example Code and Data Size: These are the sizes for the OS-independent 4332acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4333debug version of the code includes the debug output trace mechanism and 4334has a 4335much larger code and data size. 4336 4337 Previous Release: 4338 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4339 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4340 Current Release: 4341 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4342 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4343 43442) iASL Compiler/Disassembler and Tools: 4345 4346iASL: Implemented Switch() with While(1) so that Break works correctly. 4347This 4348change correctly implements the Switch operator with a surrounding 4349While(1) 4350so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 4351 4352iASL: Added a message if a package initializer list is shorter than 4353package 4354length. Adds a new remark for a Package() declaration if an initializer 4355list 4356exists, but is shorter than the declared length of the package. Although 4357technically legal, this is probably a coding error and it is seen in the 4358field. ACPICA BZ 815. Lin Ming, Bob Moore. 4359 4360iASL: Fixed a problem where the compiler could fault after the maximum 4361number 4362of errors was reached (200). 4363 4364acpixtract: Fixed a possible warning for pointer cast if the compiler 4365warning 4366level set very high. 4367 4368---------------------------------------- 436913 October 2009. Summary of changes for version 20091013: 4370 43711) ACPI CA Core Subsystem: 4372 4373Fixed a problem where an Operation Region _REG method could be executed 4374more 4375than once. If a custom address space handler is installed by the host 4376before 4377the "initialize operation regions" phase of the ACPICA initialization, 4378any 4379_REG methods for that address space could be executed twice. This change 4380fixes the problem. ACPICA BZ 427. Lin Ming. 4381 4382Fixed a possible memory leak for the Scope() ASL operator. When the exact 4383invocation of "Scope(\)" is executed (change scope to root), one internal 4384operand object was leaked. Lin Ming. 4385 4386Implemented a run-time repair for the _MAT predefined method. If the _MAT 4387return value is defined as a Field object in the AML, and the field 4388size is less than or equal to the default width of an integer (32 or 438964),_MAT 4390can incorrectly return an Integer instead of a Buffer. ACPICA now 4391automatically repairs this problem. ACPICA BZ 810. 4392 4393Implemented a run-time repair for the _BIF and _BIX predefined methods. 4394The 4395"OEM Information" field is often incorrectly returned as an Integer with 4396value zero if the field is not supported by the platform. This is due to 4397an 4398ambiguity in the ACPI specification. The field should always be a string. 4399ACPICA now automatically repairs this problem by returning a NULL string 4400within the returned Package. ACPICA BZ 807. 4401 4402Example Code and Data Size: These are the sizes for the OS-independent 4403acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4404debug version of the code includes the debug output trace mechanism and 4405has a 4406much larger code and data size. 4407 4408 Previous Release: 4409 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 4410 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 4411 Current Release: 4412 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4413 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4414 44152) iASL Compiler/Disassembler and Tools: 4416 4417Disassembler: Fixed a problem where references to external symbols that 4418contained one or more parent-prefixes (carats) were not handled 4419correctly, 4420possibly causing a fault. ACPICA BZ 806. Lin Ming. 4421 4422Disassembler: Restructured the code so that all functions that handle 4423external symbols are in a single module. One new file is added, 4424common/dmextern.c. 4425 4426AML Debugger: Added a max count argument for the Batch command (which 4427executes multiple predefined methods within the namespace.) 4428 4429iASL: Updated the compiler documentation (User Reference.) Available at 4430http://www.acpica.org/documentation/. ACPICA BZ 750. 4431 4432AcpiXtract: Updated for Lint and other formatting changes. Close all open 4433files. 4434 4435---------------------------------------- 443603 September 2009. Summary of changes for version 20090903: 4437 44381) ACPI CA Core Subsystem: 4439 4440For Windows Vista compatibility, added the automatic execution of an _INI 4441method located at the namespace root (\_INI). This method is executed at 4442table load time. This support is in addition to the automatic execution 4443of 4444\_SB._INI. Lin Ming. 4445 4446Fixed a possible memory leak in the interpreter for AML package objects 4447if 4448the package initializer list is longer than the defined size of the 4449package. 4450This apparently can only happen if the BIOS changes the package size on 4451the 4452fly (seen in a _PSS object), as ASL compilers do not allow this. The 4453interpreter will truncate the package to the defined size (and issue an 4454error 4455message), but previously could leave the extra objects undeleted if they 4456were 4457pre-created during the argument processing (such is the case if the 4458package 4459consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 4460 4461Fixed a problem seen when a Buffer or String is stored to itself via ASL. 4462This has been reported in the field. Previously, ACPICA would zero out 4463the 4464buffer/string. Now, the operation is treated as a noop. Provides Windows 4465compatibility. ACPICA BZ 803. Lin Ming. 4466 4467Removed an extraneous error message for ASL constructs of the form 4468Store(LocalX,LocalX) when LocalX is uninitialized. These curious 4469statements 4470are seen in many BIOSs and are once again treated as NOOPs and no error 4471is 4472emitted when they are encountered. ACPICA BZ 785. 4473 4474Fixed an extraneous warning message if a _DSM reserved method returns a 4475Package object. _DSM can return any type of object, so validation on the 4476return type cannot be performed. ACPICA BZ 802. 4477 4478Example Code and Data Size: These are the sizes for the OS-independent 4479acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4480debug version of the code includes the debug output trace mechanism and 4481has a 4482much larger code and data size. 4483 4484 Previous Release: 4485 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 4486 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 4487 Current Release: 4488 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 4489 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 4490 44912) iASL Compiler/Disassembler and Tools: 4492 4493iASL: Fixed a problem with the use of the Alias operator and Resource 4494Templates. The correct alias is now constructed and no error is emitted. 4495ACPICA BZ 738. 4496 4497iASL: Implemented the -I option to specify additional search directories 4498for 4499include files. Allows multiple additional search paths for include files. 4500Directories are searched in the order specified on the command line 4501(after 4502the local directory is searched.) ACPICA BZ 800. 4503 4504iASL: Fixed a problem where the full pathname for include files was not 4505emitted for warnings/errors. This caused the IDE support to not work 4506properly. ACPICA BZ 765. 4507 4508iASL: Implemented the -@ option to specify a Windows-style response file 4509containing additional command line options. ACPICA BZ 801. 4510 4511AcpiExec: Added support to load multiple AML files simultaneously (such 4512as 4513a 4514DSDT and multiple SSDTs). Also added support for wildcards within the AML 4515pathname. These features allow all machine tables to be easily loaded and 4516debugged together. ACPICA BZ 804. 4517 4518Disassembler: Added missing support for disassembly of HEST table Error 4519Bank 4520subtables. 4521 4522---------------------------------------- 452330 July 2009. Summary of changes for version 20090730: 4524 4525The ACPI 4.0 implementation for ACPICA is complete with this release. 4526 45271) ACPI CA Core Subsystem: 4528 4529ACPI 4.0: Added header file support for all new and changed ACPI tables. 4530Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 4531new 4532for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 4533BERT, 4534EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 4535There 4536have been some ACPI 4.0 changes to other existing tables. Split the large 4537actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 4538 4539ACPI 4.0: Implemented predefined name validation for all new names. There 4540are 454131 new names in ACPI 4.0. The predefined validation module was split into 4542two 4543files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 4544 4545Implemented support for so-called "module-level executable code". This is 4546executable AML code that exists outside of any control method and is 4547intended 4548to be executed at table load time. Although illegal since ACPI 2.0, this 4549type 4550of code still exists and is apparently still being created. Blocks of 4551this 4552code are now detected and executed as intended. Currently, the code 4553blocks 4554must exist under either an If, Else, or While construct; these are the 4555typical cases seen in the field. ACPICA BZ 762. Lin Ming. 4556 4557Implemented an automatic dynamic repair for predefined names that return 4558nested Package objects. This applies to predefined names that are defined 4559to 4560return a variable-length Package of sub-packages. If the number of sub- 4561packages is one, BIOS code is occasionally seen that creates a simple 4562single 4563package with no sub-packages. This code attempts to fix the problem by 4564wrapping a new package object around the existing package. These methods 4565can 4566be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 4567BZ 4568790. 4569 4570Fixed a regression introduced in 20090625 for the AcpiGetDevices 4571interface. 4572The _HID/_CID matching was broken and no longer matched IDs correctly. 4573ACPICA 4574BZ 793. 4575 4576Fixed a problem with AcpiReset where the reset would silently fail if the 4577register was one of the protected I/O ports. AcpiReset now bypasses the 4578port 4579validation mechanism. This may eventually be driven into the 4580AcpiRead/Write 4581interfaces. 4582 4583Fixed a regression related to the recent update of the AcpiRead/Write 4584interfaces. A sleep/suspend could fail if the optional PM2 Control 4585register 4586does not exist during an attempt to write the Bus Master Arbitration bit. 4587(However, some hosts already delete the code that writes this bit, and 4588the 4589code may in fact be obsolete at this date.) ACPICA BZ 799. 4590 4591Fixed a problem where AcpiTerminate could fault if inadvertently called 4592twice 4593in succession. ACPICA BZ 795. 4594 4595Example Code and Data Size: These are the sizes for the OS-independent 4596acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4597debug version of the code includes the debug output trace mechanism and 4598has a 4599much larger code and data size. 4600 4601 Previous Release: 4602 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 4603 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 4604 Current Release: 4605 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 4606 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 4607 46082) iASL Compiler/Disassembler and Tools: 4609 4610ACPI 4.0: Implemented disassembler support for all new ACPI tables and 4611changes to existing tables. ACPICA BZ 775. 4612 4613---------------------------------------- 461425 June 2009. Summary of changes for version 20090625: 4615 4616The ACPI 4.0 Specification was released on June 16 and is available at 4617www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 4618continue for the next few releases. 4619 46201) ACPI CA Core Subsystem: 4621 4622ACPI 4.0: Implemented interpreter support for the IPMI operation region 4623address space. Includes support for bi-directional data buffers and an 4624IPMI 4625address space handler (to be installed by an IPMI device driver.) ACPICA 4626BZ 4627773. Lin Ming. 4628 4629ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 4630Includes 4631support in both the header files and the disassembler. 4632 4633Completed a major update for the AcpiGetObjectInfo external interface. 4634Changes include: 4635 - Support for variable, unlimited length HID, UID, and CID strings. 4636 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 4637etc.) 4638 - Call the _SxW power methods on behalf of a device object. 4639 - Determine if a device is a PCI root bridge. 4640 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 4641These changes will require an update to all callers of this interface. 4642See 4643the updated ACPICA Programmer Reference for details. One new source file 4644has 4645been added - utilities/utids.c. ACPICA BZ 368, 780. 4646 4647Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 4648transfers. The Value parameter has been extended from 32 bits to 64 bits 4649in 4650order to support new ACPI 4.0 tables. These changes will require an 4651update 4652to 4653all callers of these interfaces. See the ACPICA Programmer Reference for 4654details. ACPICA BZ 768. 4655 4656Fixed several problems with AcpiAttachData. The handler was not invoked 4657when 4658the host node was deleted. The data sub-object was not automatically 4659deleted 4660when the host node was deleted. The interface to the handler had an 4661unused 4662parameter, this was removed. ACPICA BZ 778. 4663 4664Enhanced the function that dumps ACPI table headers. All non-printable 4665characters in the string fields are now replaced with '?' (Signature, 4666OemId, 4667OemTableId, and CompilerId.) ACPI tables with non-printable characters in 4668these fields are occasionally seen in the field. ACPICA BZ 788. 4669 4670Fixed a problem with predefined method repair code where the code that 4671attempts to repair/convert an object of incorrect type is only executed 4672on 4673the first time the predefined method is called. The mechanism that 4674disables 4675warnings on subsequent calls was interfering with the repair mechanism. 4676ACPICA BZ 781. 4677 4678Fixed a possible memory leak in the predefined validation/repair code 4679when 4680a 4681buffer is automatically converted to an expected string object. 4682 4683Removed obsolete 16-bit files from the distribution and from the current 4684git 4685tree head. ACPICA BZ 776. 4686 4687Example Code and Data Size: These are the sizes for the OS-independent 4688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4689debug version of the code includes the debug output trace mechanism and 4690has a 4691much larger code and data size. 4692 4693 Previous Release: 4694 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 4695 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 4696 Current Release: 4697 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 4698 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 4699 47002) iASL Compiler/Disassembler and Tools: 4701 4702ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 4703operation region keyword. ACPICA BZ 771, 772. Lin Ming. 4704 4705ACPI 4.0: iASL - implemented compile-time validation support for all new 4706predefined names and control methods (31 total). ACPICA BZ 769. 4707 4708---------------------------------------- 470921 May 2009. Summary of changes for version 20090521: 4710 47111) ACPI CA Core Subsystem: 4712 4713Disabled the preservation of the SCI enable bit in the PM1 control 4714register. 4715The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 4716to 4717be 4718a "preserved" bit - "OSPM always preserves this bit position", section 47194.7.3.2.1. However, some machines fail if this bit is in fact preserved 4720because the bit needs to be explicitly set by the OS as a workaround. No 4721machines fail if the bit is not preserved. Therefore, ACPICA no longer 4722attempts to preserve this bit. 4723 4724Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 4725incorrectly formed _PRT package could cause a fault. Added validation to 4726ensure that each package element is actually a sub-package. 4727 4728Implemented a new interface to install or override a single control 4729method, 4730AcpiInstallMethod. This interface is useful when debugging in order to 4731repair 4732an existing method or to install a missing method without having to 4733override 4734the entire ACPI table. See the ACPICA Programmer Reference for use and 4735examples. Lin Ming, Bob Moore. 4736 4737Fixed several reference count issues with the DdbHandle object that is 4738created from a Load or LoadTable operator. Prevent premature deletion of 4739the 4740object. Also, mark the object as invalid once the table has been 4741unloaded. 4742This is needed because the handle itself may not be deleted after the 4743table 4744unload, depending on whether it has been stored in a named object by the 4745caller. Lin Ming. 4746 4747Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 4748mutexes of the same sync level are acquired but then not released in 4749strict 4750opposite order, the internally maintained Current Sync Level becomes 4751confused 4752and can cause subsequent execution errors. ACPICA BZ 471. 4753 4754Changed the allowable release order for ASL mutex objects. The ACPI 4.0 4755specification has been changed to make the SyncLevel for mutex objects 4756more 4757useful. When releasing a mutex, the SyncLevel of the mutex must now be 4758the 4759same as the current sync level. This makes more sense than the previous 4760rule 4761(SyncLevel less than or equal). This change updates the code to match the 4762specification. 4763 4764Fixed a problem with the local version of the AcpiOsPurgeCache function. 4765The 4766(local) cache must be locked during all cache object deletions. Andrew 4767Baumann. 4768 4769Updated the Load operator to use operation region interfaces. This 4770replaces 4771direct memory mapping with region access calls. Now, all region accesses 4772go 4773through the installed region handler as they should. 4774 4775Simplified and optimized the NsGetNextNode function. Reduced parameter 4776count 4777and reduced code for this frequently used function. 4778 4779Example Code and Data Size: These are the sizes for the OS-independent 4780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4781debug version of the code includes the debug output trace mechanism and 4782has a 4783much larger code and data size. 4784 4785 Previous Release: 4786 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 4787 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 4788 Current Release: 4789 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 4790 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 4791 47922) iASL Compiler/Disassembler and Tools: 4793 4794Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 4795problems 4796with sub-table disassembly and handling invalid sub-tables. Attempt 4797recovery 4798after an invalid sub-table ID. 4799 4800---------------------------------------- 480122 April 2009. Summary of changes for version 20090422: 4802 48031) ACPI CA Core Subsystem: 4804 4805Fixed a compatibility issue with the recently released I/O port 4806protection 4807mechanism. For windows compatibility, 1) On a port protection violation, 4808simply ignore the request and do not return an exception (allow the 4809control 4810method to continue execution.) 2) If only part of the request overlaps a 4811protected port, read/write the individual ports that are not protected. 4812Linux 4813BZ 13036. Lin Ming 4814 4815Enhanced the execution of the ASL/AML BreakPoint operator so that it 4816actually 4817breaks into the AML debugger if the debugger is present. This matches the 4818ACPI-defined behavior. 4819 4820Fixed several possible warnings related to the use of the configurable 4821ACPI_THREAD_ID. This type can now be configured as either an integer or a 4822pointer with no warnings. Also fixes several warnings in printf-like 4823statements for the 64-bit build when the type is configured as a pointer. 4824ACPICA BZ 766, 767. 4825 4826Fixed a number of possible warnings when compiling with gcc 4+ (depending 4827on 4828warning options.) Examples include printf formats, aliasing, unused 4829globals, 4830missing prototypes, missing switch default statements, use of non-ANSI 4831library functions, use of non-ANSI constructs. See generate/unix/Makefile 4832for 4833a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 4834 4835Example Code and Data Size: These are the sizes for the OS-independent 4836acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4837debug version of the code includes the debug output trace mechanism and 4838has a 4839much larger code and data size. 4840 4841 Previous Release: 4842 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 4843 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 4844 Current Release: 4845 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 4846 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 4847 48482) iASL Compiler/Disassembler and Tools: 4849 4850iASL: Fixed a generation warning from Bison 2.3 and fixed several 4851warnings 4852on 4853the 64-bit build. 4854 4855iASL: Fixed a problem where the Unix/Linux versions of the compiler could 4856not 4857correctly digest Windows/DOS formatted files (with CR/LF). 4858 4859iASL: Added a new option for "quiet mode" (-va) that produces only the 4860compilation summary, not individual errors and warnings. Useful for large 4861batch compilations. 4862 4863AcpiExec: Implemented a new option (-z) to enable a forced 4864semaphore/mutex 4865timeout that can be used to detect hang conditions during execution of 4866AML 4867code (includes both internal semaphores and AML-defined mutexes and 4868events.) 4869 4870Added new makefiles for the generation of acpica in a generic unix-like 4871environment. These makefiles are intended to generate the acpica tools 4872and 4873utilities from the original acpica git source tree structure. 4874 4875Test Suites: Updated and cleaned up the documentation files. Updated the 4876copyrights to 2009, affecting all source files. Use the new version of 4877iASL 4878with quiet mode. Increased the number of available semaphores in the 4879Windows 4880OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 4881added 4882an alternate implementation of the semaphore timeout to allow aslts to 4883execute fully on Cygwin. 4884 4885---------------------------------------- 488620 March 2009. Summary of changes for version 20090320: 4887 48881) ACPI CA Core Subsystem: 4889 4890Fixed a possible race condition between AcpiWalkNamespace and dynamic 4891table 4892unloads. Added a reader/writer locking mechanism to allow multiple 4893concurrent 4894namespace walks (readers), but block a dynamic table unload until it can 4895gain 4896exclusive write access to the namespace. This fixes a problem where a 4897table 4898unload could (possibly catastrophically) delete the portion of the 4899namespace 4900that is currently being examined by a walk. Adds a new file, utlock.c, 4901that 4902implements the reader/writer lock mechanism. ACPICA BZ 749. 4903 4904Fixed a regression introduced in version 20090220 where a change to the 4905FADT 4906handling could cause the ACPICA subsystem to access non-existent I/O 4907ports. 4908 4909Modified the handling of FADT register and table (FACS/DSDT) addresses. 4910The 4911FADT can contain both 32-bit and 64-bit versions of these addresses. 4912Previously, the 64-bit versions were favored, meaning that if both 32 and 491364 4914versions were valid, but not equal, the 64-bit version was used. This was 4915found to cause some machines to fail. Now, in this case, the 32-bit 4916version 4917is used instead. This now matches the Windows behavior. 4918 4919Implemented a new mechanism to protect certain I/O ports. Provides 4920Microsoft 4921compatibility and protects the standard PC I/O ports from access via AML 4922code. Adds a new file, hwvalid.c 4923 4924Fixed a possible extraneous warning message from the FADT support. The 4925message warns of a 32/64 length mismatch between the legacy and GAS 4926definitions for a register. 4927 4928Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 4929is 4930made obsolete by the port protection mechanism above. It was previously 4931used 4932to validate the entire address range of an operation region, which could 4933be 4934incorrect if the range included illegal ports, but fields within the 4935operation region did not actually access those ports. Validation is now 4936performed on a per-field basis instead of the entire region. 4937 4938Modified the handling of the PM1 Status Register ignored bit (bit 11.) 4939Ignored bits must be "preserved" according to the ACPI spec. Usually, 4940this 4941means a read/modify/write when writing to the register. However, for 4942status 4943registers, writing a one means clear the event. Writing a zero means 4944preserve 4945the event (do not clear.) This behavior is clarified in the ACPI 4.0 4946spec, 4947and the ACPICA code now simply always writes a zero to the ignored bit. 4948 4949Modified the handling of ignored bits for the PM1 A/B Control Registers. 4950As 4951per the ACPI specification, for the control registers, preserve 4952(read/modify/write) all bits that are defined as either reserved or 4953ignored. 4954 4955Updated the handling of write-only bits in the PM1 A/B Control Registers. 4956When reading the register, zero the write-only bits as per the ACPI spec. 4957ACPICA BZ 443. Lin Ming. 4958 4959Removed "Linux" from the list of supported _OSI strings. Linux no longer 4960wants to reply true to this request. The Windows strings are the only 4961paths 4962through the AML that are tested and known to work properly. 4963 4964 Previous Release: 4965 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 4966 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 4967 Current Release: 4968 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 4969 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 4970 49712) iASL Compiler/Disassembler and Tools: 4972 4973Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 4974and 4975aetables.c 4976 4977---------------------------------------- 497820 February 2009. Summary of changes for version 20090220: 4979 49801) ACPI CA Core Subsystem: 4981 4982Optimized the ACPI register locking. Removed locking for reads from the 4983ACPI 4984bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 4985is 4986not required when reading the single-bit registers. The 4987AcpiGetRegisterUnlocked function is no longer needed and has been 4988removed. 4989This will improve performance for reads on these registers. ACPICA BZ 4990760. 4991 4992Fixed the parameter validation for AcpiRead/Write. Now return 4993AE_BAD_PARAMETER if the input register pointer is null, and 4994AE_BAD_ADDRESS 4995if 4996the register has an address of zero. Previously, these cases simply 4997returned 4998AE_OK. For optional registers such as PM1B status/enable/control, the 4999caller 5000should check for a valid register address before calling. ACPICA BZ 748. 5001 5002Renamed the external ACPI bit register access functions. Renamed 5003AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 5004functions. The new names are AcpiReadBitRegister and 5005AcpiWriteBitRegister. 5006Also, restructured the code for these functions by simplifying the code 5007path 5008and condensing duplicate code to reduce code size. 5009 5010Added new functions to transparently handle the possibly split PM1 A/B 5011registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 5012functions 5013now handle the split registers for PM1 Status, Enable, and Control. 5014ACPICA 5015BZ 5016746. 5017 5018Added a function to handle the PM1 control registers, 5019AcpiHwWritePm1Control. 5020This function writes both of the PM1 control registers (A/B). These 5021registers 5022are different than the PM1 A/B status and enable registers in that 5023different 5024values can be written to the A/B registers. Most notably, the SLP_TYP 5025bits 5026can be different, as per the values returned from the _Sx predefined 5027methods. 5028 5029Removed an extra register write within AcpiHwClearAcpiStatus. This 5030function 5031was writing an optional PM1B status register twice. The existing call to 5032the 5033low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 5034A/B 5035register. ACPICA BZ 751. 5036 5037Split out the PM1 Status registers from the FADT. Added new globals for 5038these 5039registers (A/B), similar to the way the PM1 Enable registers are handled. 5040Instead of overloading the FADT Event Register blocks. This makes the 5041code 5042clearer and less prone to error. 5043 5044Fixed the warning message for when the platform contains too many ACPI 5045tables 5046for the default size of the global root table data structure. The 5047calculation 5048for the truncation value was incorrect. 5049 5050Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 5051obsolete macro, since it is now a simple reference to ->common.type. 5052There 5053were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 5054 5055Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 5056TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 5057simply SLEEP_TYPE. ACPICA BZ 754. 5058 5059Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 5060function is only needed on 64-bit host operating systems and is thus not 5061included for 32-bit hosts. 5062 5063Debug output: print the input and result for invocations of the _OSI 5064reserved 5065control method via the ACPI_LV_INFO debug level. Also, reduced some of 5066the 5067verbosity of this debug level. Len Brown. 5068 5069Example Code and Data Size: These are the sizes for the OS-independent 5070acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5071debug version of the code includes the debug output trace mechanism and 5072has a 5073much larger code and data size. 5074 5075 Previous Release: 5076 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5077 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5078 Current Release: 5079 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5080 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5081 50822) iASL Compiler/Disassembler and Tools: 5083 5084Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 5085various legal performance profiles. 5086 5087---------------------------------------- 508823 January 2009. Summary of changes for version 20090123: 5089 50901) ACPI CA Core Subsystem: 5091 5092Added the 2009 copyright to all module headers and signons. This affects 5093virtually every file in the ACPICA core subsystem, the iASL compiler, and 5094the tools/utilities. 5095 5096Implemented a change to allow the host to override any ACPI table, 5097including 5098dynamically loaded tables. Previously, only the DSDT could be replaced by 5099the 5100host. With this change, the AcpiOsTableOverride interface is called for 5101each 5102table found in the RSDT/XSDT during ACPICA initialization, and also 5103whenever 5104a table is dynamically loaded via the AML Load operator. 5105 5106Updated FADT flag definitions, especially the Boot Architecture flags. 5107 5108Debugger: For the Find command, automatically pad the input ACPI name 5109with 5110underscores if the name is shorter than 4 characters. This enables a 5111match 5112with the actual namespace entry which is itself padded with underscores. 5113 5114Example Code and Data Size: These are the sizes for the OS-independent 5115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5116debug version of the code includes the debug output trace mechanism and 5117has a 5118much larger code and data size. 5119 5120 Previous Release: 5121 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5122 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5123 Current Release: 5124 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5125 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5126 51272) iASL Compiler/Disassembler and Tools: 5128 5129Fix build error under Bison-2.4. 5130 5131Dissasembler: Enhanced FADT support. Added decoding of the Boot 5132Architecture 5133flags. Now decode all flags, regardless of the FADT version. Flag output 5134includes the FADT version which first defined each flag. 5135 5136The iASL -g option now dumps the RSDT to a file (in addition to the FADT 5137and 5138DSDT). Windows only. 5139 5140---------------------------------------- 514104 December 2008. Summary of changes for version 20081204: 5142 51431) ACPI CA Core Subsystem: 5144 5145The ACPICA Programmer Reference has been completely updated and revamped 5146for 5147this release. This includes updates to the external interfaces, OSL 5148interfaces, the overview sections, and the debugger reference. 5149 5150Several new ACPICA interfaces have been implemented and documented in the 5151programmer reference: 5152AcpiReset - Writes the reset value to the FADT-defined reset register. 5153AcpiDisableAllGpes - Disable all available GPEs. 5154AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 5155AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 5156AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 5157AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 5158AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 5159 5160Most of the public ACPI hardware-related interfaces have been moved to a 5161new 5162file, components/hardware/hwxface.c 5163 5164Enhanced the FADT parsing and low-level ACPI register access: The ACPI 5165register lengths within the FADT are now used, and the low level ACPI 5166register access no longer hardcodes the ACPI register lengths. Given that 5167there may be some risk in actually trusting the FADT register lengths, a 5168run- 5169time option was added to fall back to the default hardcoded lengths if 5170the 5171FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 5172option is set to true for now, and a warning is issued if a suspicious 5173FADT 5174register length is overridden with the default value. 5175 5176Fixed a reference count issue in NsRepairObject. This problem was 5177introduced 5178in version 20081031 as part of a fix to repair Buffer objects within 5179Packages. Lin Ming. 5180 5181Added semaphore support to the Linux/Unix application OS-services layer 5182(OSL). ACPICA BZ 448. Lin Ming. 5183 5184Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 5185will 5186be implemented in the OSL, or will binary semaphores be used instead. 5187 5188Example Code and Data Size: These are the sizes for the OS-independent 5189acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5190debug version of the code includes the debug output trace mechanism and 5191has a 5192much larger code and data size. 5193 5194 Previous Release: 5195 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5196 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5197 Current Release: 5198 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5199 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5200 52012) iASL Compiler/Disassembler and Tools: 5202 5203iASL: Completed the '-e' option to include additional ACPI tables in 5204order 5205to 5206aid with disassembly and External statement generation. ACPICA BZ 742. 5207Lin 5208Ming. 5209 5210iASL: Removed the "named object in while loop" error. The compiler cannot 5211determine how many times a loop will execute. ACPICA BZ 730. 5212 5213Disassembler: Implemented support for FADT revision 2 (MS extension). 5214ACPICA 5215BZ 743. 5216 5217Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 5218MCFG). 5219 5220---------------------------------------- 522131 October 2008. Summary of changes for version 20081031: 5222 52231) ACPI CA Core Subsystem: 5224 5225Restructured the ACPICA header files into public/private. acpi.h now 5226includes 5227only the "public" acpica headers. All other acpica headers are "private" 5228and 5229should not be included by acpica users. One new file, accommon.h is used 5230to 5231include the commonly used private headers for acpica code generation. 5232Future 5233plans include moving all private headers to a new subdirectory. 5234 5235Implemented an automatic Buffer->String return value conversion for 5236predefined ACPI methods. For these methods (such as _BIF), added 5237automatic 5238conversion for return objects that are required to be a String, but a 5239Buffer 5240was found instead. This can happen when reading string battery data from 5241an 5242operation region, because it used to be difficult to convert the data 5243from 5244buffer to string from within the ASL. Ensures that the host OS is 5245provided 5246with a valid null-terminated string. Linux BZ 11822. 5247 5248Updated the FACS waking vector interfaces. Split 5249AcpiSetFirmwareWakingVector 5250into two: one for the 32-bit vector, another for the 64-bit vector. This 5251is 5252required because the host OS must setup the wake much differently for 5253each 5254vector (real vs. protected mode, etc.) and the interface itself should 5255not 5256be 5257deciding which vector to use. Also, eliminated the 5258GetFirmwareWakingVector 5259interface, as it served no purpose (only the firmware reads the vector, 5260OS 5261only writes the vector.) ACPICA BZ 731. 5262 5263Implemented a mechanism to escape infinite AML While() loops. Added a 5264loop 5265counter to force exit from AML While loops if the count becomes too 5266large. 5267This can occur in poorly written AML when the hardware does not respond 5268within a while loop and the loop does not implement a timeout. The 5269maximum 5270loop count is configurable. A new exception code is returned when a loop 5271is 5272broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 5273 5274Optimized the execution of AML While loops. Previously, a control state 5275object was allocated and freed for each execution of the loop. The 5276optimization is to simply reuse the control state for each iteration. 5277This 5278speeds up the raw loop execution time by about 5%. 5279 5280Enhanced the implicit return mechanism. For Windows compatibility, return 5281an 5282implicit integer of value zero for methods that contain no executable 5283code. 5284Such methods are seen in the field as stubs (presumably), and can cause 5285drivers to fail if they expect a return value. Lin Ming. 5286 5287Allow multiple backslashes as root prefixes in namepaths. In a fully 5288qualified namepath, allow multiple backslash prefixes. This can happen 5289(and 5290is seen in the field) because of the use of a double-backslash in strings 5291(since backslash is the escape character) causing confusion. ACPICA BZ 5292739 5293Lin Ming. 5294 5295Emit a warning if two different FACS or DSDT tables are discovered in the 5296FADT. Checks if there are two valid but different addresses for the FACS 5297and 5298DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 5299 5300Consolidated the method argument count validation code. Merged the code 5301that 5302validates control method argument counts into the predefined validation 5303module. Eliminates possible multiple warnings for incorrect argument 5304counts. 5305 5306Implemented ACPICA example code. Includes code for ACPICA initialization, 5307handler installation, and calling a control method. Available at 5308source/tools/examples. 5309 5310Added a global pointer for FACS table to simplify internal FACS access. 5311Use 5312the global pointer instead of using AcpiGetTableByIndex for each FACS 5313access. 5314This simplifies the code for the Global Lock and the Firmware Waking 5315Vector(s). 5316 5317Example Code and Data Size: These are the sizes for the OS-independent 5318acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5319debug version of the code includes the debug output trace mechanism and 5320has a 5321much larger code and data size. 5322 5323 Previous Release: 5324 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5325 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5326 Current Release: 5327 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5328 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5329 53302) iASL Compiler/Disassembler and Tools: 5331 5332iASL: Improved disassembly of external method calls. Added the -e option 5333to 5334allow the inclusion of additional ACPI tables to help with the 5335disassembly 5336of 5337method invocations and the generation of external declarations during the 5338disassembly. Certain external method invocations cannot be disassembled 5339properly without the actual declaration of the method. Use the -e option 5340to 5341include the table where the external method(s) are actually declared. 5342Most 5343useful for disassembling SSDTs that make method calls back to the master 5344DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 5345-d 5346-e dsdt.aml ssdt1.aml 5347 5348iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 5349problem where the use of an alias within a namepath would result in a not 5350found error or cause the compiler to fault. Also now allows forward 5351references from the Alias operator itself. ACPICA BZ 738. 5352 5353---------------------------------------- 535426 September 2008. Summary of changes for version 20080926: 5355 53561) ACPI CA Core Subsystem: 5357 5358Designed and implemented a mechanism to validate predefined ACPI methods 5359and 5360objects. This code validates the predefined ACPI objects (objects whose 5361names 5362start with underscore) that appear in the namespace, at the time they are 5363evaluated. The argument count and the type of the returned object are 5364validated against the ACPI specification. The purpose of this validation 5365is 5366to detect problems with the BIOS-implemented predefined ACPI objects 5367before 5368the results are returned to the ACPI-related drivers. Future enhancements 5369may 5370include actual repair of incorrect return objects where possible. Two new 5371files are nspredef.c and acpredef.h. 5372 5373Fixed a fault in the AML parser if a memory allocation fails during the 5374Op 5375completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 5376 5377Fixed an issue with implicit return compatibility. This change improves 5378the 5379implicit return mechanism to be more compatible with the MS interpreter. 5380Lin 5381Ming, ACPICA BZ 349. 5382 5383Implemented support for zero-length buffer-to-string conversions. Allow 5384zero 5385length strings during interpreter buffer-to-string conversions. For 5386example, 5387during the ToDecimalString and ToHexString operators, as well as implicit 5388conversions. Fiodor Suietov, ACPICA BZ 585. 5389 5390Fixed two possible memory leaks in the error exit paths of 5391AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 5392are 5393similar in that they use a stack of state objects in order to eliminate 5394recursion. The stack must be fully unwound and deallocated if an error 5395occurs. Lin Ming. ACPICA BZ 383. 5396 5397Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 5398global 5399ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 5400Moore ACPICA BZ 442. 5401 5402Removed the obsolete version number in module headers. Removed the 5403"$Revision" number that appeared in each module header. This version 5404number 5405was useful under SourceSafe and CVS, but has no meaning under git. It is 5406not 5407only incorrect, it could also be misleading. 5408 5409Example Code and Data Size: These are the sizes for the OS-independent 5410acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5411debug version of the code includes the debug output trace mechanism and 5412has a 5413much larger code and data size. 5414 5415 Previous Release: 5416 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5417 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 5418 Current Release: 5419 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5420 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5421 5422---------------------------------------- 542329 August 2008. Summary of changes for version 20080829: 5424 54251) ACPI CA Core Subsystem: 5426 5427Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 5428Reference. Changes include the elimination of cheating on the Object 5429field 5430for the DdbHandle subtype, addition of a reference class field to 5431differentiate the various reference types (instead of an AML opcode), and 5432the 5433cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 5434 5435Reduce an error to a warning for an incorrect method argument count. 5436Previously aborted with an error if too few arguments were passed to a 5437control method via the external ACPICA interface. Now issue a warning 5438instead 5439and continue. Handles the case where the method inadvertently declares 5440too 5441many arguments, but does not actually use the extra ones. Applies mainly 5442to 5443the predefined methods. Lin Ming. Linux BZ 11032. 5444 5445Disallow the evaluation of named object types with no intrinsic value. 5446Return 5447AE_TYPE for objects that have no value and therefore evaluation is 5448undefined: 5449Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 5450of 5451these types were allowed, but an exception would be generated at some 5452point 5453during the evaluation. Now, the error is generated up front. 5454 5455Fixed a possible memory leak in the AcpiNsGetExternalPathname function 5456(nsnames.c). Fixes a leak in the error exit path. 5457 5458Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 5459debug 5460levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 5461ACPI_EXCEPTION 5462interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 5463ACPI_LV_EVENTS. 5464 5465Removed obsolete and/or unused exception codes from the acexcep.h header. 5466There is the possibility that certain device drivers may be affected if 5467they 5468use any of these exceptions. 5469 5470The ACPICA documentation has been added to the public git source tree, 5471under 5472acpica/documents. Included are the ACPICA programmer reference, the iASL 5473compiler reference, and the changes.txt release logfile. 5474 5475Example Code and Data Size: These are the sizes for the OS-independent 5476acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5477debug version of the code includes the debug output trace mechanism and 5478has a 5479much larger code and data size. 5480 5481 Previous Release: 5482 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5483 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 5484 Current Release: 5485 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5486 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 5487 54882) iASL Compiler/Disassembler and Tools: 5489 5490Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 5491defines _SCP with 3 arguments. Previous versions defined it with only 1 5492argument. iASL now allows both definitions. 5493 5494iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 5495zero- 5496length subtables when disassembling ACPI tables. Also fixed a couple of 5497errors where a full 16-bit table type field was not extracted from the 5498input 5499properly. 5500 5501acpisrc: Improve comment counting mechanism for generating source code 5502statistics. Count first and last lines of multi-line comments as 5503whitespace, 5504not comment lines. Handle Linux legal header in addition to standard 5505acpica 5506header. 5507 5508---------------------------------------- 5509 551029 July 2008. Summary of changes for version 20080729: 5511 55121) ACPI CA Core Subsystem: 5513 5514Fix a possible deadlock in the GPE dispatch. Remove call to 5515AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 5516attempt 5517to acquire the GPE lock but can deadlock since the GPE lock is already 5518held 5519at dispatch time. This code was introduced in version 20060831 as a 5520response 5521to Linux BZ 6881 and has since been removed from Linux. 5522 5523Add a function to dereference returned reference objects. Examines the 5524return 5525object from a call to AcpiEvaluateObject. Any Index or RefOf references 5526are 5527automatically dereferenced in an attempt to return something useful 5528(these 5529reference types cannot be converted into an external ACPI_OBJECT.) 5530Provides 5531MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 5532 5533x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 5534subtables for the MADT and one new subtable for the SRAT. Includes 5535disassembler and AcpiSrc support. Data from the Intel 64 Architecture 5536x2APIC 5537Specification, June 2008. 5538 5539Additional error checking for pathname utilities. Add error check after 5540all 5541calls to AcpiNsGetPathnameLength. Add status return from 5542AcpiNsBuildExternalPath and check after all calls. Add parameter 5543validation 5544to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 5545 5546Return status from the global init function AcpiUtGlobalInitialize. This 5547is 5548used by both the kernel subsystem and the utilities such as iASL 5549compiler. 5550The function could possibly fail when the caches are initialized. Yang 5551Yi. 5552 5553Add a function to decode reference object types to strings. Created for 5554improved error messages. 5555 5556Improve object conversion error messages. Better error messages during 5557object 5558conversion from internal to the external ACPI_OBJECT. Used for external 5559calls 5560to AcpiEvaluateObject. 5561 5562Example Code and Data Size: These are the sizes for the OS-independent 5563acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5564debug version of the code includes the debug output trace mechanism and 5565has a 5566much larger code and data size. 5567 5568 Previous Release: 5569 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 5570 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 5571 Current Release: 5572 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5573 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 5574 55752) iASL Compiler/Disassembler and Tools: 5576 5577Debugger: fix a possible hang when evaluating non-methods. Fixes a 5578problem 5579introduced in version 20080701. If the object being evaluated (via 5580execute 5581command) is not a method, the debugger can hang while trying to obtain 5582non- 5583existent parameters. 5584 5585iASL: relax error for using reserved "_T_x" identifiers. These names can 5586appear in a disassembled ASL file if they were emitted by the original 5587compiler. Instead of issuing an error or warning and forcing the user to 5588manually change these names, issue a remark instead. 5589 5590iASL: error if named object created in while loop. Emit an error if any 5591named 5592object is created within a While loop. If allowed, this code will 5593generate 5594a 5595run-time error on the second iteration of the loop when an attempt is 5596made 5597to 5598create the same named object twice. ACPICA bugzilla 730. 5599 5600iASL: Support absolute pathnames for include files. Add support for 5601absolute 5602pathnames within the Include operator. previously, only relative 5603pathnames 5604were supported. 5605 5606iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 5607Descriptor. 5608The ACPI spec requires one interrupt minimum. BZ 423 5609 5610iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 5611Handles the case for the Interrupt Resource Descriptor where 5612the ResourceSource argument is omitted but ResourceSourceIndex 5613is present. Now leave room for the Index. BZ 426 5614 5615iASL: Prevent error message if CondRefOf target does not exist. Fixes 5616cases 5617where an error message is emitted if the target does not exist. BZ 516 5618 5619iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 5620(get ACPI tables on Windows). This was apparently broken in version 562120070919. 5622 5623AcpiXtract: Handle EOF while extracting data. Correctly handle the case 5624where 5625the EOF happens immediately after the last table in the input file. Print 5626completion message. Previously, no message was displayed in this case. 5627 5628---------------------------------------- 562901 July 2008. Summary of changes for version 20080701: 5630 56310) Git source tree / acpica.org 5632 5633Fixed a problem where a git-clone from http would not transfer the entire 5634source tree. 5635 56361) ACPI CA Core Subsystem: 5637 5638Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 5639enable bit. Now performs a read-change-write of the enable register 5640instead 5641of simply writing out the cached enable mask. This will prevent 5642inadvertent 5643enabling of GPEs if a rogue GPE is received during initialization (before 5644GPE 5645handlers are installed.) 5646 5647Implemented a copy for dynamically loaded tables. Previously, dynamically 5648loaded tables were simply mapped - but on some machines this memory is 5649corrupted after suspend. Now copy the table to a local buffer. For the 5650OpRegion case, added checksum verify. Use the table length from the table 5651header, not the region length. For the Buffer case, use the table length 5652also. Dennis Noordsij, Bob Moore. BZ 10734 5653 5654Fixed a problem where the same ACPI table could not be dynamically loaded 5655and 5656unloaded more than once. Without this change, a table cannot be loaded 5657again 5658once it has been loaded/unloaded one time. The current mechanism does not 5659unregister a table upon an unload. During a load, if the same table is 5660found, 5661this no longer returns an exception. BZ 722 5662 5663Fixed a problem where the wrong descriptor length was calculated for the 5664EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 5665EndTag 5666are calculated as 12 bytes long, but the actual length in the internal 5667descriptor is 16 because of the round-up to 8 on the 64-bit build. 5668Reported 5669by Linn Crosetto. BZ 728 5670 5671Fixed a possible memory leak in the Unload operator. The DdbHandle 5672returned 5673by Load() did not have its reference count decremented during unload, 5674leading 5675to a memory leak. Lin Ming. BZ 727 5676 5677Fixed a possible memory leak when deleting thermal/processor objects. Any 5678associated notify handlers (and objects) were not being deleted. Fiodor 5679Suietov. BZ 506 5680 5681Fixed the ordering of the ASCII names in the global mutex table to match 5682the 5683actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 5684only. 5685Vegard Nossum. BZ 726 5686 5687Enhanced the AcpiGetObjectInfo interface to return the number of required 5688arguments if the object is a control method. Added this call to the 5689debugger 5690so the proper number of default arguments are passed to a method. This 5691prevents a warning when executing methods from AcpiExec. 5692 5693Added a check for an invalid handle in AcpiGetObjectInfo. Return 5694AE_BAD_PARAMETER if input handle is invalid. BZ 474 5695 5696Fixed an extraneous warning from exconfig.c on the 64-bit build. 5697 5698Example Code and Data Size: These are the sizes for the OS-independent 5699acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5700debug version of the code includes the debug output trace mechanism and 5701has a 5702much larger code and data size. 5703 5704 Previous Release: 5705 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 5706 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 5707 Current Release: 5708 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 5709 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 5710 57112) iASL Compiler/Disassembler and Tools: 5712 5713iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 5714resource descriptor names. 5715 5716iASL: Detect invalid ASCII characters in input (windows version). Removed 5717the 5718"-CF" flag from the flex compile, enables correct detection of non-ASCII 5719characters in the input. BZ 441 5720 5721iASL: Eliminate warning when result of LoadTable is not used. Eliminate 5722the 5723"result of operation not used" warning when the DDB handle returned from 5724LoadTable is not used. The warning is not needed. BZ 590 5725 5726AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 5727method 5728to 5729pass address of table to the AML. Added option to disable OpRegion 5730simulation 5731to allow creation of an OpRegion with a real address that was passed to 5732_CFG. 5733All of this allows testing of the Load and Unload operators from 5734AcpiExec. 5735 5736Debugger: update tables command for unloaded tables. Handle unloaded 5737tables 5738and use the standard table header output routine. 5739 5740---------------------------------------- 574109 June 2008. Summary of changes for version 20080609: 5742 57431) ACPI CA Core Subsystem: 5744 5745Implemented a workaround for reversed _PRT entries. A significant number 5746of 5747BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 5748change dynamically detects and repairs this problem. Provides 5749compatibility 5750with MS ACPI. BZ 6859 5751 5752Simplified the internal ACPI hardware interfaces to eliminate the locking 5753flag parameter from Register Read/Write. Added a new external interface, 5754AcpiGetRegisterUnlocked. 5755 5756Fixed a problem where the invocation of a GPE control method could hang. 5757This 5758was a regression introduced in 20080514. The new method argument count 5759validation mechanism can enter an infinite loop when a GPE method is 5760dispatched. Problem fixed by removing the obsolete code that passed GPE 5761block 5762information to the notify handler via the control method parameter 5763pointer. 5764 5765Fixed a problem where the _SST execution status was incorrectly returned 5766to 5767the caller of AcpiEnterSleepStatePrep. This was a regression introduced 5768in 576920080514. _SST is optional and a NOT_FOUND exception should never be 5770returned. BZ 716 5771 5772Fixed a problem where a deleted object could be accessed from within the 5773AML 5774parser. This was a regression introduced in version 20080123 as a fix for 5775the 5776Unload operator. Lin Ming. BZ 10669 5777 5778Cleaned up the debug operand dump mechanism. Eliminated unnecessary 5779operands 5780and eliminated the use of a negative index in a loop. Operands are now 5781displayed in the correct order, not backwards. This also fixes a 5782regression 5783introduced in 20080514 on 64-bit systems where the elimination of 5784ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 5785715 5786 5787Fixed a possible memory leak in EvPciConfigRegionSetup where the error 5788exit 5789path did not delete a locally allocated structure. 5790 5791Updated definitions for the DMAR and SRAT tables to synchronize with the 5792current specifications. Includes disassembler support. 5793 5794Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 5795loop termination value was used. Loop terminated on iteration early, 5796missing 5797one mutex. Linn Crosetto 5798 5799Example Code and Data Size: These are the sizes for the OS-independent 5800acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5801debug version of the code includes the debug output trace mechanism and 5802has a 5803much larger code and data size. 5804 5805 Previous Release: 5806 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 5807 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 5808 Current Release: 5809 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 5810 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 5811 58122) iASL Compiler/Disassembler and Tools: 5813 5814Disassembler: Implemented support for EisaId() within _CID objects. Now 5815disassemble integer _CID objects back to EisaId invocations, including 5816multiple integers within _CID packages. Includes single-step support for 5817debugger also. 5818 5819Disassembler: Added support for DMAR and SRAT table definition changes. 5820 5821---------------------------------------- 582214 May 2008. Summary of changes for version 20080514: 5823 58241) ACPI CA Core Subsystem: 5825 5826Fixed a problem where GPEs were enabled too early during the ACPICA 5827initialization. This could lead to "handler not installed" errors on some 5828machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 5829This 5830ensures that all operation regions and devices throughout the namespace 5831have 5832been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 5833 5834Implemented a change to the enter sleep code. Moved execution of the _GTS 5835method to just before setting sleep enable bit. The execution was moved 5836from 5837AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 5838immediately before the SLP_EN bit is set, as per the ACPI specification. 5839Luming Yu, BZ 1653. 5840 5841Implemented a fix to disable unknown GPEs (2nd version). Now always 5842disable 5843the GPE, even if ACPICA thinks that that it is already disabled. It is 5844possible that the AML or some other code has enabled the GPE unbeknownst 5845to 5846the ACPICA code. 5847 5848Fixed a problem with the Field operator where zero-length fields would 5849return 5850an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 5851ASL 5852field declarations in Field(), BankField(), and IndexField(). BZ 10606. 5853 5854Implemented a fix for the Load operator, now load the table at the 5855namespace 5856root. This reverts a change introduced in version 20071019. The table is 5857now 5858loaded at the namespace root even though this goes against the ACPI 5859specification. This provides compatibility with other ACPI 5860implementations. 5861The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 5862Ming. 5863 5864Fixed a problem where ACPICA would not Load() tables with unusual 5865signatures. 5866Now ignore ACPI table signature for Load() operator. Only "SSDT" is 5867acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 5868Therefore, signature validation is worthless. Apparently MS ACPI accepts 5869such 5870signatures, ACPICA must be compatible. BZ 10454. 5871 5872Fixed a possible negative array index in AcpiUtValidateException. Added 5873NULL 5874fields to the exception string arrays to eliminate a -1 subtraction on 5875the 5876SubStatus field. 5877 5878Updated the debug tracking macros to reduce overall code and data size. 5879Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 5880instead of pointers to static strings. Jan Beulich and Bob Moore. 5881 5882Implemented argument count checking in control method invocation via 5883AcpiEvaluateObject. Now emit an error if too few arguments, warning if 5884too 5885many. This applies only to extern programmatic control method execution, 5886not 5887method-to-method calls within the AML. Lin Ming. 5888 5889Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 5890no 5891longer needed, especially with the removal of 16-bit support. It was 5892replaced 5893mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 5894bit 5895on 589632/64-bit platforms is required. 5897 5898Added the C const qualifier for appropriate string constants -- mostly 5899MODULE_NAME and printf format strings. Jan Beulich. 5900 5901Example Code and Data Size: These are the sizes for the OS-independent 5902acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5903debug version of the code includes the debug output trace mechanism and 5904has a 5905much larger code and data size. 5906 5907 Previous Release: 5908 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 5909 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 5910 Current Release: 5911 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 5912 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 5913 59142) iASL Compiler/Disassembler and Tools: 5915 5916Implemented ACPI table revision ID validation in the disassembler. Zero 5917is 5918always invalid. For DSDTs, the ID controls the interpreter integer width. 59191 5920means 32-bit and this is unusual. 2 or greater is 64-bit. 5921 5922---------------------------------------- 592321 March 2008. Summary of changes for version 20080321: 5924 59251) ACPI CA Core Subsystem: 5926 5927Implemented an additional change to the GPE support in order to suppress 5928spurious or stray GPEs. The AcpiEvDisableGpe function will now 5929permanently 5930disable incoming GPEs that are neither enabled nor disabled -- meaning 5931that 5932the GPE is unknown to the system. This should prevent future interrupt 5933floods 5934from that GPE. BZ 6217 (Zhang Rui) 5935 5936Fixed a problem where NULL package elements were not returned to the 5937AcpiEvaluateObject interface correctly. The element was simply ignored 5938instead of returning a NULL ACPI_OBJECT package element, potentially 5939causing 5940a buffer overflow and/or confusing the caller who expected a fixed number 5941of 5942elements. BZ 10132 (Lin Ming, Bob Moore) 5943 5944Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 5945Dword, 5946Qword), Field, BankField, and IndexField operators when invoked from 5947inside 5948an executing control method. In this case, these operators created 5949namespace 5950nodes that were incorrectly left marked as permanent nodes instead of 5951temporary nodes. This could cause a problem if there is race condition 5952between an exiting control method and a running namespace walk. (Reported 5953by 5954Linn Crosetto) 5955 5956Fixed a problem where the CreateField and CreateXXXField operators would 5957incorrectly allow duplicate names (the name of the field) with no 5958exception 5959generated. 5960 5961Implemented several changes for Notify handling. Added support for new 5962Notify 5963values (ACPI 2.0+) and improved the Notify debug output. Notify on 5964PowerResource objects is no longer allowed, as per the ACPI 5965specification. 5966(Bob Moore, Zhang Rui) 5967 5968All Reference Objects returned via the AcpiEvaluateObject interface are 5969now 5970marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 5971for 5972NULL objects - either NULL package elements or unresolved named 5973references. 5974 5975Fixed a problem where an extraneous debug message was produced for 5976package 5977objects (when debugging enabled). The message "Package List length larger 5978than NumElements count" is now produced in the correct case, and is now 5979an 5980error message rather than a debug message. Added a debug message for the 5981opposite case, where NumElements is larger than the Package List (the 5982package 5983will be padded out with NULL elements as per the ACPI spec.) 5984 5985Implemented several improvements for the output of the ASL "Debug" object 5986to 5987clarify and keep all data for a given object on one output line. 5988 5989Fixed two size calculation issues with the variable-length Start 5990Dependent 5991resource descriptor. 5992 5993Example Code and Data Size: These are the sizes for the OS-independent 5994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5995debug version of the code includes the debug output trace mechanism and 5996has 5997a much larger code and data size. 5998 5999 Previous Release: 6000 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6001 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6002 Current Release: 6003 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6004 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6005 60062) iASL Compiler/Disassembler and Tools: 6007 6008Fixed a problem with the use of the Switch operator where execution of 6009the 6010containing method by multiple concurrent threads could cause an 6011AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 6012actual Switch opcode, it must be simulated with local named temporary 6013variables and if/else pairs. The solution chosen was to mark any method 6014that 6015uses Switch as Serialized, thus preventing multiple thread entries. BZ 6016469. 6017 6018---------------------------------------- 601913 February 2008. Summary of changes for version 20080213: 6020 60211) ACPI CA Core Subsystem: 6022 6023Implemented another MS compatibility design change for GPE/Notify 6024handling. 6025GPEs are now cleared/enabled asynchronously to allow all pending notifies 6026to 6027complete first. It is expected that the OSL will queue the enable request 6028behind all pending notify requests (may require changes to the local host 6029OSL 6030in AcpiOsExecute). Alexey Starikovskiy. 6031 6032Fixed a problem where buffer and package objects passed as arguments to a 6033control method via the external AcpiEvaluateObject interface could cause 6034an 6035AE_AML_INTERNAL exception depending on the order and type of operators 6036executed by the target control method. 6037 6038Fixed a problem where resource descriptor size optimization could cause a 6039problem when a _CRS resource template is passed to a _SRS method. The 6040_SRS 6041resource template must use the same descriptors (with the same size) as 6042returned from _CRS. This change affects the following resource 6043descriptors: 6044IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 60459487) 6046 6047Fixed a problem where a CopyObject to RegionField, BankField, and 6048IndexField 6049objects did not perform an implicit conversion as it should. These types 6050must 6051retain their initial type permanently as per the ACPI specification. 6052However, 6053a CopyObject to all other object types should not perform an implicit 6054conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 6055 6056Fixed a problem with the AcpiGetDevices interface where the mechanism to 6057match device CIDs did not examine the entire list of available CIDs, but 6058instead aborted on the first non-matching CID. Andrew Patterson. 6059 6060Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 6061was 6062inadvertently changed to return a 16-bit value instead of a 32-bit value, 6063truncating the upper dword of a 64-bit value. This macro is only used to 6064display debug output, so no incorrect calculations were made. Also, 6065reimplemented the macro so that a 64-bit shift is not performed by 6066inefficient compilers. 6067 6068Added missing va_end statements that should correspond with each va_start 6069statement. 6070 6071Example Code and Data Size: These are the sizes for the OS-independent 6072acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6073debug version of the code includes the debug output trace mechanism and 6074has 6075a much larger code and data size. 6076 6077 Previous Release: 6078 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6079 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6080 Current Release: 6081 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6082 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6083 60842) iASL Compiler/Disassembler and Tools: 6085 6086Implemented full disassembler support for the following new ACPI tables: 6087BERT, EINJ, and ERST. Implemented partial disassembler support for the 6088complicated HEST table. These tables support the Windows Hardware Error 6089Architecture (WHEA). 6090 6091---------------------------------------- 609223 January 2008. Summary of changes for version 20080123: 6093 60941) ACPI CA Core Subsystem: 6095 6096Added the 2008 copyright to all module headers and signons. This affects 6097virtually every file in the ACPICA core subsystem, the iASL compiler, and 6098the tools/utilities. 6099 6100Fixed a problem with the SizeOf operator when used with Package and 6101Buffer 6102objects. These objects have deferred execution for some arguments, and 6103the 6104execution is now completed before the SizeOf is executed. This problem 6105caused 6106unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 6107BZ 61089558 6109 6110Implemented an enhancement to the interpreter "slack mode". In the 6111absence 6112of 6113an explicit return or an implicitly returned object from the last 6114executed 6115opcode, a control method will now implicitly return an integer of value 0 6116for 6117Microsoft compatibility. (Lin Ming) BZ 392 6118 6119Fixed a problem with the Load operator where an exception was not 6120returned 6121in 6122the case where the table is already loaded. (Lin Ming) BZ 463 6123 6124Implemented support for the use of DDBHandles as an Indexed Reference, as 6125per 6126the ACPI spec. (Lin Ming) BZ 486 6127 6128Implemented support for UserTerm (Method invocation) for the Unload 6129operator 6130as per the ACPI spec. (Lin Ming) BZ 580 6131 6132Fixed a problem with the LoadTable operator where the OemId and 6133OemTableId 6134input strings could cause unexpected failures if they were shorter than 6135the 6136maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 6137 6138Implemented support for UserTerm (Method invocation) for the Unload 6139operator 6140as per the ACPI spec. (Lin Ming) BZ 580 6141 6142Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 6143HEST, 6144IBFT, UEFI, WDAT. Disassembler support is forthcoming. 6145 6146Example Code and Data Size: These are the sizes for the OS-independent 6147acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6148debug version of the code includes the debug output trace mechanism and 6149has 6150a much larger code and data size. 6151 6152 Previous Release: 6153 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6154 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6155 Current Release: 6156 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6157 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6158 61592) iASL Compiler/Disassembler and Tools: 6160 6161Implemented support in the disassembler for checksum validation on 6162incoming 6163binary DSDTs and SSDTs. If incorrect, a message is displayed within the 6164table 6165header dump at the start of the disassembly. 6166 6167Implemented additional debugging information in the namespace listing 6168file 6169created during compilation. In addition to the namespace hierarchy, the 6170full 6171pathname to each namespace object is displayed. 6172 6173Fixed a problem with the disassembler where invalid ACPI tables could 6174cause 6175faults or infinite loops. 6176 6177Fixed an unexpected parse error when using the optional "parameter types" 6178list in a control method declaration. (Lin Ming) BZ 397 6179 6180Fixed a problem where two External declarations with the same name did 6181not 6182cause an error (Lin Ming) BZ 509 6183 6184Implemented support for full TermArgs (adding Argx, Localx and method 6185invocation) for the ParameterData parameter to the LoadTable operator. 6186(Lin 6187Ming) BZ 583,587 6188 6189---------------------------------------- 619019 December 2007. Summary of changes for version 20071219: 6191 61921) ACPI CA Core Subsystem: 6193 6194Implemented full support for deferred execution for the TermArg string 6195arguments for DataTableRegion. This enables forward references and full 6196operand resolution for the three string arguments. Similar to 6197OperationRegion 6198deferred argument execution.) Lin Ming. BZ 430 6199 6200Implemented full argument resolution support for the BankValue argument 6201to 6202BankField. Previously, only constants were supported, now any TermArg may 6203be 6204used. Lin Ming BZ 387, 393 6205 6206Fixed a problem with AcpiGetDevices where the search of a branch of the 6207device tree could be terminated prematurely. In accordance with the ACPI 6208specification, the search down the current branch is terminated if a 6209device 6210is both not present and not functional (instead of just not present.) 6211Yakui 6212Zhao. 6213 6214Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 6215if 6216the underlying AML code changed the GPE enable registers. Now, any 6217unknown 6218incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 6219disabled 6220instead of simply ignored. Rui Zhang. 6221 6222Fixed a problem with Index Fields where the Index register was 6223incorrectly 6224limited to a maximum of 32 bits. Now any size may be used. 6225 6226Fixed a couple memory leaks associated with "implicit return" objects 6227when 6228the AML Interpreter slack mode is enabled. Lin Ming BZ 349 6229 6230Example Code and Data Size: These are the sizes for the OS-independent 6231acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6232debug version of the code includes the debug output trace mechanism and 6233has 6234a much larger code and data size. 6235 6236 Previous Release: 6237 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6238 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6239 Current Release: 6240 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6241 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6242 6243---------------------------------------- 624414 November 2007. Summary of changes for version 20071114: 6245 62461) ACPI CA Core Subsystem: 6247 6248Implemented event counters for each of the Fixed Events, the ACPI SCI 6249(interrupt) itself, and control methods executed. Named 6250AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 6251These 6252should be useful for debugging and statistics. 6253 6254Implemented a new external interface, AcpiGetStatistics, to retrieve the 6255contents of the various event counters. Returns the current values for 6256AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 6257AcpiMethodCount. The interface can be expanded in the future if new 6258counters 6259are added. Device drivers should use this interface rather than access 6260the 6261counters directly. 6262 6263Fixed a problem with the FromBCD and ToBCD operators. With some 6264compilers, 6265the ShortDivide function worked incorrectly, causing problems with the 6266BCD 6267functions with large input values. A truncation from 64-bit to 32-bit 6268inadvertently occurred. Internal BZ 435. Lin Ming 6269 6270Fixed a problem with Index references passed as method arguments. 6271References 6272passed as arguments to control methods were dereferenced immediately 6273(before 6274control was passed to the called method). The references are now 6275correctly 6276passed directly to the called method. BZ 5389. Lin Ming 6277 6278Fixed a problem with CopyObject used in conjunction with the Index 6279operator. 6280The reference was incorrectly dereferenced before the copy. The reference 6281is 6282now correctly copied. BZ 5391. Lin Ming 6283 6284Fixed a problem with Control Method references within Package objects. 6285These 6286references are now correctly generated. This completes the package 6287construction overhaul that began in version 20071019. 6288 6289Example Code and Data Size: These are the sizes for the OS-independent 6290acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6291debug version of the code includes the debug output trace mechanism and 6292has 6293a much larger code and data size. 6294 6295 Previous Release: 6296 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6297 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6298 Current Release: 6299 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6300 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6301 6302 63032) iASL Compiler/Disassembler and Tools: 6304 6305The AcpiExec utility now installs handlers for all of the predefined 6306Operation Region types. New types supported are: PCI_Config, CMOS, and 6307PCIBARTarget. 6308 6309Fixed a problem with the 64-bit version of AcpiExec where the extended 6310(64- 6311bit) address fields for the DSDT and FACS within the FADT were not being 6312used, causing truncation of the upper 32-bits of these addresses. Lin 6313Ming 6314and Bob Moore 6315 6316---------------------------------------- 631719 October 2007. Summary of changes for version 20071019: 6318 63191) ACPI CA Core Subsystem: 6320 6321Fixed a problem with the Alias operator when the target of the alias is a 6322named ASL operator that opens a new scope -- Scope, Device, 6323PowerResource, 6324Processor, and ThermalZone. In these cases, any children of the original 6325operator could not be accessed via the alias, potentially causing 6326unexpected 6327AE_NOT_FOUND exceptions. (BZ 9067) 6328 6329Fixed a problem with the Package operator where all named references were 6330created as object references and left otherwise unresolved. According to 6331the 6332ACPI specification, a Package can only contain Data Objects or references 6333to 6334control methods. The implication is that named references to Data Objects 6335(Integer, Buffer, String, Package, BufferField, Field) should be resolved 6336immediately upon package creation. This is the approach taken with this 6337change. References to all other named objects (Methods, Devices, Scopes, 6338etc.) are all now properly created as reference objects. (BZ 5328) 6339 6340Reverted a change to Notify handling that was introduced in version 634120070508. This version changed the Notify handling from asynchronous to 6342fully synchronous (Device driver Notify handling with respect to the 6343Notify 6344ASL operator). It was found that this change caused more problems than it 6345solved and was removed by most users. 6346 6347Fixed a problem with the Increment and Decrement operators where the type 6348of 6349the target object could be unexpectedly and incorrectly changed. (BZ 353) 6350Lin Ming. 6351 6352Fixed a problem with the Load and LoadTable operators where the table 6353location within the namespace was ignored. Instead, the table was always 6354loaded into the root or current scope. Lin Ming. 6355 6356Fixed a problem with the Load operator when loading a table from a buffer 6357object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 6358 6359Fixed a problem with the Debug object where a store of a DdbHandle 6360reference 6361object to the Debug object could cause a fault. 6362 6363Added a table checksum verification for the Load operator, in the case 6364where 6365the load is from a buffer. (BZ 578). 6366 6367Implemented additional parameter validation for the LoadTable operator. 6368The 6369length of the input strings SignatureString, OemIdString, and OemTableId 6370are 6371now checked for maximum lengths. (BZ 582) Lin Ming. 6372 6373Example Code and Data Size: These are the sizes for the OS-independent 6374acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6375debug version of the code includes the debug output trace mechanism and 6376has 6377a much larger code and data size. 6378 6379 Previous Release: 6380 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6381 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6382 Current Release: 6383 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6384 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6385 6386 63872) iASL Compiler/Disassembler: 6388 6389Fixed a problem where if a single file was specified and the file did not 6390exist, no error message was emitted. (Introduced with wildcard support in 6391version 20070917.) 6392 6393---------------------------------------- 639419 September 2007. Summary of changes for version 20070919: 6395 63961) ACPI CA Core Subsystem: 6397 6398Designed and implemented new external interfaces to install and remove 6399handlers for ACPI table-related events. Current events that are defined 6400are 6401LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 6402they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 6403AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 6404 6405Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 6406(acpi_serialized option on Linux) could cause some systems to hang during 6407initialization. (Bob Moore) BZ 8171 6408 6409Fixed a problem where objects of certain types (Device, ThermalZone, 6410Processor, PowerResource) can be not found if they are declared and 6411referenced from within the same control method (Lin Ming) BZ 341 6412 6413Example Code and Data Size: These are the sizes for the OS-independent 6414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6415debug version of the code includes the debug output trace mechanism and 6416has 6417a much larger code and data size. 6418 6419 Previous Release: 6420 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 6421 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 6422 Current Release: 6423 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6424 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6425 6426 64272) iASL Compiler/Disassembler: 6428 6429Implemented support to allow multiple files to be compiled/disassembled 6430in 6431a 6432single invocation. This includes command line wildcard support for both 6433the 6434Windows and Unix versions of the compiler. This feature simplifies the 6435disassembly and compilation of multiple ACPI tables in a single 6436directory. 6437 6438---------------------------------------- 643908 May 2007. Summary of changes for version 20070508: 6440 64411) ACPI CA Core Subsystem: 6442 6443Implemented a Microsoft compatibility design change for the handling of 6444the 6445Notify AML operator. Previously, notify handlers were dispatched and 6446executed completely asynchronously in a deferred thread. The new design 6447still executes the notify handlers in a different thread, but the 6448original 6449thread that executed the Notify() now waits at a synchronization point 6450for 6451the notify handler to complete. Some machines depend on a synchronous 6452Notify 6453operator in order to operate correctly. 6454 6455Implemented support to allow Package objects to be passed as method 6456arguments to the external AcpiEvaluateObject interface. Previously, this 6457would return the AE_NOT_IMPLEMENTED exception. This feature had not been 6458implemented since there were no reserved control methods that required it 6459until recently. 6460 6461Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 6462that 6463contained invalid non-zero values in reserved fields could cause later 6464failures because these fields have meaning in later revisions of the 6465FADT. 6466For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 6467fields 6468are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 6469 6470Fixed a problem where the Global Lock handle was not properly updated if 6471a 6472thread that acquired the Global Lock via executing AML code then 6473attempted 6474to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 6475Joe 6476Liu. 6477 6478Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 6479could be corrupted if the interrupt being removed was at the head of the 6480list. Reported by Linn Crosetto. 6481 6482Example Code and Data Size: These are the sizes for the OS-independent 6483acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6484debug version of the code includes the debug output trace mechanism and 6485has 6486a much larger code and data size. 6487 6488 Previous Release: 6489 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6490 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 6491 Current Release: 6492 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 6493 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 6494 6495---------------------------------------- 649620 March 2007. Summary of changes for version 20070320: 6497 64981) ACPI CA Core Subsystem: 6499 6500Implemented a change to the order of interpretation and evaluation of AML 6501operand objects within the AML interpreter. The interpreter now evaluates 6502operands in the order that they appear in the AML stream (and the 6503corresponding ASL code), instead of in the reverse order (after the 6504entire 6505operand list has been parsed). The previous behavior caused several 6506subtle 6507incompatibilities with the Microsoft AML interpreter as well as being 6508somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 6509 6510Implemented a change to the ACPI Global Lock support. All interfaces to 6511the 6512global lock now allow the same thread to acquire the lock multiple times. 6513This affects the AcpiAcquireGlobalLock external interface to the global 6514lock 6515as well as the internal use of the global lock to support AML fields -- a 6516control method that is holding the global lock can now simultaneously 6517access 6518AML fields that require global lock protection. Previously, in both 6519cases, 6520this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 6521to 6522AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 6523Controller. There is no change to the behavior of the AML Acquire 6524operator, 6525as this can already be used to acquire a mutex multiple times by the same 6526thread. BZ 8066. With assistance from Alexey Starikovskiy. 6527 6528Fixed a problem where invalid objects could be referenced in the AML 6529Interpreter after error conditions. During operand evaluation, ensure 6530that 6531the internal "Return Object" field is cleared on error and only valid 6532pointers are stored there. Caused occasional access to deleted objects 6533that 6534resulted in "large reference count" warning messages. Valery Podrezov. 6535 6536Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 6537on 6538deeply nested control method invocations. BZ 7873, local BZ 487. Valery 6539Podrezov. 6540 6541Fixed an internal problem with the handling of result objects on the 6542interpreter result stack. BZ 7872. Valery Podrezov. 6543 6544Removed obsolete code that handled the case where AML_NAME_OP is the 6545target 6546of a reference (Reference.Opcode). This code was no longer necessary. BZ 65477874. Valery Podrezov. 6548 6549Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 6550was 6551a 6552remnant from the previously discontinued 16-bit support. 6553 6554Example Code and Data Size: These are the sizes for the OS-independent 6555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6556debug version of the code includes the debug output trace mechanism and 6557has 6558a much larger code and data size. 6559 6560 Previous Release: 6561 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6562 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6563 Current Release: 6564 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6565 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 6566 6567---------------------------------------- 656826 January 2007. Summary of changes for version 20070126: 6569 65701) ACPI CA Core Subsystem: 6571 6572Added the 2007 copyright to all module headers and signons. This affects 6573virtually every file in the ACPICA core subsystem, the iASL compiler, and 6574the utilities. 6575 6576Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 6577during a table load. A bad pointer was passed in the case where the DSDT 6578is 6579overridden, causing a fault in this case. 6580 6581Example Code and Data Size: These are the sizes for the OS-independent 6582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6583debug version of the code includes the debug output trace mechanism and 6584has 6585a much larger code and data size. 6586 6587 Previous Release: 6588 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6589 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6590 Current Release: 6591 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6592 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6593 6594---------------------------------------- 659515 December 2006. Summary of changes for version 20061215: 6596 65971) ACPI CA Core Subsystem: 6598 6599Support for 16-bit ACPICA has been completely removed since it is no 6600longer 6601necessary and it clutters the code. All 16-bit macros, types, and 6602conditional compiles have been removed, cleaning up and simplifying the 6603code 6604across the entire subsystem. DOS support is no longer needed since the 6605bootable Linux firmware kit is now available. 6606 6607The handler for the Global Lock is now removed during AcpiTerminate to 6608enable a clean subsystem restart, via the implementation of the 6609AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 6610HP) 6611 6612Implemented enhancements to the multithreading support within the 6613debugger 6614to enable improved multithreading debugging and evaluation of the 6615subsystem. 6616(Valery Podrezov) 6617 6618Debugger: Enhanced the Statistics/Memory command to emit the total 6619(maximum) 6620memory used during the execution, as well as the maximum memory consumed 6621by 6622each of the various object types. (Valery Podrezov) 6623 6624Example Code and Data Size: These are the sizes for the OS-independent 6625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6626debug version of the code includes the debug output trace mechanism and 6627has 6628a much larger code and data size. 6629 6630 Previous Release: 6631 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 6632 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 6633 Current Release: 6634 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6635 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6636 6637 66382) iASL Compiler/Disassembler and Tools: 6639 6640AcpiExec: Implemented a new option (-m) to display full memory use 6641statistics upon subsystem/program termination. (Valery Podrezov) 6642 6643---------------------------------------- 664409 November 2006. Summary of changes for version 20061109: 6645 66461) ACPI CA Core Subsystem: 6647 6648Optimized the Load ASL operator in the case where the source operand is 6649an 6650operation region. Simply map the operation region memory, instead of 6651performing a bytewise read. (Region must be of type SystemMemory, see 6652below.) 6653 6654Fixed the Load ASL operator for the case where the source operand is a 6655region field. A buffer object is also allowed as the source operand. BZ 6656480 6657 6658Fixed a problem where the Load ASL operator allowed the source operand to 6659be 6660an operation region of any type. It is now restricted to regions of type 6661SystemMemory, as per the ACPI specification. BZ 481 6662 6663Additional cleanup and optimizations for the new Table Manager code. 6664 6665AcpiEnable will now fail if all of the required ACPI tables are not 6666loaded 6667(FADT, FACS, DSDT). BZ 477 6668 6669Added #pragma pack(8/4) to acobject.h to ensure that the structures in 6670this 6671header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 6672manually optimized to be aligned and will not work if it is byte-packed. 6673 6674Example Code and Data Size: These are the sizes for the OS-independent 6675acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6676debug version of the code includes the debug output trace mechanism and 6677has 6678a much larger code and data size. 6679 6680 Previous Release: 6681 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 6682 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 6683 Current Release: 6684 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 6685 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 6686 6687 66882) iASL Compiler/Disassembler and Tools: 6689 6690Fixed a problem where the presence of the _OSI predefined control method 6691within complex expressions could cause an internal compiler error. 6692 6693AcpiExec: Implemented full region support for multiple address spaces. 6694SpaceId is now part of the REGION object. BZ 429 6695 6696---------------------------------------- 669711 October 2006. Summary of changes for version 20061011: 6698 66991) ACPI CA Core Subsystem: 6700 6701Completed an AML interpreter performance enhancement for control method 6702execution. Previously a 2-pass parse/execution, control methods are now 6703completely parsed and executed in a single pass. This improves overall 6704interpreter performance by ~25%, reduces code size, and reduces CPU stack 6705use. (Valery Podrezov + interpreter changes in version 20051202 that 6706eliminated namespace loading during the pass one parse.) 6707 6708Implemented _CID support for PCI Root Bridge detection. If the _HID does 6709not 6710match the predefined PCI Root Bridge IDs, the _CID list (if present) is 6711now 6712obtained and also checked for an ID match. 6713 6714Implemented additional support for the PCI _ADR execution: upsearch until 6715a 6716device scope is found before executing _ADR. This allows PCI_Config 6717operation regions to be declared locally within control methods 6718underneath 6719PCI device objects. 6720 6721Fixed a problem with a possible race condition between threads executing 6722AcpiWalkNamespace and the AML interpreter. This condition was removed by 6723modifying AcpiWalkNamespace to (by default) ignore all temporary 6724namespace 6725entries created during any concurrent control method execution. An 6726additional namespace race condition is known to exist between 6727AcpiWalkNamespace and the Load/Unload ASL operators and is still under 6728investigation. 6729 6730Restructured the AML ParseLoop function, breaking it into several 6731subfunctions in order to reduce CPU stack use and improve 6732maintainability. 6733(Mikhail Kouzmich) 6734 6735AcpiGetHandle: Fix for parameter validation to detect invalid 6736combinations 6737of prefix handle and pathname. BZ 478 6738 6739Example Code and Data Size: These are the sizes for the OS-independent 6740acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6741debug version of the code includes the debug output trace mechanism and 6742has 6743a much larger code and data size. 6744 6745 Previous Release: 6746 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6747 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 6748 Current Release: 6749 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 6750 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 6751 67522) iASL Compiler/Disassembler and Tools: 6753 6754Ported the -g option (get local ACPI tables) to the new ACPICA Table 6755Manager 6756to restore original behavior. 6757 6758---------------------------------------- 675927 September 2006. Summary of changes for version 20060927: 6760 67611) ACPI CA Core Subsystem: 6762 6763Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 6764These functions now use a spinlock for mutual exclusion and the interrupt 6765level indication flag is not needed. 6766 6767Fixed a problem with the Global Lock where the lock could appear to be 6768obtained before it is actually obtained. The global lock semaphore was 6769inadvertently created with one unit instead of zero units. (BZ 464) 6770Fiodor 6771Suietov. 6772 6773Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 6774during 6775a read from a buffer or region field. (BZ 458) Fiodor Suietov. 6776 6777Example Code and Data Size: These are the sizes for the OS-independent 6778acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6779debug version of the code includes the debug output trace mechanism and 6780has 6781a much larger code and data size. 6782 6783 Previous Release: 6784 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6785 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 6786 Current Release: 6787 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6788 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 6789 6790 67912) iASL Compiler/Disassembler and Tools: 6792 6793Fixed a compilation problem with the pre-defined Resource Descriptor 6794field 6795names where an "object does not exist" error could be incorrectly 6796generated 6797if the parent ResourceTemplate pathname places the template within a 6798different namespace scope than the current scope. (BZ 7212) 6799 6800Fixed a problem where the compiler could hang after syntax errors 6801detected 6802in an ElseIf construct. (BZ 453) 6803 6804Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 6805operator. An incorrect output filename was produced when this parameter 6806was 6807a null string (""). Now, the original input filename is used as the AML 6808output filename, with an ".aml" extension. 6809 6810Implemented a generic batch command mode for the AcpiExec utility 6811(execute 6812any AML debugger command) (Valery Podrezov). 6813 6814---------------------------------------- 681512 September 2006. Summary of changes for version 20060912: 6816 68171) ACPI CA Core Subsystem: 6818 6819Enhanced the implementation of the "serialized mode" of the interpreter 6820(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 6821specified, instead of creating a serialization semaphore per control 6822method, 6823the interpreter lock is simply no longer released before a blocking 6824operation during control method execution. This effectively makes the AML 6825Interpreter single-threaded. The overhead of a semaphore per-method is 6826eliminated. 6827 6828Fixed a regression where an error was no longer emitted if a control 6829method 6830attempts to create 2 objects of the same name. This once again returns 6831AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 6832that 6833will dynamically serialize the control method to possible prevent future 6834errors. (BZ 440) 6835 6836Integrated a fix for a problem with PCI Express HID detection in the PCI 6837Config Space setup procedure. (BZ 7145) 6838 6839Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 6840AcpiHwInitialize function - the FADT registers are now validated when the 6841table is loaded. 6842 6843Added two new warnings during FADT verification - 1) if the FADT is 6844larger 6845than the largest known FADT version, and 2) if there is a mismatch 6846between 6847a 684832-bit block address and the 64-bit X counterpart (when both are non- 6849zero.) 6850 6851Example Code and Data Size: These are the sizes for the OS-independent 6852acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6853debug version of the code includes the debug output trace mechanism and 6854has 6855a much larger code and data size. 6856 6857 Previous Release: 6858 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 6859 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 6860 Current Release: 6861 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6862 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 6863 6864 68652) iASL Compiler/Disassembler and Tools: 6866 6867Fixed a problem with the implementation of the Switch() operator where 6868the 6869temporary variable was declared too close to the actual Switch, instead 6870of 6871at method level. This could cause a problem if the Switch() operator is 6872within a while loop, causing an error on the second iteration. (BZ 460) 6873 6874Disassembler - fix for error emitted for unknown type for target of scope 6875operator. Now, ignore it and continue. 6876 6877Disassembly of an FADT now verifies the input FADT and reports any errors 6878found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 6879 6880Disassembly of raw data buffers with byte initialization data now 6881prefixes 6882each output line with the current buffer offset. 6883 6884Disassembly of ASF! table now includes all variable-length data fields at 6885the end of some of the subtables. 6886 6887The disassembler now emits a comment if a buffer appears to be a 6888ResourceTemplate, but cannot be disassembled as such because the EndTag 6889does 6890not appear at the very end of the buffer. 6891 6892AcpiExec - Added the "-t" command line option to enable the serialized 6893mode 6894of the AML interpreter. 6895 6896---------------------------------------- 689731 August 2006. Summary of changes for version 20060831: 6898 68991) ACPI CA Core Subsystem: 6900 6901Miscellaneous fixes for the Table Manager: 6902- Correctly initialize internal common FADT for all 64-bit "X" fields 6903- Fixed a couple table mapping issues during table load 6904- Fixed a couple alignment issues for IA64 6905- Initialize input array to zero in AcpiInitializeTables 6906- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 6907AcpiGetTableByIndex 6908 6909Change for GPE support: when a "wake" GPE is received, all wake GPEs are 6910now 6911immediately disabled to prevent the waking GPE from firing again and to 6912prevent other wake GPEs from interrupting the wake process. 6913 6914Added the AcpiGpeCount global that tracks the number of processed GPEs, 6915to 6916be used for debugging systems with a large number of ACPI interrupts. 6917 6918Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 6919both the ACPICA headers and the disassembler. 6920 6921Example Code and Data Size: These are the sizes for the OS-independent 6922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6923debug version of the code includes the debug output trace mechanism and 6924has 6925a much larger code and data size. 6926 6927 Previous Release: 6928 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 6929 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 6930 Current Release: 6931 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 6932 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 6933 6934 69352) iASL Compiler/Disassembler and Tools: 6936 6937Disassembler support for the DMAR ACPI table. 6938 6939---------------------------------------- 694023 August 2006. Summary of changes for version 20060823: 6941 69421) ACPI CA Core Subsystem: 6943 6944The Table Manager component has been completely redesigned and 6945reimplemented. The new design is much simpler, and reduces the overall 6946code 6947and data size of the kernel-resident ACPICA by approximately 5%. Also, it 6948is 6949now possible to obtain the ACPI tables very early during kernel 6950initialization, even before dynamic memory management is initialized. 6951(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 6952 6953Obsolete ACPICA interfaces: 6954 6955- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 6956init 6957time). 6958- AcpiLoadTable: Not needed. 6959- AcpiUnloadTable: Not needed. 6960 6961New ACPICA interfaces: 6962 6963- AcpiInitializeTables: Must be called before the table manager can be 6964used. 6965- AcpiReallocateRootTable: Used to transfer the root table to dynamically 6966allocated memory after it becomes available. 6967- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 6968tables 6969in the RSDT/XSDT. 6970 6971Other ACPICA changes: 6972 6973- AcpiGetTableHeader returns the actual mapped table header, not a copy. 6974Use 6975AcpiOsUnmapMemory to free this mapping. 6976- AcpiGetTable returns the actual mapped table. The mapping is managed 6977internally and must not be deleted by the caller. Use of this interface 6978causes no additional dynamic memory allocation. 6979- AcpiFindRootPointer: Support for physical addressing has been 6980eliminated, 6981it appeared to be unused. 6982- The interface to AcpiOsMapMemory has changed to be consistent with the 6983other allocation interfaces. 6984- The interface to AcpiOsGetRootPointer has changed to eliminate 6985unnecessary 6986parameters. 6987- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 698864- 6989bit platforms. Was previously 64 bits on all platforms. 6990- The interface to the ACPI Global Lock acquire/release macros have 6991changed 6992slightly since ACPICA no longer keeps a local copy of the FACS with a 6993constructed pointer to the actual global lock. 6994 6995Porting to the new table manager: 6996 6997- AcpiInitializeTables: Must be called once, and can be called anytime 6998during the OS initialization process. It allows the host to specify an 6999area 7000of memory to be used to store the internal version of the RSDT/XSDT (root 7001table). This allows the host to access ACPI tables before memory 7002management 7003is initialized and running. 7004- AcpiReallocateRootTable: Can be called after memory management is 7005running 7006to copy the root table to a dynamically allocated array, freeing up the 7007scratch memory specified in the call to AcpiInitializeTables. 7008- AcpiSubsystemInitialize: This existing interface is independent of the 7009Table Manager, and does not have to be called before the Table Manager 7010can 7011be used, it only must be called before the rest of ACPICA can be used. 7012- ACPI Tables: Some changes have been made to the names and structure of 7013the 7014actbl.h and actbl1.h header files and may require changes to existing 7015code. 7016For example, bitfields have been completely removed because of their lack 7017of 7018portability across C compilers. 7019- Update interfaces to the Global Lock acquire/release macros if local 7020versions are used. (see acwin.h) 7021 7022Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 7023 7024New files: tbfind.c 7025 7026Example Code and Data Size: These are the sizes for the OS-independent 7027acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7028debug version of the code includes the debug output trace mechanism and 7029has 7030a much larger code and data size. 7031 7032 Previous Release: 7033 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7034 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7035 Current Release: 7036 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7037 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7038 7039 70402) iASL Compiler/Disassembler and Tools: 7041 7042No changes for this release. 7043 7044---------------------------------------- 704521 July 2006. Summary of changes for version 20060721: 7046 70471) ACPI CA Core Subsystem: 7048 7049The full source code for the ASL test suite used to validate the iASL 7050compiler and the ACPICA core subsystem is being released with the ACPICA 7051source for the first time. The source is contained in a separate package 7052and 7053consists of over 1100 files that exercise all ASL/AML operators. The 7054package 7055should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 7056Fiodor 7057Suietov) 7058 7059Completed a new design and implementation for support of the ACPI Global 7060Lock. On the OS side, the global lock is now treated as a standard AML 7061mutex. Previously, multiple OS threads could "acquire" the global lock 7062simultaneously. However, this could cause the BIOS to be starved out of 7063the 7064lock - especially in cases such as the Embedded Controller driver where 7065there is a tight coupling between the OS and the BIOS. 7066 7067Implemented an optimization for the ACPI Global Lock interrupt mechanism. 7068The Global Lock interrupt handler no longer queues the execution of a 7069separate thread to signal the global lock semaphore. Instead, the 7070semaphore 7071is signaled directly from the interrupt handler. 7072 7073Implemented support within the AML interpreter for package objects that 7074contain a larger AML length (package list length) than the package 7075element 7076count. In this case, the length of the package is truncated to match the 7077package element count. Some BIOS code apparently modifies the package 7078length 7079on the fly, and this change supports this behavior. Provides 7080compatibility 7081with the MS AML interpreter. (With assistance from Fiodor Suietov) 7082 7083Implemented a temporary fix for the BankValue parameter of a Bank Field 7084to 7085support all constant values, now including the Zero and One opcodes. 7086Evaluation of this parameter must eventually be converted to a full 7087TermArg 7088evaluation. A not-implemented error is now returned (temporarily) for 7089non- 7090constant values for this parameter. 7091 7092Fixed problem reports (Fiodor Suietov) integrated: 7093- Fix for premature object deletion after CopyObject on Operation Region 7094(BZ 7095350) 7096 7097Example Code and Data Size: These are the sizes for the OS-independent 7098acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7099debug version of the code includes the debug output trace mechanism and 7100has 7101a much larger code and data size. 7102 7103 Previous Release: 7104 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 7105 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 7106 Current Release: 7107 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7108 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7109 7110 71112) iASL Compiler/Disassembler and Tools: 7112 7113No changes for this release. 7114 7115---------------------------------------- 711607 July 2006. Summary of changes for version 20060707: 7117 71181) ACPI CA Core Subsystem: 7119 7120Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 7121that do not allow the initialization of address pointers within packed 7122structures - even though the hardware itself may support misaligned 7123transfers. Some of the debug data structures are packed by default to 7124minimize size. 7125 7126Added an error message for the case where AcpiOsGetThreadId() returns 7127zero. 7128A non-zero value is required by the core ACPICA code to ensure the proper 7129operation of AML mutexes and recursive control methods. 7130 7131The DSDT is now the only ACPI table that determines whether the AML 7132interpreter is in 32-bit or 64-bit mode. Not really a functional change, 7133but 7134the hooks for per-table 32/64 switching have been removed from the code. 7135A 7136clarification to the ACPI specification is forthcoming in ACPI 3.0B. 7137 7138Fixed a possible leak of an OwnerID in the error path of 7139AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 7140deletion to a single place in AcpiTbUninstallTable to correct possible 7141leaks 7142when using the AcpiTbDeleteTablesByType interface (with assistance from 7143Lance Ortiz.) 7144 7145Fixed a problem with Serialized control methods where the semaphore 7146associated with the method could be over-signaled after multiple method 7147invocations. 7148 7149Fixed two issues with the locking of the internal namespace data 7150structure. 7151Both the Unload() operator and AcpiUnloadTable interface now lock the 7152namespace during the namespace deletion associated with the table unload 7153(with assistance from Linn Crosetto.) 7154 7155Fixed problem reports (Valery Podrezov) integrated: 7156- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 7157 7158Fixed problem reports (Fiodor Suietov) integrated: 7159- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 7160- On Address Space handler deletion, needless deactivation call (BZ 374) 7161- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 7162375) 7163- Possible memory leak, Notify sub-objects of Processor, Power, 7164ThermalZone 7165(BZ 376) 7166- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 7167- Minimum Length of RSDT should be validated (BZ 379) 7168- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 7169Handler (BZ (380) 7170- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 7171loaded 7172(BZ 381) 7173 7174Example Code and Data Size: These are the sizes for the OS-independent 7175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7176debug version of the code includes the debug output trace mechanism and 7177has 7178a much larger code and data size. 7179 7180 Previous Release: 7181 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7182 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7183 Current Release: 7184 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7185 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7186 7187 71882) iASL Compiler/Disassembler and Tools: 7189 7190Fixed problem reports: 7191Compiler segfault when ASL contains a long (>1024) String declaration (BZ 7192436) 7193 7194---------------------------------------- 719523 June 2006. Summary of changes for version 20060623: 7196 71971) ACPI CA Core Subsystem: 7198 7199Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 7200allows the type to be customized to the host OS for improved efficiency 7201(since a spinlock is usually a very small object.) 7202 7203Implemented support for "ignored" bits in the ACPI registers. According 7204to 7205the ACPI specification, these bits should be preserved when writing the 7206registers via a read/modify/write cycle. There are 3 bits preserved in 7207this 7208manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 7209 7210Implemented the initial deployment of new OSL mutex interfaces. Since 7211some 7212host operating systems have separate mutex and semaphore objects, this 7213feature was requested. The base code now uses mutexes (and the new mutex 7214interfaces) wherever a binary semaphore was used previously. However, for 7215the current release, the mutex interfaces are defined as macros to map 7216them 7217to the existing semaphore interfaces. Therefore, no OSL changes are 7218required 7219at this time. (See acpiosxf.h) 7220 7221Fixed several problems with the support for the control method SyncLevel 7222parameter. The SyncLevel now works according to the ACPI specification 7223and 7224in concert with the Mutex SyncLevel parameter, since the current 7225SyncLevel 7226is a property of the executing thread. Mutual exclusion for control 7227methods 7228is now implemented with a mutex instead of a semaphore. 7229 7230Fixed three instances of the use of the C shift operator in the bitfield 7231support code (exfldio.c) to avoid the use of a shift value larger than 7232the 7233target data width. The behavior of C compilers is undefined in this case 7234and 7235can cause unpredictable results, and therefore the case must be detected 7236and 7237avoided. (Fiodor Suietov) 7238 7239Added an info message whenever an SSDT or OEM table is loaded dynamically 7240via the Load() or LoadTable() ASL operators. This should improve 7241debugging 7242capability since it will show exactly what tables have been loaded 7243(beyond 7244the tables present in the RSDT/XSDT.) 7245 7246Example Code and Data Size: These are the sizes for the OS-independent 7247acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7248debug version of the code includes the debug output trace mechanism and 7249has 7250a much larger code and data size. 7251 7252 Previous Release: 7253 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7254 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7255 Current Release: 7256 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7257 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7258 7259 72602) iASL Compiler/Disassembler and Tools: 7261 7262No changes for this release. 7263 7264---------------------------------------- 726508 June 2006. Summary of changes for version 20060608: 7266 72671) ACPI CA Core Subsystem: 7268 7269Converted the locking mutex used for the ACPI hardware to a spinlock. 7270This 7271change should eliminate all problems caused by attempting to acquire a 7272semaphore at interrupt level, and it means that all ACPICA external 7273interfaces that directly access the ACPI hardware can be safely called 7274from 7275interrupt level. OSL code that implements the semaphore interfaces should 7276be 7277able to eliminate any workarounds for being called at interrupt level. 7278 7279Fixed a regression introduced in 20060526 where the ACPI device 7280initialization could be prematurely aborted with an AE_NOT_FOUND if a 7281device 7282did not have an optional _INI method. 7283 7284Fixed an IndexField issue where a write to the Data Register should be 7285limited in size to the AccessSize (width) of the IndexField itself. (BZ 7286433, 7287Fiodor Suietov) 7288 7289Fixed problem reports (Valery Podrezov) integrated: 7290- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 7291 7292Fixed problem reports (Fiodor Suietov) integrated: 7293- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 7294 7295Removed four global mutexes that were obsolete and were no longer being 7296used. 7297 7298Example Code and Data Size: These are the sizes for the OS-independent 7299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7300debug version of the code includes the debug output trace mechanism and 7301has 7302a much larger code and data size. 7303 7304 Previous Release: 7305 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7306 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7307 Current Release: 7308 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7309 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7310 7311 73122) iASL Compiler/Disassembler and Tools: 7313 7314Fixed a fault when using -g option (get tables from registry) on Windows 7315machines. 7316 7317Fixed problem reports integrated: 7318- Generate error if CreateField NumBits parameter is zero. (BZ 405) 7319- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 7320Suietov) 7321- Global table revision override (-r) is ignored (BZ 413) 7322 7323---------------------------------------- 732426 May 2006. Summary of changes for version 20060526: 7325 73261) ACPI CA Core Subsystem: 7327 7328Restructured, flattened, and simplified the internal interfaces for 7329namespace object evaluation - resulting in smaller code, less CPU stack 7330use, 7331and fewer interfaces. (With assistance from Mikhail Kouzmich) 7332 7333Fixed a problem with the CopyObject operator where the first parameter 7334was 7335not typed correctly for the parser, interpreter, compiler, and 7336disassembler. 7337Caused various errors and unexpected behavior. 7338 7339Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 7340produced incorrect results with some C compilers. Since the behavior of C 7341compilers when the shift value is larger than the datatype width is 7342apparently not well defined, the interpreter now detects this condition 7343and 7344simply returns zero as expected in all such cases. (BZ 395) 7345 7346Fixed problem reports (Valery Podrezov) integrated: 7347- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 7348- Allow interpreter to handle nested method declarations (BZ 5361) 7349 7350Fixed problem reports (Fiodor Suietov) integrated: 7351- AcpiTerminate doesn't free debug memory allocation list objects (BZ 7352355) 7353- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 7354356) 7355- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 7356- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 7357- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 7358- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 7359- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 7360- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 7361- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 7362365) 7363- Status of the Global Initialization Handler call not used (BZ 366) 7364- Incorrect object parameter to Global Initialization Handler (BZ 367) 7365 7366Example Code and Data Size: These are the sizes for the OS-independent 7367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7368debug version of the code includes the debug output trace mechanism and 7369has 7370a much larger code and data size. 7371 7372 Previous Release: 7373 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 7374 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 7375 Current Release: 7376 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7377 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7378 7379 73802) iASL Compiler/Disassembler and Tools: 7381 7382Modified the parser to allow the names IO, DMA, and IRQ to be used as 7383namespace identifiers with no collision with existing resource descriptor 7384macro names. This provides compatibility with other ASL compilers and is 7385most useful for disassembly/recompilation of existing tables without 7386parse 7387errors. (With assistance from Thomas Renninger) 7388 7389Disassembler: fixed an incorrect disassembly problem with the 7390DataTableRegion and CopyObject operators. Fixed a possible fault during 7391disassembly of some Alias operators. 7392 7393---------------------------------------- 739412 May 2006. Summary of changes for version 20060512: 7395 73961) ACPI CA Core Subsystem: 7397 7398Replaced the AcpiOsQueueForExecution interface with a new interface named 7399AcpiOsExecute. The major difference is that the new interface does not 7400have 7401a Priority parameter, this appeared to be useless and has been replaced 7402by 7403a 7404Type parameter. The Type tells the host what type of execution is being 7405requested, such as global lock handler, notify handler, GPE handler, etc. 7406This allows the host to queue and execute the request as appropriate for 7407the 7408request type, possibly using different work queues and different 7409priorities 7410for the various request types. This enables fixes for multithreading 7411deadlock problems such as BZ #5534, and will require changes to all 7412existing 7413OS interface layers. (Alexey Starikovskiy and Bob Moore) 7414 7415Fixed a possible memory leak associated with the support for the so- 7416called 7417"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 7418Suietov) 7419 7420Fixed a problem with the Load() operator where a table load from an 7421operation region could overwrite an internal table buffer by up to 7 7422bytes 7423and cause alignment faults on IPF systems. (With assistance from Luming 7424Yu) 7425 7426Example Code and Data Size: These are the sizes for the OS-independent 7427acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7428debug version of the code includes the debug output trace mechanism and 7429has 7430a much larger code and data size. 7431 7432 Previous Release: 7433 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 7434 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 7435 Current Release: 7436 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 7437 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 7438 7439 7440 74412) iASL Compiler/Disassembler and Tools: 7442 7443Disassembler: Implemented support to cross reference the internal 7444namespace 7445and automatically generate ASL External() statements for symbols not 7446defined 7447within the current table being disassembled. This will simplify the 7448disassembly and recompilation of interdependent tables such as SSDTs 7449since 7450these statements will no longer have to be added manually. 7451 7452Disassembler: Implemented experimental support to automatically detect 7453invocations of external control methods and generate appropriate 7454External() 7455statements. This is problematic because the AML cannot be correctly 7456parsed 7457until the number of arguments for each control method is known. 7458Currently, 7459standalone method invocations and invocations as the source operand of a 7460Store() statement are supported. 7461 7462Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 7463LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 7464LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 7465more readable and likely closer to the original ASL source. 7466 7467---------------------------------------- 746821 April 2006. Summary of changes for version 20060421: 7469 74701) ACPI CA Core Subsystem: 7471 7472Removed a device initialization optimization introduced in 20051216 where 7473the _STA method was not run unless an _INI was also present for the same 7474device. This optimization could cause problems because it could allow 7475_INI 7476methods to be run within a not-present device subtree. (If a not-present 7477device had no _INI, _STA would not be run, the not-present status would 7478not 7479be discovered, and the children of the device would be incorrectly 7480traversed.) 7481 7482Implemented a new _STA optimization where namespace subtrees that do not 7483contain _INI are identified and ignored during device initialization. 7484Selectively running _STA can significantly improve boot time on large 7485machines (with assistance from Len Brown.) 7486 7487Implemented support for the device initialization case where the returned 7488_STA flags indicate a device not-present but functioning. In this case, 7489_INI 7490is not run, but the device children are examined for presence, as per the 7491ACPI specification. 7492 7493Implemented an additional change to the IndexField support in order to 7494conform to MS behavior. The value written to the Index Register is not 7495simply a byte offset, it is a byte offset in units of the access width of 7496the parent Index Field. (Fiodor Suietov) 7497 7498Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 7499interface is called during the creation of all AML operation regions, and 7500allows the host OS to exert control over what addresses it will allow the 7501AML code to access. Operation Regions whose addresses are disallowed will 7502cause a runtime exception when they are actually accessed (will not 7503affect 7504or abort table loading.) See oswinxf or osunixxf for an example 7505implementation. 7506 7507Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 7508interface allows the host OS to match the various "optional" 7509interface/behavior strings for the _OSI predefined control method as 7510appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 7511for an example implementation. 7512 7513Restructured and corrected various problems in the exception handling 7514code 7515paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 7516(with assistance from Takayoshi Kochi.) 7517 7518Modified the Linux source converter to ignore quoted string literals 7519while 7520converting identifiers from mixed to lower case. This will correct 7521problems 7522with the disassembler and other areas where such strings must not be 7523modified. 7524 7525The ACPI_FUNCTION_* macros no longer require quotes around the function 7526name. This allows the Linux source converter to convert the names, now 7527that 7528the converter ignores quoted strings. 7529 7530Example Code and Data Size: These are the sizes for the OS-independent 7531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7532debug version of the code includes the debug output trace mechanism and 7533has 7534a much larger code and data size. 7535 7536 Previous Release: 7537 7538 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 7539 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 7540 Current Release: 7541 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 7542 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 7543 7544 75452) iASL Compiler/Disassembler and Tools: 7546 7547Implemented 3 new warnings for iASL, and implemented multiple warning 7548levels 7549(w2 flag). 7550 75511) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 7552not 7553WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 7554check for the possible timeout, a warning is issued. 7555 75562) Useless operators: If an ASL operator does not specify an optional 7557target 7558operand and it also does not use the function return value from the 7559operator, a warning is issued since the operator effectively does 7560nothing. 7561 75623) Unreferenced objects: If a namespace object is created, but never 7563referenced, a warning is issued. This is a warning level 2 since there 7564are 7565cases where this is ok, such as when a secondary table is loaded that 7566uses 7567the unreferenced objects. Even so, care is taken to only flag objects 7568that 7569don't look like they will ever be used. For example, the reserved methods 7570(starting with an underscore) are usually not referenced because it is 7571expected that the OS will invoke them. 7572 7573---------------------------------------- 757431 March 2006. Summary of changes for version 20060331: 7575 75761) ACPI CA Core Subsystem: 7577 7578Implemented header file support for the following additional ACPI tables: 7579ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 7580support, 7581all current and known ACPI tables are now defined in the ACPICA headers 7582and 7583are available for use by device drivers and other software. 7584 7585Implemented support to allow tables that contain ACPI names with invalid 7586characters to be loaded. Previously, this would cause the table load to 7587fail, but since there are several known cases of such tables on existing 7588machines, this change was made to enable ACPI support for them. Also, 7589this 7590matches the behavior of the Microsoft ACPI implementation. 7591 7592Fixed a couple regressions introduced during the memory optimization in 7593the 759420060317 release. The namespace node definition required additional 7595reorganization and an internal datatype that had been changed to 8-bit 7596was 7597restored to 32-bit. (Valery Podrezov) 7598 7599Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 7600could be passed through to AcpiOsReleaseObject which is unexpected. Such 7601null pointers are now trapped and ignored, matching the behavior of the 7602previous implementation before the deployment of AcpiOsReleaseObject. 7603(Valery Podrezov, Fiodor Suietov) 7604 7605Fixed a memory mapping leak during the deletion of a SystemMemory 7606operation 7607region where a cached memory mapping was not deleted. This became a 7608noticeable problem for operation regions that are defined within 7609frequently 7610used control methods. (Dana Meyers) 7611 7612Reorganized the ACPI table header files into two main files: one for the 7613ACPI tables consumed by the ACPICA core, and another for the 7614miscellaneous 7615ACPI tables that are consumed by the drivers and other software. The 7616various 7617FADT definitions were merged into one common section and three different 7618tables (ACPI 1.0, 1.0+, and 2.0) 7619 7620Example Code and Data Size: These are the sizes for the OS-independent 7621acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7622debug version of the code includes the debug output trace mechanism and 7623has 7624a much larger code and data size. 7625 7626 Previous Release: 7627 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 7628 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 7629 Current Release: 7630 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 7631 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 7632 7633 76342) iASL Compiler/Disassembler and Tools: 7635 7636Disassembler: Implemented support to decode and format all non-AML ACPI 7637tables (tables other than DSDTs and SSDTs.) This includes the new tables 7638added to the ACPICA headers, therefore all current and known ACPI tables 7639are 7640supported. 7641 7642Disassembler: The change to allow ACPI names with invalid characters also 7643enables the disassembly of such tables. Invalid characters within names 7644are 7645changed to '*' to make the name printable; the iASL compiler will still 7646generate an error for such names, however, since this is an invalid ACPI 7647character. 7648 7649Implemented an option for AcpiXtract (-a) to extract all tables found in 7650the 7651input file. The default invocation extracts only the DSDTs and SSDTs. 7652 7653Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 7654makefile for the AcpiXtract utility. 7655 7656---------------------------------------- 765717 March 2006. Summary of changes for version 20060317: 7658 76591) ACPI CA Core Subsystem: 7660 7661Implemented the use of a cache object for all internal namespace nodes. 7662Since there are about 1000 static nodes in a typical system, this will 7663decrease memory use for cache implementations that minimize per- 7664allocation 7665overhead (such as a slab allocator.) 7666 7667Removed the reference count mechanism for internal namespace nodes, since 7668it 7669was deemed unnecessary. This reduces the size of each namespace node by 7670about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 7671case, 7672and 32 bytes for the 64-bit case. 7673 7674Optimized several internal data structures to reduce object size on 64- 7675bit 7676platforms by packing data within the 64-bit alignment. This includes the 7677frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 7678instances corresponding to the namespace objects. 7679 7680Added two new strings for the predefined _OSI method: "Windows 2001.1 7681SP1" 7682and "Windows 2006". 7683 7684Split the allocation tracking mechanism out to a separate file, from 7685utalloc.c to uttrack.c. This mechanism appears to be only useful for 7686application-level code. Kernels may wish to not include uttrack.c in 7687distributions. 7688 7689Removed all remnants of the obsolete ACPI_REPORT_* macros and the 7690associated 7691code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 7692macros.) 7693 7694Code and Data Size: These are the sizes for the acpica.lib produced by 7695the 7696Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 7697ACPI 7698driver or OSPM code. The debug version of the code includes the debug 7699output 7700trace mechanism and has a much larger code and data size. Note that these 7701values will vary depending on the efficiency of the compiler and the 7702compiler options used during generation. 7703 7704 Previous Release: 7705 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7706 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 7707 Current Release: 7708 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 7709 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 7710 7711 77122) iASL Compiler/Disassembler and Tools: 7713 7714Implemented an ANSI C version of the acpixtract utility. This version 7715will 7716automatically extract the DSDT and all SSDTs from the input acpidump text 7717file and dump the binary output to separate files. It can also display a 7718summary of the input file including the headers for each table found and 7719will extract any single ACPI table, with any signature. (See 7720source/tools/acpixtract) 7721 7722---------------------------------------- 772310 March 2006. Summary of changes for version 20060310: 7724 77251) ACPI CA Core Subsystem: 7726 7727Tagged all external interfaces to the subsystem with the new 7728ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 7729assist 7730kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 7731macro. The default definition is NULL. 7732 7733Added the ACPI_THREAD_ID type for the return value from 7734AcpiOsGetThreadId. 7735This allows the host to define this as necessary to simplify kernel 7736integration. The default definition is ACPI_NATIVE_UINT. 7737 7738Fixed two interpreter problems related to error processing, the deletion 7739of 7740objects, and placing invalid pointers onto the internal operator result 7741stack. BZ 6028, 6151 (Valery Podrezov) 7742 7743Increased the reference count threshold where a warning is emitted for 7744large 7745reference counts in order to eliminate unnecessary warnings on systems 7746with 7747large namespaces (especially 64-bit.) Increased the value from 0x400 to 77480x800. 7749 7750Due to universal disagreement as to the meaning of the 'c' in the 7751calloc() 7752function, the ACPI_MEM_CALLOCATE macro has been renamed to 7753ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 7754ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 7755ACPI_FREE. 7756 7757Code and Data Size: These are the sizes for the acpica.lib produced by 7758the 7759Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 7760ACPI 7761driver or OSPM code. The debug version of the code includes the debug 7762output 7763trace mechanism and has a much larger code and data size. Note that these 7764values will vary depending on the efficiency of the compiler and the 7765compiler options used during generation. 7766 7767 Previous Release: 7768 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 7769 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 7770 Current Release: 7771 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7772 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 7773 7774 77752) iASL Compiler/Disassembler: 7776 7777Disassembler: implemented support for symbolic resource descriptor 7778references. If a CreateXxxxField operator references a fixed offset 7779within 7780a 7781resource descriptor, a name is assigned to the descriptor and the offset 7782is 7783translated to the appropriate resource tag and pathname. The addition of 7784this support brings the disassembled code very close to the original ASL 7785source code and helps eliminate run-time errors when the disassembled 7786code 7787is modified (and recompiled) in such a way as to invalidate the original 7788fixed offsets. 7789 7790Implemented support for a Descriptor Name as the last parameter to the 7791ASL 7792Register() macro. This parameter was inadvertently left out of the ACPI 7793specification, and will be added for ACPI 3.0b. 7794 7795Fixed a problem where the use of the "_OSI" string (versus the full path 7796"\_OSI") caused an internal compiler error. ("No back ptr to op") 7797 7798Fixed a problem with the error message that occurs when an invalid string 7799is 7800used for a _HID object (such as one with an embedded asterisk: 7801"*PNP010A".) 7802The correct message is now displayed. 7803 7804---------------------------------------- 780517 February 2006. Summary of changes for version 20060217: 7806 78071) ACPI CA Core Subsystem: 7808 7809Implemented a change to the IndexField support to match the behavior of 7810the 7811Microsoft AML interpreter. The value written to the Index register is now 7812a 7813byte offset, no longer an index based upon the width of the Data 7814register. 7815This should fix IndexField problems seen on some machines where the Data 7816register is not exactly one byte wide. The ACPI specification will be 7817clarified on this point. 7818 7819Fixed a problem where several resource descriptor types could overrun the 7820internal descriptor buffer due to size miscalculation: VendorShort, 7821VendorLong, and Interrupt. This was noticed on IA64 machines, but could 7822affect all platforms. 7823 7824Fixed a problem where individual resource descriptors were misaligned 7825within 7826the internal buffer, causing alignment faults on IA64 platforms. 7827 7828Code and Data Size: These are the sizes for the acpica.lib produced by 7829the 7830Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 7831ACPI 7832driver or OSPM code. The debug version of the code includes the debug 7833output 7834trace mechanism and has a much larger code and data size. Note that these 7835values will vary depending on the efficiency of the compiler and the 7836compiler options used during generation. 7837 7838 Previous Release: 7839 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7840 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 7841 Current Release: 7842 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 7843 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 7844 7845 78462) iASL Compiler/Disassembler: 7847 7848Implemented support for new reserved names: _WDG and _WED are Microsoft 7849extensions for Windows Instrumentation Management, _TDL is a new ACPI- 7850defined method (Throttling Depth Limit.) 7851 7852Fixed a problem where a zero-length VendorShort or VendorLong resource 7853descriptor was incorrectly emitted as a descriptor of length one. 7854 7855---------------------------------------- 785610 February 2006. Summary of changes for version 20060210: 7857 78581) ACPI CA Core Subsystem: 7859 7860Removed a couple of extraneous ACPI_ERROR messages that appeared during 7861normal execution. These became apparent after the conversion from 7862ACPI_DEBUG_PRINT. 7863 7864Fixed a problem where the CreateField operator could hang if the BitIndex 7865or 7866NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 7867 7868Fixed a problem where a DeRefOf operation on a buffer object incorrectly 7869failed with an exception. This also fixes a couple of related RefOf and 7870DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 7871 7872Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 7873of 7874AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 7875BZ 78765480) 7877 7878Implemented a memory cleanup at the end of the execution of each 7879iteration 7880of an AML While() loop, preventing the accumulation of outstanding 7881objects. 7882(Valery Podrezov, BZ 5427) 7883 7884Eliminated a chunk of duplicate code in the object resolution code. 7885(Valery 7886Podrezov, BZ 5336) 7887 7888Fixed several warnings during the 64-bit code generation. 7889 7890The AcpiSrc source code conversion tool now inserts one line of 7891whitespace 7892after an if() statement that is followed immediately by a comment, 7893improving 7894readability of the Linux code. 7895 7896Code and Data Size: The current and previous library sizes for the core 7897subsystem are shown below. These are the code and data sizes for the 7898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 7899These 7900values do not include any ACPI driver or OSPM code. The debug version of 7901the 7902code includes the debug output trace mechanism and has a much larger code 7903and data size. Note that these values will vary depending on the 7904efficiency 7905of the compiler and the compiler options used during generation. 7906 7907 Previous Release: 7908 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 7909 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 7910 Current Release: 7911 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7912 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 7913 7914 79152) iASL Compiler/Disassembler: 7916 7917Fixed a problem with the disassembly of a BankField operator with a 7918complex 7919expression for the BankValue parameter. 7920 7921---------------------------------------- 792227 January 2006. Summary of changes for version 20060127: 7923 79241) ACPI CA Core Subsystem: 7925 7926Implemented support in the Resource Manager to allow unresolved 7927namestring 7928references within resource package objects for the _PRT method. This 7929support 7930is in addition to the previously implemented unresolved reference support 7931within the AML parser. If the interpreter slack mode is enabled, these 7932unresolved references will be passed through to the caller as a NULL 7933package 7934entry. 7935 7936Implemented and deployed new macros and functions for error and warning 7937messages across the subsystem. These macros are simpler and generate less 7938code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 7939ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 7940macros remain defined to allow ACPI drivers time to migrate to the new 7941macros. 7942 7943Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 7944the 7945Acquire/Release Lock OSL interfaces. 7946 7947Fixed a problem where Alias ASL operators are sometimes not correctly 7948resolved, in both the interpreter and the iASL compiler. 7949 7950Fixed several problems with the implementation of the 7951ConcatenateResTemplate 7952ASL operator. As per the ACPI specification, zero length buffers are now 7953treated as a single EndTag. One-length buffers always cause a fatal 7954exception. Non-zero length buffers that do not end with a full 2-byte 7955EndTag 7956cause a fatal exception. 7957 7958Fixed a possible structure overwrite in the AcpiGetObjectInfo external 7959interface. (With assistance from Thomas Renninger) 7960 7961Code and Data Size: The current and previous library sizes for the core 7962subsystem are shown below. These are the code and data sizes for the 7963acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 7964These 7965values do not include any ACPI driver or OSPM code. The debug version of 7966the 7967code includes the debug output trace mechanism and has a much larger code 7968and data size. Note that these values will vary depending on the 7969efficiency 7970of the compiler and the compiler options used during generation. 7971 7972 Previous Release: 7973 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 7974 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 7975 Current Release: 7976 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 7977 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 7978 7979 79802) iASL Compiler/Disassembler: 7981 7982Fixed an internal error that was generated for any forward references to 7983ASL 7984Alias objects. 7985 7986---------------------------------------- 798713 January 2006. Summary of changes for version 20060113: 7988 79891) ACPI CA Core Subsystem: 7990 7991Added 2006 copyright to all module headers and signons. This affects 7992virtually every file in the ACPICA core subsystem, iASL compiler, and the 7993utilities. 7994 7995Enhanced the ACPICA error reporting in order to simplify user migration 7996to 7997the non-debug version of ACPICA. Replaced all instances of the 7998ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 7999debug 8000levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 8001respectively. This preserves all error and warning messages in the non- 8002debug 8003version of the ACPICA code (this has been referred to as the "debug lite" 8004option.) Over 200 cases were converted to create a total of over 380 8005error/warning messages across the ACPICA code. This increases the code 8006and 8007data size of the default non-debug version of the code somewhat (about 800813K), 8009but all error/warning reporting may be disabled if desired (and code 8010eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 8011configuration option. The size of the debug version of ACPICA remains 8012about 8013the same. 8014 8015Fixed a memory leak within the AML Debugger "Set" command. One object was 8016not properly deleted for every successful invocation of the command. 8017 8018Code and Data Size: The current and previous library sizes for the core 8019subsystem are shown below. These are the code and data sizes for the 8020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8021These 8022values do not include any ACPI driver or OSPM code. The debug version of 8023the 8024code includes the debug output trace mechanism and has a much larger code 8025and data size. Note that these values will vary depending on the 8026efficiency 8027of the compiler and the compiler options used during generation. 8028 8029 Previous Release: 8030 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8031 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8032 Current Release: 8033 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8034 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8035 8036 80372) iASL Compiler/Disassembler: 8038 8039The compiler now officially supports the ACPI 3.0a specification that was 8040released on December 30, 2005. (Specification is available at 8041www.acpi.info) 8042 8043---------------------------------------- 804416 December 2005. Summary of changes for version 20051216: 8045 80461) ACPI CA Core Subsystem: 8047 8048Implemented optional support to allow unresolved names within ASL Package 8049objects. A null object is inserted in the package when a named reference 8050cannot be located in the current namespace. Enabled via the interpreter 8051slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 8052machines 8053that contain such code. 8054 8055Implemented an optimization to the initialization sequence that can 8056improve 8057boot time. During ACPI device initialization, the _STA method is now run 8058if 8059and only if the _INI method exists. The _STA method is used to determine 8060if 8061the device is present; An _INI can only be run if _STA returns present, 8062but 8063it is a waste of time to run the _STA method if the _INI does not exist. 8064(Prototype and assistance from Dong Wei) 8065 8066Implemented use of the C99 uintptr_t for the pointer casting macros if it 8067is 8068available in the current compiler. Otherwise, the default (void *) cast 8069is 8070used as before. 8071 8072Fixed some possible memory leaks found within the execution path of the 8073Break, Continue, If, and CreateField operators. (Valery Podrezov) 8074 8075Fixed a problem introduced in the 20051202 release where an exception is 8076generated during method execution if a control method attempts to declare 8077another method. 8078 8079Moved resource descriptor string constants that are used by both the AML 8080disassembler and AML debugger to the common utilities directory so that 8081these components are independent. 8082 8083Implemented support in the AcpiExec utility (-e switch) to globally 8084ignore 8085exceptions during control method execution (method is not aborted.) 8086 8087Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 8088generation. 8089 8090Code and Data Size: The current and previous library sizes for the core 8091subsystem are shown below. These are the code and data sizes for the 8092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8093These 8094values do not include any ACPI driver or OSPM code. The debug version of 8095the 8096code includes the debug output trace mechanism and has a much larger code 8097and data size. Note that these values will vary depending on the 8098efficiency 8099of the compiler and the compiler options used during generation. 8100 8101 Previous Release: 8102 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8103 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8104 Current Release: 8105 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8106 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8107 8108 81092) iASL Compiler/Disassembler: 8110 8111Fixed a problem where a CPU stack overflow fault could occur if a 8112recursive 8113method call was made from within a Return statement. 8114 8115---------------------------------------- 811602 December 2005. Summary of changes for version 20051202: 8117 81181) ACPI CA Core Subsystem: 8119 8120Modified the parsing of control methods to no longer create namespace 8121objects during the first pass of the parse. Objects are now created only 8122during the execute phase, at the moment the namespace creation operator 8123is 8124encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 8125This 8126should eliminate ALREADY_EXISTS exceptions seen on some machines where 8127reentrant control methods are protected by an AML mutex. The mutex will 8128now 8129correctly block multiple threads from attempting to create the same 8130object 8131more than once. 8132 8133Increased the number of available Owner Ids for namespace object tracking 8134from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 8135on 8136some machines with a large number of ACPI tables (either static or 8137dynamic). 8138 8139Fixed a problem with the AcpiExec utility where a fault could occur when 8140the 8141-b switch (batch mode) is used. 8142 8143Enhanced the namespace dump routine to output the owner ID for each 8144namespace object. 8145 8146Code and Data Size: The current and previous library sizes for the core 8147subsystem are shown below. These are the code and data sizes for the 8148acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8149These 8150values do not include any ACPI driver or OSPM code. The debug version of 8151the 8152code includes the debug output trace mechanism and has a much larger code 8153and data size. Note that these values will vary depending on the 8154efficiency 8155of the compiler and the compiler options used during generation. 8156 8157 Previous Release: 8158 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8159 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8160 Current Release: 8161 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8162 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8163 8164 81652) iASL Compiler/Disassembler: 8166 8167Fixed a parse error during compilation of certain Switch/Case constructs. 8168To 8169simplify the parse, the grammar now allows for multiple Default 8170statements 8171and this error is now detected and flagged during the analysis phase. 8172 8173Disassembler: The disassembly now includes the contents of the original 8174table header within a comment at the start of the file. This includes the 8175name and version of the original ASL compiler. 8176 8177---------------------------------------- 817817 November 2005. Summary of changes for version 20051117: 8179 81801) ACPI CA Core Subsystem: 8181 8182Fixed a problem in the AML parser where the method thread count could be 8183decremented below zero if any errors occurred during the method parse 8184phase. 8185This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 8186machines. 8187This also fixed a related regression with the mechanism that detects and 8188corrects methods that cannot properly handle reentrancy (related to the 8189deployment of the new OwnerId mechanism.) 8190 8191Eliminated the pre-parsing of control methods (to detect errors) during 8192table load. Related to the problem above, this was causing unwind issues 8193if 8194any errors occurred during the parse, and it seemed to be overkill. A 8195table 8196load should not be aborted if there are problems with any single control 8197method, thus rendering this feature rather pointless. 8198 8199Fixed a problem with the new table-driven resource manager where an 8200internal 8201buffer overflow could occur for small resource templates. 8202 8203Implemented a new external interface, AcpiGetVendorResource. This 8204interface 8205will find and return a vendor-defined resource descriptor within a _CRS 8206or 8207_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 8208Helgaas. 8209 8210Removed the length limit (200) on string objects as per the upcoming ACPI 82113.0A specification. This affects the following areas of the interpreter: 82121) 8213any implicit conversion of a Buffer to a String, 2) a String object 8214result 8215of the ASL Concatentate operator, 3) the String object result of the ASL 8216ToString operator. 8217 8218Fixed a problem in the Windows OS interface layer (OSL) where a 8219WAIT_FOREVER 8220on a semaphore object would incorrectly timeout. This allows the 8221multithreading features of the AcpiExec utility to work properly under 8222Windows. 8223 8224Updated the Linux makefiles for the iASL compiler and AcpiExec to include 8225the recently added file named "utresrc.c". 8226 8227Code and Data Size: The current and previous library sizes for the core 8228subsystem are shown below. These are the code and data sizes for the 8229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8230These 8231values do not include any ACPI driver or OSPM code. The debug version of 8232the 8233code includes the debug output trace mechanism and has a much larger code 8234and data size. Note that these values will vary depending on the 8235efficiency 8236of the compiler and the compiler options used during generation. 8237 8238 Previous Release: 8239 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8240 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8241 Current Release: 8242 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8243 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8244 8245 82462) iASL Compiler/Disassembler: 8247 8248Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 8249specification. For the iASL compiler, this means that string literals 8250within 8251the source ASL can be of any length. 8252 8253Enhanced the listing output to dump the AML code for resource descriptors 8254immediately after the ASL code for each descriptor, instead of in a block 8255at 8256the end of the entire resource template. 8257 8258Enhanced the compiler debug output to dump the entire original parse tree 8259constructed during the parse phase, before any transforms are applied to 8260the 8261tree. The transformed tree is dumped also. 8262 8263---------------------------------------- 826402 November 2005. Summary of changes for version 20051102: 8265 82661) ACPI CA Core Subsystem: 8267 8268Modified the subsystem initialization sequence to improve GPE support. 8269The 8270GPE initialization has been split into two parts in order to defer 8271execution 8272of the _PRW methods (Power Resources for Wake) until after the hardware 8273is 8274fully initialized and the SCI handler is installed. This allows the _PRW 8275methods to access fields protected by the Global Lock. This will fix 8276systems 8277where a NO_GLOBAL_LOCK exception has been seen during initialization. 8278 8279Converted the ACPI internal object disassemble and display code within 8280the 8281AML debugger to fully table-driven operation, reducing code size and 8282increasing maintainability. 8283 8284Fixed a regression with the ConcatenateResTemplate() ASL operator 8285introduced 8286in the 20051021 release. 8287 8288Implemented support for "local" internal ACPI object types within the 8289debugger "Object" command and the AcpiWalkNamespace external interfaces. 8290These local types include RegionFields, BankFields, IndexFields, Alias, 8291and 8292reference objects. 8293 8294Moved common AML resource handling code into a new file, "utresrc.c". 8295This 8296code is shared by both the Resource Manager and the AML Debugger. 8297 8298Code and Data Size: The current and previous library sizes for the core 8299subsystem are shown below. These are the code and data sizes for the 8300acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8301These 8302values do not include any ACPI driver or OSPM code. The debug version of 8303the 8304code includes the debug output trace mechanism and has a much larger code 8305and data size. Note that these values will vary depending on the 8306efficiency 8307of the compiler and the compiler options used during generation. 8308 8309 Previous Release: 8310 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8311 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8312 Current Release: 8313 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8314 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8315 8316 83172) iASL Compiler/Disassembler: 8318 8319Fixed a problem with very large initializer lists (more than 4000 8320elements) 8321for both Buffer and Package objects where the parse stack could overflow. 8322 8323Enhanced the pre-compile source code scan for non-ASCII characters to 8324ignore 8325characters within comment fields. The scan is now always performed and is 8326no 8327longer optional, detecting invalid characters within a source file 8328immediately rather than during the parse phase or later. 8329 8330Enhanced the ASL grammar definition to force early reductions on all 8331list- 8332style grammar elements so that the overall parse stack usage is greatly 8333reduced. This should improve performance and reduce the possibility of 8334parse 8335stack overflow. 8336 8337Eliminated all reduce/reduce conflicts in the iASL parser generation. 8338Also, 8339with the addition of a %expected statement, the compiler generates from 8340source with no warnings. 8341 8342Fixed a possible segment fault in the disassembler if the input filename 8343does not contain a "dot" extension (Thomas Renninger). 8344 8345---------------------------------------- 834621 October 2005. Summary of changes for version 20051021: 8347 83481) ACPI CA Core Subsystem: 8349 8350Implemented support for the EM64T and other x86-64 processors. This 8351essentially entails recognizing that these processors support non-aligned 8352memory transfers. Previously, all 64-bit processors were assumed to lack 8353hardware support for non-aligned transfers. 8354 8355Completed conversion of the Resource Manager to nearly full table-driven 8356operation. Specifically, the resource conversion code (convert AML to 8357internal format and the reverse) and the debug code to dump internal 8358resource descriptors are fully table-driven, reducing code and data size 8359and 8360improving maintainability. 8361 8362The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 8363word 8364on 64-bit processors instead of a fixed 32-bit word. (With assistance 8365from 8366Alexey Starikovskiy) 8367 8368Implemented support within the resource conversion code for the Type- 8369Specific byte within the various ACPI 3.0 *WordSpace macros. 8370 8371Fixed some issues within the resource conversion code for the type- 8372specific 8373flags for both Memory and I/O address resource descriptors. For Memory, 8374implemented support for the MTP and TTP flags. For I/O, split the TRS and 8375TTP flags into two separate fields. 8376 8377Code and Data Size: The current and previous library sizes for the core 8378subsystem are shown below. These are the code and data sizes for the 8379acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8380These 8381values do not include any ACPI driver or OSPM code. The debug version of 8382the 8383code includes the debug output trace mechanism and has a much larger code 8384and data size. Note that these values will vary depending on the 8385efficiency 8386of the compiler and the compiler options used during generation. 8387 8388 Previous Release: 8389 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 8390 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 8391 Current Release: 8392 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8393 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8394 8395 8396 83972) iASL Compiler/Disassembler: 8398 8399Relaxed a compiler restriction that disallowed a ResourceIndex byte if 8400the 8401corresponding ResourceSource string was not also present in a resource 8402descriptor declaration. This restriction caused problems with existing 8403AML/ASL code that includes the Index byte without the string. When such 8404AML 8405was disassembled, it could not be compiled without modification. Further, 8406the modified code created a resource template with a different size than 8407the 8408original, breaking code that used fixed offsets into the resource 8409template 8410buffer. 8411 8412Removed a recent feature of the disassembler to ignore a lone 8413ResourceIndex 8414byte. This byte is now emitted if present so that the exact AML can be 8415reproduced when the disassembled code is recompiled. 8416 8417Improved comments and text alignment for the resource descriptor code 8418emitted by the disassembler. 8419 8420Implemented disassembler support for the ACPI 3.0 AccessSize field within 8421a 8422Register() resource descriptor. 8423 8424---------------------------------------- 842530 September 2005. Summary of changes for version 20050930: 8426 84271) ACPI CA Core Subsystem: 8428 8429Completed a major overhaul of the Resource Manager code - specifically, 8430optimizations in the area of the AML/internal resource conversion code. 8431The 8432code has been optimized to simplify and eliminate duplicated code, CPU 8433stack 8434use has been decreased by optimizing function parameters and local 8435variables, and naming conventions across the manager have been 8436standardized 8437for clarity and ease of maintenance (this includes function, parameter, 8438variable, and struct/typedef names.) The update may force changes in some 8439driver code, depending on how resources are handled by the host OS. 8440 8441All Resource Manager dispatch and information tables have been moved to a 8442single location for clarity and ease of maintenance. One new file was 8443created, named "rsinfo.c". 8444 8445The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 8446guarantee that the argument is not evaluated twice, making them less 8447prone 8448to macro side-effects. However, since there exists the possibility of 8449additional stack use if a particular compiler cannot optimize them (such 8450as 8451in the debug generation case), the original macros are optionally 8452available. 8453Note that some invocations of the return_VALUE macro may now cause size 8454mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 8455to 8456eliminate these. (From Randy Dunlap) 8457 8458Implemented a new mechanism to enable debug tracing for individual 8459control 8460methods. A new external interface, AcpiDebugTrace, is provided to enable 8461this mechanism. The intent is to allow the host OS to easily enable and 8462disable tracing for problematic control methods. This interface can be 8463easily exposed to a user or debugger interface if desired. See the file 8464psxface.c for details. 8465 8466AcpiUtCallocate will now return a valid pointer if a length of zero is 8467specified - a length of one is used and a warning is issued. This matches 8468the behavior of AcpiUtAllocate. 8469 8470Code and Data Size: The current and previous library sizes for the core 8471subsystem are shown below. These are the code and data sizes for the 8472acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8473These 8474values do not include any ACPI driver or OSPM code. The debug version of 8475the 8476code includes the debug output trace mechanism and has a much larger code 8477and data size. Note that these values will vary depending on the 8478efficiency 8479of the compiler and the compiler options used during generation. 8480 8481 Previous Release: 8482 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 8483 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 8484 Current Release: 8485 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 8486 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 8487 8488 84892) iASL Compiler/Disassembler: 8490 8491A remark is issued if the effective compile-time length of a package or 8492buffer is zero. Previously, this was a warning. 8493 8494---------------------------------------- 849516 September 2005. Summary of changes for version 20050916: 8496 84971) ACPI CA Core Subsystem: 8498 8499Fixed a problem within the Resource Manager where support for the Generic 8500Register descriptor was not fully implemented. This descriptor is now 8501fully 8502recognized, parsed, disassembled, and displayed. 8503 8504Completely restructured the Resource Manager code to utilize table-driven 8505dispatch and lookup, eliminating many of the large switch() statements. 8506This 8507reduces overall subsystem code size and code complexity. Affects the 8508resource parsing and construction, disassembly, and debug dump output. 8509 8510Cleaned up and restructured the debug dump output for all resource 8511descriptors. Improved readability of the output and reduced code size. 8512 8513Fixed a problem where changes to internal data structures caused the 8514optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 8515 8516Code and Data Size: The current and previous library sizes for the core 8517subsystem are shown below. These are the code and data sizes for the 8518acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8519These 8520values do not include any ACPI driver or OSPM code. The debug version of 8521the 8522code includes the debug output trace mechanism and has a much larger code 8523and data size. Note that these values will vary depending on the 8524efficiency 8525of the compiler and the compiler options used during generation. 8526 8527 Previous Release: 8528 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 8529 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 8530 Current Release: 8531 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 8532 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 8533 8534 85352) iASL Compiler/Disassembler: 8536 8537Updated the disassembler to automatically insert an EndDependentFn() 8538macro 8539into the ASL stream if this macro is missing in the original AML code, 8540simplifying compilation of the resulting ASL module. 8541 8542Fixed a problem in the disassembler where a disassembled ResourceSource 8543string (within a large resource descriptor) was not surrounded by quotes 8544and 8545not followed by a comma, causing errors when the resulting ASL module was 8546compiled. Also, escape sequences within a ResourceSource string are now 8547handled correctly (especially "\\") 8548 8549---------------------------------------- 855002 September 2005. Summary of changes for version 20050902: 8551 85521) ACPI CA Core Subsystem: 8553 8554Fixed a problem with the internal Owner ID allocation and deallocation 8555mechanisms for control method execution and recursive method invocation. 8556This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 8557messages seen on some systems. Recursive method invocation depth is 8558currently limited to 255. (Alexey Starikovskiy) 8559 8560Completely eliminated all vestiges of support for the "module-level 8561executable code" until this support is fully implemented and debugged. 8562This 8563should eliminate the NO_RETURN_VALUE exceptions seen during table load on 8564some systems that invoke this support. 8565 8566Fixed a problem within the resource manager code where the transaction 8567flags 8568for a 64-bit address descriptor were handled incorrectly in the type- 8569specific flag byte. 8570 8571Consolidated duplicate code within the address descriptor resource 8572manager 8573code, reducing overall subsystem code size. 8574 8575Fixed a fault when using the AML debugger "disassemble" command to 8576disassemble individual control methods. 8577 8578Removed references to the "release_current" directory within the Unix 8579release package. 8580 8581Code and Data Size: The current and previous core subsystem library sizes 8582are shown below. These are the code and data sizes for the acpica.lib 8583produced by the Microsoft Visual C++ 6.0 compiler. These values do not 8584include any ACPI driver or OSPM code. The debug version of the code 8585includes 8586the debug output trace mechanism and has a much larger code and data 8587size. 8588Note that these values will vary depending on the efficiency of the 8589compiler 8590and the compiler options used during generation. 8591 8592 Previous Release: 8593 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8594 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 8595 Current Release: 8596 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 8597 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 8598 8599 86002) iASL Compiler/Disassembler: 8601 8602Implemented an error check for illegal duplicate values in the interrupt 8603and 8604dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 8605Interrupt(). 8606 8607Implemented error checking for the Irq() and IrqNoFlags() macros to 8608detect 8609too many values in the interrupt list (16 max) and invalid values in the 8610list (range 0 - 15) 8611 8612The maximum length string literal within an ASL file is now restricted to 8613200 characters as per the ACPI specification. 8614 8615Fixed a fault when using the -ln option (generate namespace listing). 8616 8617Implemented an error check to determine if a DescriptorName within a 8618resource descriptor has already been used within the current scope. 8619 8620---------------------------------------- 862115 August 2005. Summary of changes for version 20050815: 8622 86231) ACPI CA Core Subsystem: 8624 8625Implemented a full bytewise compare to determine if a table load request 8626is 8627attempting to load a duplicate table. The compare is performed if the 8628table 8629signatures and table lengths match. This will allow different tables with 8630the same OEM Table ID and revision to be loaded - probably against the 8631ACPI 8632specification, but discovered in the field nonetheless. 8633 8634Added the changes.txt logfile to each of the zipped release packages. 8635 8636Code and Data Size: Current and previous core subsystem library sizes are 8637shown below. These are the code and data sizes for the acpica.lib 8638produced 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: 78.6K Code, 11.7K Data, 90.3K Total 8649 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 8650 Current Release: 8651 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8652 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 8653 8654 86552) iASL Compiler/Disassembler: 8656 8657Fixed a problem where incorrect AML code could be generated for Package 8658objects if optimization is disabled (via the -oa switch). 8659 8660Fixed a problem with where incorrect AML code is generated for variable- 8661length packages when the package length is not specified and the number 8662of 8663initializer values is greater than 255. 8664 8665 8666---------------------------------------- 866729 July 2005. Summary of changes for version 20050729: 8668 86691) ACPI CA Core Subsystem: 8670 8671Implemented support to ignore an attempt to install/load a particular 8672ACPI 8673table more than once. Apparently there exists BIOS code that repeatedly 8674attempts to load the same SSDT upon certain events. With assistance from 8675Venkatesh Pallipadi. 8676 8677Restructured the main interface to the AML parser in order to correctly 8678handle all exceptional conditions. This will prevent leakage of the 8679OwnerId 8680resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 8681some 8682machines. With assistance from Alexey Starikovskiy. 8683 8684Support for "module level code" has been disabled in this version due to 8685a 8686number of issues that have appeared on various machines. The support can 8687be 8688enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 8689compilation. When the issues are fully resolved, the code will be enabled 8690by 8691default again. 8692 8693Modified the internal functions for debug print support to define the 8694FunctionName parameter as a (const char *) for compatibility with 8695compiler 8696built-in macros such as __FUNCTION__, etc. 8697 8698Linted the entire ACPICA source tree for both 32-bit and 64-bit. 8699 8700Implemented support to display an object count summary for the AML 8701Debugger 8702commands Object and Methods. 8703 8704Code and Data Size: Current and previous core subsystem library sizes are 8705shown below. These are the code and data sizes for the acpica.lib 8706produced 8707by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8708any ACPI driver or OSPM code. The debug version of the code includes the 8709debug output trace mechanism and has a much larger code and data size. 8710Note 8711that these values will vary depending on the efficiency of the compiler 8712and 8713the compiler options used during generation. 8714 8715 Previous Release: 8716 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 8717 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 8718 Current Release: 8719 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8720 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 8721 8722 87232) iASL Compiler/Disassembler: 8724 8725Fixed a regression that appeared in the 20050708 version of the compiler 8726where an error message was inadvertently emitted for invocations of the 8727_OSI 8728reserved control method. 8729 8730---------------------------------------- 873108 July 2005. Summary of changes for version 20050708: 8732 87331) ACPI CA Core Subsystem: 8734 8735The use of the CPU stack in the debug version of the subsystem has been 8736considerably reduced. Previously, a debug structure was declared in every 8737function that used the debug macros. This structure has been removed in 8738favor of declaring the individual elements as parameters to the debug 8739functions. This reduces the cumulative stack use during nested execution 8740of 8741ACPI function calls at the cost of a small increase in the code size of 8742the 8743debug version of the subsystem. With assistance from Alexey Starikovskiy 8744and 8745Len Brown. 8746 8747Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 8748headers to define a macro that will return the current function name at 8749runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 8750by 8751the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 8752compiler-dependent header, the function name is saved on the CPU stack 8753(one 8754pointer per function.) This mechanism is used because apparently there 8755exists no standard ANSI-C defined macro that that returns the function 8756name. 8757 8758Redesigned and reimplemented the "Owner ID" mechanism used to track 8759namespace objects created/deleted by ACPI tables and control method 8760execution. A bitmap is now used to allocate and free the IDs, thus 8761solving 8762the wraparound problem present in the previous implementation. The size 8763of 8764the namespace node descriptor was reduced by 2 bytes as a result (Alexey 8765Starikovskiy). 8766 8767Removed the UINT32_BIT and UINT16_BIT types that were used for the 8768bitfield 8769flag definitions within the headers for the predefined ACPI tables. These 8770have been replaced by UINT8_BIT in order to increase the code portability 8771of 8772the subsystem. If the use of UINT8 remains a problem, we may be forced to 8773eliminate bitfields entirely because of a lack of portability. 8774 8775Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 8776This 8777is a frequently used function and this improvement increases the 8778performance 8779of the entire subsystem (Alexey Starikovskiy). 8780 8781Fixed several possible memory leaks and the inverse - premature object 8782deletion (Alexey Starikovskiy). 8783 8784Code and Data Size: Current and previous core subsystem library sizes are 8785shown below. These are the code and data sizes for the acpica.lib 8786produced 8787by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8788any ACPI driver or OSPM code. The debug version of the code includes the 8789debug output trace mechanism and has a much larger code and data size. 8790Note 8791that these values will vary depending on the efficiency of the compiler 8792and 8793the compiler options used during generation. 8794 8795 Previous Release: 8796 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 8797 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 8798 Current Release: 8799 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 8800 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 8801 8802---------------------------------------- 880324 June 2005. Summary of changes for version 20050624: 8804 88051) ACPI CA Core Subsystem: 8806 8807Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 8808the host-defined cache object. This allows the OSL implementation to 8809define 8810and type this object in any manner desired, simplifying the OSL 8811implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 8812Linux, and should be defined in the OS-specific header file for other 8813operating systems as required. 8814 8815Changed the interface to AcpiOsAcquireObject to directly return the 8816requested object as the function return (instead of ACPI_STATUS.) This 8817change was made for performance reasons, since this is the purpose of the 8818interface in the first place. AcpiOsAcquireObject is now similar to the 8819AcpiOsAllocate interface. 8820 8821Implemented a new AML debugger command named Businfo. This command 8822displays 8823information about all devices that have an associate _PRT object. The 8824_ADR, 8825_HID, _UID, and _CID are displayed for these devices. 8826 8827Modified the initialization sequence in AcpiInitializeSubsystem to call 8828the 8829OSL interface AcpiOslInitialize first, before any local initialization. 8830This 8831change was required because the global initialization now calls OSL 8832interfaces. 8833 8834Enhanced the Dump command to display the entire contents of Package 8835objects 8836(including all sub-objects and their values.) 8837 8838Restructured the code base to split some files because of size and/or 8839because the code logically belonged in a separate file. New files are 8840listed 8841below. All makefiles and project files included in the ACPI CA release 8842have 8843been updated. 8844 utilities/utcache.c /* Local cache interfaces */ 8845 utilities/utmutex.c /* Local mutex support */ 8846 utilities/utstate.c /* State object support */ 8847 interpreter/parser/psloop.c /* Main AML parse loop */ 8848 8849Code and Data Size: Current and previous core subsystem library sizes are 8850shown below. These are the code and data sizes for the acpica.lib 8851produced 8852by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8853any ACPI driver or OSPM code. The debug version of the code includes the 8854debug output trace mechanism and has a much larger code and data size. 8855Note 8856that these values will vary depending on the efficiency of the compiler 8857and 8858the compiler options used during generation. 8859 8860 Previous Release: 8861 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 8862 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 8863 Current Release: 8864 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 8865 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 8866 8867 88682) iASL Compiler/Disassembler: 8869 8870Fixed a regression introduced in version 20050513 where the use of a 8871Package 8872object within a Case() statement caused a compile time exception. The 8873original behavior has been restored (a Match() operator is emitted.) 8874 8875---------------------------------------- 887617 June 2005. Summary of changes for version 20050617: 8877 88781) ACPI CA Core Subsystem: 8879 8880Moved the object cache operations into the OS interface layer (OSL) to 8881allow 8882the host OS to handle these operations if desired (for example, the Linux 8883OSL will invoke the slab allocator). This support is optional; the 8884compile 8885time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 8886cache 8887code in the ACPI CA core. The new OSL interfaces are shown below. See 8888utalloc.c for an example implementation, and acpiosxf.h for the exact 8889interface definitions. With assistance from Alexey Starikovskiy. 8890 AcpiOsCreateCache 8891 AcpiOsDeleteCache 8892 AcpiOsPurgeCache 8893 AcpiOsAcquireObject 8894 AcpiOsReleaseObject 8895 8896Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 8897return 8898and restore a flags parameter. This fits better with many OS lock models. 8899Note: the current execution state (interrupt handler or not) is no longer 8900passed to these interfaces. If necessary, the OSL must determine this 8901state 8902by itself, a simple and fast operation. With assistance from Alexey 8903Starikovskiy. 8904 8905Fixed a problem in the ACPI table handling where a valid XSDT was assumed 8906present if the revision of the RSDP was 2 or greater. According to the 8907ACPI 8908specification, the XSDT is optional in all cases, and the table manager 8909therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 8910Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 8911contain 8912only the RSDT. 8913 8914Fixed an interpreter problem with the Mid() operator in the case of an 8915input 8916string where the resulting output string is of zero length. It now 8917correctly 8918returns a valid, null terminated string object instead of a string object 8919with a null pointer. 8920 8921Fixed a problem with the control method argument handling to allow a 8922store 8923to an Arg object that already contains an object of type Device. The 8924Device 8925object is now correctly overwritten. Previously, an error was returned. 8926 8927 8928Enhanced the debugger Find command to emit object values in addition to 8929the 8930found object pathnames. The output format is the same as the dump 8931namespace 8932command. 8933 8934Enhanced the debugger Set command. It now has the ability to set the 8935value 8936of any Named integer object in the namespace (Previously, only method 8937locals 8938and args could be set.) 8939 8940Code and Data Size: Current and previous core subsystem library sizes are 8941shown below. These are the code and data sizes for the acpica.lib 8942produced 8943by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8944any ACPI driver or OSPM code. The debug version of the code includes the 8945debug output trace mechanism and has a much larger code and data size. 8946Note 8947that these values will vary depending on the efficiency of the compiler 8948and 8949the compiler options used during generation. 8950 8951 Previous Release: 8952 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 8953 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 8954 Current Release: 8955 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 8956 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 8957 8958 89592) iASL Compiler/Disassembler: 8960 8961Fixed a regression in the disassembler where if/else/while constructs 8962were 8963output incorrectly. This problem was introduced in the previous release 8964(20050526). This problem also affected the single-step disassembly in the 8965debugger. 8966 8967Fixed a problem where compiling the reserved _OSI method would randomly 8968(but 8969rarely) produce compile errors. 8970 8971Enhanced the disassembler to emit compilable code in the face of 8972incorrect 8973AML resource descriptors. If the optional ResourceSourceIndex is present, 8974but the ResourceSource is not, do not emit the ResourceSourceIndex in the 8975disassembly. Otherwise, the resulting code cannot be compiled without 8976errors. 8977 8978---------------------------------------- 897926 May 2005. Summary of changes for version 20050526: 8980 89811) ACPI CA Core Subsystem: 8982 8983Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 8984the module level (not within a control method.) These opcodes are 8985executed 8986exactly once at the time the table is loaded. This type of code was legal 8987up 8988until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 8989in 8990order to provide backwards compatibility with earlier BIOS 8991implementations. 8992This eliminates the "Encountered executable code at module level" warning 8993that was previously generated upon detection of such code. 8994 8995Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 8996inadvertently be generated during the lookup of namespace objects in the 8997second pass parse of ACPI tables and control methods. It appears that 8998this 8999problem could occur during the resolution of forward references to 9000namespace 9001objects. 9002 9003Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 9004corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 9005allows the deadlock detection debug code to be compiled out in the normal 9006case, improving mutex performance (and overall subsystem performance) 9007considerably. 9008 9009Implemented a handful of miscellaneous fixes for possible memory leaks on 9010error conditions and error handling control paths. These fixes were 9011suggested by FreeBSD and the Coverity Prevent source code analysis tool. 9012 9013Added a check for a null RSDT pointer in AcpiGetFirmwareTable 9014(tbxfroot.c) 9015to prevent a fault in this error case. 9016 9017Code and Data Size: Current and previous core subsystem library sizes are 9018shown below. These are the code and data sizes for the acpica.lib 9019produced 9020by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9021any ACPI driver or OSPM code. The debug version of the code includes the 9022debug output trace mechanism and has a much larger code and data size. 9023Note 9024that these values will vary depending on the efficiency of the compiler 9025and 9026the compiler options used during generation. 9027 9028 Previous Release: 9029 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9030 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9031 Current Release: 9032 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9033 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9034 9035 90362) iASL Compiler/Disassembler: 9037 9038Implemented support to allow Type 1 and Type 2 ASL operators to appear at 9039the module level (not within a control method.) These operators will be 9040executed once at the time the table is loaded. This type of code was 9041legal 9042up until the release of ACPI 2.0B (2002) and is now supported by the iASL 9043compiler in order to provide backwards compatibility with earlier BIOS 9044ASL 9045code. 9046 9047The ACPI integer width (specified via the table revision ID or the -r 9048override, 32 or 64 bits) is now used internally during compile-time 9049constant 9050folding to ensure that constants are truncated to 32 bits if necessary. 9051Previously, the revision ID value was only emitted in the AML table 9052header. 9053 9054An error message is now generated for the Mutex and Method operators if 9055the 9056SyncLevel parameter is outside the legal range of 0 through 15. 9057 9058Fixed a problem with the Method operator ParameterTypes list handling 9059(ACPI 90603.0). Previously, more than 2 types or 2 arguments generated a syntax 9061error. 9062The actual underlying implementation of method argument typechecking is 9063still under development, however. 9064 9065---------------------------------------- 906613 May 2005. Summary of changes for version 20050513: 9067 90681) ACPI CA Core Subsystem: 9069 9070Implemented support for PCI Express root bridges -- added support for 9071device 9072PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 9073 9074The interpreter now automatically truncates incoming 64-bit constants to 907532 9076bits if currently executing out of a 32-bit ACPI table (Revision < 2). 9077This 9078also affects the iASL compiler constant folding. (Note: as per below, the 9079iASL compiler no longer allows 64-bit constants within 32-bit tables.) 9080 9081Fixed a problem where string and buffer objects with "static" pointers 9082(pointers to initialization data within an ACPI table) were not handled 9083consistently. The internal object copy operation now always copies the 9084data 9085to a newly allocated buffer, regardless of whether the source object is 9086static or not. 9087 9088Fixed a problem with the FromBCD operator where an implicit result 9089conversion was improperly performed while storing the result to the 9090target 9091operand. Since this is an "explicit conversion" operator, the implicit 9092conversion should never be performed on the output. 9093 9094Fixed a problem with the CopyObject operator where a copy to an existing 9095named object did not always completely overwrite the existing object 9096stored 9097at name. Specifically, a buffer-to-buffer copy did not delete the 9098existing 9099buffer. 9100 9101Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 9102and 9103structs for consistency. 9104 9105Code and Data Size: Current and previous core subsystem library sizes are 9106shown below. These are the code and data sizes for the acpica.lib 9107produced 9108by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9109any ACPI driver or OSPM code. The debug version of the code includes the 9110debug output trace mechanism and has a much larger code and data size. 9111Note 9112that these values will vary depending on the efficiency of the compiler 9113and 9114the compiler options used during generation. 9115 9116 Previous Release: 9117 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9118 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9119 Current Release: (Same sizes) 9120 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9121 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9122 9123 91242) iASL Compiler/Disassembler: 9125 9126The compiler now emits a warning if an attempt is made to generate a 64- 9127bit 9128integer constant from within a 32-bit ACPI table (Revision < 2). The 9129integer 9130is truncated to 32 bits. 9131 9132Fixed a problem with large package objects: if the static length of the 9133package is greater than 255, the "variable length package" opcode is 9134emitted. Previously, this caused an error. This requires an update to the 9135ACPI spec, since it currently (incorrectly) states that packages larger 9136than 9137255 elements are not allowed. 9138 9139The disassembler now correctly handles variable length packages and 9140packages 9141larger than 255 elements. 9142 9143---------------------------------------- 914408 April 2005. Summary of changes for version 20050408: 9145 91461) ACPI CA Core Subsystem: 9147 9148Fixed three cases in the interpreter where an "index" argument to an ASL 9149function was still (internally) 32 bits instead of the required 64 bits. 9150This was the Index argument to the Index, Mid, and Match operators. 9151 9152The "strupr" function is now permanently local (AcpiUtStrupr), since this 9153is 9154not a POSIX-defined function and not present in most kernel-level C 9155libraries. All references to the C library strupr function have been 9156removed 9157from the headers. 9158 9159Completed the deployment of static functions/prototypes. All prototypes 9160with 9161the static attribute have been moved from the headers to the owning C 9162file. 9163 9164Implemented an extract option (-e) for the AcpiBin utility (AML binary 9165utility). This option allows the utility to extract individual ACPI 9166tables 9167from the output of AcpiDmp. It provides the same functionality of the 9168acpixtract.pl perl script without the worry of setting the correct perl 9169options. AcpiBin runs on Windows and has not yet been generated/validated 9170in 9171the Linux/Unix environment (but should be soon). 9172 9173Updated and fixed the table dump option for AcpiBin (-d). This option 9174converts a single ACPI table to a hex/ascii file, similar to the output 9175of 9176AcpiDmp. 9177 9178Code and Data Size: Current and previous core subsystem library sizes are 9179shown below. These are the code and data sizes for the acpica.lib 9180produced 9181by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9182any ACPI driver or OSPM code. The debug version of the code includes the 9183debug output trace mechanism and has a much larger code and data size. 9184Note 9185that these values will vary depending on the efficiency of the compiler 9186and 9187the compiler options used during generation. 9188 9189 Previous Release: 9190 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9191 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9192 Current Release: 9193 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9194 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9195 9196 91972) iASL Compiler/Disassembler: 9198 9199Disassembler fix: Added a check to ensure that the table length found in 9200the 9201ACPI table header within the input file is not longer than the actual 9202input 9203file size. This indicates some kind of file or table corruption. 9204 9205---------------------------------------- 920629 March 2005. Summary of changes for version 20050329: 9207 92081) ACPI CA Core Subsystem: 9209 9210An error is now generated if an attempt is made to create a Buffer Field 9211of 9212length zero (A CreateField with a length operand of zero.) 9213 9214The interpreter now issues a warning whenever executable code at the 9215module 9216level is detected during ACPI table load. This will give some idea of the 9217prevalence of this type of code. 9218 9219Implemented support for references to named objects (other than control 9220methods) within package objects. 9221 9222Enhanced package object output for the debug object. Package objects are 9223now 9224completely dumped, showing all elements. 9225 9226Enhanced miscellaneous object output for the debug object. Any object can 9227now be written to the debug object (for example, a device object can be 9228written, and the type of the object will be displayed.) 9229 9230The "static" qualifier has been added to all local functions across both 9231the 9232core subsystem and the iASL compiler. 9233 9234The number of "long" lines (> 80 chars) within the source has been 9235significantly reduced, by about 1/3. 9236 9237Cleaned up all header files to ensure that all CA/iASL functions are 9238prototyped (even static functions) and the formatting is consistent. 9239 9240Two new header files have been added, acopcode.h and acnames.h. 9241 9242Removed several obsolete functions that were no longer used. 9243 9244Code and Data Size: Current and previous core subsystem library sizes are 9245shown below. These are the code and data sizes for the acpica.lib 9246produced 9247by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9248any ACPI driver or OSPM code. The debug version of the code includes the 9249debug output trace mechanism and has a much larger code and data size. 9250Note 9251that these values will vary depending on the efficiency of the compiler 9252and 9253the compiler options used during generation. 9254 9255 Previous Release: 9256 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9257 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9258 Current Release: 9259 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9260 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9261 9262 9263 92642) iASL Compiler/Disassembler: 9265 9266Fixed a problem with the resource descriptor generation/support. For the 9267ResourceSourceIndex and the ResourceSource fields, both must be present, 9268or 9269both must be not present - can't have one without the other. 9270 9271The compiler now returns non-zero from the main procedure if any errors 9272have 9273occurred during the compilation. 9274 9275 9276---------------------------------------- 927709 March 2005. Summary of changes for version 20050309: 9278 92791) ACPI CA Core Subsystem: 9280 9281The string-to-buffer implicit conversion code has been modified again 9282after 9283a change to the ACPI specification. In order to match the behavior of 9284the 9285other major ACPI implementation, the target buffer is no longer truncated 9286if 9287the source string is smaller than an existing target buffer. This change 9288requires an update to the ACPI spec, and should eliminate the recent 9289AE_AML_BUFFER_LIMIT issues. 9290 9291The "implicit return" support was rewritten to a new algorithm that 9292solves 9293the general case. Rather than attempt to determine when a method is about 9294to 9295exit, the result of every ASL operator is saved momentarily until the 9296very 9297next ASL operator is executed. Therefore, no matter how the method exits, 9298there will always be a saved implicit return value. This feature is only 9299enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 9300eliminate 9301AE_AML_NO_RETURN_VALUE errors when enabled. 9302 9303Implemented implicit conversion support for the predicate (operand) of 9304the 9305If, Else, and While operators. String and Buffer arguments are 9306automatically 9307converted to Integers. 9308 9309Changed the string-to-integer conversion behavior to match the new ACPI 9310errata: "If no integer object exists, a new integer is created. The ASCII 9311string is interpreted as a hexadecimal constant. Each string character is 9312interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 9313with the first character as the most significant digit, and ending with 9314the 9315first non-hexadecimal character or end-of-string." This means that the 9316first 9317non-hex character terminates the conversion and this is the code that was 9318changed. 9319 9320Fixed a problem where the ObjectType operator would fail (fault) when 9321used 9322on an Index of a Package which pointed to a null package element. The 9323operator now properly returns zero (Uninitialized) in this case. 9324 9325Fixed a problem where the While operator used excessive memory by not 9326properly popping the result stack during execution. There was no memory 9327leak 9328after execution, however. (Code provided by Valery Podrezov.) 9329 9330Fixed a problem where references to control methods within Package 9331objects 9332caused the method to be invoked, instead of producing a reference object 9333pointing to the method. 9334 9335Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 9336to 9337improve performance and reduce code size. (Code provided by Alexey 9338Starikovskiy.) 9339 9340Code and Data Size: Current and previous core subsystem library sizes are 9341shown below. These are the code and data sizes for the acpica.lib 9342produced 9343by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9344any ACPI driver or OSPM code. The debug version of the code includes the 9345debug output trace mechanism and has a much larger code and data size. 9346Note 9347that these values will vary depending on the efficiency of the compiler 9348and 9349the compiler options used during generation. 9350 9351 Previous Release: 9352 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9353 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 9354 Current Release: 9355 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9356 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9357 9358 93592) iASL Compiler/Disassembler: 9360 9361Fixed a problem with the Return operator with no arguments. Since the AML 9362grammar for the byte encoding requires an operand for the Return opcode, 9363the 9364compiler now emits a Return(Zero) for this case. An ACPI specification 9365update has been written for this case. 9366 9367For tables other than the DSDT, namepath optimization is automatically 9368disabled. This is because SSDTs can be loaded anywhere in the namespace, 9369the 9370compiler has no knowledge of where, and thus cannot optimize namepaths. 9371 9372Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 9373inadvertently omitted from the ACPI specification, and will require an 9374update to the spec. 9375 9376The source file scan for ASCII characters is now optional (-a). This 9377change 9378was made because some vendors place non-ascii characters within comments. 9379However, the scan is simply a brute-force byte compare to ensure all 9380characters in the file are in the range 0x00 to 0x7F. 9381 9382Fixed a problem with the CondRefOf operator where the compiler was 9383inappropriately checking for the existence of the target. Since the point 9384of 9385the operator is to check for the existence of the target at run-time, the 9386compiler no longer checks for the target existence. 9387 9388Fixed a problem where errors generated from the internal AML interpreter 9389during constant folding were not handled properly, causing a fault. 9390 9391Fixed a problem with overly aggressive range checking for the Stall 9392operator. The valid range (max 255) is now only checked if the operand is 9393of 9394type Integer. All other operand types cannot be statically checked. 9395 9396Fixed a problem where control method references within the RefOf, 9397DeRefOf, 9398and ObjectType operators were not treated properly. They are now treated 9399as 9400actual references, not method invocations. 9401 9402Fixed and enhanced the "list namespace" option (-ln). This option was 9403broken 9404a number of releases ago. 9405 9406Improved error handling for the Field, IndexField, and BankField 9407operators. 9408The compiler now cleanly reports and recovers from errors in the field 9409component (FieldUnit) list. 9410 9411Fixed a disassembler problem where the optional ResourceDescriptor fields 9412TRS and TTP were not always handled correctly. 9413 9414Disassembler - Comments in output now use "//" instead of "/*" 9415 9416---------------------------------------- 941728 February 2005. Summary of changes for version 20050228: 9418 94191) ACPI CA Core Subsystem: 9420 9421Fixed a problem where the result of an Index() operator (an object 9422reference) must increment the reference count on the target object for 9423the 9424life of the object reference. 9425 9426Implemented AML Interpreter and Debugger support for the new ACPI 3.0 9427Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 9428WordSpace 9429resource descriptors. 9430 9431Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 9432Space Descriptor" string, indicating interpreter support for the 9433descriptors 9434above. 9435 9436Implemented header support for the new ACPI 3.0 FADT flag bits. 9437 9438Implemented header support for the new ACPI 3.0 PCI Express bits for the 9439PM1 9440status/enable registers. 9441 9442Updated header support for the MADT processor local Apic struct and MADT 9443platform interrupt source struct for new ACPI 3.0 fields. 9444 9445Implemented header support for the SRAT and SLIT ACPI tables. 9446 9447Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 9448flag 9449at runtime. 9450 9451Code and Data Size: Current and previous core subsystem library sizes are 9452shown below. These are the code and data sizes for the acpica.lib 9453produced 9454by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9455any ACPI driver or OSPM code. The debug version of the code includes the 9456debug output trace mechanism and has a much larger code and data size. 9457Note 9458that these values will vary depending on the efficiency of the compiler 9459and 9460the compiler options used during generation. 9461 9462 Previous Release: 9463 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 9464 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 9465 Current Release: 9466 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9467 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 9468 9469 94702) iASL Compiler/Disassembler: 9471 9472Fixed a problem with the internal 64-bit String-to-integer conversion 9473with 9474strings less than two characters long. 9475 9476Fixed a problem with constant folding where the result of the Index() 9477operator can not be considered a constant. This means that Index() cannot 9478be 9479a type3 opcode and this will require an update to the ACPI specification. 9480 9481Disassembler: Implemented support for the TTP, MTP, and TRS resource 9482descriptor fields. These fields were inadvertently ignored and not output 9483in 9484the disassembly of the resource descriptor. 9485 9486 9487 ---------------------------------------- 948811 February 2005. Summary of changes for version 20050211: 9489 94901) ACPI CA Core Subsystem: 9491 9492Implemented ACPI 3.0 support for implicit conversion within the Match() 9493operator. MatchObjects can now be of type integer, buffer, or string 9494instead 9495of just type integer. Package elements are implicitly converted to the 9496type 9497of the MatchObject. This change aligns the behavior of Match() with the 9498behavior of the other logical operators (LLess(), etc.) It also requires 9499an 9500errata change to the ACPI specification as this support was intended for 9501ACPI 3.0, but was inadvertently omitted. 9502 9503Fixed a problem with the internal implicit "to buffer" conversion. 9504Strings 9505that are converted to buffers will cause buffer truncation if the string 9506is 9507smaller than the target buffer. Integers that are converted to buffers 9508will 9509not cause buffer truncation, only zero extension (both as per the ACPI 9510spec.) The problem was introduced when code was added to truncate the 9511buffer, but this should not be performed in all cases, only the string 9512case. 9513 9514Fixed a problem with the Buffer and Package operators where the 9515interpreter 9516would get confused if two such operators were used as operands to an ASL 9517operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 9518stack was not being popped after the execution of these operators, 9519resulting 9520in an AE_NO_RETURN_VALUE exception. 9521 9522Fixed a problem with constructs of the form Store(Index(...),...). The 9523reference object returned from Index was inadvertently resolved to an 9524actual 9525value. This problem was introduced in version 20050114 when the behavior 9526of 9527Store() was modified to restrict the object types that can be used as the 9528source operand (to match the ACPI specification.) 9529 9530Reduced excessive stack use within the AcpiGetObjectInfo procedure. 9531 9532Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 9533 9534Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 9535 9536Code and Data Size: Current and previous core subsystem library sizes are 9537shown below. These are the code and data sizes for the acpica.lib 9538produced 9539by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9540any ACPI driver or OSPM code. The debug version of the code includes the 9541debug output trace mechanism and has a much larger code and data size. 9542Note 9543that these values will vary depending on the efficiency of the compiler 9544and 9545the compiler options used during generation. 9546 9547 Previous Release: 9548 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 9549 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 9550 Current Release: 9551 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 9552 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 9553 9554 95552) iASL Compiler/Disassembler: 9556 9557Fixed a code generation problem in the constant folding optimization code 9558where incorrect code was generated if a constant was reduced to a buffer 9559object (i.e., a reduced type 5 opcode.) 9560 9561Fixed a typechecking problem for the ToBuffer operator. Caused by an 9562incorrect return type in the internal opcode information table. 9563 9564---------------------------------------- 956525 January 2005. Summary of changes for version 20050125: 9566 95671) ACPI CA Core Subsystem: 9568 9569Fixed a recently introduced problem with the Global Lock where the 9570underlying semaphore was not created. This problem was introduced in 9571version 20050114, and caused an AE_AML_NO_OPERAND exception during an 9572Acquire() operation on _GL. 9573 9574The local object cache is now optional, and is disabled by default. Both 9575AcpiExec and the iASL compiler enable the cache because they run in user 9576mode and this enhances their performance. #define 9577ACPI_ENABLE_OBJECT_CACHE 9578to enable the local cache. 9579 9580Fixed an issue in the internal function AcpiUtEvaluateObject concerning 9581the 9582optional "implicit return" support where an error was returned if no 9583return 9584object was expected, but one was implicitly returned. AE_OK is now 9585returned 9586in this case and the implicitly returned object is deleted. 9587AcpiUtEvaluateObject is only occasionally used, and only to execute 9588reserved 9589methods such as _STA and _INI where the return type is known up front. 9590 9591Fixed a few issues with the internal convert-to-integer code. It now 9592returns 9593an error if an attempt is made to convert a null string, a string of only 9594blanks/tabs, or a zero-length buffer. This affects both implicit 9595conversion 9596and explicit conversion via the ToInteger() operator. 9597 9598The internal debug code in AcpiUtAcquireMutex has been commented out. It 9599is 9600not needed for normal operation and should increase the performance of 9601the 9602entire subsystem. The code remains in case it is needed for debug 9603purposes 9604again. 9605 9606The AcpiExec source and makefile are included in the Unix/Linux package 9607for 9608the first time. 9609 9610Code and Data Size: Current and previous core subsystem library sizes are 9611shown below. These are the code and data sizes for the acpica.lib 9612produced 9613by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9614any ACPI driver or OSPM code. The debug version of the code includes the 9615debug output trace mechanism and has a much larger code and data size. 9616Note 9617that these values will vary depending on the efficiency of the compiler 9618and 9619the compiler options used during generation. 9620 9621 Previous Release: 9622 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 9623 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 9624 Current Release: 9625 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 9626 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 9627 96282) iASL Compiler/Disassembler: 9629 9630Switch/Case support: A warning is now issued if the type of the Switch 9631value 9632cannot be determined at compile time. For example, Switch(Arg0) will 9633generate the warning, and the type is assumed to be an integer. As per 9634the 9635ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 9636the 9637warning. 9638 9639Switch/Case support: Implemented support for buffer and string objects as 9640the switch value. This is an ACPI 3.0 feature, now that LEqual supports 9641buffers and strings. 9642 9643Switch/Case support: The emitted code for the LEqual() comparisons now 9644uses 9645the switch value as the first operand, not the second. The case value is 9646now 9647the second operand, and this allows the case value to be implicitly 9648converted to the type of the switch value, not the other way around. 9649 9650Switch/Case support: Temporary variables are now emitted immediately 9651within 9652the control method, not at the global level. This means that there are 9653now 965436 temps available per-method, not 36 temps per-module as was the case 9655with 9656the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 9657 9658---------------------------------------- 965914 January 2005. Summary of changes for version 20050114: 9660 9661Added 2005 copyright to all module headers. This affects every module in 9662the core subsystem, iASL compiler, and the utilities. 9663 96641) ACPI CA Core Subsystem: 9665 9666Fixed an issue with the String-to-Buffer conversion code where the string 9667null terminator was not included in the buffer after conversion, but 9668there 9669is existing ASL that assumes the string null terminator is included. This 9670is 9671the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 9672introduced in the previous version when the code was updated to correctly 9673set the converted buffer size as per the ACPI specification. The ACPI 9674spec 9675is ambiguous and will be updated to specify that the null terminator must 9676be 9677included in the converted buffer. This also affects the ToBuffer() ASL 9678operator. 9679 9680Fixed a problem with the Mid() ASL/AML operator where it did not work 9681correctly on Buffer objects. Newly created sub-buffers were not being 9682marked 9683as initialized. 9684 9685 9686Fixed a problem in AcpiTbFindTable where incorrect string compares were 9687performed on the OemId and OemTableId table header fields. These fields 9688are 9689not null terminated, so strncmp is now used instead of strcmp. 9690 9691Implemented a restriction on the Store() ASL/AML operator to align the 9692behavior with the ACPI specification. Previously, any object could be 9693used 9694as the source operand. Now, the only objects that may be used are 9695Integers, 9696Buffers, Strings, Packages, Object References, and DDB Handles. If 9697necessary, the original behavior can be restored by enabling the 9698EnableInterpreterSlack flag. 9699 9700Enhanced the optional "implicit return" support to allow an implicit 9701return 9702value from methods that are invoked externally via the AcpiEvaluateObject 9703interface. This enables implicit returns from the _STA and _INI methods, 9704for example. 9705 9706Changed the Revision() ASL/AML operator to return the current version of 9707the 9708AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 9709returned 9710the supported ACPI version (This is the function of the _REV method). 9711 9712Updated the _REV predefined method to return the currently supported 9713version 9714of ACPI, now 3. 9715 9716Implemented batch mode option for the AcpiExec utility (-b). 9717 9718Code and Data Size: Current and previous core subsystem library sizes are 9719shown below. These are the code and data sizes for the acpica.lib 9720produced 9721by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9722any ACPI driver or OSPM code. The debug version of the code includes the 9723debug output trace mechanism and has a much larger code and data size. 9724Note 9725that these values will vary depending on the efficiency of the compiler 9726and 9727the compiler options used during generation. 9728 9729 Previous Release: 9730 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9731 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 9732 Current Release: 9733 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 9734 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 9735 9736---------------------------------------- 973710 December 2004. Summary of changes for version 20041210: 9738 9739ACPI 3.0 support is nearing completion in both the iASL compiler and the 9740ACPI CA core subsystem. 9741 97421) ACPI CA Core Subsystem: 9743 9744Fixed a problem in the ToDecimalString operator where the resulting 9745string 9746length was incorrectly calculated. The length is now calculated exactly, 9747eliminating incorrect AE_STRING_LIMIT exceptions. 9748 9749Fixed a problem in the ToHexString operator to allow a maximum 200 9750character 9751string to be produced. 9752 9753Fixed a problem in the internal string-to-buffer and buffer-to-buffer 9754copy 9755routine where the length of the resulting buffer was not truncated to the 9756new size (if the target buffer already existed). 9757 9758Code and Data Size: Current and previous core subsystem library sizes are 9759shown below. These are the code and data sizes for the acpica.lib 9760produced 9761by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9762any ACPI driver or OSPM code. The debug version of the code includes the 9763debug output trace mechanism and has a much larger code and data size. 9764Note 9765that these values will vary depending on the efficiency of the compiler 9766and 9767the compiler options used during generation. 9768 9769 Previous Release: 9770 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9771 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 9772 Current Release: 9773 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9774 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 9775 9776 97772) iASL Compiler/Disassembler: 9778 9779Implemented the new ACPI 3.0 resource template macros - DWordSpace, 9780ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 9781Includes support in the disassembler. 9782 9783Implemented support for the new (ACPI 3.0) parameter to the Register 9784macro, 9785AccessSize. 9786 9787Fixed a problem where the _HE resource name for the Interrupt macro was 9788referencing bit 0 instead of bit 1. 9789 9790Implemented check for maximum 255 interrupts in the Interrupt macro. 9791 9792Fixed a problem with the predefined resource descriptor names where 9793incorrect AML code was generated if the offset within the resource buffer 9794was 0 or 1. The optimizer shortened the AML code to a single byte opcode 9795but did not update the surrounding package lengths. 9796 9797Changes to the Dma macro: All channels within the channel list must be 9798in 9799the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 9800optional (default is BusMaster). 9801 9802Implemented check for maximum 7 data bytes for the VendorShort macro. 9803 9804The ReadWrite parameter is now optional for the Memory32 and similar 9805macros. 9806 9807---------------------------------------- 980803 December 2004. Summary of changes for version 20041203: 9809 98101) ACPI CA Core Subsystem: 9811 9812The low-level field insertion/extraction code (exfldio) has been 9813completely 9814rewritten to eliminate unnecessary complexity, bugs, and boundary 9815conditions. 9816 9817Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 9818ToDecimalString 9819operators where the input operand could be inadvertently deleted if no 9820conversion was necessary (e.g., if the input to ToInteger was an Integer 9821object.) 9822 9823Fixed a problem with the ToDecimalString and ToHexString where an 9824incorrect 9825exception code was returned if the resulting string would be > 200 chars. 9826AE_STRING_LIMIT is now returned. 9827 9828Fixed a problem with the Concatenate operator where AE_OK was always 9829returned, even if the operation failed. 9830 9831Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 9832semaphores to be allocated. 9833 9834Code and Data Size: Current and previous core subsystem library sizes are 9835shown below. These are the code and data sizes for the acpica.lib 9836produced 9837by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9838any ACPI driver or OSPM code. The debug version of the code includes the 9839debug output trace mechanism and has a much larger code and data size. 9840Note 9841that these values will vary depending on the efficiency of the compiler 9842and 9843the compiler options used during generation. 9844 9845 Previous Release: 9846 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9847 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9848 Current Release: 9849 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9850 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 9851 9852 98532) iASL Compiler/Disassembler: 9854 9855Fixed typechecking for the ObjectType and SizeOf operators. Problem was 9856recently introduced in 20041119. 9857 9858Fixed a problem with the ToUUID macro where the upper nybble of each 9859buffer 9860byte was inadvertently set to zero. 9861 9862---------------------------------------- 986319 November 2004. Summary of changes for version 20041119: 9864 98651) ACPI CA Core Subsystem: 9866 9867Fixed a problem in the internal ConvertToInteger routine where new 9868integers 9869were not truncated to 32 bits for 32-bit ACPI tables. This routine 9870converts 9871buffers and strings to integers. 9872 9873Implemented support to store a value to an Index() on a String object. 9874This 9875is an ACPI 2.0 feature that had not yet been implemented. 9876 9877Implemented new behavior for storing objects to individual package 9878elements 9879(via the Index() operator). The previous behavior was to invoke the 9880implicit 9881conversion rules if an object was already present at the index. The new 9882behavior is to simply delete any existing object and directly store the 9883new 9884object. Although the ACPI specification seems unclear on this subject, 9885other 9886ACPI implementations behave in this manner. (This is the root of the 9887AE_BAD_HEX_CONSTANT issue.) 9888 9889Modified the RSDP memory scan mechanism to support the extended checksum 9890for 9891ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 9892RSDP signature is found with a valid checksum. 9893 9894Code and Data Size: Current and previous core subsystem library sizes are 9895shown below. These are the code and data sizes for the acpica.lib 9896produced 9897by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9898any ACPI driver or OSPM code. The debug version of the code includes the 9899debug output trace mechanism and has a much larger code and data size. 9900Note 9901that these values will vary depending on the efficiency of the compiler 9902and 9903the compiler options used during generation. 9904 9905 Previous Release: 9906 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9907 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9908 Current Release: 9909 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9910 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9911 9912 99132) iASL Compiler/Disassembler: 9914 9915Fixed a missing semicolon in the aslcompiler.y file. 9916 9917---------------------------------------- 991805 November 2004. Summary of changes for version 20041105: 9919 99201) ACPI CA Core Subsystem: 9921 9922Implemented support for FADT revision 2. This was an interim table 9923(between 9924ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 9925 9926Implemented optional support to allow uninitialized LocalX and ArgX 9927variables in a control method. The variables are initialized to an 9928Integer 9929object with a value of zero. This support is enabled by setting the 9930AcpiGbl_EnableInterpreterSlack flag to TRUE. 9931 9932Implemented support for Integer objects for the SizeOf operator. Either 99334 9934or 8 is returned, depending on the current integer size (32-bit or 64- 9935bit, 9936depending on the parent table revision). 9937 9938Fixed a problem in the implementation of the SizeOf and ObjectType 9939operators 9940where the operand was resolved to a value too early, causing incorrect 9941return values for some objects. 9942 9943Fixed some possible memory leaks during exceptional conditions. 9944 9945Code and Data Size: Current and previous core subsystem library sizes are 9946shown below. These are the code and data sizes for the acpica.lib 9947produced 9948by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9949any ACPI driver or OSPM code. The debug version of the code includes the 9950debug output trace mechanism and has a much larger code and data size. 9951Note 9952that these values will vary depending on the efficiency of the compiler 9953and 9954the compiler options used during generation. 9955 9956 Previous Release: 9957 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 9958 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 9959 Current Release: 9960 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9961 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9962 9963 99642) iASL Compiler/Disassembler: 9965 9966Implemented support for all ACPI 3.0 reserved names and methods. 9967 9968Implemented all ACPI 3.0 grammar elements in the front-end, including 9969support for semicolons. 9970 9971Implemented the ACPI 3.0 Function() and ToUUID() macros 9972 9973Fixed a problem in the disassembler where a Scope() operator would not be 9974emitted properly if the target of the scope was in another table. 9975 9976---------------------------------------- 997715 October 2004. Summary of changes for version 20041015: 9978 9979Note: ACPI CA is currently undergoing an in-depth and complete formal 9980evaluation to test/verify the following areas. Other suggestions are 9981welcome. This will result in an increase in the frequency of releases and 9982the number of bug fixes in the next few months. 9983 - Functional tests for all ASL/AML operators 9984 - All implicit/explicit type conversions 9985 - Bit fields and operation regions 9986 - 64-bit math support and 32-bit-only "truncated" math support 9987 - Exceptional conditions, both compiler and interpreter 9988 - Dynamic object deletion and memory leaks 9989 - ACPI 3.0 support when implemented 9990 - External interfaces to the ACPI subsystem 9991 9992 99931) ACPI CA Core Subsystem: 9994 9995Fixed two alignment issues on 64-bit platforms - within debug statements 9996in 9997AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 9998Address 9999field within the non-aligned ACPI generic address structure. 10000 10001Fixed a problem in the Increment and Decrement operators where incorrect 10002operand resolution could result in the inadvertent modification of the 10003original integer when the integer is passed into another method as an 10004argument and the arg is then incremented/decremented. 10005 10006Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 10007bit 10008BCD number were truncated during conversion. 10009 10010Fixed a problem in the ToDecimal operator where the length of the 10011resulting 10012string could be set incorrectly too long if the input operand was a 10013Buffer 10014object. 10015 10016Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 10017(0) 10018within a buffer would prematurely terminate a compare between buffer 10019objects. 10020 10021Added a check for string overflow (>200 characters as per the ACPI 10022specification) during the Concatenate operator with two string operands. 10023 10024Code and Data Size: Current and previous core subsystem library sizes are 10025shown below. These are the code and data sizes for the acpica.lib 10026produced 10027by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10028any ACPI driver or OSPM code. The debug version of the code includes the 10029debug output trace mechanism and has a much larger code and data size. 10030Note 10031that these values will vary depending on the efficiency of the compiler 10032and 10033the compiler options used during generation. 10034 10035 Previous Release: 10036 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10037 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10038 Current Release: 10039 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10040 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10041 10042 10043 100442) iASL Compiler/Disassembler: 10045 10046Allow the use of the ObjectType operator on uninitialized Locals and Args 10047(returns 0 as per the ACPI specification). 10048 10049Fixed a problem where the compiler would fault if there was a syntax 10050error 10051in the FieldName of all of the various CreateXXXField operators. 10052 10053Disallow the use of lower case letters within the EISAID macro, as per 10054the 10055ACPI specification. All EISAID strings must be of the form "UUUNNNN" 10056Where 10057U is an uppercase letter and N is a hex digit. 10058 10059 10060---------------------------------------- 1006106 October 2004. Summary of changes for version 20041006: 10062 100631) ACPI CA Core Subsystem: 10064 10065Implemented support for the ACPI 3.0 Timer operator. This ASL function 10066implements a 64-bit timer with 100 nanosecond granularity. 10067 10068Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 10069implement the ACPI 3.0 Timer operator. This allows the host OS to 10070implement 10071the timer with the best clock available. Also, it keeps the core 10072subsystem 10073out of the clock handling business, since the host OS (usually) performs 10074this function. 10075 10076Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 10077functions use a 64-bit address which is part of the packed ACPI Generic 10078Address Structure. Since the structure is non-aligned, the alignment 10079macros 10080are now used to extract the address to a local variable before use. 10081 10082Fixed a problem where the ToInteger operator assumed all input strings 10083were 10084hexadecimal. The operator now handles both decimal strings and hex 10085strings 10086(prefixed with "0x"). 10087 10088Fixed a problem where the string length in the string object created as a 10089result of the internal ConvertToString procedure could be incorrect. This 10090potentially affected all implicit conversions and also the 10091ToDecimalString 10092and ToHexString operators. 10093 10094Fixed two problems in the ToString operator. If the length parameter was 10095zero, an incorrect string object was created and the value of the input 10096length parameter was inadvertently changed from zero to Ones. 10097 10098Fixed a problem where the optional ResourceSource string in the 10099ExtendedIRQ 10100resource macro was ignored. 10101 10102Simplified the interfaces to the internal division functions, reducing 10103code 10104size and complexity. 10105 10106Code and Data Size: Current and previous core subsystem library sizes are 10107shown below. These are the code and data sizes for the acpica.lib 10108produced 10109by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10110any ACPI driver or OSPM code. The debug version of the code includes the 10111debug output trace mechanism and has a much larger code and data size. 10112Note 10113that these values will vary depending on the efficiency of the compiler 10114and 10115the compiler options used during generation. 10116 10117 Previous Release: 10118 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10119 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10120 Current Release: 10121 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10122 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10123 10124 101252) iASL Compiler/Disassembler: 10126 10127Implemented support for the ACPI 3.0 Timer operator. 10128 10129Fixed a problem where the Default() operator was inadvertently ignored in 10130a 10131Switch/Case block. This was a problem in the translation of the Switch 10132statement to If...Else pairs. 10133 10134Added support to allow a standalone Return operator, with no parentheses 10135(or 10136operands). 10137 10138Fixed a problem with code generation for the ElseIf operator where the 10139translated Else...If parse tree was improperly constructed leading to the 10140loss of some code. 10141 10142---------------------------------------- 1014322 September 2004. Summary of changes for version 20040922: 10144 101451) ACPI CA Core Subsystem: 10146 10147Fixed a problem with the implementation of the LNot() operator where 10148"Ones" 10149was not returned for the TRUE case. Changed the code to return Ones 10150instead 10151of (!Arg) which was usually 1. This change affects iASL constant folding 10152for 10153this operator also. 10154 10155Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 10156not 10157initialized properly -- Now zero the entire buffer in this case where the 10158buffer already exists. 10159 10160Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 10161Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 10162related code considerably. This will require changes/updates to all OS 10163interface layers (OSLs.) 10164 10165Implemented a new external interface, AcpiInstallExceptionHandler, to 10166allow 10167a system exception handler to be installed. This handler is invoked upon 10168any 10169run-time exception that occurs during control method execution. 10170 10171Added support for the DSDT in AcpiTbFindTable. This allows the 10172DataTableRegion() operator to access the local copy of the DSDT. 10173 10174Code and Data Size: Current and previous core subsystem library sizes are 10175shown below. These are the code and data sizes for the acpica.lib 10176produced 10177by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10178any ACPI driver or OSPM code. The debug version of the code includes the 10179debug output trace mechanism and has a much larger code and data size. 10180Note 10181that these values will vary depending on the efficiency of the compiler 10182and 10183the compiler options used during generation. 10184 10185 Previous Release: 10186 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10187 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10188 Current Release: 10189 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10190 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10191 10192 101932) iASL Compiler/Disassembler: 10194 10195Fixed a problem with constant folding and the LNot operator. LNot was 10196returning 1 in the TRUE case, not Ones as per the ACPI specification. 10197This 10198could result in the generation of an incorrect folded/reduced constant. 10199 10200End-Of-File is now allowed within a "//"-style comment. A parse error no 10201longer occurs if such a comment is at the very end of the input ASL 10202source 10203file. 10204 10205Implemented the "-r" option to override the Revision in the table header. 10206The initial use of this option will be to simplify the evaluation of the 10207AML 10208interpreter by allowing a single ASL source module to be compiled for 10209either 1021032-bit or 64-bit integers. 10211 10212 10213---------------------------------------- 1021427 August 2004. Summary of changes for version 20040827: 10215 102161) ACPI CA Core Subsystem: 10217 10218- Implemented support for implicit object conversion in the non-numeric 10219logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 10220and 10221LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 10222the second operand is implicitly converted on the fly to match the type 10223of 10224the first operand. For example: 10225 10226 LEqual (Source1, Source2) 10227 10228Source1 and Source2 must each evaluate to an integer, a string, or a 10229buffer. 10230The data type of Source1 dictates the required type of Source2. Source2 10231is 10232implicitly converted if necessary to match the type of Source1. 10233 10234- Updated and corrected the behavior of the string conversion support. 10235The 10236rules concerning conversion of buffers to strings (according to the ACPI 10237specification) are as follows: 10238 10239ToDecimalString - explicit byte-wise conversion of buffer to string of 10240decimal values (0-255) separated by commas. ToHexString - explicit byte- 10241wise 10242conversion of buffer to string of hex values (0-FF) separated by commas. 10243ToString - explicit byte-wise conversion of buffer to string. Byte-by- 10244byte 10245copy with no transform except NULL terminated. Any other implicit buffer- 10246to- 10247string conversion - byte-wise conversion of buffer to string of hex 10248values 10249(0-FF) separated by spaces. 10250 10251- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 10252 10253- Fixed a problem in AcpiNsGetPathnameLength where the returned length 10254was 10255one byte too short in the case of a node in the root scope. This could 10256cause a fault during debug output. 10257 10258- Code and Data Size: Current and previous core subsystem library sizes 10259are 10260shown below. These are the code and data sizes for the acpica.lib 10261produced 10262by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10263any ACPI driver or OSPM code. The debug version of the code includes the 10264debug output trace mechanism and has a much larger code and data size. 10265Note 10266that these values will vary depending on the efficiency of the compiler 10267and 10268the compiler options used during generation. 10269 10270 Previous Release: 10271 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10272 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10273 Current Release: 10274 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10275 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10276 10277 102782) iASL Compiler/Disassembler: 10279 10280- Fixed a Linux generation error. 10281 10282 10283---------------------------------------- 1028416 August 2004. Summary of changes for version 20040816: 10285 102861) ACPI CA Core Subsystem: 10287 10288Designed and implemented support within the AML interpreter for the so- 10289called "implicit return". This support returns the result of the last 10290ASL 10291operation within a control method, in the absence of an explicit Return() 10292operator. A few machines depend on this behavior, even though it is not 10293explicitly supported by the ASL language. It is optional support that 10294can 10295be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 10296 10297Removed support for the PCI_Config address space from the internal low 10298level 10299hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 10300support was not used internally, and would not work correctly anyway 10301because 10302the PCI bus number and segment number were not supported. There are 10303separate interfaces for PCI configuration space access because of the 10304unique 10305interface. 10306 10307Code and Data Size: Current and previous core subsystem library sizes are 10308shown below. These are the code and data sizes for the acpica.lib 10309produced 10310by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10311any ACPI driver or OSPM code. The debug version of the code includes the 10312debug output trace mechanism and has a much larger code and data size. 10313Note 10314that these values will vary depending on the efficiency of the compiler 10315and 10316the compiler options used during generation. 10317 10318 Previous Release: 10319 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10320 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10321 Current Release: 10322 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10323 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10324 10325 103262) iASL Compiler/Disassembler: 10327 10328Fixed a problem where constants in ASL expressions at the root level (not 10329within a control method) could be inadvertently truncated during code 10330generation. This problem was introduced in the 20040715 release. 10331 10332 10333---------------------------------------- 1033415 July 2004. Summary of changes for version 20040715: 10335 103361) ACPI CA Core Subsystem: 10337 10338Restructured the internal HW GPE interfaces to pass/track the current 10339state 10340of interrupts (enabled/disabled) in order to avoid possible deadlock and 10341increase flexibility of the interfaces. 10342 10343Implemented a "lexicographical compare" for String and Buffer objects 10344within 10345the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 10346- 10347as per further clarification to the ACPI specification. Behavior is 10348similar 10349to C library "strcmp". 10350 10351Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 10352external function. In the 32-bit non-debug case, the stack use has been 10353reduced from 168 bytes to 32 bytes. 10354 10355Deployed a new run-time configuration flag, 10356AcpiGbl_EnableInterpreterSlack, 10357whose purpose is to allow the AML interpreter to forgive certain bad AML 10358constructs. Default setting is FALSE. 10359 10360Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 10361IO 10362support code. If enabled, it allows field access to go beyond the end of 10363a 10364region definition if the field is within the region length rounded up to 10365the 10366next access width boundary (a common coding error.) 10367 10368Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 10369ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 10370these 10371symbols are lowercased by the latest version of the AcpiSrc tool. 10372 10373The prototypes for the PCI interfaces in acpiosxf.h have been updated to 10374rename "Register" to simply "Reg" to prevent certain compilers from 10375complaining. 10376 10377Code and Data Size: Current and previous core subsystem library sizes are 10378shown below. These are the code and data sizes for the acpica.lib 10379produced 10380by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10381any ACPI driver or OSPM code. The debug version of the code includes the 10382debug output trace mechanism and has a much larger code and data size. 10383Note 10384that these values will vary depending on the efficiency of the compiler 10385and 10386the compiler options used during generation. 10387 10388 Previous Release: 10389 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10390 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 10391 Current Release: 10392 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10393 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10394 10395 103962) iASL Compiler/Disassembler: 10397 10398Implemented full support for Package objects within the Case() operator. 10399Note: The Break() operator is currently not supported within Case blocks 10400(TermLists) as there is some question about backward compatibility with 10401ACPI 104021.0 interpreters. 10403 10404 10405Fixed a problem where complex terms were not supported properly within 10406the 10407Switch() operator. 10408 10409Eliminated extraneous warning for compiler-emitted reserved names of the 10410form "_T_x". (Used in Switch/Case operators.) 10411 10412Eliminated optimization messages for "_T_x" objects and small constants 10413within the DefinitionBlock operator. 10414 10415 10416---------------------------------------- 1041715 June 2004. Summary of changes for version 20040615: 10418 104191) ACPI CA Core Subsystem: 10420 10421Implemented support for Buffer and String objects (as per ACPI 2.0) for 10422the 10423following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 10424LLessEqual. 10425 10426All directory names in the entire source package are lower case, as they 10427were in earlier releases. 10428 10429Implemented "Disassemble" command in the AML debugger that will 10430disassemble 10431a single control method. 10432 10433Code and Data Size: Current and previous core subsystem library sizes are 10434shown below. These are the code and data sizes for the acpica.lib 10435produced 10436by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10437any ACPI driver or OSPM code. The debug version of the code includes the 10438debug output trace mechanism and has a much larger code and data size. 10439Note 10440that these values will vary depending on the efficiency of the compiler 10441and 10442the compiler options used during generation. 10443 10444 Previous Release: 10445 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 10446 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 10447 10448 Current Release: 10449 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10450 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 10451 10452 104532) iASL Compiler/Disassembler: 10454 10455Implemented support for Buffer and String objects (as per ACPI 2.0) for 10456the 10457following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 10458LLessEqual. 10459 10460All directory names in the entire source package are lower case, as they 10461were in earlier releases. 10462 10463Fixed a fault when using the -g or -d<nofilename> options if the FADT was 10464not found. 10465 10466Fixed an issue with the Windows version of the compiler where later 10467versions 10468of Windows place the FADT in the registry under the name "FADT" and not 10469"FACP" as earlier versions did. This applies when using the -g or - 10470d<nofilename> options. The compiler now looks for both strings as 10471necessary. 10472 10473Fixed a problem with compiler namepath optimization where a namepath 10474within 10475the Scope() operator could not be optimized if the namepath was a subpath 10476of 10477the current scope path. 10478 10479---------------------------------------- 1048027 May 2004. Summary of changes for version 20040527: 10481 104821) ACPI CA Core Subsystem: 10483 10484Completed a new design and implementation for EBDA (Extended BIOS Data 10485Area) 10486support in the RSDP scan code. The original code improperly scanned for 10487the 10488EBDA by simply scanning from memory location 0 to 0x400. The correct 10489method 10490is to first obtain the EBDA pointer from within the BIOS data area, then 10491scan 1K of memory starting at the EBDA pointer. There appear to be few 10492if 10493any machines that place the RSDP in the EBDA, however. 10494 10495Integrated a fix for a possible fault during evaluation of BufferField 10496arguments. Obsolete code that was causing the problem was removed. 10497 10498Found and fixed a problem in the Field Support Code where data could be 10499corrupted on a bit field read that starts on an aligned boundary but does 10500not end on an aligned boundary. Merged the read/write "datum length" 10501calculation code into a common procedure. 10502 10503Rolled in a couple of changes to the FreeBSD-specific header. 10504 10505 10506Code and Data Size: Current and previous core subsystem library sizes are 10507shown below. These are the code and data sizes for the acpica.lib 10508produced 10509by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10510any ACPI driver or OSPM code. The debug version of the code includes the 10511debug output trace mechanism and has a much larger code and data size. 10512Note 10513that these values will vary depending on the efficiency of the compiler 10514and 10515the compiler options used during generation. 10516 10517 Previous Release: 10518 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10519 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 10520 Current Release: 10521 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 10522 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 10523 10524 105252) iASL Compiler/Disassembler: 10526 10527Fixed a generation warning produced by some overly-verbose compilers for 10528a 1052964-bit constant. 10530 10531---------------------------------------- 1053214 May 2004. Summary of changes for version 20040514: 10533 105341) ACPI CA Core Subsystem: 10535 10536Fixed a problem where hardware GPE enable bits sometimes not set properly 10537during and after GPE method execution. Result of 04/27 changes. 10538 10539Removed extra "clear all GPEs" when sleeping/waking. 10540 10541Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 10542AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 10543to 10544the new AcpiEv* calls as appropriate. 10545 10546ACPI_OS_NAME was removed from the OS-specific headers. The default name 10547is 10548now "Microsoft Windows NT" for maximum compatibility. However this can 10549be 10550changed by modifying the acconfig.h file. 10551 10552Allow a single invocation of AcpiInstallNotifyHandler for a handler that 10553traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 10554 10555Run _INI methods on ThermalZone objects. This is against the ACPI 10556specification, but there is apparently ASL code in the field that has 10557these 10558_INI methods, and apparently "other" AML interpreters execute them. 10559 10560Performed a full 16/32/64 bit lint that resulted in some small changes. 10561 10562Added a sleep simulation command to the AML debugger to test sleep code. 10563 10564Code and Data Size: Current and previous core subsystem library sizes are 10565shown below. These are the code and data sizes for the acpica.lib 10566produced 10567by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10568any ACPI driver or OSPM code. The debug version of the code includes the 10569debug output trace mechanism and has a much larger code and data size. 10570Note 10571that these values will vary depending on the efficiency of the compiler 10572and 10573the compiler options used during generation. 10574 10575 Previous Release: 10576 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10577 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 10578 Current Release: 10579 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10580 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 10581 10582---------------------------------------- 1058327 April 2004. Summary of changes for version 20040427: 10584 105851) ACPI CA Core Subsystem: 10586 10587Completed a major overhaul of the GPE handling within ACPI CA. There are 10588now three types of GPEs: wake-only, runtime-only, and combination 10589wake/run. 10590The only GPEs allowed to be combination wake/run are for button-style 10591devices such as a control-method power button, control-method sleep 10592button, 10593or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 10594not 10595referenced by any _PRW methods are marked for "runtime" and hardware 10596enabled. Any GPE that is referenced by a _PRW method is marked for 10597"wake" 10598(and disabled at runtime). However, at sleep time, only those GPEs that 10599have been specifically enabled for wake via the AcpiEnableGpe interface 10600will 10601actually be hardware enabled. 10602 10603A new external interface has been added, AcpiSetGpeType(), that is meant 10604to 10605be used by device drivers to force a GPE to a particular type. It will 10606be 10607especially useful for the drivers for the button devices mentioned above. 10608 10609Completed restructuring of the ACPI CA initialization sequence so that 10610default operation region handlers are installed before GPEs are 10611initialized 10612and the _PRW methods are executed. This will prevent errors when the 10613_PRW 10614methods attempt to access system memory or I/O space. 10615 10616GPE enable/disable no longer reads the GPE enable register. We now keep 10617the 10618enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 10619thus no longer depend on the hardware to maintain these bits. 10620 10621Always clear the wake status and fixed/GPE status bits before sleep, even 10622for state S5. 10623 10624Improved the AML debugger output for displaying the GPE blocks and their 10625current status. 10626 10627Added new strings for the _OSI method, of the form "Windows 2001 SPx" 10628where 10629x = 0,1,2,3,4. 10630 10631Fixed a problem where the physical address was incorrectly calculated 10632when 10633the Load() operator was used to directly load from an Operation Region 10634(vs. 10635loading from a Field object.) Also added check for minimum table length 10636for 10637this case. 10638 10639Fix for multiple mutex acquisition. Restore original thread SyncLevel on 10640mutex release. 10641 10642Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 10643consistency with the other fields returned. 10644 10645Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 10646structure for each GPE in the system, so the size of this structure is 10647important. 10648 10649CPU stack requirement reduction: Cleaned up the method execution and 10650object 10651evaluation paths so that now a parameter structure is passed, instead of 10652copying the various method parameters over and over again. 10653 10654In evregion.c: Correctly exit and reenter the interpreter region if and 10655only if dispatching an operation region request to a user-installed 10656handler. 10657Do not exit/reenter when dispatching to a default handler (e.g., default 10658system memory or I/O handlers) 10659 10660 10661Notes for updating drivers for the new GPE support. The following 10662changes 10663must be made to ACPI-related device drivers that are attached to one or 10664more 10665GPEs: (This information will be added to the ACPI CA Programmer 10666Reference.) 10667 106681) AcpiInstallGpeHandler no longer automatically enables the GPE, you 10669must 10670explicitly call AcpiEnableGpe. 106712) There is a new interface called AcpiSetGpeType. This should be called 10672before enabling the GPE. Also, this interface will automatically disable 10673the GPE if it is currently enabled. 106743) AcpiEnableGpe no longer supports a GPE type flag. 10675 10676Specific drivers that must be changed: 106771) EC driver: 10678 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 10679AeGpeHandler, NULL); 10680 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 10681 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 10682 106832) Button Drivers (Power, Lid, Sleep): 10684Run _PRW method under parent device 10685If _PRW exists: /* This is a control-method button */ 10686 Extract GPE number and possibly GpeDevice 10687 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 10688 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 10689 10690For all other devices that have _PRWs, we automatically set the GPE type 10691to 10692ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 10693This 10694must be done on a selective basis, usually requiring some kind of user 10695app 10696to allow the user to pick the wake devices. 10697 10698 10699Code and Data Size: Current and previous core subsystem library sizes are 10700shown below. These are the code and data sizes for the acpica.lib 10701produced 10702by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10703any ACPI driver or OSPM code. The debug version of the code includes the 10704debug output trace mechanism and has a much larger code and data size. 10705Note 10706that these values will vary depending on the efficiency of the compiler 10707and 10708the compiler options used during generation. 10709 10710 Previous Release: 10711 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 10712 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 10713 Current Release: 10714 10715 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10716 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 10717 10718 10719 10720---------------------------------------- 1072102 April 2004. Summary of changes for version 20040402: 10722 107231) ACPI CA Core Subsystem: 10724 10725Fixed an interpreter problem where an indirect store through an ArgX 10726parameter was incorrectly applying the "implicit conversion rules" during 10727the store. From the ACPI specification: "If the target is a method local 10728or 10729argument (LocalX or ArgX), no conversion is performed and the result is 10730stored directly to the target". The new behavior is to disable implicit 10731conversion during ALL stores to an ArgX. 10732 10733Changed the behavior of the _PRW method scan to ignore any and all errors 10734returned by a given _PRW. This prevents the scan from aborting from the 10735failure of any single _PRW. 10736 10737Moved the runtime configuration parameters from the global init procedure 10738to 10739static variables in acglobal.h. This will allow the host to override the 10740default values easily. 10741 10742Code and Data Size: Current and previous core subsystem library sizes are 10743shown below. These are the code and data sizes for the acpica.lib 10744produced 10745by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10746any ACPI driver or OSPM code. The debug version of the code includes the 10747debug output trace mechanism and has a much larger code and data size. 10748Note 10749that these values will vary depending on the efficiency of the compiler 10750and 10751the compiler options used during generation. 10752 10753 Previous Release: 10754 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 10755 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 10756 Current Release: 10757 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 10758 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 10759 10760 107612) iASL Compiler/Disassembler: 10762 10763iASL now fully disassembles SSDTs. However, External() statements are 10764not 10765generated automatically for unresolved symbols at this time. This is a 10766planned feature for future implementation. 10767 10768Fixed a scoping problem in the disassembler that occurs when the type of 10769the 10770target of a Scope() operator is overridden. This problem caused an 10771incorrectly nested internal namespace to be constructed. 10772 10773Any warnings or errors that are emitted during disassembly are now 10774commented 10775out automatically so that the resulting file can be recompiled without 10776any 10777hand editing. 10778 10779---------------------------------------- 1078026 March 2004. Summary of changes for version 20040326: 10781 107821) ACPI CA Core Subsystem: 10783 10784Implemented support for "wake" GPEs via interaction between GPEs and the 10785_PRW methods. Every GPE that is pointed to by one or more _PRWs is 10786identified as a WAKE GPE and by default will no longer be enabled at 10787runtime. Previously, we were blindly enabling all GPEs with a 10788corresponding 10789_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 10790We 10791believe this has been the cause of thousands of "spurious" GPEs on some 10792systems. 10793 10794This new GPE behavior is can be reverted to the original behavior (enable 10795ALL GPEs at runtime) via a runtime flag. 10796 10797Fixed a problem where aliased control methods could not access objects 10798properly. The proper scope within the namespace was not initialized 10799(transferred to the target of the aliased method) before executing the 10800target method. 10801 10802Fixed a potential race condition on internal object deletion on the 10803return 10804object in AcpiEvaluateObject. 10805 10806Integrated a fix for resource descriptors where both _MEM and _MTP were 10807being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 10808wide, 0x0F instead of 0x03.) 10809 10810Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 10811preventing 10812a 10813fault in some cases. 10814 10815Updated Notify() values for debug statements in evmisc.c 10816 10817Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 10818 10819Code and Data Size: Current and previous core subsystem library sizes are 10820shown below. These are the code and data sizes for the acpica.lib 10821produced 10822by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10823any ACPI driver or OSPM code. The debug version of the code includes the 10824debug output trace mechanism and has a much larger code and data size. 10825Note 10826that these values will vary depending on the efficiency of the compiler 10827and 10828the compiler options used during generation. 10829 10830 Previous Release: 10831 10832 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 10833 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 10834 Current Release: 10835 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 10836 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 10837 10838---------------------------------------- 1083911 March 2004. Summary of changes for version 20040311: 10840 108411) ACPI CA Core Subsystem: 10842 10843Fixed a problem where errors occurring during the parse phase of control 10844method execution did not abort cleanly. For example, objects created and 10845installed in the namespace were not deleted. This caused all subsequent 10846invocations of the method to return the AE_ALREADY_EXISTS exception. 10847 10848Implemented a mechanism to force a control method to "Serialized" 10849execution 10850if the method attempts to create namespace objects. (The root of the 10851AE_ALREADY_EXISTS problem.) 10852 10853Implemented support for the predefined _OSI "internal" control method. 10854Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 10855and 10856"Windows 2001.1", and can be easily upgraded for new strings as 10857necessary. 10858This feature will allow "other" operating systems to execute the fully 10859tested, "Windows" code path through the ASL code 10860 10861Global Lock Support: Now allows multiple acquires and releases with any 10862internal thread. Removed concept of "owning thread" for this special 10863mutex. 10864 10865Fixed two functions that were inappropriately declaring large objects on 10866the 10867CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 10868during 10869method execution considerably. 10870 10871Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 10872S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 10873 10874Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 10875defined on the machine. 10876 10877Implemented two runtime options: One to force all control method 10878execution 10879to "Serialized" to mimic Windows behavior, another to disable _OSI 10880support 10881if it causes problems on a given machine. 10882 10883Code and Data Size: Current and previous core subsystem library sizes are 10884shown below. These are the code and data sizes for the acpica.lib 10885produced 10886by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10887any ACPI driver or OSPM code. The debug version of the code includes the 10888debug output trace mechanism and has a much larger code and data size. 10889Note 10890that these values will vary depending on the efficiency of the compiler 10891and 10892the compiler options used during generation. 10893 10894 Previous Release: 10895 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 10896 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 10897 Current Release: 10898 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 10899 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 10900 109012) iASL Compiler/Disassembler: 10902 10903Fixed an array size problem for FreeBSD that would cause the compiler to 10904fault. 10905 10906---------------------------------------- 1090720 February 2004. Summary of changes for version 20040220: 10908 10909 109101) ACPI CA Core Subsystem: 10911 10912Implemented execution of _SxD methods for Device objects in the 10913GetObjectInfo interface. 10914 10915Fixed calls to _SST method to pass the correct arguments. 10916 10917Added a call to _SST on wake to restore to "working" state. 10918 10919Check for End-Of-Buffer failure case in the WalkResources interface. 10920 10921Integrated fix for 64-bit alignment issue in acglobal.h by moving two 10922structures to the beginning of the file. 10923 10924After wake, clear GPE status register(s) before enabling GPEs. 10925 10926After wake, clear/enable power button. (Perhaps we should clear/enable 10927all 10928fixed events upon wake.) 10929 10930Fixed a couple of possible memory leaks in the Namespace manager. 10931 10932Integrated latest acnetbsd.h file. 10933 10934---------------------------------------- 1093511 February 2004. Summary of changes for version 20040211: 10936 10937 109381) ACPI CA Core Subsystem: 10939 10940Completed investigation and implementation of the call-by-reference 10941mechanism for control method arguments. 10942 10943Fixed a problem where a store of an object into an indexed package could 10944fail if the store occurs within a different method than the method that 10945created the package. 10946 10947Fixed a problem where the ToDecimal operator could return incorrect 10948results. 10949 10950Fixed a problem where the CopyObject operator could fail on some of the 10951more 10952obscure objects (e.g., Reference objects.) 10953 10954Improved the output of the Debug object to display buffer, package, and 10955index objects. 10956 10957Fixed a problem where constructs of the form "RefOf (ArgX)" did not 10958return 10959the expected result. 10960 10961Added permanent ACPI_REPORT_ERROR macros for all instances of the 10962ACPI_AML_INTERNAL exception. 10963 10964Integrated latest version of acfreebsd.h 10965 10966---------------------------------------- 1096716 January 2004. Summary of changes for version 20040116: 10968 10969The purpose of this release is primarily to update the copyright years in 10970each module, thus causing a huge number of diffs. There are a few small 10971functional changes, however. 10972 109731) ACPI CA Core Subsystem: 10974 10975Improved error messages when there is a problem finding one or more of 10976the 10977required base ACPI tables 10978 10979Reintroduced the definition of APIC_HEADER in actbl.h 10980 10981Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 10982 10983Removed extraneous reference to NewObj in dsmthdat.c 10984 109852) iASL compiler 10986 10987Fixed a problem introduced in December that disabled the correct 10988disassembly 10989of Resource Templates 10990 10991 10992---------------------------------------- 1099303 December 2003. Summary of changes for version 20031203: 10994 109951) ACPI CA Core Subsystem: 10996 10997Changed the initialization of Operation Regions during subsystem 10998init to perform two entire walks of the ACPI namespace; The first 10999to initialize the regions themselves, the second to execute the 11000_REG methods. This fixed some interdependencies across _REG 11001methods found on some machines. 11002 11003Fixed a problem where a Store(Local0, Local1) could simply update 11004the object reference count, and not create a new copy of the 11005object if the Local1 is uninitialized. 11006 11007Implemented support for the _SST reserved method during sleep 11008transitions. 11009 11010Implemented support to clear the SLP_TYP and SLP_EN bits when 11011waking up, this is apparently required by some machines. 11012 11013When sleeping, clear the wake status only if SleepState is not S5. 11014 11015Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 11016pointer arithmetic advanced a string pointer too far. 11017 11018Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 11019could be returned if the requested table has not been loaded. 11020 11021Within the support for IRQ resources, restructured the handling of 11022the active and edge/level bits. 11023 11024Fixed a few problems in AcpiPsxExecute() where memory could be 11025leaked under certain error conditions. 11026 11027Improved error messages for the cases where the ACPI mode could 11028not be entered. 11029 11030Code and Data Size: Current and previous core subsystem library 11031sizes are shown below. These are the code and data sizes for the 11032acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11033these values do not include any ACPI driver or OSPM code. The 11034debug version of the code includes the debug output trace 11035mechanism and has a much larger code and data size. Note that 11036these values will vary depending on the efficiency of the compiler 11037and the compiler options used during generation. 11038 11039 Previous Release (20031029): 11040 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11041 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11042 Current Release: 11043 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11044 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11045 110462) iASL Compiler/Disassembler: 11047 11048Implemented a fix for the iASL disassembler where a bad index was 11049generated. This was most noticeable on 64-bit platforms 11050 11051 11052---------------------------------------- 1105329 October 2003. Summary of changes for version 20031029: 11054 110551) ACPI CA Core Subsystem: 11056 11057 11058Fixed a problem where a level-triggered GPE with an associated 11059_Lxx control method was incorrectly cleared twice. 11060 11061Fixed a problem with the Field support code where an access can 11062occur beyond the end-of-region if the field is non-aligned but 11063extends to the very end of the parent region (resulted in an 11064AE_AML_REGION_LIMIT exception.) 11065 11066Fixed a problem with ACPI Fixed Events where an RT Clock handler 11067would not get invoked on an RTC event. The RTC event bitmasks for 11068the PM1 registers were not being initialized properly. 11069 11070Implemented support for executing _STA and _INI methods for 11071Processor objects. Although this is currently not part of the 11072ACPI specification, there is existing ASL code that depends on the 11073init-time execution of these methods. 11074 11075Implemented and deployed a GetDescriptorName function to decode 11076the various types of internal descriptors. Guards against null 11077descriptors during debug output also. 11078 11079Implemented and deployed a GetNodeName function to extract the 4- 11080character namespace node name. This function simplifies the debug 11081and error output, as well as guarding against null pointers during 11082output. 11083 11084Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 11085simplify the debug and error output of 64-bit integers. This 11086macro replaces the HIDWORD and LODWORD macros for dumping these 11087integers. 11088 11089Updated the implementation of the Stall() operator to only call 11090AcpiOsStall(), and also return an error if the operand is larger 11091than 255. This preserves the required behavior of not 11092relinquishing the processor, as would happen if AcpiOsSleep() was 11093called for "long stalls". 11094 11095Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 11096initialized are now treated as NOOPs. 11097 11098Cleaned up a handful of warnings during 64-bit generation. 11099 11100Fixed a reported error where and incorrect GPE number was passed 11101to the GPE dispatch handler. This value is only used for error 11102output, however. Used this opportunity to clean up and streamline 11103the GPE dispatch code. 11104 11105Code and Data Size: Current and previous core subsystem library 11106sizes are shown below. These are the code and data sizes for the 11107acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11108these values do not include any ACPI driver or OSPM code. The 11109 11110debug version of the code includes the debug output trace 11111mechanism and has a much larger code and data size. Note that 11112these values will vary depending on the efficiency of the compiler 11113and the compiler options used during generation. 11114 11115 Previous Release (20031002): 11116 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11117 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11118 Current Release: 11119 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11120 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11121 11122 111232) iASL Compiler/Disassembler: 11124 11125Updated the iASL compiler to return an error if the operand to the 11126Stall() operator is larger than 255. 11127 11128 11129---------------------------------------- 1113002 October 2003. Summary of changes for version 20031002: 11131 11132 111331) ACPI CA Core Subsystem: 11134 11135Fixed a problem with Index Fields where the index was not 11136incremented for fields that require multiple writes to the 11137index/data registers (Fields that are wider than the data 11138register.) 11139 11140Fixed a problem with all Field objects where a write could go 11141beyond the end-of-field if the field was larger than the access 11142granularity and therefore required multiple writes to complete the 11143request. An extra write beyond the end of the field could happen 11144inadvertently. 11145 11146Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 11147would incorrectly be returned if the width of the Data Register 11148was larger than the specified field access width. 11149 11150Completed fixes for LoadTable() and Unload() and verified their 11151operation. Implemented full support for the "DdbHandle" object 11152throughout the ACPI CA subsystem. 11153 11154Implemented full support for the MADT and ECDT tables in the ACPI 11155CA header files. Even though these tables are not directly 11156consumed by ACPI CA, the header definitions are useful for ACPI 11157device drivers. 11158 11159Integrated resource descriptor fixes posted to the Linux ACPI 11160list. This included checks for minimum descriptor length, and 11161support for trailing NULL strings within descriptors that have 11162optional string elements. 11163 11164Code and Data Size: Current and previous core subsystem library 11165sizes are shown below. These are the code and data sizes for the 11166acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11167these values do not include any ACPI driver or OSPM code. The 11168debug version of the code includes the debug output trace 11169mechanism and has a much larger code and data size. Note that 11170these values will vary depending on the efficiency of the compiler 11171and the compiler options used during generation. 11172 11173 Previous Release (20030918): 11174 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11175 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11176 Current Release: 11177 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11178 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11179 11180 111812) iASL Compiler: 11182 11183Implemented detection of non-ASCII characters within the input 11184source ASL file. This catches attempts to compile binary (AML) 11185files early in the compile, with an informative error message. 11186 11187Fixed a problem where the disassembler would fault if the output 11188filename could not be generated or if the output file could not be 11189opened. 11190 11191---------------------------------------- 1119218 September 2003. Summary of changes for version 20030918: 11193 11194 111951) ACPI CA Core Subsystem: 11196 11197Found and fixed a longstanding problem with the late execution of 11198the various deferred AML opcodes (such as Operation Regions, 11199Buffer Fields, Buffers, and Packages). If the name string 11200specified for the name of the new object placed the object in a 11201scope other than the current scope, the initialization/execution 11202of the opcode failed. The solution to this problem was to 11203implement a mechanism where the late execution of such opcodes 11204does not attempt to lookup/create the name a second time in an 11205incorrect scope. This fixes the "region size computed 11206incorrectly" problem. 11207 11208Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 11209Global Lock AE_BAD_PARAMETER error. 11210 11211Fixed several 64-bit issues with prototypes, casting and data 11212types. 11213 11214Removed duplicate prototype from acdisasm.h 11215 11216Fixed an issue involving EC Operation Region Detach (Shaohua Li) 11217 11218Code and Data Size: Current and previous core subsystem library 11219sizes are shown below. These are the code and data sizes for the 11220acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11221these values do not include any ACPI driver or OSPM code. The 11222debug version of the code includes the debug output trace 11223mechanism and has a much larger code and data size. Note that 11224these values will vary depending on the efficiency of the compiler 11225and the compiler options used during generation. 11226 11227 Previous Release: 11228 11229 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11230 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11231 Current Release: 11232 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11233 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11234 11235 112362) Linux: 11237 11238Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 11239correct sleep time in seconds. 11240 11241---------------------------------------- 1124214 July 2003. Summary of changes for version 20030619: 11243 112441) ACPI CA Core Subsystem: 11245 11246Parse SSDTs in order discovered, as opposed to reverse order 11247(Hrvoje Habjanic) 11248 11249Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 11250Klausner, 11251 Nate Lawson) 11252 11253 112542) Linux: 11255 11256Dynamically allocate SDT list (suggested by Andi Kleen) 11257 11258proc function return value cleanups (Andi Kleen) 11259 11260Correctly handle NMI watchdog during long stalls (Andrew Morton) 11261 11262Make it so acpismp=force works (reported by Andrew Morton) 11263 11264 11265---------------------------------------- 1126619 June 2003. Summary of changes for version 20030619: 11267 112681) ACPI CA Core Subsystem: 11269 11270Fix To/FromBCD, eliminating the need for an arch-specific #define. 11271 11272Do not acquire a semaphore in the S5 shutdown path. 11273 11274Fix ex_digits_needed for 0. (Takayoshi Kochi) 11275 11276Fix sleep/stall code reversal. (Andi Kleen) 11277 11278Revert a change having to do with control method calling 11279semantics. 11280 112812) Linux: 11282 11283acpiphp update (Takayoshi Kochi) 11284 11285Export acpi_disabled for sonypi (Stelian Pop) 11286 11287Mention acpismp=force in config help 11288 11289Re-add acpitable.c and acpismp=force. This improves backwards 11290 11291compatibility and also cleans up the code to a significant degree. 11292 11293Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 11294 11295---------------------------------------- 1129622 May 2003. Summary of changes for version 20030522: 11297 112981) ACPI CA Core Subsystem: 11299 11300Found and fixed a reported problem where an AE_NOT_FOUND error 11301occurred occasionally during _BST evaluation. This turned out to 11302be an Owner ID allocation issue where a called method did not get 11303a new ID assigned to it. Eventually, (after 64k calls), the Owner 11304ID UINT16 would wraparound so that the ID would be the same as the 11305caller's and the called method would delete the caller's 11306namespace. 11307 11308Implemented extended error reporting for control methods that are 11309aborted due to a run-time exception. Output includes the exact 11310AML instruction that caused the method abort, a dump of the method 11311locals and arguments at the time of the abort, and a trace of all 11312nested control method calls. 11313 11314Modified the interpreter to allow the creation of buffers of zero 11315length from the AML code. Implemented new code to ensure that no 11316attempt is made to actually allocate a memory buffer (of length 11317zero) - instead, a simple buffer object with a NULL buffer pointer 11318and length zero is created. A warning is no longer issued when 11319the AML attempts to create a zero-length buffer. 11320 11321Implemented a workaround for the "leading asterisk issue" in 11322_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 11323asterisk is automatically removed if present in any HID, UID, or 11324CID strings. The iASL compiler will still flag this asterisk as 11325an error, however. 11326 11327Implemented full support for _CID methods that return a package of 11328multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 11329now additionally returns a device _CID list if present. This 11330required a change to the external interface in order to pass an 11331ACPI_BUFFER object as a parameter since the _CID list is of 11332variable length. 11333 11334Fixed a problem with the new AE_SAME_HANDLER exception where 11335handler initialization code did not know about this exception. 11336 11337Code and Data Size: Current and previous core subsystem library 11338sizes are shown below. These are the code and data sizes for the 11339acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11340these values do not include any ACPI driver or OSPM code. The 11341debug version of the code includes the debug output trace 11342mechanism and has a much larger code and data size. Note that 11343these values will vary depending on the efficiency of the compiler 11344and the compiler options used during generation. 11345 11346 Previous Release (20030509): 11347 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 11348 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 11349 Current Release: 11350 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11351 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11352 11353 113542) Linux: 11355 11356Fixed a bug in which we would reinitialize the ACPI interrupt 11357after it was already working, thus disabling all ACPI and the IRQs 11358for any other device sharing the interrupt. (Thanks to Stian 11359Jordet) 11360 11361Toshiba driver update (John Belmonte) 11362 11363Return only 0 or 1 for our interrupt handler status (Andrew 11364Morton) 11365 11366 113673) iASL Compiler: 11368 11369Fixed a reported problem where multiple (nested) ElseIf() 11370statements were not handled correctly by the compiler, resulting 11371in incorrect warnings and incorrect AML code. This was a problem 11372in both the ASL parser and the code generator. 11373 11374 113754) Documentation: 11376 11377Added changes to existing interfaces, new exception codes, and new 11378text concerning reference count object management versus garbage 11379collection. 11380 11381---------------------------------------- 1138209 May 2003. Summary of changes for version 20030509. 11383 11384 113851) ACPI CA Core Subsystem: 11386 11387Changed the subsystem initialization sequence to hold off 11388installation of address space handlers until the hardware has been 11389initialized and the system has entered ACPI mode. This is because 11390the installation of space handlers can cause _REG methods to be 11391run. Previously, the _REG methods could potentially be run before 11392ACPI mode was enabled. 11393 11394Fixed some memory leak issues related to address space handler and 11395notify handler installation. There were some problems with the 11396reference count mechanism caused by the fact that the handler 11397objects are shared across several namespace objects. 11398 11399Fixed a reported problem where reference counts within the 11400namespace were not properly updated when named objects created by 11401method execution were deleted. 11402 11403Fixed a reported problem where multiple SSDTs caused a deletion 11404issue during subsystem termination. Restructured the table data 11405structures to simplify the linked lists and the related code. 11406 11407Fixed a problem where the table ID associated with secondary 11408tables (SSDTs) was not being propagated into the namespace objects 11409created by those tables. This would only present a problem for 11410tables that are unloaded at run-time, however. 11411 11412Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 11413type as the length parameter (instead of UINT32). 11414 11415Solved a long-standing problem where an ALREADY_EXISTS error 11416appears on various systems. This problem could happen when there 11417are multiple PCI_Config operation regions under a single PCI root 11418bus. This doesn't happen very frequently, but there are some 11419systems that do this in the ASL. 11420 11421Fixed a reported problem where the internal DeleteNode function 11422was incorrectly handling the case where a namespace node was the 11423first in the parent's child list, and had additional peers (not 11424the only child, but first in the list of children.) 11425 11426Code and Data Size: Current core subsystem library sizes are shown 11427below. These are the code and data sizes for the acpica.lib 11428produced by the Microsoft Visual C++ 6.0 compiler, and these 11429values do not include any ACPI driver or OSPM code. The debug 11430version of the code includes the debug output trace mechanism and 11431has a much larger code and data size. Note that these values will 11432vary depending on the efficiency of the compiler and the compiler 11433options used during generation. 11434 11435 Previous Release 11436 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 11437 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 11438 Current Release: 11439 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 11440 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 11441 11442 114432) Linux: 11444 11445Allow ":" in OS override string (Ducrot Bruno) 11446 11447Kobject fix (Greg KH) 11448 11449 114503 iASL Compiler/Disassembler: 11451 11452Fixed a problem in the generation of the C source code files (AML 11453is emitted in C source statements for BIOS inclusion) where the 11454Ascii dump that appears within a C comment at the end of each line 11455could cause a compile time error if the AML sequence happens to 11456have an open comment or close comment sequence embedded. 11457 11458 11459---------------------------------------- 1146024 April 2003. Summary of changes for version 20030424. 11461 11462 114631) ACPI CA Core Subsystem: 11464 11465Support for big-endian systems has been implemented. Most of the 11466support has been invisibly added behind big-endian versions of the 11467ACPI_MOVE_* macros. 11468 11469Fixed a problem in AcpiHwDisableGpeBlock() and 11470AcpiHwClearGpeBlock() where an incorrect offset was passed to the 11471low level hardware write routine. The offset parameter was 11472actually eliminated from the low level read/write routines because 11473they had become obsolete. 11474 11475Fixed a problem where a handler object was deleted twice during 11476the removal of a fixed event handler. 11477 11478 114792) Linux: 11480 11481A fix for SMP systems with link devices was contributed by 11482 11483Compaq's Dan Zink. 11484 11485(2.5) Return whether we handled the interrupt in our IRQ handler. 11486(Linux ISRs no longer return void, so we can propagate the handler 11487return value from the ACPI CA core back to the OS.) 11488 11489 11490 114913) Documentation: 11492 11493The ACPI CA Programmer Reference has been updated to reflect new 11494interfaces and changes to existing interfaces. 11495 11496---------------------------------------- 1149728 March 2003. Summary of changes for version 20030328. 11498 114991) ACPI CA Core Subsystem: 11500 11501The GPE Block Device support has been completed. New interfaces 11502are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 11503interfaces (enable, disable, clear, getstatus) have been split 11504into separate interfaces for Fixed Events and General Purpose 11505Events (GPEs) in order to support GPE Block Devices properly. 11506 11507Fixed a problem where the error message "Failed to acquire 11508semaphore" would appear during operations on the embedded 11509controller (EC). 11510 11511Code and Data Size: Current core subsystem library sizes are shown 11512below. These are the code and data sizes for the acpica.lib 11513produced by the Microsoft Visual C++ 6.0 compiler, and these 11514values do not include any ACPI driver or OSPM code. The debug 11515version of the code includes the debug output trace mechanism and 11516has a much larger code and data size. Note that these values will 11517vary depending on the efficiency of the compiler and the compiler 11518options used during generation. 11519 11520 Previous Release 11521 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 11522 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 11523 Current Release: 11524 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 11525 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 11526 11527 11528---------------------------------------- 1152928 February 2003. Summary of changes for version 20030228. 11530 11531 115321) ACPI CA Core Subsystem: 11533 11534The GPE handling and dispatch code has been completely overhauled 11535in preparation for support of GPE Block Devices (ID ACPI0006). 11536This affects internal data structures and code only; there should 11537be no differences visible externally. One new file has been 11538added, evgpeblk.c 11539 11540The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 11541fields that are used to determine the GPE block lengths. The 11542REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 11543structures are ignored. This is per the ACPI specification but it 11544isn't very clear. The full 256 Block 0/1 GPEs are now supported 11545(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 11546 11547In the SCI interrupt handler, removed the read of the PM1_CONTROL 11548register to look at the SCI_EN bit. On some machines, this read 11549causes an SMI event and greatly slows down SCI events. (This may 11550in fact be the cause of slow battery status response on some 11551systems.) 11552 11553Fixed a problem where a store of a NULL string to a package object 11554could cause the premature deletion of the object. This was seen 11555during execution of the battery _BIF method on some systems, 11556resulting in no battery data being returned. 11557 11558Added AcpiWalkResources interface to simplify parsing of resource 11559lists. 11560 11561Code and Data Size: Current core subsystem library sizes are shown 11562below. These are the code and data sizes for the acpica.lib 11563produced by the Microsoft Visual C++ 6.0 compiler, and these 11564values do not include any ACPI driver or OSPM code. The debug 11565version of the code includes the debug output trace mechanism and 11566has a much larger code and data size. Note that these values will 11567vary depending on the efficiency of the compiler and the compiler 11568options used during generation. 11569 11570 Previous Release 11571 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11572 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11573 Current Release: 11574 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 11575 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 11576 11577 115782) Linux 11579 11580S3 fixes (Ole Rohne) 11581 11582Update ACPI PHP driver with to use new acpi_walk_resource API 11583(Bjorn Helgaas) 11584 11585Add S4BIOS support (Pavel Machek) 11586 11587Map in entire table before performing checksum (John Stultz) 11588 11589Expand the mem= cmdline to allow the specification of reserved and 11590ACPI DATA blocks (Pavel Machek) 11591 11592Never use ACPI on VISWS 11593 11594Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 11595 11596Revert a change that allowed P_BLK lengths to be 4 or 5. This is 11597causing us to think that some systems support C2 when they really 11598don't. 11599 11600Do not count processor objects for non-present CPUs (Thanks to 11601Dominik Brodowski) 11602 11603 116043) iASL Compiler: 11605 11606Fixed a problem where ASL include files could not be found and 11607opened. 11608 11609Added support for the _PDC reserved name. 11610 11611 11612---------------------------------------- 1161322 January 2003. Summary of changes for version 20030122. 11614 11615 116161) ACPI CA Core Subsystem: 11617 11618Added a check for constructs of the form: Store (Local0, Local0) 11619where Local0 is not initialized. Apparently, some BIOS 11620programmers believe that this is a NOOP. Since this store doesn't 11621do anything anyway, the new prototype behavior will ignore this 11622error. This is a case where we can relax the strict checking in 11623the interpreter in the name of compatibility. 11624 11625 116262) Linux 11627 11628The AcpiSrc Source Conversion Utility has been released with the 11629Linux package for the first time. This is the utility that is 11630used to convert the ACPI CA base source code to the Linux version. 11631 11632(Both) Handle P_BLK lengths shorter than 6 more gracefully 11633 11634(Both) Move more headers to include/acpi, and delete an unused 11635header. 11636 11637(Both) Move drivers/acpi/include directory to include/acpi 11638 11639(Both) Boot functions don't use cmdline, so don't pass it around 11640 11641(Both) Remove include of unused header (Adrian Bunk) 11642 11643(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 11644the 11645former now also includes the latter, acpiphp.h only needs the one, 11646now. 11647 11648(2.5) Make it possible to select method of bios restoring after S3 11649resume. [=> no more ugly ifdefs] (Pavel Machek) 11650 11651(2.5) Make proc write interfaces work (Pavel Machek) 11652 11653(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 11654 11655(2.5) Break out ACPI Perf code into its own module, under cpufreq 11656(Dominik Brodowski) 11657 11658(2.4) S4BIOS support (Ducrot Bruno) 11659 11660(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 11661Visinoni) 11662 11663 116643) iASL Compiler: 11665 11666Added support to disassemble SSDT and PSDTs. 11667 11668Implemented support to obtain SSDTs from the Windows registry if 11669available. 11670 11671 11672---------------------------------------- 1167309 January 2003. Summary of changes for version 20030109. 11674 116751) ACPI CA Core Subsystem: 11676 11677Changed the behavior of the internal Buffer-to-String conversion 11678function. The current ACPI specification states that the contents 11679of the buffer are "converted to a string of two-character 11680hexadecimal numbers, each separated by a space". Unfortunately, 11681this definition is not backwards compatible with existing ACPI 1.0 11682implementations (although the behavior was not defined in the ACPI 116831.0 specification). The new behavior simply copies data from the 11684buffer to the string until a null character is found or the end of 11685the buffer is reached. The new String object is always null 11686terminated. This problem was seen during the generation of _BIF 11687battery data where incorrect strings were returned for battery 11688type, etc. This will also require an errata to the ACPI 11689specification. 11690 11691Renamed all instances of NATIVE_UINT and NATIVE_INT to 11692ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 11693 11694Copyright in all module headers (both Linux and non-Linux) has be 11695updated to 2003. 11696 11697Code and Data Size: Current core subsystem library sizes are shown 11698below. These are the code and data sizes for the acpica.lib 11699produced by the Microsoft Visual C++ 6.0 compiler, and these 11700values do not include any ACPI driver or OSPM code. The debug 11701version of the code includes the debug output trace mechanism and 11702has a much larger code and data size. Note that these values will 11703vary depending on the efficiency of the compiler and the compiler 11704options used during generation. 11705 11706 Previous Release 11707 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11708 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11709 Current Release: 11710 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11711 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11712 11713 117142) Linux 11715 11716Fixed an oops on module insertion/removal (Matthew Tippett) 11717 11718(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 11719 11720(2.5) Replace pr_debug (Randy Dunlap) 11721 11722(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 11723 11724(Both) Eliminate spawning of thread from timer callback, in favor 11725of schedule_work() 11726 11727(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 11728 11729(Both) Added define for Fixed Function HW region (Matthew Wilcox) 11730 11731(Both) Add missing statics to button.c (Pavel Machek) 11732 11733Several changes have been made to the source code translation 11734utility that generates the Linux Code in order to make the code 11735more "Linux-like": 11736 11737All typedefs on structs and unions have been removed in keeping 11738with the Linux coding style. 11739 11740Removed the non-Linux SourceSafe module revision number from each 11741module header. 11742 11743Completed major overhaul of symbols to be lowercased for linux. 11744Doubled the number of symbols that are lowercased. 11745 11746Fixed a problem where identifiers within procedure headers and 11747within quotes were not fully lower cased (they were left with a 11748starting capital.) 11749 11750Some C macros whose only purpose is to allow the generation of 16- 11751bit code are now completely removed in the Linux code, increasing 11752readability and maintainability. 11753 11754---------------------------------------- 11755 1175612 December 2002. Summary of changes for version 20021212. 11757 11758 117591) ACPI CA Core Subsystem: 11760 11761Fixed a problem where the creation of a zero-length AML Buffer 11762would cause a fault. 11763 11764Fixed a problem where a Buffer object that pointed to a static AML 11765buffer (in an ACPI table) could inadvertently be deleted, causing 11766memory corruption. 11767 11768Fixed a problem where a user buffer (passed in to the external 11769ACPI CA interfaces) could be overwritten if the buffer was too 11770small to complete the operation, causing memory corruption. 11771 11772Fixed a problem in the Buffer-to-String conversion code where a 11773string of length one was always returned, regardless of the size 11774of the input Buffer object. 11775 11776Removed the NATIVE_CHAR data type across the entire source due to 11777lack of need and lack of consistent use. 11778 11779Code and Data Size: Current core subsystem library sizes are shown 11780below. These are the code and data sizes for the acpica.lib 11781produced by the Microsoft Visual C++ 6.0 compiler, and these 11782values do not include any ACPI driver or OSPM code. The debug 11783version of the code includes the debug output trace mechanism and 11784has a much larger code and data size. Note that these values will 11785vary depending on the efficiency of the compiler and the compiler 11786options used during generation. 11787 11788 Previous Release 11789 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 11790 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 11791 Current Release: 11792 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11793 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11794 11795 11796---------------------------------------- 1179705 December 2002. Summary of changes for version 20021205. 11798 117991) ACPI CA Core Subsystem: 11800 11801Fixed a problem where a store to a String or Buffer object could 11802cause corruption of the DSDT if the object type being stored was 11803the same as the target object type and the length of the object 11804being stored was equal to or smaller than the original (existing) 11805target object. This was seen to cause corruption of battery _BIF 11806buffers if the _BIF method modified the buffer on the fly. 11807 11808Fixed a problem where an internal error was generated if a control 11809method invocation was used in an OperationRegion, Buffer, or 11810Package declaration. This was caused by the deferred parsing of 11811the control method and thus the deferred creation of the internal 11812method object. The solution to this problem was to create the 11813internal method object at the moment the method is encountered in 11814the first pass - so that subsequent references to the method will 11815able to obtain the required parameter count and thus properly 11816parse the method invocation. This problem presented itself as an 11817AE_AML_INTERNAL during the pass 1 parse phase during table load. 11818 11819Fixed a problem where the internal String object copy routine did 11820not always allocate sufficient memory for the target String object 11821and caused memory corruption. This problem was seen to cause 11822"Allocation already present in list!" errors as memory allocation 11823became corrupted. 11824 11825Implemented a new function for the evaluation of namespace objects 11826that allows the specification of the allowable return object 11827types. This simplifies a lot of code that checks for a return 11828object of one or more specific objects returned from the 11829evaluation (such as _STA, etc.) This may become and external 11830function if it would be useful to ACPI-related drivers. 11831 11832Completed another round of prefixing #defines with "ACPI_" for 11833clarity. 11834 11835Completed additional code restructuring to allow more modular 11836linking for iASL compiler and AcpiExec. Several files were split 11837creating new files. New files: nsparse.c dsinit.c evgpe.c 11838 11839Implemented an abort mechanism to terminate an executing control 11840method via the AML debugger. This feature is useful for debugging 11841control methods that depend (wait) for specific hardware 11842responses. 11843 11844Code and Data Size: Current core subsystem library sizes are shown 11845below. These are the code and data sizes for the acpica.lib 11846produced by the Microsoft Visual C++ 6.0 compiler, and these 11847values do not include any ACPI driver or OSPM code. The debug 11848version of the code includes the debug output trace mechanism and 11849has a much larger code and data size. Note that these values will 11850vary depending on the efficiency of the compiler and the compiler 11851options used during generation. 11852 11853 Previous Release 11854 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 11855 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 11856 Current Release: 11857 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 11858 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 11859 11860 118612) iASL Compiler/Disassembler 11862 11863Fixed a compiler code generation problem for "Interrupt" Resource 11864Descriptors. If specified in the ASL, the optional "Resource 11865Source Index" and "Resource Source" fields were not inserted into 11866the correct location within the AML resource descriptor, creating 11867an invalid descriptor. 11868 11869Fixed a disassembler problem for "Interrupt" resource descriptors. 11870The optional "Resource Source Index" and "Resource Source" fields 11871were ignored. 11872 11873 11874---------------------------------------- 1187522 November 2002. Summary of changes for version 20021122. 11876 11877 118781) ACPI CA Core Subsystem: 11879 11880Fixed a reported problem where an object stored to a Method Local 11881or Arg was not copied to a new object during the store - the 11882object pointer was simply copied to the Local/Arg. This caused 11883all subsequent operations on the Local/Arg to also affect the 11884original source of the store operation. 11885 11886Fixed a problem where a store operation to a Method Local or Arg 11887was not completed properly if the Local/Arg contained a reference 11888(from RefOf) to a named field. The general-purpose store-to- 11889namespace-node code is now used so that this case is handled 11890automatically. 11891 11892Fixed a problem where the internal object copy routine would cause 11893a protection fault if the object being copied was a Package and 11894contained either 1) a NULL package element or 2) a nested sub- 11895package. 11896 11897Fixed a problem with the GPE initialization that resulted from an 11898ambiguity in the ACPI specification. One section of the 11899specification states that both the address and length of the GPE 11900block must be zero if the block is not supported. Another section 11901implies that only the address need be zero if the block is not 11902supported. The code has been changed so that both the address and 11903the length must be non-zero to indicate a valid GPE block (i.e., 11904if either the address or the length is zero, the GPE block is 11905invalid.) 11906 11907Code and Data Size: Current core subsystem library sizes are shown 11908below. These are the code and data sizes for the acpica.lib 11909produced by the Microsoft Visual C++ 6.0 compiler, and these 11910values do not include any ACPI driver or OSPM code. The debug 11911version of the code includes the debug output trace mechanism and 11912has a much larger code and data size. Note that these values will 11913vary depending on the efficiency of the compiler and the compiler 11914options used during generation. 11915 11916 Previous Release 11917 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 11918 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 11919 Current Release: 11920 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 11921 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 11922 11923 119242) Linux 11925 11926Cleaned up EC driver. Exported an external EC read/write 11927interface. By going through this, other drivers (most notably 11928sonypi) will be able to serialize access to the EC. 11929 11930 119313) iASL Compiler/Disassembler 11932 11933Implemented support to optionally generate include files for both 11934ASM and C (the -i switch). This simplifies BIOS development by 11935automatically creating include files that contain external 11936declarations for the symbols that are created within the 11937 11938(optionally generated) ASM and C AML source files. 11939 11940 11941---------------------------------------- 1194215 November 2002. Summary of changes for version 20021115. 11943 119441) ACPI CA Core Subsystem: 11945 11946Fixed a memory leak problem where an error during resolution of 11947 11948method arguments during a method invocation from another method 11949failed to cleanup properly by deleting all successfully resolved 11950argument objects. 11951 11952Fixed a problem where the target of the Index() operator was not 11953correctly constructed if the source object was a package. This 11954problem has not been detected because the use of a target operand 11955with Index() is very rare. 11956 11957Fixed a problem with the Index() operator where an attempt was 11958made to delete the operand objects twice. 11959 11960Fixed a problem where an attempt was made to delete an operand 11961twice during execution of the CondRefOf() operator if the target 11962did not exist. 11963 11964Implemented the first of perhaps several internal create object 11965functions that create and initialize a specific object type. This 11966consolidates duplicated code wherever the object is created, thus 11967shrinking the size of the subsystem. 11968 11969Implemented improved debug/error messages for errors that occur 11970during nested method invocations. All executing method pathnames 11971are displayed (with the error) as the call stack is unwound - thus 11972simplifying debug. 11973 11974Fixed a problem introduced in the 10/02 release that caused 11975premature deletion of a buffer object if a buffer was used as an 11976ASL operand where an integer operand is required (Thus causing an 11977implicit object conversion from Buffer to Integer.) The change in 11978the 10/02 release was attempting to fix a memory leak (albeit 11979incorrectly.) 11980 11981Code and Data Size: Current core subsystem library sizes are shown 11982below. These are the code and data sizes for the acpica.lib 11983produced by the Microsoft Visual C++ 6.0 compiler, and these 11984values do not include any ACPI driver or OSPM code. The debug 11985version of the code includes the debug output trace mechanism and 11986has a much larger code and data size. Note that these values will 11987vary depending on the efficiency of the compiler and the compiler 11988options used during generation. 11989 11990 Previous Release 11991 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 11992 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 11993 Current Release: 11994 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 11995 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 11996 11997 119982) Linux 11999 12000Changed the implementation of the ACPI semaphores to use down() 12001instead of down_interruptable(). It is important that the 12002execution of ACPI control methods not be interrupted by signals. 12003Methods must run to completion, or the system may be left in an 12004unknown/unstable state. 12005 12006Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 12007(Shawn Starr) 12008 12009 120103) iASL Compiler/Disassembler 12011 12012 12013Changed the default location of output files. All output files 12014are now placed in the current directory by default instead of in 12015the directory of the source file. This change may affect some 12016existing makefiles, but it brings the behavior of the compiler in 12017line with other similar tools. The location of the output files 12018can be overridden with the -p command line switch. 12019 12020 12021---------------------------------------- 1202211 November 2002. Summary of changes for version 20021111. 12023 12024 120250) ACPI Specification 2.0B is released and is now available at: 12026http://www.acpi.info/index.html 12027 12028 120291) ACPI CA Core Subsystem: 12030 12031Implemented support for the ACPI 2.0 SMBus Operation Regions. 12032This includes the early detection and handoff of the request to 12033the SMBus region handler (avoiding all of the complex field 12034support code), and support for the bidirectional return packet 12035from an SMBus write operation. This paves the way for the 12036development of SMBus drivers in each host operating system. 12037 12038Fixed a problem where the semaphore WAIT_FOREVER constant was 12039defined as 32 bits, but must be 16 bits according to the ACPI 12040specification. This had the side effect of causing ASL 12041Mutex/Event timeouts even though the ASL code requested a wait 12042forever. Changed all internal references to the ACPI timeout 12043parameter to 16 bits to prevent future problems. Changed the name 12044of WAIT_FOREVER to ACPI_WAIT_FOREVER. 12045 12046Code and Data Size: Current core subsystem library sizes are shown 12047below. These are the code and data sizes for the acpica.lib 12048produced by the Microsoft Visual C++ 6.0 compiler, and these 12049values do not include any ACPI driver or OSPM code. The debug 12050version of the code includes the debug output trace mechanism and 12051has a much larger code and data size. Note that these values will 12052vary depending on the efficiency of the compiler and the compiler 12053options used during generation. 12054 12055 Previous Release 12056 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12057 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12058 Current Release: 12059 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12060 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12061 12062 120632) Linux 12064 12065Module loading/unloading fixes (John Cagle) 12066 12067 120683) iASL Compiler/Disassembler 12069 12070Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 12071 12072Implemented support for the disassembly of all SMBus protocol 12073keywords (SMBQuick, SMBWord, etc.) 12074 12075---------------------------------------- 1207601 November 2002. Summary of changes for version 20021101. 12077 12078 120791) ACPI CA Core Subsystem: 12080 12081Fixed a problem where platforms that have a GPE1 block but no GPE0 12082block were not handled correctly. This resulted in a "GPE 12083overlap" error message. GPE0 is no longer required. 12084 12085Removed code added in the previous release that inserted nodes 12086into the namespace in alphabetical order. This caused some side- 12087effects on various machines. The root cause of the problem is 12088still under investigation since in theory, the internal ordering 12089of the namespace nodes should not matter. 12090 12091 12092Enhanced error reporting for the case where a named object is not 12093found during control method execution. The full ACPI namepath 12094(name reference) of the object that was not found is displayed in 12095this case. 12096 12097Note: as a result of the overhaul of the namespace object types in 12098the previous release, the namespace nodes for the predefined 12099scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 12100instead of ACPI_TYPE_ANY. This simplifies the namespace 12101management code but may affect code that walks the namespace tree 12102looking for specific object types. 12103 12104Code and Data Size: Current core subsystem library sizes are shown 12105below. These are the code and data sizes for the acpica.lib 12106produced by the Microsoft Visual C++ 6.0 compiler, and these 12107values do not include any ACPI driver or OSPM code. The debug 12108version of the code includes the debug output trace mechanism and 12109has a much larger code and data size. Note that these values will 12110vary depending on the efficiency of the compiler and the compiler 12111options used during generation. 12112 12113 Previous Release 12114 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12115 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12116 Current Release: 12117 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12118 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12119 12120 121212) Linux 12122 12123Fixed a problem introduced in the previous release where the 12124Processor and Thermal objects were not recognized and installed in 12125/proc. This was related to the scope type change described above. 12126 12127 121283) iASL Compiler/Disassembler 12129 12130Implemented the -g option to get all of the required ACPI tables 12131from the registry and save them to files (Windows version of the 12132compiler only.) The required tables are the FADT, FACS, and DSDT. 12133 12134Added ACPI table checksum validation during table disassembly in 12135order to catch corrupted tables. 12136 12137 12138---------------------------------------- 1213922 October 2002. Summary of changes for version 20021022. 12140 121411) ACPI CA Core Subsystem: 12142 12143Implemented a restriction on the Scope operator that the target 12144must already exist in the namespace at the time the operator is 12145encountered (during table load or method execution). In other 12146words, forward references are not allowed and Scope() cannot 12147create a new object. This changes the previous behavior where the 12148interpreter would create the name if not found. This new behavior 12149correctly enables the search-to-root algorithm during namespace 12150lookup of the target name. Because of this upsearch, this fixes 12151the known Compaq _SB_.OKEC problem and makes both the AML 12152interpreter and iASL compiler compatible with other ACPI 12153implementations. 12154 12155Completed a major overhaul of the internal ACPI object types for 12156the ACPI Namespace and the associated operand objects. Many of 12157these types had become obsolete with the introduction of the two- 12158pass namespace load. This cleanup simplifies the code and makes 12159the entire namespace load mechanism much clearer and easier to 12160understand. 12161 12162Improved debug output for tracking scope opening/closing to help 12163diagnose scoping issues. The old scope name as well as the new 12164scope name are displayed. Also improved error messages for 12165problems with ASL Mutex objects and error messages for GPE 12166problems. 12167 12168Cleaned up the namespace dump code, removed obsolete code. 12169 12170All string output (for all namespace/object dumps) now uses the 12171common ACPI string output procedure which handles escapes properly 12172and does not emit non-printable characters. 12173 12174Fixed some issues with constants in the 64-bit version of the 12175local C library (utclib.c) 12176 12177 121782) Linux 12179 12180EC Driver: No longer attempts to acquire the Global Lock at 12181interrupt level. 12182 12183 121843) iASL Compiler/Disassembler 12185 12186Implemented ACPI 2.0B grammar change that disallows all Type 1 and 121872 opcodes outside of a control method. This means that the 12188"executable" operators (versus the "namespace" operators) cannot 12189be used at the table level; they can only be used within a control 12190method. 12191 12192Implemented the restriction on the Scope() operator where the 12193target must already exist in the namespace at the time the 12194operator is encountered (during ASL compilation). In other words, 12195forward references are not allowed and Scope() cannot create a new 12196object. This makes the iASL compiler compatible with other ACPI 12197implementations and makes the Scope() implementation adhere to the 12198ACPI specification. 12199 12200Fixed a problem where namepath optimization for the Alias operator 12201was optimizing the wrong path (of the two namepaths.) This caused 12202a "Missing alias link" error message. 12203 12204Fixed a problem where an "unknown reserved name" warning could be 12205incorrectly generated for names like "_SB" when the trailing 12206underscore is not used in the original ASL. 12207 12208Fixed a problem where the reserved name check did not handle 12209NamePaths with multiple NameSegs correctly. The first nameseg of 12210the NamePath was examined instead of the last NameSeg. 12211 12212 12213---------------------------------------- 12214 1221502 October 2002. Summary of changes for this release. 12216 12217 122181) ACPI CA Core Subsystem version 20021002: 12219 12220Fixed a problem where a store/copy of a string to an existing 12221string did not always set the string length properly in the String 12222object. 12223 12224Fixed a reported problem with the ToString operator where the 12225behavior was identical to the ToHexString operator instead of just 12226simply converting a raw buffer to a string data type. 12227 12228Fixed a problem where CopyObject and the other "explicit" 12229conversion operators were not updating the internal namespace node 12230type as part of the store operation. 12231 12232Fixed a memory leak during implicit source operand conversion 12233where the original object was not deleted if it was converted to a 12234new object of a different type. 12235 12236Enhanced error messages for all problems associated with namespace 12237lookups. Common procedure generates and prints the lookup name as 12238well as the formatted status. 12239 12240Completed implementation of a new design for the Alias support 12241within the namespace. The existing design did not handle the case 12242where a new object was assigned to one of the two names due to the 12243use of an explicit conversion operator, resulting in the two names 12244pointing to two different objects. The new design simply points 12245the Alias name to the original name node - not to the object. 12246This results in a level of indirection that must be handled in the 12247name resolution mechanism. 12248 12249Code and Data Size: Current core subsystem library sizes are shown 12250below. These are the code and data sizes for the acpica.lib 12251produced by the Microsoft Visual C++ 6.0 compiler, and these 12252values do not include any ACPI driver or OSPM code. The debug 12253version of the code includes the debug output trace mechanism and 12254has a larger code and data size. Note that these values will vary 12255depending on the efficiency of the compiler and the compiler 12256options used during generation. 12257 12258 Previous Release 12259 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 12260 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 12261 Current Release: 12262 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12263 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12264 12265 122662) Linux 12267 12268Initialize thermal driver's timer before it is used. (Knut 12269Neumann) 12270 12271Allow handling negative celsius values. (Kochi Takayoshi) 12272 12273Fix thermal management and make trip points. R/W (Pavel Machek) 12274 12275Fix /proc/acpi/sleep. (P. Christeas) 12276 12277IA64 fixes. (David Mosberger) 12278 12279Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 12280 12281Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 12282Brodowski) 12283 12284 122853) iASL Compiler/Disassembler 12286 12287Clarified some warning/error messages. 12288 12289 12290---------------------------------------- 1229118 September 2002. Summary of changes for this release. 12292 12293 122941) ACPI CA Core Subsystem version 20020918: 12295 12296Fixed a reported problem with reference chaining (via the Index() 12297and RefOf() operators) in the ObjectType() and SizeOf() operators. 12298The definition of these operators includes the dereferencing of 12299all chained references to return information on the base object. 12300 12301Fixed a problem with stores to indexed package elements - the 12302existing code would not complete the store if an "implicit 12303conversion" was not performed. In other words, if the existing 12304object (package element) was to be replaced completely, the code 12305didn't handle this case. 12306 12307Relaxed typechecking on the ASL "Scope" operator to allow the 12308target name to refer to an object of type Integer, String, or 12309Buffer, in addition to the scoping object types (Device, 12310predefined Scopes, Processor, PowerResource, and ThermalZone.) 12311This allows existing AML code that has workarounds for a bug in 12312Windows to function properly. A warning is issued, however. This 12313affects both the AML interpreter and the iASL compiler. Below is 12314an example of this type of ASL code: 12315 12316 Name(DEB,0x00) 12317 Scope(DEB) 12318 { 12319 12320Fixed some reported problems with 64-bit integer support in the 12321local implementation of C library functions (clib.c) 12322 12323 123242) Linux 12325 12326Use ACPI fix map region instead of IOAPIC region, since it is 12327undefined in non-SMP. 12328 12329Ensure that the SCI has the proper polarity and trigger, even on 12330systems that do not have an interrupt override entry in the MADT. 12331 123322.5 big driver reorganization (Pat Mochel) 12333 12334Use early table mapping code from acpitable.c (Andi Kleen) 12335 12336New blacklist entries (Andi Kleen) 12337 12338Blacklist improvements. Split blacklist code out into a separate 12339file. Move checking the blacklist to very early. Previously, we 12340would use ACPI tables, and then halfway through init, check the 12341blacklist -- too late. Now, it's early enough to completely fall- 12342back to non-ACPI. 12343 12344 123453) iASL Compiler/Disassembler version 20020918: 12346 12347Fixed a problem where the typechecking code didn't know that an 12348alias could point to a method. In other words, aliases were not 12349being dereferenced during typechecking. 12350 12351 12352---------------------------------------- 1235329 August 2002. Summary of changes for this release. 12354 123551) ACPI CA Core Subsystem Version 20020829: 12356 12357If the target of a Scope() operator already exists, it must be an 12358object type that actually opens a scope -- such as a Device, 12359Method, Scope, etc. This is a fatal runtime error. Similar error 12360check has been added to the iASL compiler also. 12361 12362Tightened up the namespace load to disallow multiple names in the 12363same scope. This previously was allowed if both objects were of 12364the same type. (i.e., a lookup was the same as entering a new 12365name). 12366 12367 123682) Linux 12369 12370Ensure that the ACPI interrupt has the proper trigger and 12371polarity. 12372 12373local_irq_disable is extraneous. (Matthew Wilcox) 12374 12375Make "acpi=off" actually do what it says, and not use the ACPI 12376interpreter *or* the tables. 12377 12378Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 12379Takayoshi) 12380 12381 123823) iASL Compiler/Disassembler Version 20020829: 12383 12384Implemented namepath optimization for name declarations. For 12385example, a declaration like "Method (\_SB_.ABCD)" would get 12386optimized to "Method (ABCD)" if the declaration is within the 12387\_SB_ scope. This optimization is in addition to the named 12388reference path optimization first released in the previous 12389version. This would seem to complete all possible optimizations 12390for namepaths within the ASL/AML. 12391 12392If the target of a Scope() operator already exists, it must be an 12393object type that actually opens a scope -- such as a Device, 12394Method, Scope, etc. 12395 12396Implemented a check and warning for unreachable code in the same 12397block below a Return() statement. 12398 12399Fixed a problem where the listing file was not generated if the 12400compiler aborted if the maximum error count was exceeded (200). 12401 12402Fixed a problem where the typechecking of method return values was 12403broken. This includes the check for a return value when the 12404method is invoked as a TermArg (a return value is expected.) 12405 12406Fixed a reported problem where EOF conditions during a quoted 12407string or comment caused a fault. 12408 12409 12410---------------------------------------- 1241115 August 2002. Summary of changes for this release. 12412 124131) ACPI CA Core Subsystem Version 20020815: 12414 12415Fixed a reported problem where a Store to a method argument that 12416contains a reference did not perform the indirect store correctly. 12417This problem was created during the conversion to the new 12418reference object model - the indirect store to a method argument 12419code was not updated to reflect the new model. 12420 12421Reworked the ACPI mode change code to better conform to ACPI 2.0, 12422handle corner cases, and improve code legibility (Kochi Takayoshi) 12423 12424Fixed a problem with the pathname parsing for the carat (^) 12425prefix. The heavy use of the carat operator by the new namepath 12426optimization in the iASL compiler uncovered a problem with the AML 12427interpreter handling of this prefix. In the case where one or 12428more carats precede a single nameseg, the nameseg was treated as 12429standalone and the search rule (to root) was inadvertently 12430applied. This could cause both the iASL compiler and the 12431interpreter to find the wrong object or to miss the error that 12432should occur if the object does not exist at that exact pathname. 12433 12434Found and fixed the problem where the HP Pavilion DSDT would not 12435load. This was a relatively minor tweak to the table loading code 12436(a problem caused by the unexpected encounter with a method 12437invocation not within a control method), but it does not solve the 12438overall issue of the execution of AML code at the table level. 12439This investigation is still ongoing. 12440 12441Code and Data Size: Current core subsystem library sizes are shown 12442below. These are the code and data sizes for the acpica.lib 12443produced by the Microsoft Visual C++ 6.0 compiler, and these 12444values do not include any ACPI driver or OSPM code. The debug 12445version of the code includes the debug output trace mechanism and 12446has a larger code and data size. Note that these values will vary 12447depending on the efficiency of the compiler and the compiler 12448options used during generation. 12449 12450 Previous Release 12451 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 12452 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 12453 Current Release: 12454 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 12455 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 12456 12457 124582) Linux 12459 12460Remove redundant slab.h include (Brad Hards) 12461 12462Fix several bugs in thermal.c (Herbert Nachtnebel) 12463 12464Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 12465 12466Change acpi_system_suspend to use updated irq functions (Pavel 12467Machek) 12468 12469Export acpi_get_firmware_table (Matthew Wilcox) 12470 12471Use proper root proc entry for ACPI (Kochi Takayoshi) 12472 12473Fix early-boot table parsing (Bjorn Helgaas) 12474 12475 124763) iASL Compiler/Disassembler 12477 12478Reworked the compiler options to make them more consistent and to 12479use two-letter options where appropriate. We were running out of 12480sensible letters. This may break some makefiles, so check the 12481current options list by invoking the compiler with no parameters. 12482 12483Completed the design and implementation of the ASL namepath 12484optimization option for the compiler. This option optimizes all 12485references to named objects to the shortest possible path. The 12486first attempt tries to utilize a single nameseg (4 characters) and 12487the "search-to-root" algorithm used by the interpreter. If that 12488cannot be used (because either the name is not in the search path 12489or there is a conflict with another object with the same name), 12490the pathname is optimized using the carat prefix (usually a 12491shorter string than specifying the entire path from the root.) 12492 12493Implemented support to obtain the DSDT from the Windows registry 12494(when the disassembly option is specified with no input file). 12495Added this code as the implementation for AcpiOsTableOverride in 12496the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 12497utility) to scan memory for the DSDT to the AcpiOsTableOverride 12498function in the DOS OSL to make the disassembler truly OS 12499independent. 12500 12501Implemented a new option to disassemble and compile in one step. 12502When used without an input filename, this option will grab the 12503DSDT from the local machine, disassemble it, and compile it in one 12504step. 12505 12506Added a warning message for invalid escapes (a backslash followed 12507by any character other than the allowable escapes). This catches 12508the quoted string error "\_SB_" (which should be "\\_SB_" ). 12509 12510Also, there are numerous instances in the ACPI specification where 12511this error occurs. 12512 12513Added a compiler option to disable all optimizations. This is 12514basically the "compatibility mode" because by using this option, 12515the AML code will come out exactly the same as other ASL 12516compilers. 12517 12518Added error messages for incorrectly ordered dependent resource 12519functions. This includes: missing EndDependentFn macro at end of 12520dependent resource list, nested dependent function macros (both 12521start and end), and missing StartDependentFn macro. These are 12522common errors that should be caught at compile time. 12523 12524Implemented _OSI support for the disassembler and compiler. _OSI 12525must be included in the namespace for proper disassembly (because 12526the disassembler must know the number of arguments.) 12527 12528Added an "optimization" message type that is optional (off by 12529default). This message is used for all optimizations - including 12530constant folding, integer optimization, and namepath optimization. 12531 12532---------------------------------------- 1253325 July 2002. Summary of changes for this release. 12534 12535 125361) ACPI CA Core Subsystem Version 20020725: 12537 12538The AML Disassembler has been enhanced to produce compilable ASL 12539code and has been integrated into the iASL compiler (see below) as 12540well as the single-step disassembly for the AML debugger and the 12541disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 12542resource templates and macros are fully supported. The 12543disassembler has been tested on over 30 different AML files, 12544producing identical AML when the resulting disassembled ASL file 12545is recompiled with the same ASL compiler. 12546 12547Modified the Resource Manager to allow zero interrupts and zero 12548dma channels during the GetCurrentResources call. This was 12549causing problems on some platforms. 12550 12551Added the AcpiOsRedirectOutput interface to the OSL to simplify 12552output redirection for the AcpiOsPrintf and AcpiOsVprintf 12553interfaces. 12554 12555Code and Data Size: Current core subsystem library sizes are shown 12556below. These are the code and data sizes for the acpica.lib 12557produced by the Microsoft Visual C++ 6.0 compiler, and these 12558values do not include any ACPI driver or OSPM code. The debug 12559version of the code includes the debug output trace mechanism and 12560has a larger code and data size. Note that these values will vary 12561depending on the efficiency of the compiler and the compiler 12562options used during generation. 12563 12564 Previous Release 12565 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 12566 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 12567 Current Release: 12568 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 12569 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 12570 12571 125722) Linux 12573 12574Fixed a panic in the EC driver (Dominik Brodowski) 12575 12576Implemented checksum of the R/XSDT itself during Linux table scan 12577(Richard Schaal) 12578 12579 125803) iASL compiler 12581 12582The AML disassembler is integrated into the compiler. The "-d" 12583option invokes the disassembler to completely disassemble an 12584input AML file, producing as output a text ASL file with the 12585extension ".dsl" (to avoid name collisions with existing .asl 12586source files.) A future enhancement will allow the disassembler 12587to obtain the BIOS DSDT from the registry under Windows. 12588 12589Fixed a problem with the VendorShort and VendorLong resource 12590descriptors where an invalid AML sequence was created. 12591 12592Implemented a fix for BufferData term in the ASL parser. It was 12593inadvertently defined twice, allowing invalid syntax to pass and 12594causing reduction conflicts. 12595 12596Fixed a problem where the Ones opcode could get converted to a 12597value of zero if "Ones" was used where a byte, word or dword value 12598was expected. The 64-bit value is now truncated to the correct 12599size with the correct value. 12600 12601 12602 12603---------------------------------------- 1260402 July 2002. Summary of changes for this release. 12605 12606 126071) ACPI CA Core Subsystem Version 20020702: 12608 12609The Table Manager code has been restructured to add several new 12610features. Tables that are not required by the core subsystem 12611(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 12612validated in any way and are returned from AcpiGetFirmwareTable if 12613requested. The AcpiOsTableOverride interface is now called for 12614each table that is loaded by the subsystem in order to allow the 12615host to override any table it chooses. Previously, only the DSDT 12616could be overridden. Added one new files, tbrsdt.c and 12617tbgetall.c. 12618 12619Fixed a problem with the conversion of internal package objects to 12620external objects (when a package is returned from a control 12621method.) The return buffer length was set to zero instead of the 12622proper length of the package object. 12623 12624Fixed a reported problem with the use of the RefOf and DeRefOf 12625operators when passing reference arguments to control methods. A 12626new type of Reference object is used internally for references 12627produced by the RefOf operator. 12628 12629Added additional error messages in the Resource Manager to explain 12630AE_BAD_DATA errors when they occur during resource parsing. 12631 12632Split the AcpiEnableSubsystem into two primitives to enable a 12633finer granularity initialization sequence. These two calls should 12634be called in this order: AcpiEnableSubsystem (flags), 12635AcpiInitializeObjects (flags). The flags parameter remains the 12636same. 12637 12638 126392) Linux 12640 12641Updated the ACPI utilities module to understand the new style of 12642fully resolved package objects that are now returned from the core 12643subsystem. This eliminates errors of the form: 12644 12645 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 12646 acpi_utils-0430 [145] acpi_evaluate_reference: 12647 Invalid element in package (not a device reference) 12648 12649The method evaluation utility uses the new buffer allocation 12650scheme instead of calling AcpiEvaluate Object twice. 12651 12652Added support for ECDT. This allows the use of the Embedded 12653 12654Controller before the namespace has been fully initialized, which 12655is necessary for ACPI 2.0 support, and for some laptops to 12656initialize properly. (Laptops using ECDT are still rare, so only 12657limited testing was performed of the added functionality.) 12658 12659Fixed memory leaks in the EC driver. 12660 12661Eliminated a brittle code structure in acpi_bus_init(). 12662 12663Eliminated the acpi_evaluate() helper function in utils.c. It is 12664no longer needed since acpi_evaluate_object can optionally 12665allocate memory for the return object. 12666 12667Implemented fix for keyboard hang when getting battery readings on 12668some systems (Stephen White) 12669 12670PCI IRQ routing update (Dominik Brodowski) 12671 12672Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 12673support 12674 12675---------------------------------------- 1267611 June 2002. Summary of changes for this release. 12677 12678 126791) ACPI CA Core Subsystem Version 20020611: 12680 12681Fixed a reported problem where constants such as Zero and One 12682appearing within _PRT packages were not handled correctly within 12683the resource manager code. Originally reported against the ASL 12684compiler because the code generator now optimizes integers to 12685their minimal AML representation (i.e. AML constants if possible.) 12686The _PRT code now handles all AML constant opcodes correctly 12687(Zero, One, Ones, Revision). 12688 12689Fixed a problem with the Concatenate operator in the AML 12690interpreter where a buffer result object was incorrectly marked as 12691not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 12692 12693All package sub-objects are now fully resolved before they are 12694returned from the external ACPI interfaces. This means that name 12695strings are resolved to object handles, and constant operators 12696(Zero, One, Ones, Revision) are resolved to Integers. 12697 12698Implemented immediate resolution of the AML Constant opcodes 12699(Zero, One, Ones, Revision) to Integer objects upon detection 12700within the AML stream. This has simplified and reduced the 12701generated code size of the subsystem by eliminating about 10 12702switch statements for these constants (which previously were 12703contained in Reference objects.) The complicating issues are that 12704the Zero opcode is used as a "placeholder" for unspecified 12705optional target operands and stores to constants are defined to be 12706no-ops. 12707 12708Code and Data Size: Current core subsystem library sizes are shown 12709below. These are the code and data sizes for the acpica.lib 12710produced by the Microsoft Visual C++ 6.0 compiler, and these 12711values do not include any ACPI driver or OSPM code. The debug 12712version of the code includes the debug output trace mechanism and 12713has a larger code and data size. Note that these values will vary 12714depending on the efficiency of the compiler and the compiler 12715options used during generation. 12716 12717 Previous Release 12718 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 12719 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 12720 Current Release: 12721 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 12722 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 12723 12724 127252) Linux 12726 12727 12728Added preliminary support for obtaining _TRA data for PCI root 12729bridges (Bjorn Helgaas). 12730 12731 127323) iASL Compiler Version X2046: 12733 12734Fixed a problem where the "_DDN" reserved name was defined to be a 12735control method with one argument. There are no arguments, and 12736_DDN does not have to be a control method. 12737 12738Fixed a problem with the Linux version of the compiler where the 12739source lines printed with error messages were the wrong lines. 12740This turned out to be the "LF versus CR/LF" difference between 12741Windows and Unix. This appears to be the longstanding issue 12742concerning listing output and error messages. 12743 12744Fixed a problem with the Linux version of compiler where opcode 12745names within error messages were wrong. This was caused by a 12746slight difference in the output of the Flex tool on Linux versus 12747Windows. 12748 12749Fixed a problem with the Linux compiler where the hex output files 12750contained some garbage data caused by an internal buffer overrun. 12751 12752 12753---------------------------------------- 1275417 May 2002. Summary of changes for this release. 12755 12756 127571) ACPI CA Core Subsystem Version 20020517: 12758 12759Implemented a workaround to an BIOS bug discovered on the HP 12760OmniBook where the FADT revision number and the table size are 12761inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 12762behavior is to fallback to using only the ACPI 1.0 fields of the 12763FADT if the table is too small to be a ACPI 2.0 table as claimed 12764by the revision number. Although this is a BIOS bug, this is a 12765case where the workaround is simple enough and with no side 12766effects, so it seemed prudent to add it. A warning message is 12767issued, however. 12768 12769Implemented minimum size checks for the fixed-length ACPI tables - 12770- the FADT and FACS, as well as consistency checks between the 12771revision number and the table size. 12772 12773Fixed a reported problem in the table override support where the 12774new table pointer was incorrectly treated as a physical address 12775instead of a logical address. 12776 12777Eliminated the use of the AE_AML_ERROR exception and replaced it 12778with more descriptive codes. 12779 12780Fixed a problem where an exception would occur if an ASL Field was 12781defined with no named Field Units underneath it (used by some 12782index fields). 12783 12784Code and Data Size: Current core subsystem library sizes are shown 12785below. These are the code and data sizes for the acpica.lib 12786produced by the Microsoft Visual C++ 6.0 compiler, and these 12787values do not include any ACPI driver or OSPM code. The debug 12788version of the code includes the debug output trace mechanism and 12789has a larger code and data size. Note that these values will vary 12790depending on the efficiency of the compiler and the compiler 12791options used during generation. 12792 12793 Previous Release 12794 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 12795 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 12796 Current Release: 12797 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 12798 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 12799 12800 12801 128022) Linux 12803 12804Much work done on ACPI init (MADT and PCI IRQ routing support). 12805(Paul D. and Dominik Brodowski) 12806 12807Fix PCI IRQ-related panic on boot (Sam Revitch) 12808 12809Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 12810 12811Fix "MHz" typo (Dominik Brodowski) 12812 12813Fix RTC year 2000 issue (Dominik Brodowski) 12814 12815Preclude multiple button proc entries (Eric Brunet) 12816 12817Moved arch-specific code out of include/platform/aclinux.h 12818 128193) iASL Compiler Version X2044: 12820 12821Implemented error checking for the string used in the EISAID macro 12822(Usually used in the definition of the _HID object.) The code now 12823strictly enforces the PnP format - exactly 7 characters, 3 12824uppercase letters and 4 hex digits. 12825 12826If a raw string is used in the definition of the _HID object 12827(instead of the EISAID macro), the string must contain all 12828alphanumeric characters (e.g., "*PNP0011" is not allowed because 12829of the asterisk.) 12830 12831Implemented checking for invalid use of ACPI reserved names for 12832most of the name creation operators (Name, Device, Event, Mutex, 12833OperationRegion, PowerResource, Processor, and ThermalZone.) 12834Previously, this check was only performed for control methods. 12835 12836Implemented an additional check on the Name operator to emit an 12837error if a reserved name that must be implemented in ASL as a 12838control method is used. We know that a reserved name must be a 12839method if it is defined with input arguments. 12840 12841The warning emitted when a namespace object reference is not found 12842during the cross reference phase has been changed into an error. 12843The "External" directive should be used for names defined in other 12844modules. 12845 12846 128474) Tools and Utilities 12848 12849The 16-bit tools (adump16 and aexec16) have been regenerated and 12850tested. 12851 12852Fixed a problem with the output of both acpidump and adump16 where 12853the indentation of closing parentheses and brackets was not 12854 12855aligned properly with the parent block. 12856 12857 12858---------------------------------------- 1285903 May 2002. Summary of changes for this release. 12860 12861 128621) ACPI CA Core Subsystem Version 20020503: 12863 12864Added support a new OSL interface that allows the host operating 12865 12866system software to override the DSDT found in the firmware - 12867AcpiOsTableOverride. With this interface, the OSL can examine the 12868version of the firmware DSDT and replace it with a different one 12869if desired. 12870 12871Added new external interfaces for accessing ACPI registers from 12872device drivers and other system software - AcpiGetRegister and 12873AcpiSetRegister. This was simply an externalization of the 12874existing AcpiHwBitRegister interfaces. 12875 12876Fixed a regression introduced in the previous build where the 12877ASL/AML CreateField operator always returned an error, 12878"destination must be a NS Node". 12879 12880Extended the maximum time (before failure) to successfully enable 12881ACPI mode to 3 seconds. 12882 12883Code and Data Size: Current core subsystem library sizes are shown 12884below. These are the code and data sizes for the acpica.lib 12885produced by the Microsoft Visual C++ 6.0 compiler, and these 12886values do not include any ACPI driver or OSPM code. The debug 12887version of the code includes the debug output trace mechanism and 12888has a larger code and data size. Note that these values will vary 12889depending on the efficiency of the compiler and the compiler 12890options used during generation. 12891 12892 Previous Release 12893 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 12894 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 12895 Current Release: 12896 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 12897 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 12898 12899 129002) Linux 12901 12902Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 12903free. While 3 out of 4 of our in-house systems work fine, the last 12904one still hangs when testing the LAPIC timer. 12905 12906Renamed many files in 2.5 kernel release to omit "acpi_" from the 12907name. 12908 12909Added warning on boot for Presario 711FR. 12910 12911Sleep improvements (Pavel Machek) 12912 12913ACPI can now be built without CONFIG_PCI enabled. 12914 12915IA64: Fixed memory map functions (JI Lee) 12916 12917 129183) iASL Compiler Version X2043: 12919 12920Added support to allow the compiler to be integrated into the MS 12921VC++ development environment for one-button compilation of single 12922files or entire projects -- with error-to-source-line mapping. 12923 12924Implemented support for compile-time constant folding for the 12925Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 12926specification. This allows the ASL writer to use expressions 12927instead of Integer/Buffer/String constants in terms that must 12928evaluate to constants at compile time and will also simplify the 12929emitted AML in any such sub-expressions that can be folded 12930(evaluated at compile-time.) This increases the size of the 12931compiler significantly because a portion of the ACPI CA AML 12932interpreter is included within the compiler in order to pre- 12933evaluate constant expressions. 12934 12935 12936Fixed a problem with the "Unicode" ASL macro that caused the 12937compiler to fault. (This macro is used in conjunction with the 12938_STR reserved name.) 12939 12940Implemented an AML opcode optimization to use the Zero, One, and 12941Ones opcodes where possible to further reduce the size of integer 12942constants and thus reduce the overall size of the generated AML 12943code. 12944 12945Implemented error checking for new reserved terms for ACPI version 129462.0A. 12947 12948Implemented the -qr option to display the current list of ACPI 12949reserved names known to the compiler. 12950 12951Implemented the -qc option to display the current list of ASL 12952operators that are allowed within constant expressions and can 12953therefore be folded at compile time if the operands are constants. 12954 12955 129564) Documentation 12957 12958Updated the Programmer's Reference for new interfaces, data types, 12959and memory allocation model options. 12960 12961Updated the iASL Compiler User Reference to apply new format and 12962add information about new features and options. 12963 12964---------------------------------------- 1296519 April 2002. Summary of changes for this release. 12966 129671) ACPI CA Core Subsystem Version 20020419: 12968 12969The source code base for the Core Subsystem has been completely 12970cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 12971versions. The Lint option files used are included in the 12972/acpi/generate/lint directory. 12973 12974Implemented enhanced status/error checking across the entire 12975Hardware manager subsystem. Any hardware errors (reported from 12976the OSL) are now bubbled up and will abort a running control 12977method. 12978 12979 12980Fixed a problem where the per-ACPI-table integer width (32 or 64) 12981was stored only with control method nodes, causing a fault when 12982non-control method code was executed during table loading. The 12983solution implemented uses a global variable to indicate table 12984width across the entire ACPI subsystem. Therefore, ACPI CA does 12985not support mixed integer widths across different ACPI tables 12986(DSDT, SSDT). 12987 12988Fixed a problem where NULL extended fields (X fields) in an ACPI 129892.0 ACPI FADT caused the table load to fail. Although the 12990existing ACPI specification is a bit fuzzy on this topic, the new 12991behavior is to fall back on a ACPI 1.0 field if the corresponding 12992ACPI 2.0 X field is zero (even though the table revision indicates 12993a full ACPI 2.0 table.) The ACPI specification will be updated to 12994clarify this issue. 12995 12996Fixed a problem with the SystemMemory operation region handler 12997where memory was always accessed byte-wise even if the AML- 12998specified access width was larger than a byte. This caused 12999problems on systems with memory-mapped I/O. Memory is now 13000accessed with the width specified. On systems that do not support 13001non-aligned transfers, a check is made to guarantee proper address 13002alignment before proceeding in order to avoid an AML-caused 13003alignment fault within the kernel. 13004 13005 13006Fixed a problem with the ExtendedIrq resource where only one byte 13007of the 4-byte Irq field was extracted. 13008 13009Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 13010function was out of date and required a rewrite. 13011 13012Code and Data Size: Current core subsystem library sizes are shown 13013below. These are the code and data sizes for the acpica.lib 13014produced by the Microsoft Visual C++ 6.0 compiler, and these 13015values do not include any ACPI driver or OSPM code. The debug 13016version of the code includes the debug output trace mechanism and 13017has a larger code and data size. Note that these values will vary 13018depending on the efficiency of the compiler and the compiler 13019options used during generation. 13020 13021 Previous Release 13022 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13023 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13024 Current Release: 13025 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13026 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13027 13028 130292) Linux 13030 13031PCI IRQ routing fixes (Dominik Brodowski) 13032 13033 130343) iASL Compiler Version X2042: 13035 13036Implemented an additional compile-time error check for a field 13037unit whose size + minimum access width would cause a run-time 13038access beyond the end-of-region. Previously, only the field size 13039itself was checked. 13040 13041The Core subsystem and iASL compiler now share a common parse 13042object in preparation for compile-time evaluation of the type 130433/4/5 ASL operators. 13044 13045 13046---------------------------------------- 13047Summary of changes for this release: 03_29_02 13048 130491) ACPI CA Core Subsystem Version 20020329: 13050 13051Implemented support for late evaluation of TermArg operands to 13052Buffer and Package objects. This allows complex expressions to be 13053used in the declarations of these object types. 13054 13055Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 130561.0, if the field was larger than 32 bits, it was returned as a 13057buffer - otherwise it was returned as an integer. In ACPI 2.0, 13058the field is returned as a buffer only if the field is larger than 1305964 bits. The TableRevision is now considered when making this 13060conversion to avoid incompatibility with existing ASL code. 13061 13062Implemented logical addressing for AcpiOsGetRootPointer. This 13063allows an RSDP with either a logical or physical address. With 13064this support, the host OS can now override all ACPI tables with 13065one logical RSDP. Includes implementation of "typed" pointer 13066support to allow a common data type for both physical and logical 13067pointers internally. This required a change to the 13068AcpiOsGetRootPointer interface. 13069 13070Implemented the use of ACPI 2.0 Generic Address Structures for all 13071GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 13072mapped I/O for these ACPI features. 13073 13074Initialization now ignores not only non-required tables (All 13075tables other than the FADT, FACS, DSDT, and SSDTs), but also does 13076not validate the table headers of unrecognized tables. 13077 13078Fixed a problem where a notify handler could only be 13079installed/removed on an object of type Device. All "notify" 13080 13081objects are now supported -- Devices, Processor, Power, and 13082Thermal. 13083 13084Removed most verbosity from the ACPI_DB_INFO debug level. Only 13085critical information is returned when this debug level is enabled. 13086 13087Code and Data Size: Current core subsystem library sizes are shown 13088below. These are the code and data sizes for the acpica.lib 13089produced by the Microsoft Visual C++ 6.0 compiler, and these 13090values do not include any ACPI driver or OSPM code. The debug 13091version of the code includes the debug output trace mechanism and 13092has a larger code and data size. Note that these values will vary 13093depending on the efficiency of the compiler and the compiler 13094options used during generation. 13095 13096 Previous Release 13097 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13098 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13099 Current Release: 13100 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13101 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13102 13103 131042) Linux: 13105 13106The processor driver (acpi_processor.c) now fully supports ACPI 131072.0-based processor performance control (e.g. Intel(R) 13108SpeedStep(TM) technology) Note that older laptops that only have 13109the Intel "applet" interface are not supported through this. The 13110'limit' and 'performance' interface (/proc) are fully functional. 13111[Note that basic policy for controlling performance state 13112transitions will be included in the next version of ospmd.] The 13113idle handler was modified to more aggressively use C2, and PIIX4 13114errata handling underwent a complete overhaul (big thanks to 13115Dominik Brodowski). 13116 13117Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 13118based devices in the ACPI namespace are now dynamically bound 13119(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 13120This allows, among other things, ACPI to resolve bus numbers for 13121subordinate PCI bridges. 13122 13123Enhanced PCI IRQ routing to get the proper bus number for _PRT 13124entries defined underneath PCI bridges. 13125 13126Added IBM 600E to bad bios list due to invalid _ADR value for 13127PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 13128 13129In the process of adding full MADT support (e.g. IOAPIC) for IA32 13130(acpi.c, mpparse.c) -- stay tuned. 13131 13132Added back visual differentiation between fixed-feature and 13133control-method buttons in dmesg. Buttons are also subtyped (e.g. 13134button/power/PWRF) to simplify button identification. 13135 13136We no longer use -Wno-unused when compiling debug. Please ignore 13137any "_THIS_MODULE defined but not used" messages. 13138 13139Can now shut down the system using "magic sysrq" key. 13140 13141 131423) iASL Compiler version 2041: 13143 13144Fixed a problem where conversion errors for hex/octal/decimal 13145constants were not reported. 13146 13147Implemented a fix for the General Register template Address field. 13148This field was 8 bits when it should be 64. 13149 13150Fixed a problem where errors/warnings were no longer being emitted 13151within the listing output file. 13152 13153Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 13154exactly 4 characters, alphanumeric only. 13155 13156 13157 13158 13159---------------------------------------- 13160Summary of changes for this release: 03_08_02 13161 13162 131631) ACPI CA Core Subsystem Version 20020308: 13164 13165Fixed a problem with AML Fields where the use of the "AccessAny" 13166keyword could cause an interpreter error due to attempting to read 13167or write beyond the end of the parent Operation Region. 13168 13169Fixed a problem in the SystemMemory Operation Region handler where 13170an attempt was made to map memory beyond the end of the region. 13171This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 13172errors on some Linux systems. 13173 13174Fixed a problem where the interpreter/namespace "search to root" 13175algorithm was not functioning for some object types. Relaxed the 13176internal restriction on the search to allow upsearches for all 13177external object types as well as most internal types. 13178 13179 131802) Linux: 13181 13182We now use safe_halt() macro versus individual calls to sti | hlt. 13183 13184Writing to the processor limit interface should now work. "echo 1" 13185will increase the limit, 2 will decrease, and 0 will reset to the 13186 13187default. 13188 13189 131903) ASL compiler: 13191 13192Fixed segfault on Linux version. 13193 13194 13195---------------------------------------- 13196Summary of changes for this release: 02_25_02 13197 131981) ACPI CA Core Subsystem: 13199 13200 13201Fixed a problem where the GPE bit masks were not initialized 13202properly, causing erratic GPE behavior. 13203 13204Implemented limited support for multiple calling conventions. The 13205code can be generated with either the VPL (variable parameter 13206list, or "C") convention, or the FPL (fixed parameter list, or 13207"Pascal") convention. The core subsystem is about 3.4% smaller 13208when generated with FPL. 13209 13210 132112) Linux 13212 13213Re-add some /proc/acpi/event functionality that was lost during 13214the rewrite 13215 13216Resolved issue with /proc events for fixed-feature buttons showing 13217up as the system device. 13218 13219Fixed checks on C2/C3 latencies to be inclusive of maximum values. 13220 13221Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 13222 13223Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 13224 13225Fixed limit interface & usage to fix bugs with passive cooling 13226hysterisis. 13227 13228Restructured PRT support. 13229 13230 13231---------------------------------------- 13232Summary of changes for this label: 02_14_02 13233 13234 132351) ACPI CA Core Subsystem: 13236 13237Implemented support in AcpiLoadTable to allow loading of FACS and 13238FADT tables. 13239 13240Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 13241been removed. All 64-bit platforms should be migrated to the ACPI 132422.0 tables. The actbl71.h header has been removed from the source 13243tree. 13244 13245All C macros defined within the subsystem have been prefixed with 13246"ACPI_" to avoid collision with other system include files. 13247 13248Removed the return value for the two AcpiOsPrint interfaces, since 13249it is never used and causes lint warnings for ignoring the return 13250value. 13251 13252Added error checking to all internal mutex acquire and release 13253calls. Although a failure from one of these interfaces is 13254probably a fatal system error, these checks will cause the 13255immediate abort of the currently executing method or interface. 13256 13257Fixed a problem where the AcpiSetCurrentResources interface could 13258fault. This was a side effect of the deployment of the new memory 13259allocation model. 13260 13261Fixed a couple of problems with the Global Lock support introduced 13262in the last major build. The "common" (1.0/2.0) internal FACS was 13263being overwritten with the FACS signature and clobbering the 13264Global Lock pointer. Also, the actual firmware FACS was being 13265unmapped after construction of the "common" FACS, preventing 13266access to the actual Global Lock field within it. The "common" 13267internal FACS is no longer installed as an actual ACPI table; it 13268is used simply as a global. 13269 13270Code and Data Size: Current core subsystem library sizes are shown 13271below. These are the code and data sizes for the acpica.lib 13272produced by the Microsoft Visual C++ 6.0 compiler, and these 13273values do not include any ACPI driver or OSPM code. The debug 13274version of the code includes the debug output trace mechanism and 13275has a larger code and data size. Note that these values will vary 13276depending on the efficiency of the compiler and the compiler 13277options used during generation. 13278 13279 Previous Release (02_07_01) 13280 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13281 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13282 Current Release: 13283 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13284 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13285 13286 132872) Linux 13288 13289Updated Linux-specific code for core macro and OSL interface 13290changes described above. 13291 13292Improved /proc/acpi/event. It now can be opened only once and has 13293proper poll functionality. 13294 13295Fixed and restructured power management (acpi_bus). 13296 13297Only create /proc "view by type" when devices of that class exist. 13298 13299Fixed "charging/discharging" bug (and others) in acpi_battery. 13300 13301Improved thermal zone code. 13302 13303 133043) ASL Compiler, version X2039: 13305 13306 13307Implemented the new compiler restriction on ASL String hex/octal 13308escapes to non-null, ASCII values. An error results if an invalid 13309value is used. (This will require an ACPI 2.0 specification 13310change.) 13311 13312AML object labels that are output to the optional C and ASM source 13313are now prefixed with both the ACPI table signature and table ID 13314to help guarantee uniqueness within a large BIOS project. 13315 13316 13317---------------------------------------- 13318Summary of changes for this label: 02_01_02 13319 133201) ACPI CA Core Subsystem: 13321 13322ACPI 2.0 support is complete in the entire Core Subsystem and the 13323ASL compiler. All new ACPI 2.0 operators are implemented and all 13324other changes for ACPI 2.0 support are complete. With 13325simultaneous code and data optimizations throughout the subsystem, 13326ACPI 2.0 support has been implemented with almost no additional 13327cost in terms of code and data size. 13328 13329Implemented a new mechanism for allocation of return buffers. If 13330the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 13331be allocated on behalf of the caller. Consolidated all return 13332buffer validation and allocation to a common procedure. Return 13333buffers will be allocated via the primary OSL allocation interface 13334since it appears that a separate pool is not needed by most users. 13335If a separate pool is required for these buffers, the caller can 13336still use the original mechanism and pre-allocate the buffer(s). 13337 13338Implemented support for string operands within the DerefOf 13339operator. 13340 13341Restructured the Hardware and Event managers to be table driven, 13342simplifying the source code and reducing the amount of generated 13343code. 13344 13345Split the common read/write low-level ACPI register bitfield 13346procedure into a separate read and write, simplifying the code 13347considerably. 13348 13349Obsoleted the AcpiOsCallocate OSL interface. This interface was 13350used only a handful of times and didn't have enough critical mass 13351for a separate interface. Replaced with a common calloc procedure 13352in the core. 13353 13354Fixed a reported problem with the GPE number mapping mechanism 13355that allows GPE1 numbers to be non-contiguous with GPE0. 13356Reorganized the GPE information and shrunk a large array that was 13357originally large enough to hold info for all possible GPEs (256) 13358to simply large enough to hold all GPEs up to the largest GPE 13359number on the machine. 13360 13361Fixed a reported problem with resource structure alignment on 64- 13362bit platforms. 13363 13364Changed the AcpiEnableEvent and AcpiDisableEvent external 13365interfaces to not require any flags for the common case of 13366enabling/disabling a GPE. 13367 13368Implemented support to allow a "Notify" on a Processor object. 13369 13370Most TBDs in comments within the source code have been resolved 13371and eliminated. 13372 13373 13374Fixed a problem in the interpreter where a standalone parent 13375prefix (^) was not handled correctly in the interpreter and 13376debugger. 13377 13378Removed obsolete and unnecessary GPE save/restore code. 13379 13380Implemented Field support in the ASL Load operator. This allows a 13381table to be loaded from a named field, in addition to loading a 13382table directly from an Operation Region. 13383 13384Implemented timeout and handle support in the external Global Lock 13385interfaces. 13386 13387Fixed a problem in the AcpiDump utility where pathnames were no 13388longer being generated correctly during the dump of named objects. 13389 13390Modified the AML debugger to give a full display of if/while 13391predicates instead of just one AML opcode at a time. (The 13392predicate can have several nested ASL statements.) The old method 13393was confusing during single stepping. 13394 13395Code and Data Size: Current core subsystem library sizes are shown 13396below. These are the code and data sizes for the acpica.lib 13397produced by the Microsoft Visual C++ 6.0 compiler, and these 13398values do not include any ACPI driver or OSPM code. The debug 13399version of the code includes the debug output trace mechanism and 13400has a larger code and data size. Note that these values will vary 13401depending on the efficiency of the compiler and the compiler 13402options used during generation. 13403 13404 Previous Release (12_18_01) 13405 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 13406 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 13407 Current Release: 13408 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13409 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13410 134112) Linux 13412 13413 Implemented fix for PIIX reverse throttling errata (Processor 13414driver) 13415 13416Added new Limit interface (Processor and Thermal drivers) 13417 13418New thermal policy (Thermal driver) 13419 13420Many updates to /proc 13421 13422Battery "low" event support (Battery driver) 13423 13424Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 13425 13426IA32 - IA64 initialization unification, no longer experimental 13427 13428Menuconfig options redesigned 13429 134303) ASL Compiler, version X2037: 13431 13432Implemented several new output features to simplify integration of 13433AML code into firmware: 1) Output the AML in C source code with 13434labels for each named ASL object. The original ASL source code 13435is interleaved as C comments. 2) Output the AML in ASM source code 13436with labels and interleaved ASL source. 3) Output the AML in 13437raw hex table form, in either C or ASM. 13438 13439Implemented support for optional string parameters to the 13440LoadTable operator. 13441 13442Completed support for embedded escape sequences within string 13443literals. The compiler now supports all single character escapes 13444as well as the Octal and Hex escapes. Note: the insertion of a 13445null byte into a string literal (via the hex/octal escape) causes 13446the string to be immediately terminated. A warning is issued. 13447 13448Fixed a problem where incorrect AML was generated for the case 13449where an ASL namepath consists of a single parent prefix ( 13450 13451) with no trailing name segments. 13452 13453The compiler has been successfully generated with a 64-bit C 13454compiler. 13455 13456 13457 13458 13459---------------------------------------- 13460Summary of changes for this label: 12_18_01 13461 134621) Linux 13463 13464Enhanced blacklist with reason and severity fields. Any table's 13465signature may now be used to identify a blacklisted system. 13466 13467Call _PIC control method to inform the firmware which interrupt 13468model the OS is using. Turn on any disabled link devices. 13469 13470Cleaned up busmgr /proc error handling (Andreas Dilger) 13471 13472 2) ACPI CA Core Subsystem: 13473 13474Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 13475while loop) 13476 13477Completed implementation of the ACPI 2.0 "Continue", 13478"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 13479operators. All new ACPI 2.0 operators are now implemented in both 13480the ASL compiler and the AML interpreter. The only remaining ACPI 134812.0 task is support for the String data type in the DerefOf 13482operator. Fixed a problem with AcquireMutex where the status code 13483was lost if the caller had to actually wait for the mutex. 13484 13485Increased the maximum ASL Field size from 64K bits to 4G bits. 13486 13487Completed implementation of the external Global Lock interfaces -- 13488AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 13489Handler parameters were added. 13490 13491Completed another pass at removing warnings and issues when 13492compiling with 64-bit compilers. The code now compiles cleanly 13493with the Intel 64-bit C/C++ compiler. Most notably, the pointer 13494add and subtract (diff) macros have changed considerably. 13495 13496 13497Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1349864-bit platforms, 32-bits on all others. This type is used 13499wherever memory allocation and/or the C sizeof() operator is used, 13500and affects the OSL memory allocation interfaces AcpiOsAllocate 13501and AcpiOsCallocate. 13502 13503Implemented sticky user breakpoints in the AML debugger. 13504 13505Code and Data Size: Current core subsystem library sizes are shown 13506below. These are the code and data sizes for the acpica.lib 13507produced by the Microsoft Visual C++ 6.0 compiler, and these 13508values do not include any ACPI driver or OSPM code. The debug 13509version of the code includes the debug output trace mechanism and 13510has a larger code and data size. Note that these values will vary 13511depending on the efficiency of the compiler and the compiler 13512options used during generation. 13513 13514 Previous Release (12_05_01) 13515 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 13516 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 13517 Current Release: 13518 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 13519 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 13520 13521 3) ASL Compiler, version X2034: 13522 13523Now checks for (and generates an error if detected) the use of a 13524Break or Continue statement without an enclosing While statement. 13525 13526 13527Successfully generated the compiler with the Intel 64-bit C 13528compiler. 13529 13530 ---------------------------------------- 13531Summary of changes for this label: 12_05_01 13532 13533 1) ACPI CA Core Subsystem: 13534 13535The ACPI 2.0 CopyObject operator is fully implemented. This 13536operator creates a new copy of an object (and is also used to 13537bypass the "implicit conversion" mechanism of the Store operator.) 13538 13539The ACPI 2.0 semantics for the SizeOf operator are fully 13540implemented. The change is that performing a SizeOf on a 13541reference object causes an automatic dereference of the object to 13542tha actual value before the size is evaluated. This behavior was 13543undefined in ACPI 1.0. 13544 13545The ACPI 2.0 semantics for the Extended IRQ resource descriptor 13546have been implemented. The interrupt polarity and mode are now 13547independently set. 13548 13549Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 13550appearing in Package objects were not properly converted to 13551integers when the internal Package was converted to an external 13552object (via the AcpiEvaluateObject interface.) 13553 13554Fixed a problem with the namespace object deletion mechanism for 13555objects created by control methods. There were two parts to this 13556problem: 1) Objects created during the initialization phase method 13557parse were not being deleted, and 2) The object owner ID mechanism 13558to track objects was broken. 13559 13560Fixed a problem where the use of the ASL Scope operator within a 13561control method would result in an invalid opcode exception. 13562 13563Fixed a problem introduced in the previous label where the buffer 13564length required for the _PRT structure was not being returned 13565correctly. 13566 13567Code and Data Size: Current core subsystem library sizes are shown 13568below. These are the code and data sizes for the acpica.lib 13569produced by the Microsoft Visual C++ 6.0 compiler, and these 13570values do not include any ACPI driver or OSPM code. The debug 13571version of the code includes the debug output trace mechanism and 13572has a larger code and data size. Note that these values will vary 13573depending on the efficiency of the compiler and the compiler 13574options used during generation. 13575 13576 Previous Release (11_20_01) 13577 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 13578 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 13579 13580 Current Release: 13581 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 13582 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 13583 13584 2) Linux: 13585 13586Updated all files to apply cleanly against 2.4.16. 13587 13588Added basic PCI Interrupt Routing Table (PRT) support for IA32 13589(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 13590version supports both static and dyanmic PRT entries, but dynamic 13591entries are treated as if they were static (not yet 13592reconfigurable). Architecture- specific code to use this data is 13593absent on IA32 but should be available shortly. 13594 13595Changed the initialization sequence to start the ACPI interpreter 13596(acpi_init) prior to initialization of the PCI driver (pci_init) 13597in init/main.c. This ordering is required to support PRT and 13598facilitate other (future) enhancement. A side effect is that the 13599ACPI bus driver and certain device drivers can no longer be loaded 13600as modules. 13601 13602Modified the 'make menuconfig' options to allow PCI Interrupt 13603Routing support to be included without the ACPI Bus and other 13604device drivers. 13605 13606 3) ASL Compiler, version X2033: 13607 13608Fixed some issues with the use of the new CopyObject and 13609DataTableRegion operators. Both are fully functional. 13610 13611 ---------------------------------------- 13612Summary of changes for this label: 11_20_01 13613 13614 20 November 2001. Summary of changes for this release. 13615 13616 1) ACPI CA Core Subsystem: 13617 13618Updated Index support to match ACPI 2.0 semantics. Storing a 13619Integer, String, or Buffer to an Index of a Buffer will store only 13620the least-significant byte of the source to the Indexed buffer 13621byte. Multiple writes are not performed. 13622 13623Fixed a problem where the access type used in an AccessAs ASL 13624operator was not recorded correctly into the field object. 13625 13626Fixed a problem where ASL Event objects were created in a 13627signalled state. Events are now created in an unsignalled state. 13628 13629The internal object cache is now purged after table loading and 13630initialization to reduce the use of dynamic kernel memory -- on 13631the assumption that object use is greatest during the parse phase 13632of the entire table (versus the run-time use of individual control 13633methods.) 13634 13635ACPI 2.0 variable-length packages are now fully operational. 13636 13637Code and Data Size: Code and Data optimizations have permitted new 13638feature development with an actual reduction in the library size. 13639Current core subsystem library sizes are shown below. These are 13640the code and data sizes for the acpica.lib produced by the 13641Microsoft Visual C++ 6.0 compiler, and these values do not include 13642any ACPI driver or OSPM code. The debug version of the code 13643includes the debug output trace mechanism and has a larger code 13644and data size. Note that these values will vary depending on the 13645efficiency of the compiler and the compiler options used during 13646generation. 13647 13648 Previous Release (11_09_01): 13649 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 13650 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 13651 13652 Current Release: 13653 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 13654 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 13655 13656 2) Linux: 13657 13658Enhanced the ACPI boot-time initialization code to allow the use 13659of Local APIC tables for processor enumeration on IA-32, and to 13660pave the way for a fully MPS-free boot (on SMP systems) in the 13661near future. This functionality replaces 13662arch/i386/kernel/acpitables.c, which was introduced in an earlier 136632.4.15-preX release. To enable this feature you must add 13664"acpi_boot=on" to the kernel command line -- see the help entry 13665for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 13666the works... 13667 13668Restructured the configuration options to allow boot-time table 13669parsing support without inclusion of the ACPI Interpreter (and 13670other) code. 13671 13672NOTE: This release does not include fixes for the reported events, 13673power-down, and thermal passive cooling issues (coming soon). 13674 13675 3) ASL Compiler: 13676 13677Added additional typechecking for Fields within restricted access 13678Operation Regions. All fields within EC and CMOS regions must be 13679declared with ByteAcc. All fields withing SMBus regions must be 13680declared with the BufferAcc access type. 13681 13682Fixed a problem where the listing file output of control methods 13683no longer interleaved the actual AML code with the ASL source 13684code. 13685 13686 13687 13688 13689---------------------------------------- 13690Summary of changes for this label: 11_09_01 13691 136921) ACPI CA Core Subsystem: 13693 13694Implemented ACPI 2.0-defined support for writes to fields with a 13695Buffer, String, or Integer source operand that is smaller than the 13696target field. In these cases, the source operand is zero-extended 13697to fill the target field. 13698 13699Fixed a problem where a Field starting bit offset (within the 13700parent operation region) was calculated incorrectly if the 13701 13702alignment of the field differed from the access width. This 13703affected CreateWordField, CreateDwordField, CreateQwordField, and 13704possibly other fields that use the "AccessAny" keyword. 13705 13706Fixed a problem introduced in the 11_02_01 release where indirect 13707stores through method arguments did not operate correctly. 13708 137092) Linux: 13710 13711Implemented boot-time ACPI table parsing support 13712(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 13713facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 13714legacy BIOS interfaces (e.g. MPS) for the configuration of system 13715processors, memory, and interrupts during setup_arch(). Note that 13716this patch does not include the required architecture-specific 13717changes required to apply this information -- subsequent patches 13718will be posted for both IA32 and IA64 to achieve this. 13719 13720Added low-level sleep support for IA32 platforms, courtesy of Pat 13721Mochel. This allows IA32 systems to transition to/from various 13722sleeping states (e.g. S1, S3), although the lack of a centralized 13723driver model and power-manageable drivers will prevent its 13724(successful) use on most systems. 13725 13726Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 13727submenu, unified IA32 and IA64 options, added new "Boot using ACPI 13728tables" option, etc. 13729 13730Increased the default timeout for the EC driver from 1ms to 10ms 13731(1000 cycles of 10us) to try to address AE_TIME errors during EC 13732transactions. 13733 13734 ---------------------------------------- 13735Summary of changes for this label: 11_02_01 13736 137371) ACPI CA Core Subsystem: 13738 13739ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 13740(QWordAcc keyword). All ACPI 2.0 64-bit support is now 13741implemented. 13742 13743OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 13744changes to support ACPI 2.0 Qword field access. Read/Write 13745PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 13746accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 13747the value parameter for the address space handler interface is now 13748an ACPI_INTEGER. OSL implementations of these interfaces must now 13749handle the case where the Width parameter is 64. 13750 13751Index Fields: Fixed a problem where unaligned bit assembly and 13752disassembly for IndexFields was not supported correctly. 13753 13754Index and Bank Fields: Nested Index and Bank Fields are now 13755supported. During field access, a check is performed to ensure 13756that the value written to an Index or Bank register is not out of 13757the range of the register. The Index (or Bank) register is 13758written before each access to the field data. Future support will 13759include allowing individual IndexFields to be wider than the 13760DataRegister width. 13761 13762Fields: Fixed a problem where the AML interpreter was incorrectly 13763attempting to write beyond the end of a Field/OpRegion. This was 13764a boundary case that occurred when a DWORD field was written to a 13765BYTE access OpRegion, forcing multiple writes and causing the 13766interpreter to write one datum too many. 13767 13768Fields: Fixed a problem with Field/OpRegion access where the 13769starting bit address of a field was incorrectly calculated if the 13770current access type was wider than a byte (WordAcc, DwordAcc, or 13771QwordAcc). 13772 13773Fields: Fixed a problem where forward references to individual 13774FieldUnits (individual Field names within a Field definition) were 13775not resolved during the AML table load. 13776 13777Fields: Fixed a problem where forward references from a Field 13778definition to the parent Operation Region definition were not 13779resolved during the AML table load. 13780 13781Fields: Duplicate FieldUnit names within a scope are now detected 13782during AML table load. 13783 13784Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 13785returned an incorrect name for the root node. 13786 13787Code and Data Size: Code and Data optimizations have permitted new 13788feature development with an actual reduction in the library size. 13789Current core subsystem library sizes are shown below. These are 13790the code and data sizes for the acpica.lib produced by the 13791Microsoft Visual C++ 6.0 compiler, and these values do not include 13792any ACPI driver or OSPM code. The debug version of the code 13793includes the debug output trace mechanism and has a larger code 13794and data size. Note that these values will vary depending on the 13795efficiency of the compiler and the compiler options used during 13796generation. 13797 13798 Previous Release (10_18_01): 13799 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 13800 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 13801 13802 Current Release: 13803 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 13804 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 13805 13806 2) Linux: 13807 13808Improved /proc processor output (Pavel Machek) Re-added 13809MODULE_LICENSE("GPL") to all modules. 13810 13811 3) ASL Compiler version X2030: 13812 13813Duplicate FieldUnit names within a scope are now detected and 13814flagged as errors. 13815 13816 4) Documentation: 13817 13818Programmer Reference updated to reflect OSL and address space 13819handler interface changes described above. 13820 13821---------------------------------------- 13822Summary of changes for this label: 10_18_01 13823 13824ACPI CA Core Subsystem: 13825 13826Fixed a problem with the internal object reference count mechanism 13827that occasionally caused premature object deletion. This resolves 13828all of the outstanding problem reports where an object is deleted 13829in the middle of an interpreter evaluation. Although this problem 13830only showed up in rather obscure cases, the solution to the 13831problem involved an adjustment of all reference counts involving 13832objects attached to namespace nodes. 13833 13834Fixed a problem with Field support in the interpreter where 13835writing to an aligned field whose length is an exact multiple (2 13836or greater) of the field access granularity would cause an attempt 13837to write beyond the end of the field. 13838 13839The top level AML opcode execution functions within the 13840interpreter have been renamed with a more meaningful and 13841consistent naming convention. The modules exmonad.c and 13842exdyadic.c were eliminated. New modules are exoparg1.c, 13843exoparg2.c, exoparg3.c, and exoparg6.c. 13844 13845Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 13846 13847Fixed a problem where the AML debugger was causing some internal 13848objects to not be deleted during subsystem termination. 13849 13850Fixed a problem with the external AcpiEvaluateObject interface 13851where the subsystem would fault if the named object to be 13852evaluated refered to a constant such as Zero, Ones, etc. 13853 13854Fixed a problem with IndexFields and BankFields where the 13855subsystem would fault if the index, data, or bank registers were 13856not defined in the same scope as the field itself. 13857 13858Added printf format string checking for compilers that support 13859this feature. Corrected more than 50 instances of issues with 13860format specifiers within invocations of ACPI_DEBUG_PRINT 13861throughout the core subsystem code. 13862 13863The ASL "Revision" operator now returns the ACPI support level 13864implemented in the core - the value "2" since the ACPI 2.0 support 13865is more than 50% implemented. 13866 13867Enhanced the output of the AML debugger "dump namespace" command 13868to output in a more human-readable form. 13869 13870Current core subsystem library code sizes are shown below. These 13871 13872are the code and data sizes for the acpica.lib produced by the 13873Microsoft Visual C++ 6.0 compiler, and these values do not include 13874any ACPI driver or OSPM code. The debug version of the code 13875includes the full debug trace mechanism -- leading to a much 13876 13877larger code and data size. Note that these values will vary 13878depending on the efficiency of the compiler and the compiler 13879options used during generation. 13880 13881 Previous Label (09_20_01): 13882 Non-Debug Version: 65K Code, 5K Data, 70K Total 13883 Debug Version: 138K Code, 58K Data, 196K Total 13884 13885 This Label: 13886 13887 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 13888 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 13889 13890Linux: 13891 13892Implemented a "Bad BIOS Blacklist" to track machines that have 13893known ASL/AML problems. 13894 13895Enhanced the /proc interface for the thermal zone driver and added 13896support for _HOT (the critical suspend trip point). The 'info' 13897file now includes threshold/policy information, and allows setting 13898of _SCP (cooling preference) and _TZP (polling frequency) values 13899to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 13900frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 13901preference to the passive/quiet mode (if supported by the ASL). 13902 13903Implemented a workaround for a gcc bug that resuted in an OOPs 13904when loading the control method battery driver. 13905 13906 ---------------------------------------- 13907Summary of changes for this label: 09_20_01 13908 13909 ACPI CA Core Subsystem: 13910 13911The AcpiEnableEvent and AcpiDisableEvent interfaces have been 13912modified to allow individual GPE levels to be flagged as wake- 13913enabled (i.e., these GPEs are to remain enabled when the platform 13914sleeps.) 13915 13916The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 13917support wake-enabled GPEs. This means that upon entering the 13918sleep state, all GPEs that are not wake-enabled are disabled. 13919When leaving the sleep state, these GPEs are reenabled. 13920 13921A local double-precision divide/modulo module has been added to 13922enhance portability to OS kernels where a 64-bit math library is 13923not available. The new module is "utmath.c". 13924 13925Several optimizations have been made to reduce the use of CPU 13926stack. Originally over 2K, the maximum stack usage is now below 139272K at 1860 bytes (1.82k) 13928 13929Fixed a problem with the AcpiGetFirmwareTable interface where the 13930root table pointer was not mapped into a logical address properly. 13931 13932Fixed a problem where a NULL pointer was being dereferenced in the 13933interpreter code for the ASL Notify operator. 13934 13935Fixed a problem where the use of the ASL Revision operator 13936returned an error. This operator now returns the current version 13937of the ACPI CA core subsystem. 13938 13939Fixed a problem where objects passed as control method parameters 13940to AcpiEvaluateObject were always deleted at method termination. 13941However, these objects may end up being stored into the namespace 13942by the called method. The object reference count mechanism was 13943applied to these objects instead of a force delete. 13944 13945Fixed a problem where static strings or buffers (contained in the 13946AML code) that are declared as package elements within the ASL 13947code could cause a fault because the interpreter would attempt to 13948delete them. These objects are now marked with the "static 13949object" flag to prevent any attempt to delete them. 13950 13951Implemented an interpreter optimization to use operands directly 13952from the state object instead of extracting the operands to local 13953variables. This reduces stack use and code size, and improves 13954performance. 13955 13956The module exxface.c was eliminated as it was an unnecessary extra 13957layer of code. 13958 13959Current core subsystem library code sizes are shown below. These 13960are the code and data sizes for the acpica.lib produced by the 13961Microsoft Visual C++ 6.0 compiler, and these values do not include 13962any ACPI driver or OSPM code. The debug version of the code 13963includes the full debug trace mechanism -- leading to a much 13964larger code and data size. Note that these values will vary 13965depending on the efficiency of the compiler and the compiler 13966options used during generation. 13967 13968 Non-Debug Version: 65K Code, 5K Data, 70K Total 13969(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 13970Total (Previously 195K) 13971 13972Linux: 13973 13974Support for ACPI 2.0 64-bit integers has been added. All ACPI 13975Integer objects are now 64 bits wide 13976 13977All Acpi data types and structures are now in lower case. Only 13978Acpi macros are upper case for differentiation. 13979 13980 Documentation: 13981 13982Changes to the external interfaces as described above. 13983 13984 ---------------------------------------- 13985Summary of changes for this label: 08_31_01 13986 13987 ACPI CA Core Subsystem: 13988 13989A bug with interpreter implementation of the ASL Divide operator 13990was found and fixed. The implicit function return value (not the 13991explicit store operands) was returning the remainder instead of 13992the quotient. This was a longstanding bug and it fixes several 13993known outstanding issues on various platforms. 13994 13995The ACPI_DEBUG_PRINT and function trace entry/exit macros have 13996been further optimized for size. There are 700 invocations of the 13997DEBUG_PRINT macro alone, so each optimization reduces the size of 13998the debug version of the subsystem significantly. 13999 14000A stack trace mechanism has been implemented. The maximum stack 14001usage is about 2K on 32-bit platforms. The debugger command "stat 14002stack" will display the current maximum stack usage. 14003 14004All public symbols and global variables within the subsystem are 14005now prefixed with the string "Acpi". This keeps all of the 14006symbols grouped together in a kernel map, and avoids conflicts 14007with other kernel subsystems. 14008 14009Most of the internal fixed lookup tables have been moved into the 14010code segment via the const operator. 14011 14012Several enhancements have been made to the interpreter to both 14013reduce the code size and improve performance. 14014 14015Current core subsystem library code sizes are shown below. These 14016are the code and data sizes for the acpica.lib produced by the 14017Microsoft Visual C++ 6.0 compiler, and these values do not include 14018any ACPI driver or OSPM code. The debug version of the code 14019includes the full debug trace mechanism which contains over 700 14020invocations of the DEBUG_PRINT macro, 500 function entry macro 14021invocations, and over 900 function exit macro invocations -- 14022leading to a much larger code and data size. Note that these 14023values will vary depending on the efficiency of the compiler and 14024the compiler options used during generation. 14025 14026 Non-Debug Version: 64K Code, 5K Data, 69K Total 14027Debug Version: 137K Code, 58K Data, 195K Total 14028 14029 Linux: 14030 14031Implemented wbinvd() macro, pending a kernel-wide definition. 14032 14033Fixed /proc/acpi/event to handle poll() and short reads. 14034 14035 ASL Compiler, version X2026: 14036 14037Fixed a problem introduced in the previous label where the AML 14038 14039code emitted for package objects produced packages with zero 14040length. 14041 14042 ---------------------------------------- 14043Summary of changes for this label: 08_16_01 14044 14045ACPI CA Core Subsystem: 14046 14047The following ACPI 2.0 ASL operators have been implemented in the 14048AML interpreter (These are already supported by the Intel ASL 14049compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 14050ToBuffer. Support for 64-bit AML constants is implemented in the 14051AML parser, debugger, and disassembler. 14052 14053The internal memory tracking mechanism (leak detection code) has 14054been upgraded to reduce the memory overhead (a separate tracking 14055block is no longer allocated for each memory allocation), and now 14056supports all of the internal object caches. 14057 14058The data structures and code for the internal object caches have 14059been coelesced and optimized so that there is a single cache and 14060memory list data structure and a single group of functions that 14061implement generic cache management. This has reduced the code 14062size in both the debug and release versions of the subsystem. 14063 14064The DEBUG_PRINT macro(s) have been optimized for size and replaced 14065by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 14066different, because it generates a single call to an internal 14067function. This results in a savings of about 90 bytes per 14068invocation, resulting in an overall code and data savings of about 1406916% in the debug version of the subsystem. 14070 14071 Linux: 14072 14073Fixed C3 disk corruption problems and re-enabled C3 on supporting 14074machines. 14075 14076Integrated low-level sleep code by Patrick Mochel. 14077 14078Further tweaked source code Linuxization. 14079 14080Other minor fixes. 14081 14082 ASL Compiler: 14083 14084Support for ACPI 2.0 variable length packages is fixed/completed. 14085 14086Fixed a problem where the optional length parameter for the ACPI 140872.0 ToString operator. 14088 14089Fixed multiple extraneous error messages when a syntax error is 14090detected within the declaration line of a control method. 14091 14092 ---------------------------------------- 14093Summary of changes for this label: 07_17_01 14094 14095ACPI CA Core Subsystem: 14096 14097Added a new interface named AcpiGetFirmwareTable to obtain any 14098ACPI table via the ACPI signature. The interface can be called at 14099any time during kernel initialization, even before the kernel 14100virtual memory manager is initialized and paging is enabled. This 14101allows kernel subsystems to obtain ACPI tables very early, even 14102before the ACPI CA subsystem is initialized. 14103 14104Fixed a problem where Fields defined with the AnyAcc attribute 14105could be resolved to the incorrect address under the following 14106conditions: 1) the field width is larger than 8 bits and 2) the 14107parent operation region is not defined on a DWORD boundary. 14108 14109Fixed a problem where the interpreter is not being locked during 14110namespace initialization (during execution of the _INI control 14111methods), causing an error when an attempt is made to release it 14112later. 14113 14114ACPI 2.0 support in the AML Interpreter has begun and will be 14115ongoing throughout the rest of this year. In this label, The Mod 14116operator is implemented. 14117 14118Added a new data type to contain full PCI addresses named 14119ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 14120and Function values. 14121 14122 Linux: 14123 14124Enhanced the Linux version of the source code to change most 14125capitalized ACPI type names to lowercase. For example, all 14126instances of ACPI_STATUS are changed to acpi_status. This will 14127result in a large diff, but the change is strictly cosmetic and 14128aligns the CA code closer to the Linux coding standard. 14129 14130OSL Interfaces: 14131 14132The interfaces to the PCI configuration space have been changed to 14133add the PCI Segment number and to split the single 32-bit combined 14134DeviceFunction field into two 16-bit fields. This was 14135accomplished by moving the four values that define an address in 14136PCI configuration space (segment, bus, device, and function) to 14137the new ACPI_PCI_ID structure. 14138 14139The changes to the PCI configuration space interfaces led to a 14140reexamination of the complete set of address space access 14141interfaces for PCI, I/O, and Memory. The previously existing 18 14142interfaces have proven difficult to maintain (any small change 14143must be propagated across at least 6 interfaces) and do not easily 14144allow for future expansion to 64 bits if necessary. Also, on some 14145systems, it would not be appropriate to demultiplex the access 14146width (8, 16, 32,or 64) before calling the OSL if the 14147corresponding native OS interfaces contain a similar access width 14148parameter. For these reasons, the 18 address space interfaces 14149have been replaced by these 6 new ones: 14150 14151AcpiOsReadPciConfiguration 14152AcpiOsWritePciConfiguration 14153AcpiOsReadMemory 14154AcpiOsWriteMemory 14155AcpiOsReadPort 14156AcpiOsWritePort 14157 14158Added a new interface named AcpiOsGetRootPointer to allow the OSL 14159to perform the platform and/or OS-specific actions necessary to 14160obtain the ACPI RSDP table pointer. On IA-32 platforms, this 14161interface will simply call down to the CA core to perform the low- 14162memory search for the table. On IA-64, the RSDP is obtained from 14163EFI. Migrating this interface to the OSL allows the CA core to 14164 14165remain OS and platform independent. 14166 14167Added a new interface named AcpiOsSignal to provide a generic 14168"function code and pointer" interface for various miscellaneous 14169signals and notifications that must be made to the host OS. The 14170first such signals are intended to support the ASL Fatal and 14171Breakpoint operators. In the latter case, the AcpiOsBreakpoint 14172interface has been obsoleted. 14173 14174The definition of the AcpiFormatException interface has been 14175changed to simplify its use. The caller no longer must supply a 14176buffer to the call; A pointer to a const string is now returned 14177directly. This allows the call to be easily used in printf 14178statements, etc. since the caller does not have to manage a local 14179buffer. 14180 14181 14182 ASL Compiler, Version X2025: 14183 14184The ACPI 2.0 Switch/Case/Default operators have been implemented 14185and are fully functional. They will work with all ACPI 1.0 14186interpreters, since the operators are simply translated to If/Else 14187pairs. 14188 14189The ACPI 2.0 ElseIf operator is implemented and will also work 14190with 1.0 interpreters, for the same reason. 14191 14192Implemented support for ACPI 2.0 variable-length packages. These 14193packages have a separate opcode, and their size is determined by 14194the interpreter at run-time. 14195 14196Documentation The ACPI CA Programmer Reference has been updated to 14197reflect the new interfaces and changes to existing interfaces. 14198 14199 ------------------------------------------ 14200Summary of changes for this label: 06_15_01 14201 14202 ACPI CA Core Subsystem: 14203 14204Fixed a problem where a DWORD-accessed field within a Buffer 14205object would get its byte address inadvertently rounded down to 14206the nearest DWORD. Buffers are always Byte-accessible. 14207 14208 ASL Compiler, version X2024: 14209 14210Fixed a problem where the Switch() operator would either fault or 14211hang the compiler. Note however, that the AML code for this ACPI 142122.0 operator is not yet implemented. 14213 14214Compiler uses the new AcpiOsGetTimer interface to obtain compile 14215timings. 14216 14217Implementation of the CreateField operator automatically converts 14218a reference to a named field within a resource descriptor from a 14219byte offset to a bit offset if required. 14220 14221Added some missing named fields from the resource descriptor 14222support. These are the names that are automatically created by the 14223compiler to reference fields within a descriptor. They are only 14224valid at compile time and are not passed through to the AML 14225interpreter. 14226 14227Resource descriptor named fields are now typed as Integers and 14228subject to compile-time typechecking when used in expressions. 14229 14230 ------------------------------------------ 14231Summary of changes for this label: 05_18_01 14232 14233 ACPI CA Core Subsystem: 14234 14235Fixed a couple of problems in the Field support code where bits 14236from adjacent fields could be returned along with the proper field 14237bits. Restructured the field support code to improve performance, 14238readability and maintainability. 14239 14240New DEBUG_PRINTP macro automatically inserts the procedure name 14241into the output, saving hundreds of copies of procedure name 14242strings within the source, shrinking the memory footprint of the 14243debug version of the core subsystem. 14244 14245 Source Code Structure: 14246 14247The source code directory tree was restructured to reflect the 14248current organization of the component architecture. Some files 14249and directories have been moved and/or renamed. 14250 14251 Linux: 14252 14253Fixed leaking kacpidpc processes. 14254 14255Fixed queueing event data even when /proc/acpi/event is not 14256opened. 14257 14258 ASL Compiler, version X2020: 14259 14260Memory allocation performance enhancement - over 24X compile time 14261improvement on large ASL files. Parse nodes and namestring 14262buffers are now allocated from a large internal compiler buffer. 14263 14264The temporary .SRC file is deleted unless the "-s" option is 14265specified 14266 14267The "-d" debug output option now sends all output to the .DBG file 14268instead of the console. 14269 14270"External" second parameter is now optional 14271 14272"ElseIf" syntax now properly allows the predicate 14273 14274Last operand to "Load" now recognized as a Target operand 14275 14276Debug object can now be used anywhere as a normal object. 14277 14278ResourceTemplate now returns an object of type BUFFER 14279 14280EISAID now returns an object of type INTEGER 14281 14282"Index" now works with a STRING operand 14283 14284"LoadTable" now accepts optional parameters 14285 14286"ToString" length parameter is now optional 14287 14288"Interrupt (ResourceType," parse error fixed. 14289 14290"Register" with a user-defined region space parse error fixed 14291 14292Escaped backslash at the end of a string ("\\") scan/parse error 14293fixed 14294 14295"Revision" is now an object of type INTEGER. 14296 14297 14298 14299------------------------------------------ 14300Summary of changes for this label: 05_02_01 14301 14302Linux: 14303 14304/proc/acpi/event now blocks properly. 14305 14306Removed /proc/sys/acpi. You can still dump your DSDT from 14307/proc/acpi/dsdt. 14308 14309 ACPI CA Core Subsystem: 14310 14311Fixed a problem introduced in the previous label where some of the 14312"small" resource descriptor types were not recognized. 14313 14314Improved error messages for the case where an ASL Field is outside 14315the range of the parent operation region. 14316 14317 ASL Compiler, version X2018: 14318 14319 14320Added error detection for ASL Fields that extend beyond the length 14321of the parent operation region (only if the length of the region 14322is known at compile time.) This includes fields that have a 14323minimum access width that is smaller than the parent region, and 14324individual field units that are partially or entirely beyond the 14325extent of the parent. 14326 14327 14328 14329------------------------------------------ 14330Summary of changes for this label: 04_27_01 14331 14332 ACPI CA Core Subsystem: 14333 14334Fixed a problem where the namespace mutex could be released at the 14335wrong time during execution of AcpiRemoveAddressSpaceHandler. 14336 14337Added optional thread ID output for debug traces, to simplify 14338debugging of multiple threads. Added context switch notification 14339when the debug code realizes that a different thread is now 14340executing ACPI code. 14341 14342Some additional external data types have been prefixed with the 14343string "ACPI_" for consistency. This may effect existing code. 14344The data types affected are the external callback typedefs - e.g., 14345 14346WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 14347 14348 Linux: 14349 14350Fixed an issue with the OSL semaphore implementation where a 14351thread was waking up with an error from receiving a SIGCHLD 14352signal. 14353 14354Linux version of ACPI CA now uses the system C library for string 14355manipulation routines instead of a local implementation. 14356 14357Cleaned up comments and removed TBDs. 14358 14359 ASL Compiler, version X2017: 14360 14361Enhanced error detection and reporting for all file I/O 14362operations. 14363 14364 Documentation: 14365 14366Programmer Reference updated to version 1.06. 14367 14368 14369 14370------------------------------------------ 14371Summary of changes for this label: 04_13_01 14372 14373 ACPI CA Core Subsystem: 14374 14375Restructured support for BufferFields and RegionFields. 14376BankFields support is now fully operational. All known 32-bit 14377limitations on field sizes have been removed. Both BufferFields 14378and (Operation) RegionFields are now supported by the same field 14379management code. 14380 14381Resource support now supports QWORD address and IO resources. The 1438216/32/64 bit address structures and the Extended IRQ structure 14383have been changed to properly handle Source Resource strings. 14384 14385A ThreadId of -1 is now used to indicate a "mutex not acquired" 14386condition internally and must never be returned by AcpiOsThreadId. 14387This reserved value was changed from 0 since Unix systems allow a 14388thread ID of 0. 14389 14390Linux: 14391 14392Driver code reorganized to enhance portability 14393 14394Added a kernel configuration option to control ACPI_DEBUG 14395 14396Fixed the EC driver to honor _GLK. 14397 14398ASL Compiler, version X2016: 14399 14400Fixed support for the "FixedHw" keyword. Previously, the FixedHw 14401address space was set to 0, not 0x7f as it should be. 14402 14403 ------------------------------------------ 14404Summary of changes for this label: 03_13_01 14405 14406 ACPI CA Core Subsystem: 14407 14408During ACPI initialization, the _SB_._INI method is now run if 14409present. 14410 14411Notify handler fix - notifies are deferred until the parent method 14412completes execution. This fixes the "mutex already acquired" 14413issue seen occasionally. 14414 14415Part of the "implicit conversion" rules in ACPI 2.0 have been 14416found to cause compatibility problems with existing ASL/AML. The 14417convert "result-to-target-type" implementation has been removed 14418for stores to method Args and Locals. Source operand conversion 14419is still fully implemented. Possible changes to ACPI 2.0 14420specification pending. 14421 14422Fix to AcpiRsCalculatePciRoutingTableLength to return correct 14423length. 14424 14425Fix for compiler warnings for 64-bit compiles. 14426 14427 Linux: 14428 14429/proc output aligned for easier parsing. 14430 14431Release-version compile problem fixed. 14432 14433New kernel configuration options documented in Configure.help. 14434 14435IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 14436context" message. 14437 14438 OSPM: 14439 14440Power resource driver integrated with bus manager. 14441 14442Fixed kernel fault during active cooling for thermal zones. 14443 14444Source Code: 14445 14446The source code tree has been restructured. 14447 14448 14449 14450------------------------------------------ 14451Summary of changes for this label: 03_02_01 14452 14453 Linux OS Services Layer (OSL): 14454 14455Major revision of all Linux-specific code. 14456 14457Modularized all ACPI-specific drivers. 14458 14459Added new thermal zone and power resource drivers. 14460 14461Revamped /proc interface (new functionality is under /proc/acpi). 14462 14463New kernel configuration options. 14464 14465 Linux known issues: 14466 14467New kernel configuration options not documented in Configure.help 14468yet. 14469 14470 14471Module dependencies not currently implemented. If used, they 14472should be loaded in this order: busmgr, power, ec, system, 14473processor, battery, ac_adapter, button, thermal. 14474 14475Modules will not load if CONFIG_MODVERSION is set. 14476 14477IBM 600E - entering S5 may reboot instead of shutting down. 14478 14479IBM 600E - Sleep button may generate "Invalid <NULL> context" 14480message. 14481 14482Some systems may fail with "execution mutex already acquired" 14483message. 14484 14485 ACPI CA Core Subsystem: 14486 14487Added a new OSL Interface, AcpiOsGetThreadId. This was required 14488for the deadlock detection code. Defined to return a non-zero, 32- 14489bit thread ID for the currently executing thread. May be a non- 14490zero constant integer on single-thread systems. 14491 14492Implemented deadlock detection for internal subsystem mutexes. We 14493may add conditional compilation for this code (debug only) later. 14494 14495ASL/AML Mutex object semantics are now fully supported. This 14496includes multiple acquires/releases by owner and support for the 14497 14498Mutex SyncLevel parameter. 14499 14500A new "Force Release" mechanism automatically frees all ASL 14501Mutexes that have been acquired but not released when a thread 14502exits the interpreter. This forces conformance to the ACPI spec 14503("All mutexes must be released when an invocation exits") and 14504prevents deadlocked ASL threads. This mechanism can be expanded 14505(later) to monitor other resource acquisitions if OEM ASL code 14506continues to misbehave (which it will). 14507 14508Several new ACPI exception codes have been added for the Mutex 14509support. 14510 14511Recursive method calls are now allowed and supported (the ACPI 14512spec does in fact allow recursive method calls.) The number of 14513recursive calls is subject to the restrictions imposed by the 14514SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 14515parameter. 14516 14517Implemented support for the SyncLevel parameter for control 14518methods (ACPI 2.0 feature) 14519 14520Fixed a deadlock problem when multiple threads attempted to use 14521the interpreter. 14522 14523Fixed a problem where the string length of a String package 14524element was not always set in a package returned from 14525AcpiEvaluateObject. 14526 14527Fixed a problem where the length of a String package element was 14528not always included in the length of the overall package returned 14529from AcpiEvaluateObject. 14530 14531Added external interfaces (Acpi*) to the ACPI debug memory 14532manager. This manager keeps a list of all outstanding 14533allocations, and can therefore detect memory leaks and attempts to 14534free memory blocks more than once. Useful for code such as the 14535power manager, etc. May not be appropriate for device drivers. 14536Performance with the debug code enabled is slow. 14537 14538The ACPI Global Lock is now an optional hardware element. 14539 14540 ASL Compiler Version X2015: 14541 14542Integrated changes to allow the compiler to be generated on 14543multiple platforms. 14544 14545Linux makefile added to generate the compiler on Linux 14546 14547 Source Code: 14548 14549All platform-specific headers have been moved to their own 14550subdirectory, Include/Platform. 14551 14552New source file added, Interpreter/ammutex.c 14553 14554New header file, Include/acstruct.h 14555 14556 Documentation: 14557 14558The programmer reference has been updated for the following new 14559interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 14560 14561 ------------------------------------------ 14562Summary of changes for this label: 02_08_01 14563 14564Core ACPI CA Subsystem: Fixed a problem where an error was 14565incorrectly returned if the return resource buffer was larger than 14566the actual data (in the resource interfaces). 14567 14568References to named objects within packages are resolved to the 14569 14570full pathname string before packages are returned directly (via 14571the AcpiEvaluateObject interface) or indirectly via the resource 14572interfaces. 14573 14574Linux OS Services Layer (OSL): 14575 14576Improved /proc battery interface. 14577 14578 14579Added C-state debugging output and other miscellaneous fixes. 14580 14581ASL Compiler Version X2014: 14582 14583All defined method arguments can now be used as local variables, 14584including the ones that are not actually passed in as parameters. 14585The compiler tracks initialization of the arguments and issues an 14586exception if they are used without prior assignment (just like 14587locals). 14588 14589The -o option now specifies a filename prefix that is used for all 14590output files, including the AML output file. Otherwise, the 14591default behavior is as follows: 1) the AML goes to the file 14592specified in the DSDT. 2) all other output files use the input 14593source filename as the base. 14594 14595 ------------------------------------------ 14596Summary of changes for this label: 01_25_01 14597 14598Core ACPI CA Subsystem: Restructured the implementation of object 14599store support within the interpreter. This includes support for 14600the Store operator as well as any ASL operators that include a 14601target operand. 14602 14603Partially implemented support for Implicit Result-to-Target 14604conversion. This is when a result object is converted on the fly 14605to the type of an existing target object. Completion of this 14606support is pending further analysis of the ACPI specification 14607concerning this matter. 14608 14609CPU-specific code has been removed from the subsystem (hardware 14610directory). 14611 14612New Power Management Timer functions added 14613 14614Linux OS Services Layer (OSL): Moved system state transition code 14615to the core, fixed it, and modified Linux OSL accordingly. 14616 14617Fixed C2 and C3 latency calculations. 14618 14619 14620We no longer use the compilation date for the version message on 14621initialization, but retrieve the version from AcpiGetSystemInfo(). 14622 14623Incorporated for fix Sony VAIO machines. 14624 14625Documentation: The Programmer Reference has been updated and 14626reformatted. 14627 14628 14629ASL Compiler: Version X2013: Fixed a problem where the line 14630numbering and error reporting could get out of sync in the 14631presence of multiple include files. 14632 14633 ------------------------------------------ 14634Summary of changes for this label: 01_15_01 14635 14636Core ACPI CA Subsystem: 14637 14638Implemented support for type conversions in the execution of the 14639ASL Concatenate operator (The second operand is converted to 14640match the type of the first operand before concatenation.) 14641 14642Support for implicit source operand conversion is partially 14643implemented. The ASL source operand types Integer, Buffer, and 14644String are freely interchangeable for most ASL operators and are 14645converted by the interpreter on the fly as required. Implicit 14646Target operand conversion (where the result is converted to the 14647target type before storing) is not yet implemented. 14648 14649Support for 32-bit and 64-bit BCD integers is implemented. 14650 14651Problem fixed where a field read on an aligned field could cause a 14652read past the end of the field. 14653 14654New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 14655does not return a value, but the caller expects one. (The ASL 14656compiler flags this as a warning.) 14657 14658ASL Compiler: 14659 14660Version X2011: 146611. Static typechecking of all operands is implemented. This 14662prevents the use of invalid objects (such as using a Package where 14663an Integer is required) at compile time instead of at interpreter 14664run-time. 146652. The ASL source line is printed with ALL errors and warnings. 146663. Bug fix for source EOF without final linefeed. 146674. Debug option is split into a parse trace and a namespace trace. 146685. Namespace output option (-n) includes initial values for 14669integers and strings. 146706. Parse-only option added for quick syntax checking. 146717. Compiler checks for duplicate ACPI name declarations 14672 14673Version X2012: 146741. Relaxed typechecking to allow interchangeability between 14675strings, integers, and buffers. These types are now converted by 14676the interpreter at runtime. 146772. Compiler reports time taken by each internal subsystem in the 14678debug output file. 14679 14680 14681 ------------------------------------------ 14682Summary of changes for this label: 12_14_00 14683 14684ASL Compiler: 14685 14686This is the first official release of the compiler. Since the 14687compiler requires elements of the Core Subsystem, this label 14688synchronizes everything. 14689 14690------------------------------------------ 14691Summary of changes for this label: 12_08_00 14692 14693 14694Fixed a problem where named references within the ASL definition 14695of both OperationRegions and CreateXXXFields did not work 14696properly. The symptom was an AE_AML_OPERAND_TYPE during 14697initialization of the region/field. This is similar (but not 14698related internally) to the problem that was fixed in the last 14699label. 14700 14701Implemented both 32-bit and 64-bit support for the BCD ASL 14702functions ToBCD and FromBCD. 14703 14704Updated all legal headers to include "2000" in the copyright 14705years. 14706 14707 ------------------------------------------ 14708Summary of changes for this label: 12_01_00 14709 14710Fixed a problem where method invocations within the ASL definition 14711of both OperationRegions and CreateXXXFields did not work 14712properly. The symptom was an AE_AML_OPERAND_TYPE during 14713initialization of the region/field: 14714 14715 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 14716[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 14717(0x3005) 14718 14719Fixed a problem where operators with more than one nested 14720subexpression would fail. The symptoms were varied, by mostly 14721AE_AML_OPERAND_TYPE errors. This was actually a rather serious 14722problem that has gone unnoticed until now. 14723 14724 Subtract (Add (1,2), Multiply (3,4)) 14725 14726Fixed a problem where AcpiGetHandle didn't quite get fixed in the 14727previous build (The prefix part of a relative path was handled 14728incorrectly). 14729 14730Fixed a problem where Operation Region initialization failed if 14731the operation region name was a "namepath" instead of a simple 14732"nameseg". Symptom was an AE_NO_OPERAND error. 14733 14734Fixed a problem where an assignment to a local variable via the 14735indirect RefOf mechanism only worked for the first such 14736assignment. Subsequent assignments were ignored. 14737 14738 ------------------------------------------ 14739Summary of changes for this label: 11_15_00 14740 14741ACPI 2.0 table support with backwards support for ACPI 1.0 and the 147420.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 14743the AML interpreter does NOT have support for the new 2.0 ASL 14744grammar terms at this time. 14745 14746All ACPI hardware access is via the GAS structures in the ACPI 2.0 14747FADT. 14748 14749All physical memory addresses across all platforms are now 64 bits 14750wide. Logical address width remains dependent on the platform 14751(i.e., "void *"). 14752 14753AcpiOsMapMemory interface changed to a 64-bit physical address. 14754 14755The AML interpreter integer size is now 64 bits, as per the ACPI 147562.0 specification. 14757 14758For backwards compatibility with ACPI 1.0, ACPI tables with a 14759revision number less than 2 use 32-bit integers only. 14760 14761Fixed a problem where the evaluation of OpRegion operands did not 14762always resolve them to numbers properly. 14763 14764------------------------------------------ 14765Summary of changes for this label: 10_20_00 14766 14767Fix for CBN_._STA issue. This fix will allow correct access to 14768CBN_ OpRegions when the _STA returns 0x8. 14769 14770Support to convert ACPI constants (Ones, Zeros, One) to actual 14771values before a package object is returned 14772 14773Fix for method call as predicate to if/while construct causing 14774incorrect if/while behavior 14775 14776Fix for Else block package lengths sometimes calculated wrong (if 14777block > 63 bytes) 14778 14779Fix for Processor object length field, was always zero 14780 14781Table load abort if FACP sanity check fails 14782 14783Fix for problem with Scope(name) if name already exists 14784 14785Warning emitted if a named object referenced cannot be found 14786(resolved) during method execution. 14787 14788 14789 14790 14791 14792------------------------------------------ 14793Summary of changes for this label: 9_29_00 14794 14795New table initialization interfaces: AcpiInitializeSubsystem no 14796longer has any parameters AcpiFindRootPointer - Find the RSDP (if 14797necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 14798>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 14799AcpiLoadTables 14800 14801Note: These interface changes require changes to all existing OSDs 14802 14803The PCI_Config default address space handler is always installed 14804at the root namespace object. 14805 14806------------------------------------------- 14807Summary of changes for this label: 09_15_00 14808 14809The new initialization architecture is implemented. New 14810interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 14811AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 14812 14813(Namespace is automatically loaded when a table is loaded) 14814 14815The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1481652 bytes to 32 bytes. There is usually one of these for every 14817namespace object, so the memory savings is significant. 14818 14819Implemented just-in-time evaluation of the CreateField operators. 14820 14821Bug fixes for IA-64 support have been integrated. 14822 14823Additional code review comments have been implemented 14824 14825The so-called "third pass parse" has been replaced by a final walk 14826through the namespace to initialize all operation regions (address 14827spaces) and fields that have not yet been initialized during the 14828execution of the various _INI and REG methods. 14829 14830New file - namespace/nsinit.c 14831 14832------------------------------------------- 14833Summary of changes for this label: 09_01_00 14834 14835Namespace manager data structures have been reworked to change the 14836primary object from a table to a single object. This has 14837resulted in dynamic memory savings of 3X within the namespace and 148382X overall in the ACPI CA subsystem. 14839 14840Fixed problem where the call to AcpiEvFindPciRootBuses was 14841inadvertently left commented out. 14842 14843Reduced the warning count when generating the source with the GCC 14844compiler. 14845 14846Revision numbers added to each module header showing the 14847SourceSafe version of the file. Please refer to this version 14848number when giving us feedback or comments on individual modules. 14849 14850The main object types within the subsystem have been renamed to 14851clarify their purpose: 14852 14853ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 14854ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 14855ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 14856 14857NOTE: no changes to the initialization sequence are included in 14858this label. 14859 14860------------------------------------------- 14861Summary of changes for this label: 08_23_00 14862 14863Fixed problem where TerminateControlMethod was being called 14864multiple times per method 14865 14866Fixed debugger problem where single stepping caused a semaphore to 14867be oversignalled 14868 14869Improved performance through additional parse object caching - 14870added ACPI_EXTENDED_OP type 14871 14872------------------------------------------- 14873Summary of changes for this label: 08_10_00 14874 14875Parser/Interpreter integration: Eliminated the creation of 14876complete parse trees for ACPI tables and control methods. 14877Instead, parse subtrees are created and then deleted as soon as 14878they are processed (Either entered into the namespace or executed 14879by the interpreter). This reduces the use of dynamic kernel 14880memory significantly. (about 10X) 14881 14882Exception codes broken into classes and renumbered. Be sure to 14883recompile all code that includes acexcep.h. Hopefully we won't 14884have to renumber the codes again now that they are split into 14885classes (environment, programmer, AML code, ACPI table, and 14886internal). 14887 14888Fixed some additional alignment issues in the Resource Manager 14889subcomponent 14890 14891Implemented semaphore tracking in the AcpiExec utility, and fixed 14892several places where mutexes/semaphores were being unlocked 14893without a corresponding lock operation. There are no known 14894semaphore or mutex "leaks" at this time. 14895 14896Fixed the case where an ASL Return operator is used to return an 14897unnamed package. 14898 14899------------------------------------------- 14900Summary of changes for this label: 07_28_00 14901 14902Fixed a problem with the way addresses were calculated in 14903AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 14904manifested itself when a Field was created with WordAccess or 14905DwordAccess, but the field unit defined within the Field was less 14906 14907than a Word or Dword. 14908 14909Fixed a problem in AmlDumpOperands() module's loop to pull 14910operands off of the operand stack to display information. The 14911problem manifested itself as a TLB error on 64-bit systems when 14912accessing an operand stack with two or more operands. 14913 14914Fixed a problem with the PCI configuration space handlers where 14915context was getting confused between accesses. This required a 14916change to the generic address space handler and address space 14917setup definitions. Handlers now get both a global handler context 14918(this is the one passed in by the user when executing 14919AcpiInstallAddressSpaceHandler() and a specific region context 14920that is unique to each region (For example, the _ADR, _SEG and 14921_BBN values associated with a specific region). The generic 14922function definitions have changed to the following: 14923 14924typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 14925UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 14926*HandlerContext, // This used to be void *Context void 14927*RegionContext); // This is an additional parameter 14928 14929typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 14930RegionHandle, UINT32 Function, void *HandlerContext, void 14931**RegionContext); // This used to be **ReturnContext 14932 14933------------------------------------------- 14934Summary of changes for this label: 07_21_00 14935 14936Major file consolidation and rename. All files within the 14937interpreter have been renamed as well as most header files. This 14938was done to prevent collisions with existing files in the host 14939OSs -- filenames such as "config.h" and "global.h" seem to be 14940quite common. The VC project files have been updated. All 14941makefiles will require modification. 14942 14943The parser/interpreter integration continues in Phase 5 with the 14944implementation of a complete 2-pass parse (the AML is parsed 14945twice) for each table; This avoids the construction of a huge 14946parse tree and therefore reduces the amount of dynamic memory 14947required by the subsystem. Greater use of the parse object cache 14948means that performance is unaffected. 14949 14950Many comments from the two code reviews have been rolled in. 14951 14952The 64-bit alignment support is complete. 14953 14954------------------------------------------- 14955Summary of changes for this label: 06_30_00 14956 14957With a nod and a tip of the hat to the technology of yesteryear, 14958we've added support in the source code for 80 column output 14959devices. The code is now mostly constrained to 80 columns or 14960less to support environments and editors that 1) cannot display 14961or print more than 80 characters on a single line, and 2) cannot 14962disable line wrapping. 14963 14964A major restructuring of the namespace data structure has been 14965completed. The result is 1) cleaner and more 14966understandable/maintainable code, and 2) a significant reduction 14967in the dynamic memory requirement for each named ACPI object 14968(almost half). 14969 14970------------------------------------------- 14971Summary of changes for this label: 06_23_00 14972 14973Linux support has been added. In order to obtain approval to get 14974the ACPI CA subsystem into the Linux kernel, we've had to make 14975quite a few changes to the base subsystem that will affect all 14976users (all the changes are generic and OS- independent). The 14977effects of these global changes have been somewhat far reaching. 14978Files have been merged and/or renamed and interfaces have been 14979renamed. The major changes are described below. 14980 14981Osd* interfaces renamed to AcpiOs* to eliminate namespace 14982pollution/confusion within our target kernels. All OSD 14983interfaces must be modified to match the new naming convention. 14984 14985Files merged across the subsystem. A number of the smaller source 14986and header files have been merged to reduce the file count and 14987increase the density of the existing files. There are too many 14988to list here. In general, makefiles that call out individual 14989files will require rebuilding. 14990 14991Interpreter files renamed. All interpreter files now have the 14992prefix am* instead of ie* and is*. 14993 14994Header files renamed: The acapi.h file is now acpixf.h. The 14995acpiosd.h file is now acpiosxf.h. We are removing references to 14996the acronym "API" since it is somewhat windowsy. The new name is 14997"external interface" or xface or xf in the filenames.j 14998 14999 15000All manifest constants have been forced to upper case (some were 15001mixed case.) Also, the string "ACPI_" has been prepended to many 15002(not all) of the constants, typedefs, and structs. 15003 15004The globals "DebugLevel" and "DebugLayer" have been renamed 15005"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 15006 15007All other globals within the subsystem are now prefixed with 15008"AcpiGbl_" Internal procedures within the subsystem are now 15009prefixed with "Acpi" (with only a few exceptions). The original 15010two-letter abbreviation for the subcomponent remains after "Acpi" 15011- for example, CmCallocate became AcpiCmCallocate. 15012 15013Added a source code translation/conversion utility. Used to 15014generate the Linux source code, it can be modified to generate 15015other types of source as well. Can also be used to cleanup 15016existing source by removing extraneous spaces and blank lines. 15017Found in tools/acpisrc/* 15018 15019OsdUnMapMemory was renamed to OsdUnmapMemory and then 15020AcpiOsUnmapMemory. (UnMap became Unmap). 15021 15022A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 15023When set to one, this indicates that the caller wants to use the 15024 15025semaphore as a mutex, not a counting semaphore. ACPI CA uses 15026both types. However, implementers of this call may want to use 15027different OS primitives depending on the type of semaphore 15028requested. For example, some operating systems provide separate 15029 15030"mutex" and "semaphore" interfaces - where the mutex interface is 15031much faster because it doesn't have all the overhead of a full 15032semaphore implementation. 15033 15034Fixed a deadlock problem where a method that accesses the PCI 15035address space can block forever if it is the first access to the 15036space. 15037 15038------------------------------------------- 15039Summary of changes for this label: 06_02_00 15040 15041Support for environments that cannot handle unaligned data 15042accesses (e.g. firmware and OS environments devoid of alignment 15043handler technology namely SAL/EFI and the IA-64 Linux kernel) has 15044been added (via configurable macros) in these three areas: - 15045Transfer of data from the raw AML byte stream is done via byte 15046moves instead of word/dword/qword moves. - External objects are 15047aligned within the user buffer, including package elements (sub- 15048objects). - Conversion of name strings to UINT32 Acpi Names is now 15049done byte-wise. 15050 15051The Store operator was modified to mimic Microsoft's 15052implementation when storing to a Buffer Field. 15053 15054Added a check of the BM_STS bit before entering C3. 15055 15056The methods subdirectory has been obsoleted and removed. A new 15057file, cmeval.c subsumes the functionality. 15058 15059A 16-bit (DOS) version of AcpiExec has been developed. The 15060makefile is under the acpiexec directory. 15061