1---------------------------------------- 2 324 July 2014. Summary of changes for version 20140724: 4 5This release is available at https://acpica.org/downloads 6 7The ACPI 5.1 specification has been released and is available at: 8http://uefi.org/specs/access 9 10 110) ACPI 5.1 support in ACPICA: 12 13ACPI 5.1 is fully supported in ACPICA as of this release. 14 15New predefined names. Support includes iASL and runtime ACPICA 16validation. 17 _CCA (Cache Coherency Attribute). 18 _DSD (Device-Specific Data). David Box. 19 20Modifications to existing ACPI tables. Support includes headers, iASL 21Data Table compiler, disassembler, and the template generator. 22 FADT - New fields and flags. Graeme Gregory. 23 GTDT - One new subtable and new fields. Tomasz Nowicki. 24 MADT - Two new subtables. Tomasz Nowicki. 25 PCCT - One new subtable. 26 27Miscellaneous. 28 New notification type for System Resource Affinity change events. 29 30 311) ACPICA kernel-resident subsystem: 32 33Fixed a regression introduced in 20140627 where a fault can happen during 34the deletion of Alias AML namespace objects. The problem affected both 35the core ACPICA and the ACPICA tools including iASL and AcpiExec. 36 37Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 38simple mechanism to enable wake GPEs that have no associated handler or 39control method. Rafael Wysocki. 40 41Updated the AcpiEnableGpe interface to disallow the enable if there is no 42handler or control method associated with the particular GPE. This will 43help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 44 45Updated GPE handling and dispatch by disabling the GPE before clearing 46the status bit for edge-triggered GPEs. Lv Zheng. 47 48Added Timer() support to the AML Debug object. The current timer value is 49now displayed with each invocation of (Store to) the debug object to 50enable simple generation of execution times for AML code (method 51execution for example.) ACPICA BZ 1093. 52 53Example Code and Data Size: These are the sizes for the OS-independent 54acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 55debug version of the code includes the debug output trace mechanism and 56has a much larger code and data size. 57 58 Current Release: 59 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 60 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 61 Previous Release: 62 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 63 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 64 65 662) iASL Compiler/Disassembler and Tools: 67 68Fixed an issue with the recently added local printf implementation, 69concerning width/precision specifiers that could cause incorrect output. 70Lv Zheng. ACPICA BZ 1094. 71 72Disassembler: Added support to detect buffers that contain UUIDs and 73disassemble them to an invocation of the ToUUID operator. Also emit 74commented descriptions of known ACPI-related UUIDs. 75 76AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 77-u. Adds three new files. 78 79iASL: Update table compiler and disassembler for DMAR table changes that 80were introduced in September 2013. With assistance by David Woodhouse. 81 82---------------------------------------- 8327 June 2014. Summary of changes for version 20140627: 84 851) ACPICA kernel-resident subsystem: 86 87Formatted Output: Implemented local versions of standard formatted output 88utilities such as printf, etc. Over time, it has been discovered that 89there are in fact many portability issues with printf, and the addition 90of this feature will fix/prevent these issues once and for all. Some 91known issues are summarized below: 92 931) Output of 64-bit values is not portable. For example, UINT64 is %ull 94for the Linux kernel and is %uI64 for some MSVC versions. 952) Invoking printf consistently in a manner that is portable across both 9632-bit and 64-bit platforms is difficult at best in many situations. 973) The output format for pointers varies from system to system (leading 98zeros especially), and leads to inconsistent output from ACPICA across 99platforms. 1004) Certain platform-specific printf formats may conflict with ACPICA use. 1015) If there is no local C library available, ACPICA now has local support 102for printf. 103 104-- To address these printf issues in a complete manner, ACPICA now 105directly implements a small subset of printf format specifiers, only 106those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 107 108Implemented support for ACPICA generation within the EFI environment. 109Initially, the AcpiDump utility is supported in the UEFI shell 110environment. Lv Zheng. 111 112Added a new external interface, AcpiLogError, to improve ACPICA 113portability. This allows the host to redirect error messages from the 114ACPICA utilities. Lv Zheng. 115 116Added and deployed new OSL file I/O interfaces to improve ACPICA 117portability: 118 AcpiOsOpenFile 119 AcpiOsCloseFile 120 AcpiOsReadFile 121 AcpiOsWriteFile 122 AcpiOsGetFileOffset 123 AcpiOsSetFileOffset 124There are C library implementations of these functions in the new file 125service_layers/oslibcfs.c -- however, the functions can be implemented by 126the local host in any way necessary. Lv Zheng. 127 128Implemented a mechanism to disable/enable ACPI table checksum validation 129at runtime. This can be useful when loading tables very early during OS 130initialization when it may not be possible to map the entire table in 131order to compute the checksum. Lv Zheng. 132 133Fixed a buffer allocation issue for the Generic Serial Bus support. 134Originally, a fixed buffer length was used. This change allows for 135variable-length buffers based upon the protocol indicated by the field 136access attributes. Reported by Lan Tianyu. Lv Zheng. 137 138Fixed a problem where an object detached from a namespace node was not 139properly terminated/cleared and could cause a circular list problem if 140reattached. ACPICA BZ 1063. David Box. 141 142Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 143 144Fixed a possible memory leak in an error return path within the function 145AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 146 147Example Code and Data Size: These are the sizes for the OS-independent 148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 149debug version of the code includes the debug output trace mechanism and 150has a much larger code and data size. 151 152 Current Release: 153 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 154 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 155 Previous Release: 156 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 157 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 158 159 1602) iASL Compiler/Disassembler and Tools: 161 162Disassembler: Add dump of ASCII equivalent text within a comment at the 163end of each line of the output for the Buffer() ASL operator. 164 165AcpiDump: Miscellaneous changes: 166 Fixed repetitive table dump in -n mode. 167 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 168the ACPI 2.0 GUID fails. 169 170iASL: Fixed a problem where the compiler could fault if incorrectly given 171an acpidump output file as input. ACPICA BZ 1088. David Box. 172 173AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 174they are invoked without any arguments. 175 176Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 1771086. Colin Ian King. 178 179Disassembler: Cleaned up a block of code that extracts a parent Op 180object. Added a comment that explains that the parent is guaranteed to be 181valid in this case. ACPICA BZ 1069. 182 183---------------------------------------- 18424 April 2014. Summary of changes for version 20140424: 185 1861) ACPICA kernel-resident subsystem: 187 188Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 189Some of these tables are known to contain a trailing NULL entry. Lv 190Zheng. 191 192Removed an extraneous error message for the case where there are a large 193number of system GPEs (> 124). This was the "32-bit FADT register is too 194long to convert to GAS struct" message, which is irrelevant for GPEs 195since the GPEx_BLK_LEN fields of the FADT are always used instead of the 196(limited capacity) GAS bit length. Also, several changes to ensure proper 197support for GPE numbers > 255, where some "GPE number" fields were 8-bits 198internally. 199 200Implemented and deployed additional configuration support for the public 201ACPICA external interfaces. Entire classes of interfaces can now be 202easily modified or configured out, replaced by stubbed inline functions 203by default. Lv Zheng. 204 205Moved all public ACPICA runtime configuration globals to the public 206ACPICA external interface file for convenience. Also, removed some 207obsolete/unused globals. See the file acpixf.h. Lv Zheng. 208 209Documentation: Added a new section to the ACPICA reference describing the 210maximum number of GPEs that can be supported by the FADT-defined GPEs in 211block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 212reference. 213 214Example Code and Data Size: These are the sizes for the OS-independent 215acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 216debug version of the code includes the debug output trace mechanism and 217has a much larger code and data size. 218 219 Current Release: 220 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 221 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 222 Previous Release: 223 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 224 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 225 226 2272) iASL Compiler/Disassembler and Tools: 228 229iASL and disassembler: Add full support for the LPIT table (Low Power 230Idle Table). Includes support in the disassembler, data table compiler, 231and template generator. 232 233AcpiDump utility: 2341) Add option to force the use of the RSDT (over the XSDT). 2352) Improve validation of the RSDP signature (use 8 chars instead of 4). 236 237iASL: Add check for predefined packages that are too large. For 238predefined names that contain subpackages, check if each subpackage is 239too large. (Check for too small already exists.) 240 241Debugger: Updated the GPE command (which simulates a GPE by executing the 242GPE code paths in ACPICA). The GPE device is now optional, and defaults 243to the GPE 0/1 FADT-defined blocks. 244 245Unix application OSL: Update line-editing support. Add additional error 246checking and take care not to reset terminal attributes on exit if they 247were never set. This should help guarantee that the terminal is always 248left in the previous state on program exit. 249 250---------------------------------------- 25125 March 2014. Summary of changes for version 20140325: 252 2531) ACPICA kernel-resident subsystem: 254 255Updated the auto-serialize feature for control methods. This feature 256automatically serializes all methods that create named objects in order 257to prevent runtime errors. The update adds support to ignore the 258currently executing AML SyncLevel when invoking such a method, in order 259to prevent disruption of any existing SyncLevel priorities that may exist 260in the AML code. Although the use of SyncLevels is relatively rare, this 261change fixes a regression where an AE_AML_MUTEX_ORDER exception can 262appear on some machines starting with the 20140214 release. 263 264Added a new external interface to allow the host to install ACPI tables 265very early, before the namespace is even created. AcpiInstallTable gives 266the host additional flexibility for ACPI table management. Tables can be 267installed directly by the host as if they had originally appeared in the 268XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 269(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 270with additional internal restructuring and cleanup. See the ACPICA 271Reference for interface details. Lv Zheng. 272 273Added validation of the checksum for all incoming dynamically loaded 274tables (via external interfaces or via AML Load/LoadTable operators). Lv 275Zheng. 276 277Updated the use of the AcpiOsWaitEventsComplete interface during Notify 278and GPE handler removal. Restructured calls to eliminate possible race 279conditions. Lv Zheng. 280 281Added a warning for the use/execution of the ASL/AML Unload (table) 282operator. This will help detect and identify machines that use this 283operator if and when it is ever used. This operator has never been seen 284in the field and the usage model and possible side-effects of the drastic 285runtime action of a full table removal are unknown. 286 287Reverted the use of #pragma push/pop which was introduced in the 20140214 288release. It appears that push and pop are not implemented by enough 289compilers to make the use of this feature feasible for ACPICA at this 290time. However, these operators may be deployed in a future ACPICA 291release. 292 293Added the missing EXPORT_SYMBOL macros for the install and remove SCI 294handler interfaces. 295 296Source code generation: 2971) Disabled the use of the "strchr" macro for the gcc-specific 298generation. For some versions of gcc, this macro can periodically expose 299a compiler bug which in turn causes compile-time error(s). 3002) Added support for PPC64 compilation. Colin Ian King. 301 302Example Code and Data Size: These are the sizes for the OS-independent 303acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 304debug version of the code includes the debug output trace mechanism and 305has a much larger code and data size. 306 307 Current Release: 308 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 309 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 310 Previous 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 314 3152) iASL Compiler/Disassembler and Tools: 316 317Disassembler: Added several new features to improve the readability of 318the resulting ASL code. Extra information is emitted within comment 319fields in the ASL code: 3201) Known _HID/_CID values are decoded to descriptive text. 3212) Standard values for the Notify() operator are decoded to descriptive 322text. 3233) Target operands are expanded to full pathnames (in a comment) when 324possible. 325 326Disassembler: Miscellaneous updates for extern() handling: 3271) Abort compiler if file specified by -fe option does not exist. 3282) Silence unnecessary warnings about argument count mismatches. 3293) Update warning messages concerning unresolved method externals. 3304) Emit "UnknownObj" keyword for externals whose type cannot be 331determined. 332 333AcpiHelp utility: 3341) Added the -a option to display both the ASL syntax and the AML 335encoding for an input ASL operator. This effectively displays all known 336information about an ASL operator with one AcpiHelp invocation. 3372) Added substring match support (similar to a wildcard) for the -i 338(_HID/PNP IDs) option. 339 340iASL/Disassembler: Since this tool does not yet support execution on big- 341endian machines, added detection of endianness and an error message if 342execution is attempted on big-endian. Support for big-endian within iASL 343is a feature that is on the ACPICA to-be-done list. 344 345AcpiBin utility: 3461) Remove option to extract binary files from an acpidump; this function 347is made obsolete by the AcpiXtract utility. 3482) General cleanup of open files and allocated buffers. 349 350---------------------------------------- 35114 February 2014. Summary of changes for version 20140214: 352 3531) ACPICA kernel-resident subsystem: 354 355Implemented a new mechanism to proactively prevent problems with ill- 356behaved reentrant control methods that create named ACPI objects. This 357behavior is illegal as per the ACPI specification, but is nonetheless 358frequently seen in the field. Previously, this could lead to an 359AE_ALREADY_EXISTS exception if the method was actually entered by more 360than one thread. This new mechanism detects such methods at table load 361time and marks them "serialized" to prevent reentrancy. A new global 362option, AcpiGbl_AutoSerializeMethods, has been added to disable this 363feature if desired. This mechanism and global option obsoletes and 364supersedes the previous AcpiGbl_SerializeAllMethods option. 365 366Added the "Windows 2013" string to the _OSI support. ACPICA will now 367respond TRUE to _OSI queries with this string. It is the stated policy of 368ACPICA to add new strings to the _OSI support as soon as possible after 369they are defined. See the full ACPICA _OSI policy which has been added to 370the utilities/utosi.c file. 371 372Hardened/updated the _PRT return value auto-repair code: 3731) Do not abort the repair on a single subpackage failure, continue to 374check all subpackages. 3752) Add check for the minimum subpackage length (4). 3763) Properly handle extraneous NULL package elements. 377 378Added support to avoid the possibility of infinite loops when traversing 379object linked lists. Never allow an infinite loop, even in the face of 380corrupted object lists. 381 382ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 383pack(pop) directives to ensure that the ACPICA headers are independent of 384compiler settings or other host headers. 385 386Example Code and Data Size: These are the sizes for the OS-independent 387acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 388debug version of the code includes the debug output trace mechanism and 389has a much larger code and data size. 390 391 Current Release: 392 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 393 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 394 Previous Release: 395 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 396 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 397 398 3992) iASL Compiler/Disassembler and Tools: 400 401iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 402first reserved field was incorrectly forced to have a value of zero. This 403change correctly forces the field to have a value of one. ACPICA BZ 1081. 404 405Debugger: Added missing support for the "Extra" and "Data" subobjects 406when displaying object data. 407 408Debugger: Added support to display entire object linked lists when 409displaying object data. 410 411iASL: Removed the obsolete -g option to obtain ACPI tables from the 412Windows registry. This feature has been superseded by the acpidump 413utility. 414 415---------------------------------------- 41614 January 2014. Summary of changes for version 20140114: 417 4181) ACPICA kernel-resident subsystem: 419 420Updated all ACPICA copyrights and signons to 2014. Added the 2014 421copyright to all module headers and signons, including the standard Linux 422header. This affects virtually every file in the ACPICA core subsystem, 423iASL compiler, all ACPICA utilities, and the test suites. 424 425Improved parameter validation for AcpiInstallGpeBlock. Added the 426following checks: 4271) The incoming device handle refers to type ACPI_TYPE_DEVICE. 4282) There is not already a GPE block attached to the device. 429Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 430device. 431 432Correctly support "references" in the ACPI_OBJECT. This change fixes the 433support to allow references (namespace nodes) to be passed as arguments 434to control methods via the evaluate object interface. This is probably 435most useful for testing purposes, however. 436 437Improved support for 32/64 bit physical addresses in printf()-like 438output. This change improves the support for physical addresses in printf 439debug statements and other output on both 32-bit and 64-bit hosts. It 440consistently outputs the appropriate number of bytes for each host. The 441%p specifier is unsatisfactory since it does not emit uniform output on 442all hosts/clib implementations (on some, leading zeros are not supported, 443leading to difficult-to-read output). 444 445Example Code and Data Size: These are the sizes for the OS-independent 446acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 447debug version of the code includes the debug output trace mechanism and 448has a much larger code and data size. 449 450 Current Release: 451 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 452 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 453 Previous Release: 454 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 455 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 456 457 4582) iASL Compiler/Disassembler and Tools: 459 460iASL: Fix a possible fault when using the Connection() operator. Fixes a 461problem if the parent Field definition for the Connection operator refers 462to an operation region that does not exist. ACPICA BZ 1064. 463 464AcpiExec: Load of local test tables is now optional. The utility has the 465capability to load some various tables to test features of ACPICA. 466However, there are enough of them that the output of the utility became 467confusing. With this change, only the required local tables are displayed 468(RSDP, XSDT, etc.) along with the actual tables loaded via the command 469line specification. This makes the default output simler and easier to 470understand. The -el command line option restores the original behavior 471for testing purposes. 472 473AcpiExec: Added support for overlapping operation regions. This change 474expands the simulation of operation regions by supporting regions that 475overlap within the given address space. Supports SystemMemory and 476SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 477 478AcpiExec: Added region handler support for PCI_Config and EC spaces. This 479allows AcpiExec to simulate these address spaces, similar to the current 480support for SystemMemory and SystemIO. 481 482Debugger: Added new command to read/write/compare all namespace objects. 483The command "test objects" will exercise the entire namespace by writing 484new values to each data object, and ensuring that the write was 485successful. The original value is then restored and verified. 486 487Debugger: Added the "test predefined" command. This change makes this 488test public and puts it under the new "test" command. The test executes 489each and every predefined name within the current namespace. 490 491---------------------------------------- 49218 December 2013. Summary of changes for version 20131218: 493 494Global note: The ACPI 5.0A specification was released this month. There 495are no changes needed for ACPICA since this release of ACPI is an 496errata/clarification release. The specification is available at 497acpi.info. 498 499 5001) ACPICA kernel-resident subsystem: 501 502Added validation of the XSDT root table if it is present. Some older 503platforms contain an XSDT that is ill-formed or otherwise invalid (such 504as containing some or all entries that are NULL pointers). This change 505adds a new function to validate the XSDT before actually using it. If the 506XSDT is found to be invalid, ACPICA will now automatically fall back to 507using the RSDT instead. Original implementation by Zhao Yakui. Ported to 508ACPICA and enhanced by Lv Zheng and Bob Moore. 509 510Added a runtime option to ignore the XSDT and force the use of the RSDT. 511This change adds a runtime option that will force ACPICA to use the RSDT 512instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 513requires that an XSDT be used instead of the RSDT, the XSDT has been 514found to be corrupt or ill-formed on some machines. Lv Zheng. 515 516Added a runtime option to favor 32-bit FADT register addresses over the 51764-bit addresses. This change adds an option to favor 32-bit FADT 518addresses when there is a conflict between the 32-bit and 64-bit versions 519of the same register. The default behavior is to use the 64-bit version 520in accordance with the ACPI specification. This can now be overridden via 521the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 522 523During the change above, the internal "Convert FADT" and "Verify FADT" 524functions have been merged to simplify the code, making it easier to 525understand and maintain. ACPICA BZ 933. 526 527Improve exception reporting and handling for GPE block installation. 528Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 529status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 530 531Added helper macros to extract bus/segment numbers from the HEST table. 532This change adds two macros to extract the encoded bus and segment 533numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 534Betty Dall <betty.dall@hp.com> 535 536Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 537by ACPICA. It is not a public macro, so it should have no effect on 538existing OSV code. Lv Zheng. 539 540Example Code and Data Size: These are the sizes for the OS-independent 541acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 542debug version of the code includes the debug output trace mechanism and 543has a much larger code and data size. 544 545 Current Release: 546 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 547 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 548 Previous Release: 549 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 550 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 551 552 5532) iASL Compiler/Disassembler and Tools: 554 555Disassembler: Improved pathname support for emitted External() 556statements. This change adds full pathname support for external names 557that have been resolved internally by the inclusion of additional ACPI 558tables (via the iASL -e option). Without this change, the disassembler 559can emit multiple externals for the same object, or it become confused 560when the Scope() operator is used on an external object. Overall, greatly 561improves the ability to actually recompile the emitted ASL code when 562objects a referenced across multiple ACPI tables. Reported by Michael 563Tsirkin (mst@redhat.com). 564 565Tests/ASLTS: Updated functional control suite to execute with no errors. 566David Box. Fixed several errors related to the testing of the interpreter 567slack mode. Lv Zheng. 568 569iASL: Added support to detect names that are declared within a control 570method, but are unused (these are temporary names that are only valid 571during the time the method is executing). A remark is issued for these 572cases. ACPICA BZ 1022. 573 574iASL: Added full support for the DBG2 table. Adds full disassembler, 575table compiler, and template generator support for the DBG2 table (Debug 576Port 2 table). 577 578iASL: Added full support for the PCCT table, update the table definition. 579Updates the PCCT table definition in the actbl3.h header and adds table 580compiler and template generator support. 581 582iASL: Added an option to emit only error messages (no warnings/remarks). 583The -ve option will enable only error messages, warnings and remarks are 584suppressed. This can simplify debugging when only the errors are 585important, such as when an ACPI table is disassembled and there are many 586warnings and remarks -- but only the actual errors are of real interest. 587 588Example ACPICA code (source/tools/examples): Updated the example code so 589that it builds to an actual working program, not just example code. Added 590ACPI tables and execution of an example control method in the DSDT. Added 591makefile support for Unix generation. 592 593---------------------------------------- 59415 November 2013. Summary of changes for version 20131115: 595 596This release is available at https://acpica.org/downloads 597 598 5991) ACPICA kernel-resident subsystem: 600 601Resource Manager: Fixed loop termination for the "get AML length" 602function. The loop previously had an error termination on a NULL resource 603pointer, which can never happen since the loop simply increments a valid 604resource pointer. This fix changes the loop to terminate with an error on 605an invalid end-of-buffer condition. The problem can be seen as an 606infinite loop by callers to AcpiSetCurrentResources with an invalid or 607corrupted resource descriptor, or a resource descriptor that is missing 608an END_TAG descriptor. Reported by Dan Carpenter 609<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 610 611Table unload and ACPICA termination: Delete all attached data objects 612during namespace node deletion. This fix updates namespace node deletion 613to delete the entire list of attached objects (attached via 614AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 6151024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 616 617ACPICA termination: Added support to delete all objects attached to the 618root namespace node. This fix deletes any and all objects that have been 619attached to the root node via AcpiAttachData. Previously, none of these 620objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 621 622Debug output: Do not emit the function nesting level for the in-kernel 623build. The nesting level is really only useful during a single-thread 624execution. Therefore, only enable this output for the AcpiExec utility. 625Also, only emit the thread ID when executing under AcpiExec (Context 626switches are still always detected and a message is emitted). ACPICA BZ 627972. 628 629Example Code and Data Size: These are the sizes for the OS-independent 630acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 631debug version of the code includes the debug output trace mechanism and 632has a much larger code and data size. 633 634 Current Release: 635 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 636 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 637 Previous Release: 638 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 639 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 640 641 6422) iASL Compiler/Disassembler and Tools: 643 644AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 645correct portable POSIX header for terminal control functions. 646 647Disassembler: Fixed control method invocation issues related to the use 648of the CondRefOf() operator. The problem is seen in the disassembly where 649control method invocations may not be disassembled properly if the 650control method name has been used previously as an argument to CondRefOf. 651The solution is to not attempt to emit an external declaration for the 652CondRefOf target (it is not necessary in the first place). This prevents 653disassembler object type confusion. ACPICA BZ 988. 654 655Unix Makefiles: Added an option to disable compiler optimizations and the 656_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 657with optimizations (reportedly, gcc 4.4 for example). This change adds a 658command line option for make (NOOPT) that disables all compiler 659optimizations and the _FORTIFY_SOURCE compiler flag. The default 660optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 6611034. Lv Zheng, Bob Moore. 662 663Tests/ASLTS: Added options to specify individual test cases and modes. 664This allows testers running aslts.sh to optionally specify individual 665test modes and test cases. Also added an option to disable the forced 666generation of the ACPICA tools from source if desired. Lv Zheng. 667 668---------------------------------------- 66927 September 2013. Summary of changes for version 20130927: 670 671This release is available at https://acpica.org/downloads 672 673 6741) ACPICA kernel-resident subsystem: 675 676Fixed a problem with store operations to reference objects. This change 677fixes a problem where a Store operation to an ArgX object that contained 678a 679reference to a field object did not complete the automatic dereference 680and 681then write to the actual field object. Instead, the object type of the 682field object was inadvertently changed to match the type of the source 683operand. The new behavior will actually write to the field object (buffer 684field or field unit), thus matching the correct ACPI-defined behavior. 685 686Implemented support to allow the host to redefine individual OSL 687prototypes. This change enables the host to redefine OSL prototypes found 688in the acpiosxf.h file. This allows the host to implement OSL interfaces 689with a macro or inlined function. Further, it allows the host to add any 690additional required modifiers such as __iomem, __init, __exit, etc., as 691necessary on a per-interface basis. Enables maximum flexibility for the 692OSL interfaces. Lv Zheng. 693 694Hardcoded the access width for the FADT-defined reset register. The ACPI 695specification requires the reset register width to be 8 bits. ACPICA now 696hardcodes the width to 8 and ignores the FADT width value. This provides 697compatibility with other ACPI implementations that have allowed BIOS code 698with bad register width values to go unnoticed. Matthew Garett, Bob 699Moore, 700Lv Zheng. 701 702Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 703used 704in the OSL header (acpiosxf). The change modifies the position of this 705macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 706build issues if the OSL defines the implementation of the interface to be 707an inline stub function. Lv Zheng. 708 709Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 710initialization interfaces. This change adds a new macro for the main init 711and terminate external interfaces in order to support hosts that require 712additional or different processing for these functions. Changed from 713ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 714Zheng, Bob Moore. 715 716Cleaned up the memory allocation macros for configurability. In the 717common 718case, the ACPI_ALLOCATE and related macros now resolve directly to their 719respective AcpiOs* OSL interfaces. Two options: 7201) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 721default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 7222) For AcpiExec (and for debugging), the macros can optionally be 723resolved 724to the local ACPICA interfaces that track each allocation (local tracking 725is used to immediately detect memory leaks). 726Lv Zheng. 727 728Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 729to predefine this macro to either TRUE or FALSE during the system build. 730 731Replaced __FUNCTION_ with __func__ in the gcc-specific header. 732 733Example Code and Data Size: These are the sizes for the OS-independent 734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 735debug version of the code includes the debug output trace mechanism and 736has a much larger code and data size. 737 738 Current Release: 739 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 740 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 741 Previous Release: 742 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 743 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 744 745 7462) iASL Compiler/Disassembler and Tools: 747 748iASL: Implemented wildcard support for the -e option. This simplifies use 749when there are many SSDTs that must be included to resolve external 750method 751declarations. ACPICA BZ 1041. Example: 752 iasl -e ssdt*.dat -d dsdt.dat 753 754AcpiExec: Add history/line-editing for Unix/Linux systems. This change 755adds a portable module that implements full history and limited line 756editing for Unix and Linux systems. It does not use readline() due to 757portability issues. Instead it uses the POSIX termio interface to put the 758terminal in raw input mode so that the various special keys can be 759trapped 760(such as up/down-arrow for history support and left/right-arrow for line 761editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 762 763AcpiXtract: Add support to handle (ignore) "empty" lines containing only 764one or more spaces. This provides compatible with early or different 765versions of the AcpiDump utility. ACPICA BZ 1044. 766 767AcpiDump: Do not ignore tables that contain only an ACPI table header. 768Apparently, some BIOSs create SSDTs that contain an ACPI table header but 769no other data. This change adds support to dump these tables. Any tables 770shorter than the length of an ACPI table header remain in error (an error 771message is emitted). Reported by Yi Li. 772 773Debugger: Echo actual command along with the "unknown command" message. 774 775---------------------------------------- 77623 August 2013. Summary of changes for version 20130823: 777 7781) ACPICA kernel-resident subsystem: 779 780Implemented support for host-installed System Control Interrupt (SCI) 781handlers. Certain ACPI functionality requires the host to handle raw 782SCIs. For example, the "SCI Doorbell" that is defined for memory power 783state support requires the host device driver to handle SCIs to examine 784if the doorbell has been activated. Multiple SCI handlers can be 785installed to allow for future expansion. New external interfaces are 786AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 787details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 788 789Operation region support: Never locally free the handler "context" 790pointer. This change removes some dangerous code that attempts to free 791the handler context pointer in some (rare) circumstances. The owner of 792the handler owns this pointer and the ACPICA code should never touch it. 793Although not seen to be an issue in any kernel, it did show up as a 794problem (fault) under AcpiExec. Also, set the internal storage field for 795the context pointer to zero when the region is deactivated, simply for 796sanity. David Box. ACPICA BZ 1039. 797 798AcpiRead: On error, do not modify the return value target location. If an 799error happens in the middle of a split 32/32 64-bit I/O operation, do not 800modify the target of the return value pointer. Makes the code consistent 801with the rest of ACPICA. Bjorn Helgaas. 802 803Example Code and Data Size: These are the sizes for the OS-independent 804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 805debug version of the code includes the debug output trace mechanism and 806has a much larger code and data size. 807 808 Current Release: 809 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 810 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 811 Previous Release: 812 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 813 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 814 815 8162) iASL Compiler/Disassembler and Tools: 817 818AcpiDump: Implemented several new features and fixed some problems: 8191) Added support to dump the RSDP, RSDT, and XSDT tables. 8202) Added support for multiple table instances (SSDT, UEFI). 8213) Added option to dump "customized" (overridden) tables (-c). 8224) Fixed a problem where some table filenames were improperly 823constructed. 8245) Improved some error messages, removed some unnecessary messages. 825 826iASL: Implemented additional support for disassembly of ACPI tables that 827contain invocations of external control methods. The -fe<file> option 828allows the import of a file that specifies the external methods along 829with the required number of arguments for each -- allowing for the 830correct disassembly of the table. This is a workaround for a limitation 831of AML code where the disassembler often cannot determine the number of 832arguments required for an external control method and generates incorrect 833ASL code. See the iASL reference for details. ACPICA BZ 1030. 834 835Debugger: Implemented a new command (paths) that displays the full 836pathnames (namepaths) and object types of all objects in the namespace. 837This is an alternative to the namespace command. 838 839Debugger: Implemented a new command (sci) that invokes the SCI dispatch 840mechanism and any installed handlers. 841 842iASL: Fixed a possible segfault for "too many parent prefixes" condition. 843This can occur if there are too many parent prefixes in a namepath (for 844example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 845 846Application OSLs: Set the return value for the PCI read functions. These 847functions simply return AE_OK, but should set the return value to zero 848also. This change implements this. ACPICA BZ 1038. 849 850Debugger: Prevent possible command line buffer overflow. Increase the 851size of a couple of the debugger line buffers, and ensure that overflow 852cannot happen. ACPICA BZ 1037. 853 854iASL: Changed to abort immediately on serious errors during the parsing 855phase. Due to the nature of ASL, there is no point in attempting to 856compile these types of errors, and they typically end up causing a 857cascade of hundreds of errors which obscure the original problem. 858 859---------------------------------------- 86025 July 2013. Summary of changes for version 20130725: 861 8621) ACPICA kernel-resident subsystem: 863 864Fixed a problem with the DerefOf operator where references to FieldUnits 865and BufferFields incorrectly returned the parent object, not the actual 866value of the object. After this change, a dereference of a FieldUnit 867reference results in a read operation on the field to get the value, and 868likewise, the appropriate BufferField value is extracted from the target 869buffer. 870 871Fixed a problem where the _WAK method could cause a fault under these 872circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 873method returned no value. The problem is rarely seen because most kernels 874run ACPICA in slack mode. 875 876For the DerefOf operator, a fatal error now results if an attempt is made 877to dereference a reference (created by the Index operator) to a NULL 878package element. Provides compatibility with other ACPI implementations, 879and this behavior will be added to a future version of the ACPI 880specification. 881 882The ACPI Power Management Timer (defined in the FADT) is now optional. 883This provides compatibility with other ACPI implementations and will 884appear in the next version of the ACPI specification. If there is no PM 885Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 886zero in the FADT indicates no PM timer. 887 888Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 889allows the host to globally enable/disable all vendor strings, all 890feature strings, or both. Intended to be primarily used for debugging 891purposes only. Lv Zheng. 892 893Expose the collected _OSI data to the host via a global variable. This 894data tracks the highest level vendor ID that has been invoked by the BIOS 895so that the host (and potentially ACPICA itself) can change behaviors 896based upon the age of the BIOS. 897 898Example Code and Data Size: These are the sizes for the OS-independent 899acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 900debug version of the code includes the debug output trace mechanism and 901has a much larger code and data size. 902 903 Current Release: 904 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 905 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 906 Previous Release: 907 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 908 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 909 910 9112) iASL Compiler/Disassembler and Tools: 912 913iASL: Created the following enhancements for the -so option (create 914offset table): 9151)Add offsets for the last nameseg in each namepath for every supported 916object type 9172)Add support for Processor, Device, Thermal Zone, and Scope objects 9183)Add the actual AML opcode for the parent object of every supported 919object type 9204)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 921 922Disassembler: Emit all unresolved external symbols in a single block. 923These are external references to control methods that could not be 924resolved, and thus, the disassembler had to make a guess at the number of 925arguments to parse. 926 927iASL: The argument to the -T option (create table template) is now 928optional. If not specified, the default table is a DSDT, typically the 929most common case. 930 931---------------------------------------- 93226 June 2013. Summary of changes for version 20130626: 933 9341) ACPICA kernel-resident subsystem: 935 936Fixed an issue with runtime repair of the _CST object. Null or invalid 937elements were not always removed properly. Lv Zheng. 938 939Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 940FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 941the maximum number of GPEs is 1016. Use of multiple GPE block devices 942makes the system-wide number of GPEs essentially unlimited. 943 944Example Code and Data Size: These are the sizes for the OS-independent 945acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 946debug version of the code includes the debug output trace mechanism and 947has a much larger code and data size. 948 949 Current Release: 950 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 951 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 952 Previous Release: 953 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 954 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 955 956 9572) iASL Compiler/Disassembler and Tools: 958 959Portable AcpiDump: Implemented full support for the Linux and FreeBSD 960hosts. Now supports Linux, FreeBSD, and Windows. 961 962Disassembler: Added some missing types for the HEST and EINJ tables: "Set 963Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 964 965iASL/Preprocessor: Implemented full support for nested 966#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 967 968Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 969max. The original purpose of this constraint was to limit the amount of 970debug output. However, the string function in question (UtPrintString) is 971now used for the disassembler also, where 256 bytes is insufficient. 972Reported by RehabMan@GitHub. 973 974iASL/DataTables: Fixed some problems and issues with compilation of DMAR 975tables. ACPICA BZ 999. Lv Zheng. 976 977iASL: Fixed a couple of error exit issues that could result in a "Could 978not delete <file>" message during ASL compilation. 979 980AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 981the actual signatures for these tables are "FACP" and "APIC", 982respectively. 983 984AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 985tables are allowed to have multiple instances. 986 987---------------------------------------- 98817 May 2013. Summary of changes for version 20130517: 989 9901) ACPICA kernel-resident subsystem: 991 992Fixed a regression introduced in version 20130328 for _INI methods. This 993change fixes a problem introduced in 20130328 where _INI methods are no 994longer executed properly because of a memory block that was not 995initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 996<tomasz.nowicki@linaro.org>. 997 998Fixed a possible problem with the new extended sleep registers in the 999ACPI 10005.0 FADT. Do not use these registers (even if populated) unless the HW- 1001reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 10021020. Lv Zheng. 1003 1004Implemented return value repair code for _CST predefined objects: Sort 1005the 1006list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 1007 1008Implemented a debug-only option to disable loading of SSDTs from the 1009RSDT/XSDT during ACPICA initialization. This can be useful for debugging 1010ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 1011acglobal.h - ACPICA BZ 1005. Lv Zheng. 1012 1013Fixed some issues in the ACPICA initialization and termination code: 1014Tomasz Nowicki <tomasz.nowicki@linaro.org> 10151) Clear events initialized flag upon event component termination. ACPICA 1016BZ 1013. 10172) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 10183) Delete global lock pending lock during termination. ACPICA BZ 1012. 10194) Clear debug buffer global on termination to prevent possible multiple 1020delete. ACPICA BZ 1010. 1021 1022Standardized all switch() blocks across the entire source base. After 1023many 1024years, different formatting for switch() had crept in. This change makes 1025the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 1026 1027Split some files to enhance ACPICA modularity and configurability: 10281) Split buffer dump routines into utilities/utbuffer.c 10292) Split internal error message routines into utilities/uterror.c 10303) Split table print utilities into tables/tbprint.c 10314) Split iASL command-line option processing into asloptions.c 1032 1033Makefile enhancements: 10341) Support for all new files above. 10352) Abort make on errors from any subcomponent. Chao Guan. 10363) Add build support for Apple Mac OS X. Liang Qi. 1037 1038Example Code and Data Size: These are the sizes for the OS-independent 1039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1040debug version of the code includes the debug output trace mechanism and 1041has a much larger code and data size. 1042 1043 Current Release: 1044 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 1045 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 1046 Previous Release: 1047 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1048 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1049 1050 10512) iASL Compiler/Disassembler and Tools: 1052 1053New utility: Implemented an easily portable version of the acpidump 1054utility to extract ACPI tables from the system (or a file) in an ASCII 1055hex 1056dump format. The top-level code implements the various command line 1057options, file I/O, and table dump routines. To port to a new host, only 1058three functions need to be implemented to get tables -- since this 1059functionality is OS-dependent. See the tools/acpidump/apmain.c module and 1060the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 10611) The Windows version obtains the ACPI tables from the Registry. 10622) The Linux version is under development. 10633) Other hosts - If an OS-dependent module is submitted, it will be 1064distributed with ACPICA. 1065 1066iASL: Fixed a regression for -D preprocessor option (define symbol). A 1067restructuring/change to the initialization sequence caused this option to 1068no longer work properly. 1069 1070iASL: Implemented a mechanism to disable specific warnings and remarks. 1071Adds a new command line option, "-vw <messageid> as well as "#pragma 1072disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 1073 1074iASL: Fix for too-strict package object validation. The package object 1075validation for return values from the predefined names is a bit too 1076strict, it does not allow names references within the package (which will 1077be resolved at runtime.) These types of references cannot be validated at 1078compile time. This change ignores named references within package objects 1079for names that return or define static packages. 1080 1081Debugger: Fixed the 80-character command line limitation for the History 1082command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 1083 1084iASL: Added control method and package support for the -so option 1085(generates AML offset table for BIOS support.) 1086 1087iASL: issue a remark if a non-serialized method creates named objects. If 1088a thread blocks within the method for any reason, and another thread 1089enters the method, the method will fail because an attempt will be made 1090to 1091create the same (named) object twice. In this case, issue a remark that 1092the method should be marked serialized. NOTE: may become a warning later. 1093ACPICA BZ 909. 1094 1095---------------------------------------- 109618 April 2013. Summary of changes for version 20130418: 1097 10981) ACPICA kernel-resident subsystem: 1099 1100Fixed a possible buffer overrun during some rare but specific field unit 1101read operations. This overrun can only happen if the DSDT version is 1 -- 1102meaning that all AML integers are 32 bits -- and the field length is 1103between 33 and 55 bits long. During the read, an internal buffer object 1104is 1105created for the field unit because the field is larger than an integer 1106(32 1107bits). However, in this case, the buffer will be incorrectly written 1108beyond the end because the buffer length is less than the internal 1109minimum 1110of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 1111long, but a full 8 bytes will be written. 1112 1113Updated the Embedded Controller "orphan" _REG method support. This refers 1114to _REG methods under the EC device that have no corresponding operation 1115region. This is allowed by the ACPI specification. This update removes a 1116dependency on the existence an ECDT table. It will execute an orphan _REG 1117method as long as the operation region handler for the EC is installed at 1118the EC device node and not the namespace root. Rui Zhang (original 1119update), Bob Moore (update/integrate). 1120 1121Implemented run-time argument typechecking for all predefined ACPI names 1122(_STA, _BIF, etc.) This change performs object typechecking on all 1123incoming arguments for all predefined names executed via 1124AcpiEvaluateObject. This ensures that ACPI-related device drivers are 1125passing correct object types as well as the correct number of arguments 1126(therefore identifying any issues immediately). Also, the ASL/namespace 1127definition of the predefined name is checked against the ACPI 1128specification for the proper argument count. Adds one new file, 1129nsarguments.c 1130 1131Changed an exception code for the ASL UnLoad() operator. Changed the 1132exception code for the case where the input DdbHandle is invalid, from 1133AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 1134 1135Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 1136global makefile. The use of this flag causes compiler errors on earlier 1137versions of GCC, so it has been removed for compatibility. 1138 1139Miscellaneous cleanup: 11401) Removed some unused/obsolete macros 11412) Fixed a possible memory leak in the _OSI support 11423) Removed an unused variable in the predefined name support 11434) Windows OSL: remove obsolete reference to a memory list field 1144 1145Example Code and Data Size: These are the sizes for the OS-independent 1146acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1147debug version of the code includes the debug output trace mechanism and 1148has a much larger code and data size. 1149 1150 Current Release: 1151 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1152 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1153 Previous Release: 1154 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 1155 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 1156 1157 11582) iASL Compiler/Disassembler and Tools: 1159 1160AcpiExec: Added installation of a handler for the SystemCMOS address 1161space. This prevents control method abort if a method accesses this 1162space. 1163 1164AcpiExec: Added support for multiple EC devices, and now install EC 1165operation region handler(s) at the actual EC device instead of the 1166namespace root. This reflects the typical behavior of host operating 1167systems. 1168 1169AcpiExec: Updated to ensure that all operation region handlers are 1170installed before the _REG methods are executed. This prevents a _REG 1171method from aborting if it accesses an address space has no handler. 1172AcpiExec installs a handler for every possible address space. 1173 1174Debugger: Enhanced the "handlers" command to display non-root handlers. 1175This change enhances the handlers command to display handlers associated 1176with individual devices throughout the namespace, in addition to the 1177currently supported display of handlers associated with the root 1178namespace 1179node. 1180 1181ASL Test Suite: Several test suite errors have been identified and 1182resolved, reducing the total error count during execution. Chao Guan. 1183 1184---------------------------------------- 118528 March 2013. Summary of changes for version 20130328: 1186 11871) ACPICA kernel-resident subsystem: 1188 1189Fixed several possible race conditions with the internal object reference 1190counting mechanism. Some of the external ACPICA interfaces update object 1191reference counts without holding the interpreter or namespace lock. This 1192change adds a spinlock to protect reference count updates on the internal 1193ACPICA objects. Reported by and with assistance from Andriy Gapon 1194(avg@FreeBSD.org). 1195 1196FADT support: Removed an extraneous warning for very large GPE register 1197sets. This change removes a size mismatch warning if the legacy length 1198field for a GPE register set is larger than the 64-bit GAS structure can 1199accommodate. GPE register sets can be larger than the 255-bit width 1200limitation of the GAS structure. Linn Crosetto (linn@hp.com). 1201 1202_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 1203return from this interface. Handles a possible timeout case if 1204ACPI_WAIT_FOREVER is modified by the host to be a value less than 1205"forever". Jung-uk Kim. 1206 1207Predefined name support: Add allowed/required argument type information 1208to 1209the master predefined info table. This change adds the infrastructure to 1210enable typechecking on incoming arguments for all predefined 1211methods/objects. It does not actually contain the code that will fully 1212utilize this information, this is still under development. Also condenses 1213some duplicate code for the predefined names into a new module, 1214utilities/utpredef.c 1215 1216Example Code and Data Size: These are the sizes for the OS-independent 1217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1218debug version of the code includes the debug output trace mechanism and 1219has a much larger code and data size. 1220 1221 Previous Release: 1222 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1223 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1224 Current Release: 1225 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 1226 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 1227 1228 12292) iASL Compiler/Disassembler and Tools: 1230 1231iASL: Implemented a new option to simplify the development of ACPI- 1232related 1233BIOS code. Adds support for a new "offset table" output file. The -so 1234option will create a C table containing the AML table offsets of various 1235named objects in the namespace so that BIOS code can modify them easily 1236at 1237boot time. This can simplify BIOS runtime code by eliminating expensive 1238searches for "magic values", enhancing boot times and adding greater 1239reliability. With assistance from Lee Hamel. 1240 1241iASL: Allow additional predefined names to return zero-length packages. 1242Now, all predefined names that are defined by the ACPI specification to 1243return a "variable-length package of packages" are allowed to return a 1244zero length top-level package. This allows the BIOS to tell the host that 1245the requested feature is not supported, and supports existing BIOS/ASL 1246code and practices. 1247 1248iASL: Changed the "result not used" warning to an error. This is the case 1249where an ASL operator is effectively a NOOP because the result of the 1250operation is not stored anywhere. For example: 1251 Add (4, Local0) 1252There is no target (missing 3rd argument), nor is the function return 1253value used. This is potentially a very serious problem -- since the code 1254was probably intended to do something, but for whatever reason, the value 1255was not stored. Therefore, this issue has been upgraded from a warning to 1256an error. 1257 1258AcpiHelp: Added allowable/required argument types to the predefined names 1259info display. This feature utilizes the recent update to the predefined 1260names table (above). 1261 1262---------------------------------------- 126314 February 2013. Summary of changes for version 20130214: 1264 12651) ACPICA Kernel-resident Subsystem: 1266 1267Fixed a possible regression on some hosts: Reinstated the safe return 1268macros (return_ACPI_STATUS, etc.) that ensure that the argument is 1269evaluated only once. Although these macros are not needed for the ACPICA 1270code itself, they are often used by ACPI-related host device drivers 1271where 1272the safe feature may be necessary. 1273 1274Fixed several issues related to the ACPI 5.0 reduced hardware support 1275(SOC): Now ensure that if the platform declares itself as hardware- 1276reduced 1277via the FADT, the following functions become NOOPs (and always return 1278AE_OK) because ACPI is always enabled by definition on these machines: 1279 AcpiEnable 1280 AcpiDisable 1281 AcpiHwGetMode 1282 AcpiHwSetMode 1283 1284Dynamic Object Repair: Implemented additional runtime repairs for 1285predefined name return values. Both of these repairs can simplify code in 1286the related device drivers that invoke these methods: 12871) For the _STR and _MLS names, automatically repair/convert an ASCII 1288string to a Unicode buffer. 12892) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 1290a 1291lone end tag descriptor in the following cases: A Return(0) was executed, 1292a null buffer was returned, or no object at all was returned (non-slack 1293mode only). Adds a new file, nsconvert.c 1294ACPICA BZ 998. Bob Moore, Lv Zheng. 1295 1296Resource Manager: Added additional code to prevent possible infinite 1297loops 1298while traversing corrupted or ill-formed resource template buffers. Check 1299for zero-length resource descriptors in all code that loops through 1300resource templates (the length field is used to index through the 1301template). This change also hardens the external AcpiWalkResources and 1302AcpiWalkResourceBuffer interfaces. 1303 1304Local Cache Manager: Enhanced the main data structure to eliminate an 1305unnecessary mechanism to access the next object in the list. Actually 1306provides a small performance enhancement for hosts that use the local 1307ACPICA cache manager. Jung-uk Kim. 1308 1309Example Code and Data Size: These are the sizes for the OS-independent 1310acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1311debug version of the code includes the debug output trace mechanism and 1312has a much larger code and data size. 1313 1314 Previous Release: 1315 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1316 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1317 Current Release: 1318 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 1319 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 1320 1321 13222) iASL Compiler/Disassembler and Tools: 1323 1324iASL/Disassembler: Fixed several issues with the definition of the ACPI 13255.0 RASF table (RAS Feature Table). This change incorporates late changes 1326that were made to the ACPI 5.0 specification. 1327 1328iASL/Disassembler: Added full support for the following new ACPI tables: 1329 1) The MTMR table (MID Timer Table) 1330 2) The VRTC table (Virtual Real Time Clock Table). 1331Includes header file, disassembler, table compiler, and template support 1332for both tables. 1333 1334iASL: Implemented compile-time validation of package objects returned by 1335predefined names. This new feature validates static package objects 1336returned by the various predefined names defined to return packages. Both 1337object types and package lengths are validated, for both parent packages 1338and sub-packages, if any. The code is similar in structure and behavior 1339to 1340the runtime repair mechanism within the AML interpreter and uses the 1341existing predefined name information table. Adds a new file, aslprepkg.c. 1342ACPICA BZ 938. 1343 1344iASL: Implemented auto-detection of binary ACPI tables for disassembly. 1345This feature detects a binary file with a valid ACPI table header and 1346invokes the disassembler automatically. Eliminates the need to 1347specifically invoke the disassembler with the -d option. ACPICA BZ 862. 1348 1349iASL/Disassembler: Added several warnings for the case where there are 1350unresolved control methods during the disassembly. This can potentially 1351cause errors when the output file is compiled, because the disassembler 1352assumes zero method arguments in these cases (it cannot determine the 1353actual number of arguments without resolution/definition of the method). 1354 1355Debugger: Added support to display all resources with a single command. 1356Invocation of the resources command with no arguments will now display 1357all 1358resources within the current namespace. 1359 1360AcpiHelp: Added descriptive text for each ACPICA exception code displayed 1361via the -e option. 1362 1363---------------------------------------- 136417 January 2013. Summary of changes for version 20130117: 1365 13661) ACPICA Kernel-resident Subsystem: 1367 1368Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 1369return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 1370objects to return a package containing one integer, most BIOS code 1371returns 1372two integers and the previous code reflects that. However, we also need 1373to 1374support BIOS code that actually implements to the ACPI spec, and this 1375change reflects this. 1376 1377Fixed two issues with the ACPI_DEBUG_PRINT macros: 13781) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 1379C compilers that require this support. 13802) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 1381ACPI_DEBUG is already used by many of the various hosts. 1382 1383Updated all ACPICA copyrights and signons to 2013. Added the 2013 1384copyright to all module headers and signons, including the standard Linux 1385header. This affects virtually every file in the ACPICA core subsystem, 1386iASL compiler, all ACPICA utilities, and the test suites. 1387 1388Example Code and Data Size: These are the sizes for the OS-independent 1389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1390debug version of the code includes the debug output trace mechanism and 1391has a much larger code and data size. 1392 1393 Previous Release: 1394 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1395 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1396 Current Release: 1397 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 1398 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 1399 1400 14012) iASL Compiler/Disassembler and Tools: 1402 1403Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 1404prevent a possible fault on some hosts. Some C libraries modify the arg 1405pointer parameter to vfprintf making it difficult to call it twice in the 1406AcpiOsVprintf function. Use a local buffer to workaround this issue. This 1407does not affect the Windows OSL since the Win C library does not modify 1408the arg pointer. Chao Guan, Bob Moore. 1409 1410iASL: Fixed a possible infinite loop when the maximum error count is 1411reached. If an output file other than the .AML file is specified (such as 1412a listing file), and the maximum number of errors is reached, do not 1413attempt to flush data to the output file(s) as the compiler is aborting. 1414This can cause an infinite loop as the max error count code essentially 1415keeps calling itself. 1416 1417iASL/Disassembler: Added an option (-in) to ignore NOOP 1418opcodes/operators. 1419Implemented for both the compiler and the disassembler. Often, the NOOP 1420opcode is used as padding for packages that are changed dynamically by 1421the 1422BIOS. When disassembled and recompiled, these NOOPs will cause syntax 1423errors. This option causes the disassembler to ignore all NOOP opcodes 1424(0xA3), and it also causes the compiler to ignore all ASL source code 1425NOOP 1426statements as well. 1427 1428Debugger: Enhanced the Sleep command to execute all sleep states. This 1429change allows Sleep to be invoked with no arguments and causes the 1430debugger to execute all of the sleep states, 0-5, automatically. 1431 1432---------------------------------------- 143320 December 2012. Summary of changes for version 20121220: 1434 14351) ACPICA Kernel-resident Subsystem: 1436 1437Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 1438alternate entry point for AcpiWalkResources and improves the usability of 1439the resource manager by accepting as input a buffer containing the output 1440of either a _CRS, _PRS, or _AEI method. The key functionality is that the 1441input buffer is not deleted by this interface so that it can be used by 1442the host later. See the ACPICA reference for details. 1443 1444Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 1445(DSDT version < 2). The constant will be truncated and this warning 1446reflects that behavior. 1447 1448Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 1449ExtendedInterrupt, and GpioInt descriptors. This change adds support to 1450both get and set the new wake bit in these descriptors, separately from 1451the existing share bit. Reported by Aaron Lu. 1452 1453Interpreter: Fix Store() when an implicit conversion is not possible. For 1454example, in the cases such as a store of a string to an existing package 1455object, implement the store as a CopyObject(). This is a small departure 1456from the ACPI specification which states that the control method should 1457be 1458aborted in this case. However, the ASLTS suite depends on this behavior. 1459 1460Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 1461macros: check if debug output is currently enabled as soon as possible to 1462minimize performance impact if debug is in fact not enabled. 1463 1464Source code restructuring: Cleanup to improve modularity. The following 1465new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 1466psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 1467Associated makefiles and project files have been updated. 1468 1469Changed an exception code for LoadTable operator. For the case where one 1470of the input strings is too long, change the returned exception code from 1471AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 1472 1473Fixed a possible memory leak in dispatcher error path. On error, delete 1474the mutex object created during method mutex creation. Reported by 1475tim.gardner@canonical.com. 1476 1477Example Code and Data Size: These are the sizes for the OS-independent 1478acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1479debug version of the code includes the debug output trace mechanism and 1480has a much larger code and data size. 1481 1482 Previous Release: 1483 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 1484 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1485 Current Release: 1486 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 1487 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 1488 1489 14902) iASL Compiler/Disassembler and Tools: 1491 1492iASL: Disallow a method call as argument to the ObjectType ASL operator. 1493This change tracks an errata to the ACPI 5.0 document. The AML grammar 1494will not allow the interpreter to differentiate between a method and a 1495method invocation when these are used as an argument to the ObjectType 1496operator. The ACPI specification change is to disallow a method 1497invocation 1498(UserTerm) for the ObjectType operator. 1499 1500Finish support for the TPM2 and CSRT tables in the headers, table 1501compiler, and disassembler. 1502 1503Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 1504always expires immediately if the semaphore is not available. The 1505original 1506code was using a relative-time timeout, but sem_timedwait requires the 1507use 1508of an absolute time. 1509 1510iASL: Added a remark if the Timer() operator is used within a 32-bit 1511table. This operator returns a 64-bit time value that will be truncated 1512within a 32-bit table. 1513 1514iASL Source code restructuring: Cleanup to improve modularity. The 1515following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 1516aslmethod.c, and aslfileio.c. Associated makefiles and project files have 1517been updated. 1518 1519 1520---------------------------------------- 152114 November 2012. Summary of changes for version 20121114: 1522 15231) ACPICA Kernel-resident Subsystem: 1524 1525Implemented a performance enhancement for ACPI/AML Package objects. This 1526change greatly increases the performance of Package objects within the 1527interpreter. It changes the processing of reference counts for packages 1528by 1529optimizing for the most common case where the package sub-objects are 1530either Integers, Strings, or Buffers. Increases the overall performance 1531of 1532the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 15332X.) 1534Chao Guan. ACPICA BZ 943. 1535 1536Implemented and deployed common macros to extract flag bits from resource 1537descriptors. Improves readability and maintainability of the code. Fixes 1538a 1539problem with the UART serial bus descriptor for the number of data bits 1540flags (was incorrectly 2 bits, should be 3). 1541 1542Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 1543of the macros and changed the SETx macros to the style of (destination, 1544source). Also added ACPI_CASTx companion macros. Lv Zheng. 1545 1546Example Code and Data Size: These are the sizes for the OS-independent 1547acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1548debug version of the code includes the debug output trace mechanism and 1549has a much larger code and data size. 1550 1551 Previous Release: 1552 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 1553 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1554 Current Release: 1555 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 1556 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1557 1558 15592) iASL Compiler/Disassembler and Tools: 1560 1561Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 1562adds the ShareAndWake and ExclusiveAndWake flags which were added to the 1563Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 1564 1565Disassembler: Fixed a problem with external declaration generation. Fixes 1566a problem where an incorrect pathname could be generated for an external 1567declaration if the original reference to the object includes leading 1568carats (^). ACPICA BZ 984. 1569 1570Debugger: Completed a major update for the Disassemble<method> command. 1571This command was out-of-date and did not properly disassemble control 1572methods that had any reasonable complexity. This fix brings the command 1573up 1574to the same level as the rest of the disassembler. Adds one new file, 1575dmdeferred.c, which is existing code that is now common with the main 1576disassembler and the debugger disassemble command. ACPICA MZ 978. 1577 1578iASL: Moved the parser entry prototype to avoid a duplicate declaration. 1579Newer versions of Bison emit this prototype, so moved the prototype out 1580of 1581the iASL header to where it is actually used in order to avoid a 1582duplicate 1583declaration. 1584 1585iASL/Tools: Standardized use of the stream I/O functions: 1586 1) Ensure check for I/O error after every fopen/fread/fwrite 1587 2) Ensure proper order of size/count arguments for fread/fwrite 1588 3) Use test of (Actual != Requested) after all fwrite, and most fread 1589 4) Standardize I/O error messages 1590Improves reliability and maintainability of the code. Bob Moore, Lv 1591Zheng. 1592ACPICA BZ 981. 1593 1594Disassembler: Prevent duplicate External() statements. During generation 1595of external statements, detect similar pathnames that are actually 1596duplicates such as these: 1597 External (\ABCD) 1598 External (ABCD) 1599Remove all leading '\' characters from pathnames during the external 1600statement generation so that duplicates will be detected and tossed. 1601ACPICA BZ 985. 1602 1603Tools: Replace low-level I/O with stream I/O functions. Replace 1604open/read/write/close with the stream I/O equivalents 1605fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 1606Moore. 1607 1608AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 1609name header so that AcpiXtract recognizes the output file/table. 1610 1611iASL: Remove obsolete -2 option flag. Originally intended to force the 1612compiler/disassembler into an ACPI 2.0 mode, this was never implemented 1613and the entire concept is now obsolete. 1614 1615---------------------------------------- 161618 October 2012. Summary of changes for version 20121018: 1617 1618 16191) ACPICA Kernel-resident Subsystem: 1620 1621Updated support for the ACPI 5.0 MPST table. Fixes some problems 1622introduced by late changes to the table as it was added to the ACPI 5.0 1623specification. Includes header, disassembler, and data table compiler 1624support as well as a new version of the MPST template. 1625 1626AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 16275.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 1628methods: _HID, _CID, and _UID. 1629 1630Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 1631ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 1632name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 1633names for their various drivers. Affects the AcpiGetObjectInfo external 1634interface, and other internal interfaces as well. 1635 1636Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 1637This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 1638on machines that support non-aligned transfers. Optimizes for this case 1639rather than using a strncpy. With assistance from Zheng Lv. 1640 1641Resource Manager: Small fix for buffer size calculation. Fixed a one byte 1642error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 1643 1644Added a new debug print message for AML mutex objects that are force- 1645released. At control method termination, any currently acquired mutex 1646objects are force-released. Adds a new debug-only message for each one 1647that is released. 1648 1649Audited/updated all ACPICA return macros and the function debug depth 1650counter: 1) Ensure that all functions that use the various TRACE macros 1651also use the appropriate ACPICA return macros. 2) Ensure that all normal 1652return statements surround the return expression (value) with parens to 1653ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 1654Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 1655 1656Global source code changes/maintenance: All extra lines at the start and 1657end of each source file have been removed for consistency. Also, within 1658comments, all new sentences start with a single space instead of a double 1659space, again for consistency across the code base. 1660 1661Example Code and Data Size: These are the sizes for the OS-independent 1662acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1663debug version of the code includes the debug output trace mechanism and 1664has a much larger code and data size. 1665 1666 Previous Release: 1667 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 1668 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 1669 Current Release: 1670 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 1671 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 1672 1673 16742) iASL Compiler/Disassembler and Tools: 1675 1676AcpiExec: Improved the algorithm used for memory leak/corruption 1677detection. Added some intelligence to the code that maintains the global 1678list of allocated memory. The list is now ordered by allocated memory 1679address, significantly improving performance. When running AcpiExec on 1680the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 1681on the platform and/or the environment. Note, this performance 1682enhancement affects the AcpiExec utility only, not the kernel-resident 1683ACPICA code. 1684 1685Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 1686the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 1687incorrect table offset reported for invalid opcodes. Report the original 168832-bit value for bad ACPI_NAMEs (as well as the repaired name.) 1689 1690Disassembler: Enhanced the -vt option to emit the binary table data in 1691hex format to assist with debugging. 1692 1693Fixed a potential filename buffer overflow in osunixdir.c. Increased the 1694size of file structure. Colin Ian King. 1695 1696---------------------------------------- 169713 September 2012. Summary of changes for version 20120913: 1698 1699 17001) ACPICA Kernel-resident Subsystem: 1701 1702ACPI 5.0: Added two new notify types for the Hardware Error Notification 1703Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 1704and 1705MCE(6). 1706 1707Table Manager: Merged/removed duplicate code in the root table resize 1708functions. One function is external, the other is internal. Lv Zheng, 1709ACPICA 1710BZ 846. 1711 1712Makefiles: Completely removed the obsolete "Linux" makefiles under 1713acpica/generate/linux. These makefiles are obsolete and have been 1714replaced 1715by 1716the generic unix makefiles under acpica/generate/unix. 1717 1718Makefiles: Ensure that binary files always copied properly. Minor rule 1719change 1720to ensure that the final binary output files are always copied up to the 1721appropriate binary directory (bin32 or bin64.) 1722 1723Example Code and Data Size: These are the sizes for the OS-independent 1724acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1725debug 1726version of the code includes the debug output trace mechanism and has a 1727much 1728larger code and data size. 1729 1730 Previous Release: 1731 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 1732 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 1733 Current Release: 1734 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 1735 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 1736 1737 17382) iASL Compiler/Disassembler and Tools: 1739 1740Disassembler: Fixed a possible fault during the disassembly of resource 1741descriptors when a second parse is required because of the invocation of 1742external control methods within the table. With assistance from 1743adq@lidskialf.net. ACPICA BZ 976. 1744 1745iASL: Fixed a namepath optimization problem. An error can occur if the 1746parse 1747node that contains the namepath to be optimized does not have a parent 1748node 1749that is a named object. This change fixes the problem. 1750 1751iASL: Fixed a regression where the AML file is not deleted on errors. The 1752AML 1753output file should be deleted if there are any errors during the 1754compiler. 1755The 1756only exception is if the -f (force output) option is used. ACPICA BZ 974. 1757 1758iASL: Added a feature to automatically increase internal line buffer 1759sizes. 1760Via realloc(), automatically increase the internal line buffer sizes as 1761necessary to support very long source code lines. The current version of 1762the 1763preprocessor requires a buffer long enough to contain full source code 1764lines. 1765This change increases the line buffer(s) if the input lines go beyond the 1766current buffer size. This eliminates errors that occurred when a source 1767code 1768line was longer than the buffer. 1769 1770iASL: Fixed a problem with constant folding in method declarations. The 1771SyncLevel term is a ByteConstExpr, and incorrect code would be generated 1772if a 1773Type3 opcode was used. 1774 1775Debugger: Improved command help support. For incorrect argument count, 1776display 1777full help for the command. For help command itself, allow an argument to 1778specify a command. 1779 1780Test Suites: Several bug fixes for the ASLTS suite reduces the number of 1781errors during execution of the suite. Guan Chao. 1782 1783---------------------------------------- 178416 August 2012. Summary of changes for version 20120816: 1785 1786 17871) ACPICA Kernel-resident Subsystem: 1788 1789Removed all use of the deprecated _GTS and _BFS predefined methods. The 1790_GTS 1791(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 1792deprecated and will probably be removed from the ACPI specification. 1793Windows 1794does not invoke them, and reportedly never will. The final nail in the 1795coffin 1796is that the ACPI specification states that these methods must be run with 1797interrupts off, which is not going to happen in a kernel interpreter. 1798Note: 1799Linux has removed all use of the methods also. It was discovered that 1800invoking these functions caused failures on some machines, probably 1801because 1802they were never tested since Windows does not call them. Affects two 1803external 1804interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 1805ACPICA BZ 969. 1806 1807Implemented support for complex bit-packed buffers returned from the _PLD 1808(Physical Location of Device) predefined method. Adds a new external 1809interface, AcpiDecodePldBuffer that parses the buffer into a more usable 1810C 1811structure. Note: C Bitfields cannot be used for this type of predefined 1812structure since the memory layout of individual bitfields is not defined 1813by 1814the C language. In addition, there are endian concerns where a compiler 1815will 1816change the bitfield ordering based on the machine type. The new ACPICA 1817interface eliminates these issues, and should be called after _PLD is 1818executed. ACPICA BZ 954. 1819 1820Implemented a change to allow a scope change to root (via "Scope (\)") 1821during 1822execution of module-level ASL code (code that is executed at table load 1823time.) Lin Ming. 1824 1825Added the Windows8/Server2012 string for the _OSI method. This change 1826adds 1827a 1828new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 18292012. 1830 1831Added header support for the new ACPI tables DBG2 (Debug Port Table Type 18322) 1833and CSRT (Core System Resource Table). 1834 1835Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 1836names. This simplifies access to the buffers returned by these predefined 1837names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 1838 1839GPE support: Removed an extraneous parameter from the various low-level 1840internal GPE functions. Tang Feng. 1841 1842Removed the linux makefiles from the unix packages. The generate/linux 1843makefiles are obsolete and have been removed from the unix tarball 1844release 1845packages. The replacement makefiles are under generate/unix, and there is 1846a 1847top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 1848 1849Updates for Unix makefiles: 18501) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 18512) Update linker flags (move to end of command line) for AcpiExec 1852utility. 1853Guan Chao. 1854 1855Split ACPICA initialization functions to new file, utxfinit.c. Split from 1856utxface.c to improve modularity and reduce file size. 1857 1858Example Code and Data Size: These are the sizes for the OS-independent 1859acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1860debug version of the code includes the debug output trace mechanism and 1861has a 1862much larger code and data size. 1863 1864 Previous Release: 1865 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 1866 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 1867 Current Release: 1868 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 1869 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 1870 1871 18722) iASL Compiler/Disassembler and Tools: 1873 1874iASL: Fixed a problem with constant folding for fixed-length constant 1875expressions. The constant-folding code was not being invoked for constant 1876expressions that allow the use of type 3/4/5 opcodes to generate 1877constants 1878for expressions such as ByteConstExpr, WordConstExpr, etc. This could 1879result 1880in the generation of invalid AML bytecode. ACPICA BZ 970. 1881 1882iASL: Fixed a generation issue on newer versions of Bison. Newer versions 1883apparently automatically emit some of the necessary externals. This 1884change 1885handles these versions in order to eliminate generation warnings. 1886 1887Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 1888 1889Disassembler: Add support to decode _PLD buffers. The decoded buffer 1890appears 1891within comments in the output file. 1892 1893Debugger: Fixed a regression with the "Threads" command where 1894AE_BAD_PARAMETER was always returned. 1895 1896---------------------------------------- 189711 July 2012. Summary of changes for version 20120711: 1898 18991) ACPICA Kernel-resident Subsystem: 1900 1901Fixed a possible fault in the return package object repair code. Fixes a 1902problem that can occur when a lone package object is wrapped with an 1903outer 1904package object in order to force conformance to the ACPI specification. 1905Can 1906affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 1907_DLM, 1908_CSD, _PSD, _TSD. 1909 1910Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 1911PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 1912ARB_DIS bit must be implemented in the host-dependent C3 processor power 1913state 1914support. Note, ARB_DIS is obsolete and only applies to older chipsets, 1915both 1916Intel and other vendors. (for Intel: ICH4-M and earlier) 1917 1918This change removes the code to disable/enable bus master arbitration 1919during 1920suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 1921causes 1922resume problems on some machines. The change has been in use for over 1923seven 1924years within Linux. 1925 1926Implemented two new external interfaces to support host-directed dynamic 1927ACPI 1928table load and unload. They are intended to simplify the host 1929implementation 1930of hot-plug support: 1931 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 1932 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 1933table. 1934See the ACPICA reference for additional details. Adds one new file, 1935components/tables/tbxfload.c 1936 1937Implemented and deployed two new interfaces for errors and warnings that 1938are 1939known to be caused by BIOS/firmware issues: 1940 AcpiBiosError: Prints "ACPI Firmware Error" message. 1941 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 1942Deployed these new interfaces in the ACPICA Table Manager code for ACPI 1943table 1944and FADT errors. Additional deployment to be completed as appropriate in 1945the 1946future. The associated conditional macros are ACPI_BIOS_ERROR and 1947ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 1948ACPICA 1949BZ 1950843. 1951 1952Implicit notify support: ensure that no memory allocation occurs within a 1953critical region. This fix moves a memory allocation outside of the time 1954that a 1955spinlock is held. Fixes issues on systems that do not allow this 1956behavior. 1957Jung-uk Kim. 1958 1959Split exception code utilities and tables into a new file, 1960utilities/utexcep.c 1961 1962Example Code and Data Size: These are the sizes for the OS-independent 1963acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1964debug 1965version of the code includes the debug output trace mechanism and has a 1966much 1967larger code and data size. 1968 1969 Previous Release: 1970 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 1971 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 1972 Current Release: 1973 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 1974 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 1975 1976 19772) iASL Compiler/Disassembler and Tools: 1978 1979iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 1980of 19810. Jung-uk Kim. 1982 1983Debugger: Enhanced the "tables" command to emit additional information 1984about 1985the current set of ACPI tables, including the owner ID and flags decode. 1986 1987Debugger: Reimplemented the "unload" command to use the new 1988AcpiUnloadParentTable external interface. This command was disable 1989previously 1990due to need for an unload interface. 1991 1992AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 1993option 1994will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 1995 1996---------------------------------------- 199720 June 2012. Summary of changes for version 20120620: 1998 1999 20001) ACPICA Kernel-resident Subsystem: 2001 2002Implemented support to expand the "implicit notify" feature to allow 2003multiple 2004devices to be notified by a single GPE. This feature automatically 2005generates a 2006runtime device notification in the absence of a BIOS-provided GPE control 2007method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 2008notify is 2009provided by ACPICA for Windows compatibility, and is a workaround for 2010BIOS 2011AML 2012code errors. See the description of the AcpiSetupGpeForWake interface in 2013the 2014APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 2015 2016Changed some comments and internal function names to simplify and ensure 2017correctness of the Linux code translation. No functional changes. 2018 2019Example Code and Data Size: These are the sizes for the OS-independent 2020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2021debug 2022version of the code includes the debug output trace mechanism and has a 2023much 2024larger code and data size. 2025 2026 Previous Release: 2027 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2028 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2029 Current Release: 2030 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 2031 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 2032 2033 20342) iASL Compiler/Disassembler and Tools: 2035 2036Disassembler: Added support to emit short, commented descriptions for the 2037ACPI 2038predefined names in order to improve the readability of the disassembled 2039output. ACPICA BZ 959. Changes include: 2040 1) Emit descriptions for all standard predefined names (_INI, _STA, 2041_PRW, 2042etc.) 2043 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 2044 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 2045etc.) 2046 2047AcpiSrc: Fixed several long-standing Linux code translation issues. 2048Argument 2049descriptions in function headers are now translated properly to lower 2050case 2051and 2052underscores. ACPICA BZ 961. Also fixes translation problems such as 2053these: 2054(old -> new) 2055 i_aSL -> iASL 2056 00-7_f -> 00-7F 2057 16_k -> 16K 2058 local_fADT -> local_FADT 2059 execute_oSI -> execute_OSI 2060 2061iASL: Fixed a problem where null bytes were inadvertently emitted into 2062some 2063listing files. 2064 2065iASL: Added the existing debug options to the standard help screen. There 2066are 2067no longer two different help screens. ACPICA BZ 957. 2068 2069AcpiHelp: Fixed some typos in the various predefined name descriptions. 2070Also 2071expand some of the descriptions where appropriate. 2072 2073iASL: Fixed the -ot option (display compile times/statistics). Was not 2074working 2075properly for standard output; only worked for the debug file case. 2076 2077---------------------------------------- 207818 May 2012. Summary of changes for version 20120518: 2079 2080 20811) ACPICA Core Subsystem: 2082 2083Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 2084defined 2085to block until asynchronous events such as notifies and GPEs have 2086completed. 2087Within ACPICA, it is only called before a notify or GPE handler is 2088removed/uninstalled. It also may be useful for the host OS within related 2089drivers such as the Embedded Controller driver. See the ACPICA reference 2090for 2091additional information. ACPICA BZ 868. 2092 2093ACPI Tables: Added a new error message for a possible overflow failure 2094during 2095the conversion of FADT 32-bit legacy register addresses to internal 2096common 209764- 2098bit GAS structure representation. The GAS has a one-byte "bit length" 2099field, 2100thus limiting the register length to 255 bits. ACPICA BZ 953. 2101 2102Example Code and Data Size: These are the sizes for the OS-independent 2103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2104debug 2105version of the code includes the debug output trace mechanism and has a 2106much 2107larger code and data size. 2108 2109 Previous Release: 2110 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2111 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2112 Current Release: 2113 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 2114 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 2115 2116 21172) iASL Compiler/Disassembler and Tools: 2118 2119iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 2120macro. 2121This keyword was added late in the ACPI 5.0 release cycle and was not 2122implemented until now. 2123 2124Disassembler: Added support for Operation Region externals. Adds missing 2125support for operation regions that are defined in another table, and 2126referenced locally via a Field or BankField ASL operator. Now generates 2127the 2128correct External statement. 2129 2130Disassembler: Several additional fixes for the External() statement 2131generation 2132related to some ASL operators. Also, order the External() statements 2133alphabetically in the disassembler output. Fixes the External() 2134generation 2135for 2136the Create* field, Alias, and Scope operators: 2137 1) Create* buffer field operators - fix type mismatch warning on 2138disassembly 2139 2) Alias - implement missing External support 2140 3) Scope - fix to make sure all necessary externals are emitted. 2141 2142iASL: Improved pathname support. For include files, merge the prefix 2143pathname 2144with the file pathname and eliminate unnecessary components. Convert 2145backslashes in all pathnames to forward slashes, for readability. Include 2146file 2147pathname changes affect both #include and Include() type operators. 2148 2149iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 2150end 2151of a valid line by inserting a newline and then returning the EOF during 2152the 2153next call to GetNextLine. Prevents the line from being ignored due to EOF 2154condition. 2155 2156iASL: Implemented some changes to enhance the IDE support (-vi option.) 2157Error 2158and Warning messages are now correctly recognized for both the source 2159code 2160browser and the global error and warning counts. 2161 2162---------------------------------------- 216320 April 2012. Summary of changes for version 20120420: 2164 2165 21661) ACPICA Core Subsystem: 2167 2168Implemented support for multiple notify handlers. This change adds 2169support 2170to 2171allow multiple system and device notify handlers on Device, Thermal Zone, 2172and 2173Processor objects. This can simplify the host OS notification 2174implementation. 2175Also re-worked and restructured the entire notify support code to 2176simplify 2177handler installation, handler removal, notify event queuing, and notify 2178dispatch to handler(s). Note: there can still only be two global notify 2179handlers - one for system notifies and one for device notifies. There are 2180no 2181changes to the existing handler install/remove interfaces. Lin Ming, Bob 2182Moore, Rafael Wysocki. 2183 2184Fixed a regression in the package repair code where the object reference 2185count was calculated incorrectly. Regression was introduced in the commit 2186"Support to add Package wrappers". 2187 2188Fixed a couple possible memory leaks in the AML parser, in the error 2189recovery 2190path. Jesper Juhl, Lin Ming. 2191 2192Example Code and Data Size: These are the sizes for the OS-independent 2193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2194debug version of the code includes the debug output trace mechanism and 2195has a 2196much larger code and data size. 2197 2198 Previous Release: 2199 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2200 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2201 Current Release: 2202 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2203 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 2204 2205 22062) iASL Compiler/Disassembler and Tools: 2207 2208iASL: Fixed a problem with the resource descriptor support where the 2209length 2210of the StartDependentFn and StartDependentFnNoPrio descriptors were not 2211included in cumulative descriptor offset, resulting in incorrect values 2212for 2213resource tags within resource descriptors appearing after a 2214StartDependent* 2215descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 2216 2217iASL and Preprocessor: Implemented full support for the #line directive 2218to 2219correctly track original source file line numbers through the .i 2220preprocessor 2221output file - for error and warning messages. 2222 2223iASL: Expand the allowable byte constants for address space IDs. 2224Previously, 2225the allowable range was 0x80-0xFF (user-defined spaces), now the range is 22260x0A-0xFF to allow for custom and new IDs without changing the compiler. 2227 2228iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 2229 2230iASL: Add option to completely disable the preprocessor (-Pn). 2231 2232iASL: Now emit all error/warning messages to standard error (stderr) by 2233default (instead of the previous stdout). 2234 2235ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 2236Update 2237for resource descriptor offset fix above. Update/cleanup error output 2238routines. Enable and send iASL errors/warnings to an error logfile 2239(error.txt). Send all other iASL output to a logfile (compiler.txt). 2240Fixed 2241several extraneous "unrecognized operator" messages. 2242 2243---------------------------------------- 224420 March 2012. Summary of changes for version 20120320: 2245 2246 22471) ACPICA Core Subsystem: 2248 2249Enhanced the sleep/wake interfaces to optionally execute the _GTS method 2250(Going To Sleep) and the _BFS method (Back From Sleep). Windows 2251apparently 2252does not execute these methods, and therefore these methods are often 2253untested. It has been seen on some systems where the execution of these 2254methods causes errors and also prevents the machine from entering S5. It 2255is 2256therefore suggested that host operating systems do not execute these 2257methods 2258by default. In the future, perhaps these methods can be optionally 2259executed 2260based on the age of the system and/or what is the newest version of 2261Windows 2262that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 2263and 2264AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 2265Ming. 2266 2267Fixed a problem where the length of the local/common FADT was set too 2268early. 2269The local FADT table length cannot be set to the common length until the 2270original length has been examined. There is code that checks the table 2271length 2272and sets various fields appropriately. This can affect older machines 2273with 2274early FADT versions. For example, this can cause inadvertent writes to 2275the 2276CST_CNT register. Julian Anastasov. 2277 2278Fixed a mapping issue related to a physical table override. Use the 2279deferred 2280mapping mechanism for tables loaded via the physical override OSL 2281interface. 2282This allows for early mapping before the virtual memory manager is 2283available. 2284Thomas Renninger, Bob Moore. 2285 2286Enhanced the automatic return-object repair code: Repair a common problem 2287with 2288predefined methods that are defined to return a variable-length Package 2289of 2290sub-objects. If there is only one sub-object, some BIOS ASL code 2291mistakenly 2292simply returns the single object instead of a Package with one sub- 2293object. 2294This new support will repair this error by wrapping a Package object 2295around 2296the original object, creating the correct and expected Package with one 2297sub- 2298object. Names that can be repaired in this manner include: _ALR, _CSD, 2299_HPX, 2300_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 2301939. 2302 2303Changed the exception code returned for invalid ACPI paths passed as 2304parameters to external interfaces such as AcpiEvaluateObject. Was 2305AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 2306 2307Example Code and Data Size: These are the sizes for the OS-independent 2308acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2309debug 2310version of the code includes the debug output trace mechanism and has a 2311much 2312larger code and data size. 2313 2314 Previous Release: 2315 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2316 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2317 Current Release: 2318 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 2319 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2320 2321 23222) iASL Compiler/Disassembler and Tools: 2323 2324iASL: Added the infrastructure and initial implementation of a integrated 2325C- 2326like preprocessor. This will simplify BIOS development process by 2327eliminating 2328the need for a separate preprocessing step during builds. On Windows, it 2329also 2330eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 2331features including full #define() macro support are still under 2332development. 2333These preprocessor directives are supported: 2334 #define 2335 #elif 2336 #else 2337 #endif 2338 #error 2339 #if 2340 #ifdef 2341 #ifndef 2342 #include 2343 #pragma message 2344 #undef 2345 #warning 2346In addition, these new command line options are supported: 2347 -D <symbol> Define symbol for preprocessor use 2348 -li Create preprocessed output file (*.i) 2349 -P Preprocess only and create preprocessor output file (*.i) 2350 2351Table Compiler: Fixed a problem where the equals operator within an 2352expression 2353did not work properly. 2354 2355Updated iASL to use the current versions of Bison/Flex. Updated the 2356Windows 2357project file to invoke these tools from the standard location. ACPICA BZ 2358904. 2359Versions supported: 2360 Flex for Windows: V2.5.4 2361 Bison for Windows: V2.4.1 2362 2363---------------------------------------- 236415 February 2012. Summary of changes for version 20120215: 2365 2366 23671) ACPICA Core Subsystem: 2368 2369There have been some major changes to the sleep/wake support code, as 2370described below (a - e). 2371 2372a) The AcpiLeaveSleepState has been split into two interfaces, similar to 2373AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 2374AcpiLeaveSleepStatePrep. This allows the host to perform actions between 2375the 2376time the _BFS method is called and the _WAK method is called. NOTE: all 2377hosts 2378must update their wake/resume code or else sleep/wake will not work 2379properly. 2380Rafael Wysocki. 2381 2382b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 2383_WAK 2384method. Some machines require that the GPEs are enabled before the _WAK 2385method 2386is executed. Thomas Renninger. 2387 2388c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 2389bit. 2390Some BIOS code assumes that WAK_STS will be cleared on resume and use it 2391to 2392determine whether the system is rebooting or resuming. Matthew Garrett. 2393 2394d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 2395Sleep) to 2396match the ACPI specification requirement. Rafael Wysocki. 2397 2398e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 2399registers within the V5 FADT. This support adds two new files: 2400hardware/hwesleep.c implements the support for the new registers. Moved 2401all 2402sleep/wake external interfaces to hardware/hwxfsleep.c. 2403 2404 2405Added a new OSL interface for ACPI table overrides, 2406AcpiOsPhysicalTableOverride. This interface allows the host to override a 2407table via a physical address, instead of the logical address required by 2408AcpiOsTableOverride. This simplifies the host implementation. Initial 2409implementation by Thomas Renninger. The ACPICA implementation creates a 2410single 2411shared function for table overrides that attempts both a logical and a 2412physical override. 2413 2414Expanded the OSL memory read/write interfaces to 64-bit data 2415(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 2416transfer support for GAS register structures passed to AcpiRead and 2417AcpiWrite. 2418 2419Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 2420custom 2421build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 2422model. 2423See the ACPICA reference for details. ACPICA BZ 942. This option removes 2424about 242510% of the code and 5% of the static data, and the following hardware 2426ACPI 2427features become unavailable: 2428 PM Event and Control registers 2429 SCI interrupt (and handler) 2430 Fixed Events 2431 General Purpose Events (GPEs) 2432 Global Lock 2433 ACPI PM timer 2434 FACS table (Waking vectors and Global Lock) 2435 2436Updated the unix tarball directory structure to match the ACPICA git 2437source 2438tree. This ensures that the generic unix makefiles work properly (in 2439generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 2440867. 2441 2442Updated the return value of the _REV predefined method to integer value 5 2443to 2444reflect ACPI 5.0 support. 2445 2446Moved the external ACPI PM timer interface prototypes to the public 2447acpixf.h 2448file where they belong. 2449 2450Example Code and Data Size: These are the sizes for the OS-independent 2451acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2452debug 2453version of the code includes the debug output trace mechanism and has a 2454much 2455larger code and data size. 2456 2457 Previous Release: 2458 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 2459 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 2460 Current Release: 2461 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 2462 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 2463 2464 24652) iASL Compiler/Disassembler and Tools: 2466 2467Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 2468descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 2469incorrectly displayed. 2470 2471AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 2472specification. 2473 2474---------------------------------------- 247511 January 2012. Summary of changes for version 20120111: 2476 2477 24781) ACPICA Core Subsystem: 2479 2480Implemented a new mechanism to allow host device drivers to check for 2481address 2482range conflicts with ACPI Operation Regions. Both SystemMemory and 2483SystemIO 2484address spaces are supported. A new external interface, 2485AcpiCheckAddressRange, 2486allows drivers to check an address range against the ACPI namespace. See 2487the 2488ACPICA reference for additional details. Adds one new file, 2489utilities/utaddress.c. Lin Ming, Bob Moore. 2490 2491Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 2492Control 2493and 2494Status registers, update the ACPI 5.0 flags, and update internal data 2495structures to handle an FADT larger than 256 bytes. The size of the ACPI 24965.0 2497FADT is 268 bytes. 2498 2499Updated all ACPICA copyrights and signons to 2012. Added the 2012 2500copyright to 2501all module headers and signons, including the standard Linux header. This 2502affects virtually every file in the ACPICA core subsystem, iASL compiler, 2503and 2504all ACPICA utilities. 2505 2506Example Code and Data Size: These are the sizes for the OS-independent 2507acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2508debug 2509version of the code includes the debug output trace mechanism and has a 2510much 2511larger code and data size. 2512 2513 Previous Release: 2514 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 2515 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 2516 Current Release: 2517 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 2518 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 2519 2520 25212) iASL Compiler/Disassembler and Tools: 2522 2523Disassembler: fixed a problem with the automatic resource tag generation 2524support. Fixes a problem where the resource tags are inadvertently not 2525constructed if the table being disassembled contains external references 2526to 2527control methods. Moved the actual construction of the tags to after the 2528final 2529namespace is constructed (after 2nd parse is invoked due to external 2530control 2531method references.) ACPICA BZ 941. 2532 2533Table Compiler: Make all "generic" operators caseless. These are the 2534operators 2535like UINT8, String, etc. Making these caseless improves ease-of-use. 2536ACPICA BZ 2537934. 2538 2539---------------------------------------- 254023 November 2011. Summary of changes for version 20111123: 2541 25420) ACPI 5.0 Support: 2543 2544This release contains full support for the ACPI 5.0 specification, as 2545summarized below. 2546 2547Reduced Hardware Support: 2548------------------------- 2549 2550This support allows for ACPI systems without the usual ACPI hardware. 2551This 2552support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 2553will 2554not attempt to initialize or use any of the usual ACPI hardware. Note, 2555when 2556this flag is set, all of the following ACPI hardware is assumed to be not 2557present and is not initialized or accessed: 2558 2559 General Purpose Events (GPEs) 2560 Fixed Events (PM1a/PM1b and PM Control) 2561 Power Management Timer and Console Buttons (power/sleep) 2562 Real-time Clock Alarm 2563 Global Lock 2564 System Control Interrupt (SCI) 2565 The FACS is assumed to be non-existent 2566 2567ACPI Tables: 2568------------ 2569 2570All new tables and updates to existing tables are fully supported in the 2571ACPICA headers (for use by device drivers), the disassembler, and the 2572iASL 2573Data Table Compiler. ACPI 5.0 defines these new tables: 2574 2575 BGRT /* Boot Graphics Resource Table */ 2576 DRTM /* Dynamic Root of Trust for Measurement table */ 2577 FPDT /* Firmware Performance Data Table */ 2578 GTDT /* Generic Timer Description Table */ 2579 MPST /* Memory Power State Table */ 2580 PCCT /* Platform Communications Channel Table */ 2581 PMTT /* Platform Memory Topology Table */ 2582 RASF /* RAS Feature table */ 2583 2584Operation Regions/SpaceIDs: 2585--------------------------- 2586 2587All new operation regions are fully supported by the iASL compiler, the 2588disassembler, and the ACPICA runtime code (for dispatch to region 2589handlers.) 2590The new operation region Space IDs are: 2591 2592 GeneralPurposeIo 2593 GenericSerialBus 2594 2595Resource Descriptors: 2596--------------------- 2597 2598All new ASL resource descriptors are fully supported by the iASL 2599compiler, 2600the 2601ASL/AML disassembler, and the ACPICA runtime Resource Manager code 2602(including 2603all new predefined resource tags). New descriptors are: 2604 2605 FixedDma 2606 GpioIo 2607 GpioInt 2608 I2cSerialBus 2609 SpiSerialBus 2610 UartSerialBus 2611 2612ASL/AML Operators, New and Modified: 2613------------------------------------ 2614 2615One new operator is added, the Connection operator, which is used to 2616associate 2617a GeneralPurposeIo or GenericSerialBus resource descriptor with 2618individual 2619field objects within an operation region. Several new protocols are 2620associated 2621with the AccessAs operator. All are fully supported by the iASL compiler, 2622disassembler, and runtime ACPICA AML interpreter: 2623 2624 Connection // Declare Field Connection 2625attributes 2626 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 2627 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 2628Protocol 2629 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 2630 RawDataBuffer // Data type for Vendor Data 2631fields 2632 2633Predefined ASL/AML Objects: 2634--------------------------- 2635 2636All new predefined objects/control-methods are supported by the iASL 2637compiler 2638and the ACPICA runtime validation/repair (arguments and return values.) 2639New 2640predefined names include the following: 2641 2642Standard Predefined Names (Objects or Control Methods): 2643 _AEI, _CLS, _CPC, _CWS, _DEP, 2644 _DLM, _EVT, _GCP, _CRT, _GWS, 2645 _HRV, _PRE, _PSE, _SRT, _SUB. 2646 2647Resource Tags (Names used to access individual fields within resource 2648descriptors): 2649 _DBT, _DPL, _DRS, _END, _FLC, 2650 _IOR, _LIN, _MOD, _PAR, _PHA, 2651 _PIN, _PPI, _POL, _RXL, _SLV, 2652 _SPE, _STB, _TXL, _VEN. 2653 2654ACPICA External Interfaces: 2655--------------------------- 2656 2657Several new interfaces have been defined for use by ACPI-related device 2658drivers and other host OS services: 2659 2660AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 2661to 2662acquire and release AML mutexes that are defined in the DSDT/SSDT tables 2663provided by the BIOS. They are intended to be used in conjunction with 2664the 2665ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 2666mutual exclusion with the AML code/interpreter. 2667 2668AcpiGetEventResources: Returns the (formatted) resource descriptors as 2669defined 2670by the ACPI 5.0 _AEI object (ACPI Event Information). This object 2671provides 2672resource descriptors associated with hardware-reduced platform events, 2673similar 2674to the AcpiGetCurrentResources interface. 2675 2676Operation Region Handlers: For General Purpose IO and Generic Serial Bus 2677operation regions, information about the Connection() object and any 2678optional 2679length information is passed to the region handler within the Context 2680parameter. 2681 2682AcpiBufferToResource: This interface converts a raw AML buffer containing 2683a 2684resource template or resource descriptor to the ACPI_RESOURCE internal 2685format 2686suitable for use by device drivers. Can be used by an operation region 2687handler 2688to convert the Connection() buffer object into a ACPI_RESOURCE. 2689 2690Miscellaneous/Tools/TestSuites: 2691------------------------------- 2692 2693Support for extended _HID names (Four alpha characters instead of three). 2694Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 2695Support for ACPI 5.0 features in the ASLTS test suite. 2696Fully updated documentation (ACPICA and iASL reference documents.) 2697 2698ACPI Table Definition Language: 2699------------------------------- 2700 2701Support for this language was implemented and released as a subsystem of 2702the 2703iASL compiler in 2010. (See the iASL compiler User Guide.) 2704 2705 2706Non-ACPI 5.0 changes for this release: 2707-------------------------------------- 2708 27091) ACPICA Core Subsystem: 2710 2711Fix a problem with operation region declarations where a failure can 2712occur 2713if 2714the region name and an argument that evaluates to an object (such as the 2715region address) are in different namespace scopes. Lin Ming, ACPICA BZ 2716937. 2717 2718Do not abort an ACPI table load if an invalid space ID is found within. 2719This 2720will be caught later if the offending method is executed. ACPICA BZ 925. 2721 2722Fixed an issue with the FFixedHW space ID where the ID was not always 2723recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 2724 2725Fixed a problem with the 32-bit generation of the unix-specific OSL 2726(osunixxf.c). Lin Ming, ACPICA BZ 936. 2727 2728Several changes made to enable generation with the GCC 4.6 compiler. 2729ACPICA BZ 2730935. 2731 2732New error messages: Unsupported I/O requests (not 8/16/32 bit), and 2733Index/Bank 2734field registers out-of-range. 2735 27362) iASL Compiler/Disassembler and Tools: 2737 2738iASL: Implemented the __PATH__ operator, which returns the full pathname 2739of 2740the current source file. 2741 2742AcpiHelp: Automatically display expanded keyword information for all ASL 2743operators. 2744 2745Debugger: Add "Template" command to disassemble/dump resource template 2746buffers. 2747 2748Added a new master script to generate and execute the ASLTS test suite. 2749Automatically handles 32- and 64-bit generation. See tests/aslts.sh 2750 2751iASL: Fix problem with listing generation during processing of the 2752Switch() 2753operator where AML listing was disabled until the entire Switch block was 2754completed. 2755 2756iASL: Improve support for semicolon statement terminators. Fix "invalid 2757character" message for some cases when the semicolon is used. Semicolons 2758are 2759now allowed after every <Term> grammar element. ACPICA BZ 927. 2760 2761iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 2762923. 2763 2764Disassembler: Fix problem with disassembly of the DataTableRegion 2765operator 2766where an inadvertent "Unhandled deferred opcode" message could be 2767generated. 2768 27693) Example Code and Data Size 2770 2771These are the sizes for the OS-independent acpica.lib produced by the 2772Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 2773includes the debug output trace mechanism and has a much larger code and 2774data 2775size. 2776 2777 Previous Release: 2778 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2779 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2780 Current Release: 2781 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 2782 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 2783 2784---------------------------------------- 278522 September 2011. Summary of changes for version 20110922: 2786 27870) ACPI 5.0 News: 2788 2789Support for ACPI 5.0 in ACPICA has been underway for several months and 2790will 2791be released at the same time that ACPI 5.0 is officially released. 2792 2793The ACPI 5.0 specification is on track for release in the next few 2794months. 2795 27961) ACPICA Core Subsystem: 2797 2798Fixed a problem where the maximum sleep time for the Sleep() operator was 2799intended to be limited to two seconds, but was inadvertently limited to 280020 2801seconds instead. 2802 2803Linux and Unix makefiles: Added header file dependencies to ensure 2804correct 2805generation of ACPICA core code and utilities. Also simplified the 2806makefiles 2807considerably through the use of the vpath variable to specify search 2808paths. 2809ACPICA BZ 924. 2810 28112) iASL Compiler/Disassembler and Tools: 2812 2813iASL: Implemented support to check the access length for all fields 2814created to 2815access named Resource Descriptor fields. For example, if a resource field 2816is 2817defined to be two bits, a warning is issued if a CreateXxxxField() is 2818used 2819with an incorrect bit length. This is implemented for all current 2820resource 2821descriptor names. ACPICA BZ 930. 2822 2823Disassembler: Fixed a byte ordering problem with the output of 24-bit and 282456- 2825bit integers. 2826 2827iASL: Fixed a couple of issues associated with variable-length package 2828objects. 1) properly handle constants like One, Ones, Zero -- do not make 2829a 2830VAR_PACKAGE when these are used as a package length. 2) Allow the 2831VAR_PACKAGE 2832opcode (in addition to PACKAGE) when validating object types for 2833predefined 2834names. 2835 2836iASL: Emit statistics for all output files (instead of just the ASL input 2837and 2838AML output). Includes listings, hex files, etc. 2839 2840iASL: Added -G option to the table compiler to allow the compilation of 2841custom 2842ACPI tables. The only part of a table that is required is the standard 284336- 2844byte 2845ACPI header. 2846 2847AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 2848headers), 2849which also adds correct 64-bit support. Also, now all output filenames 2850are 2851completely lower case. 2852 2853AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 2854loading table files. A warning is issued for any such tables. The only 2855exception is an FADT. This also fixes a possible fault when attempting to 2856load 2857non-AML tables. ACPICA BZ 932. 2858 2859AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 2860a 2861missing table terminator could cause a fault when using the -p option. 2862 2863AcpiSrc: Fixed a possible divide-by-zero fault when generating file 2864statistics. 2865 28663) Example Code and Data Size 2867 2868These are the sizes for the OS-independent acpica.lib produced by the 2869Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 2870includes the debug output trace mechanism and has a much larger code and 2871data 2872size. 2873 2874 Previous Release (VC 9.0): 2875 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2876 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2877 Current Release (VC 9.0): 2878 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2879 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2880 2881 2882---------------------------------------- 288323 June 2011. Summary of changes for version 20110623: 2884 28851) ACPI CA Core Subsystem: 2886 2887Updated the predefined name repair mechanism to not attempt repair of a 2888_TSS 2889return object if a _PSS object is present. We can only sort the _TSS 2890return 2891package if there is no _PSS within the same scope. This is because if 2892_PSS 2893is 2894present, the ACPI specification dictates that the _TSS Power Dissipation 2895field 2896is to be ignored, and therefore some BIOSs leave garbage values in the 2897_TSS 2898Power field(s). In this case, it is best to just return the _TSS package 2899as- 2900is. Reported by, and fixed with assistance from Fenghua Yu. 2901 2902Added an option to globally disable the control method return value 2903validation 2904and repair. This runtime option can be used to disable return value 2905repair 2906if 2907this is causing a problem on a particular machine. Also added an option 2908to 2909AcpiExec (-dr) to set this disable flag. 2910 2911All makefiles and project files: Major changes to improve generation of 2912ACPICA 2913tools. ACPICA BZ 912: 2914 Reduce default optimization levels to improve compatibility 2915 For Linux, add strict-aliasing=0 for gcc 4 2916 Cleanup and simplify use of command line defines 2917 Cleanup multithread library support 2918 Improve usage messages 2919 2920Linux-specific header: update handling of THREAD_ID and pthread. For the 292132- 2922bit case, improve casting to eliminate possible warnings, especially with 2923the 2924acpica tools. 2925 2926Example Code and Data Size: These are the sizes for the OS-independent 2927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2928debug 2929version of the code includes the debug output trace mechanism and has a 2930much 2931larger code and data size. 2932 2933 Previous Release (VC 9.0): 2934 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 2935 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2936 Current Release (VC 9.0): 2937 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 2938 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 2939 29402) iASL Compiler/Disassembler and Tools: 2941 2942With this release, a new utility named "acpihelp" has been added to the 2943ACPICA 2944package. This utility summarizes the ACPI specification chapters for the 2945ASL 2946and AML languages. It generates under Linux/Unix as well as Windows, and 2947provides the following functionality: 2948 Find/display ASL operator(s) -- with description and syntax. 2949 Find/display ASL keyword(s) -- with exact spelling and descriptions. 2950 Find/display ACPI predefined name(s) -- with description, number 2951 of arguments, and the return value data type. 2952 Find/display AML opcode name(s) -- with opcode, arguments, and 2953grammar. 2954 Decode/display AML opcode -- with opcode name, arguments, and 2955grammar. 2956 2957Service Layers: Make multi-thread support configurable. Conditionally 2958compile 2959the multi-thread support so that threading libraries will not be linked 2960if 2961not 2962necessary. The only tool that requires multi-thread support is AcpiExec. 2963 2964iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 2965of 2966Bison appear to want the interface to yyerror to be a const char * (or at 2967least this is a problem when generating iASL on some systems.) ACPICA BZ 2968923 2969Pierre Lejeune. 2970 2971Tools: Fix for systems where O_BINARY is not defined. Only used for 2972Windows 2973versions of the tools. 2974 2975---------------------------------------- 297627 May 2011. Summary of changes for version 20110527: 2977 29781) ACPI CA Core Subsystem: 2979 2980ASL Load() operator: Reinstate most restrictions on the incoming ACPI 2981table 2982signature. Now, only allow SSDT, OEMx, and a null signature. History: 2983 1) Originally, we checked the table signature for "SSDT" or "PSDT". 2984 (PSDT is now obsolete.) 2985 2) We added support for OEMx tables, signature "OEM" plus a fourth 2986 "don't care" character. 2987 3) Valid tables were encountered with a null signature, so we just 2988 gave up on validating the signature, (05/2008). 2989 4) We encountered non-AML tables such as the MADT, which caused 2990 interpreter errors and kernel faults. So now, we once again allow 2991 only SSDT, OEMx, and now, also a null signature. (05/2011). 2992 2993Added the missing _TDL predefined name to the global name list in order 2994to 2995enable validation. Affects both the core ACPICA code and the iASL 2996compiler. 2997 2998Example Code and Data Size: These are the sizes for the OS-independent 2999acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3000debug 3001version of the code includes the debug output trace mechanism and has a 3002much 3003larger code and data size. 3004 3005 Previous Release (VC 9.0): 3006 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3007 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3008 Current Release (VC 9.0): 3009 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 3010 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 3011 30122) iASL Compiler/Disassembler and Tools: 3013 3014Debugger/AcpiExec: Implemented support for "complex" method arguments on 3015the 3016debugger command line. This adds support beyond simple integers -- 3017including 3018Strings, Buffers, and Packages. Includes support for nested packages. 3019Increased the default command line buffer size to accommodate these 3020arguments. 3021See the ACPICA reference for details and syntax. ACPICA BZ 917. 3022 3023Debugger/AcpiExec: Implemented support for "default" method arguments for 3024the 3025Execute/Debug command. Now, the debugger will always invoke a control 3026method 3027with the required number of arguments -- even if the command line 3028specifies 3029none or insufficient arguments. It uses default integer values for any 3030missing 3031arguments. Also fixes a bug where only six method arguments maximum were 3032supported instead of the required seven. 3033 3034Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 3035and 3036also return status in order to prevent buffer overruns. See the ACPICA 3037reference for details and syntax. ACPICA BZ 921 3038 3039iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 3040makefiles to simplify support for the two different but similar parser 3041generators, bison and yacc. 3042 3043Updated the generic unix makefile for gcc 4. The default gcc version is 3044now 3045expected to be 4 or greater, since options specific to gcc 4 are used. 3046 3047---------------------------------------- 304813 April 2011. Summary of changes for version 20110413: 3049 30501) ACPI CA Core Subsystem: 3051 3052Implemented support to execute a so-called "orphan" _REG method under the 3053EC 3054device. This change will force the execution of a _REG method underneath 3055the 3056EC 3057device even if there is no corresponding operation region of type 3058EmbeddedControl. Fixes a problem seen on some machines and apparently is 3059compatible with Windows behavior. ACPICA BZ 875. 3060 3061Added more predefined methods that are eligible for automatic NULL 3062package 3063element removal. This change adds another group of predefined names to 3064the 3065list 3066of names that can be repaired by having NULL package elements dynamically 3067removed. This group are those methods that return a single variable- 3068length 3069package containing simple data types such as integers, buffers, strings. 3070This 3071includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 3072_PSL, 3073_Sx, 3074and _TZD. ACPICA BZ 914. 3075 3076Split and segregated all internal global lock functions to a new file, 3077evglock.c. 3078 3079Updated internal address SpaceID for DataTable regions. Moved this 3080internal 3081space 3082id in preparation for ACPI 5.0 changes that will include some new space 3083IDs. 3084This 3085change should not affect user/host code. 3086 3087Example Code and Data Size: These are the sizes for the OS-independent 3088acpica.lib 3089produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3090version of 3091the code includes the debug output trace mechanism and has a much larger 3092code 3093and 3094data size. 3095 3096 Previous Release (VC 9.0): 3097 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3098 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3099 Current Release (VC 9.0): 3100 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 3101 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 3102 31032) iASL Compiler/Disassembler and Tools: 3104 3105iASL/DTC: Major update for new grammar features. Allow generic data types 3106in 3107custom ACPI tables. Field names are now optional. Any line can be split 3108to 3109multiple lines using the continuation char (\). Large buffers now use 3110line- 3111continuation character(s) and no colon on the continuation lines. See the 3112grammar 3113update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 3114Moore. 3115 3116iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 3117statements. 3118Since the parser stuffs a "zero" as the return value for these statements 3119(due 3120to 3121the underlying AML grammar), they were seen as "return with value" by the 3122iASL 3123semantic checking. They are now seen correctly as "null" return 3124statements. 3125 3126iASL: Check if a_REG declaration has a corresponding Operation Region. 3127Adds a 3128check for each _REG to ensure that there is in fact a corresponding 3129operation 3130region declaration in the same scope. If not, the _REG method is not very 3131useful 3132since it probably won't be executed. ACPICA BZ 915. 3133 3134iASL/DTC: Finish support for expression evaluation. Added a new 3135expression 3136parser 3137that implements c-style operator precedence and parenthesization. ACPICA 3138bugzilla 3139908. 3140 3141Disassembler/DTC: Remove support for () and <> style comments in data 3142tables. 3143Now 3144that DTC has full expression support, we don't want to have comment 3145strings 3146that 3147start with a parentheses or a less-than symbol. Now, only the standard /* 3148and 3149// 3150comments are supported, as well as the bracket [] comments. 3151 3152AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 3153"unusual" 3154headers in the acpidump file. Update the header validation to support 3155these 3156tables. Problem introduced in previous AcpiXtract version in the change 3157to 3158support "wrong checksum" error messages emitted by acpidump utility. 3159 3160iASL: Add a * option to generate all template files (as a synonym for 3161ALL) 3162as 3163in 3164"iasl -T *" or "iasl -T ALL". 3165 3166iASL/DTC: Do not abort compiler on fatal errors. We do not want to 3167completely 3168abort the compiler on "fatal" errors, simply should abort the current 3169compile. 3170This allows multiple compiles with a single (possibly wildcard) compiler 3171invocation. 3172 3173---------------------------------------- 317416 March 2011. Summary of changes for version 20110316: 3175 31761) ACPI CA Core Subsystem: 3177 3178Fixed a problem caused by a _PRW method appearing at the namespace root 3179scope 3180during the setup of wake GPEs. A fault could occur if a _PRW directly 3181under 3182the 3183root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 3184 3185Implemented support for "spurious" Global Lock interrupts. On some 3186systems, a 3187global lock interrupt can occur without the pending flag being set. Upon 3188a 3189GL 3190interrupt, we now ensure that a thread is actually waiting for the lock 3191before 3192signaling GL availability. Rafael Wysocki, Bob Moore. 3193 3194Example Code and Data Size: These are the sizes for the OS-independent 3195acpica.lib 3196produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 3197version of 3198the code includes the debug output trace mechanism and has a much larger 3199code 3200and 3201data size. 3202 3203 Previous Release (VC 9.0): 3204 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3205 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3206 Current Release (VC 9.0): 3207 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 3208 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 3209 32102) iASL Compiler/Disassembler and Tools: 3211 3212Implemented full support for the "SLIC" ACPI table. Includes support in 3213the 3214header files, disassembler, table compiler, and template generator. Bob 3215Moore, 3216Lin Ming. 3217 3218AcpiXtract: Correctly handle embedded comments and messages from 3219AcpiDump. 3220Apparently some or all versions of acpidump will occasionally emit a 3221comment 3222like 3223"Wrong checksum", etc., into the dump file. This was causing problems for 3224AcpiXtract. ACPICA BZ 905. 3225 3226iASL: Fix the Linux makefile by removing an inadvertent double file 3227inclusion. 3228ACPICA BZ 913. 3229 3230AcpiExec: Update installation of operation region handlers. Install one 3231handler 3232for a user-defined address space. This is used by the ASL test suite 3233(ASLTS). 3234 3235---------------------------------------- 323611 February 2011. Summary of changes for version 20110211: 3237 32381) ACPI CA Core Subsystem: 3239 3240Added a mechanism to defer _REG methods for some early-installed 3241handlers. 3242Most user handlers should be installed before call to 3243AcpiEnableSubsystem. 3244However, Event handlers and region handlers should be installed after 3245AcpiInitializeObjects. Override handlers for the "default" regions should 3246be 3247installed early, however. This change executes all _REG methods for the 3248default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 3249chicken/egg issues between them. ACPICA BZ 848. 3250 3251Implemented an optimization for GPE detection. This optimization will 3252simply 3253ignore GPE registers that contain no enabled GPEs -- there is no need to 3254read the register since this information is available internally. This 3255becomes more important on machines with a large GPE space. ACPICA 3256bugzilla 3257884. Lin Ming. Suggestion from Joe Liu. 3258 3259Removed all use of the highly unreliable FADT revision field. The 3260revision 3261number in the FADT has been found to be completely unreliable and cannot 3262be 3263trusted. Only the actual table length can be used to infer the version. 3264This 3265change updates the ACPICA core and the disassembler so that both no 3266longer 3267even look at the FADT version and instead depend solely upon the FADT 3268length. 3269 3270Fix an unresolved name issue for the no-debug and no-error-message source 3271generation cases. The _AcpiModuleName was left undefined in these cases, 3272but 3273it is actually needed as a parameter to some interfaces. Define 3274_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 3275 3276Split several large files (makefiles and project files updated) 3277 utglobal.c -> utdecode.c 3278 dbcomds.c -> dbmethod.c dbnames.c 3279 dsopcode.c -> dsargs.c dscontrol.c 3280 dsload.c -> dsload2.c 3281 aslanalyze.c -> aslbtypes.c aslwalks.c 3282 3283Example Code and Data Size: These are the sizes for the OS-independent 3284acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3285debug version of the code includes the debug output trace mechanism and 3286has 3287a much larger code and data size. 3288 3289 Previous Release (VC 9.0): 3290 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3291 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3292 Current Release (VC 9.0): 3293 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3294 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3295 32962) iASL Compiler/Disassembler and Tools: 3297 3298iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 3299These are useful C-style macros with the standard definitions. ACPICA 3300bugzilla 898. 3301 3302iASL/DTC: Added support for integer expressions and labels. Support for 3303full 3304expressions for all integer fields in all ACPI tables. Support for labels 3305in 3306"generic" portions of tables such as UEFI. See the iASL reference manual. 3307 3308Debugger: Added a command to display the status of global handlers. The 3309"handlers" command will display op region, fixed event, and miscellaneous 3310global handlers. installation status -- and for op regions, whether 3311default 3312or user-installed handler will be used. 3313 3314iASL: Warn if reserved method incorrectly returns a value. Many 3315predefined 3316names are defined such that they do not return a value. If implemented as 3317a 3318method, issue a warning if such a name explicitly returns a value. ACPICA 3319Bugzilla 855. 3320 3321iASL: Added detection of GPE method name conflicts. Detects a conflict 3322where 3323there are two GPE methods of the form _Lxy and _Exy in the same scope. 3324(For 3325example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 3326 3327iASL/DTC: Fixed a couple input scanner issues with comments and line 3328numbers. Comment remover could get confused and miss a comment ending. 3329Fixed 3330a problem with line counter maintenance. 3331 3332iASL/DTC: Reduced the severity of some errors from fatal to error. There 3333is 3334no need to abort on simple errors within a field definition. 3335 3336Debugger: Simplified the output of the help command. All help output now 3337in 3338a single screen, instead of help subcommands. ACPICA Bugzilla 897. 3339 3340---------------------------------------- 334112 January 2011. Summary of changes for version 20110112: 3342 33431) ACPI CA Core Subsystem: 3344 3345Fixed a race condition between method execution and namespace walks that 3346can 3347possibly cause a fault. The problem was apparently introduced in version 334820100528 as a result of a performance optimization that reduces the 3349number 3350of 3351namespace walks upon method exit by using the delete_namespace_subtree 3352function instead of the delete_namespace_by_owner function used 3353previously. 3354Bug is a missing namespace lock in the delete_namespace_subtree function. 3355dana.myers@oracle.com 3356 3357Fixed several issues and a possible fault with the automatic "serialized" 3358method support. History: This support changes a method to "serialized" on 3359the 3360fly if the method generates an AE_ALREADY_EXISTS error, indicating the 3361possibility that it cannot handle reentrancy. This fix repairs a couple 3362of 3363issues seen in the field, especially on machines with many cores: 3364 3365 1) Delete method children only upon the exit of the last thread, 3366 so as to not delete objects out from under other running threads 3367 (and possibly causing a fault.) 3368 2) Set the "serialized" bit for the method only upon the exit of the 3369 Last thread, so as to not cause deadlock when running threads 3370 attempt to exit. 3371 3) Cleanup the use of the AML "MethodFlags" and internal method flags 3372 so that there is no longer any confusion between the two. 3373 3374 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 3375 3376Debugger: Now lock the namespace for duration of a namespace dump. 3377Prevents 3378issues if the namespace is changing dynamically underneath the debugger. 3379Especially affects temporary namespace nodes, since the debugger displays 3380these also. 3381 3382Updated the ordering of include files. The ACPICA headers should appear 3383before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 3384set 3385any necessary compiler-specific defines, etc. Affects the ACPI-related 3386tools 3387and utilities. 3388 3389Updated all ACPICA copyrights and signons to 2011. Added the 2011 3390copyright 3391to all module headers and signons, including the Linux header. This 3392affects 3393virtually every file in the ACPICA core subsystem, iASL compiler, and all 3394utilities. 3395 3396Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 3397project files for VC++ 6.0 are now obsolete. New project files can be 3398found 3399under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 3400details. 3401 3402Example Code and Data Size: These are the sizes for the OS-independent 3403acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3404debug version of the code includes the debug output trace mechanism and 3405has a 3406much larger code and data size. 3407 3408 Previous Release (VC 6.0): 3409 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3410 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3411 Current Release (VC 9.0): 3412 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 3413 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 3414 34152) iASL Compiler/Disassembler and Tools: 3416 3417iASL: Added generic data types to the Data Table compiler. Add "generic" 3418data 3419types such as UINT32, String, Unicode, etc., to simplify the generation 3420of 3421platform-defined tables such as UEFI. Lin Ming. 3422 3423iASL: Added listing support for the Data Table Compiler. Adds listing 3424support 3425(-l) to display actual binary output for each line of input code. 3426 3427---------------------------------------- 342809 December 2010. Summary of changes for version 20101209: 3429 34301) ACPI CA Core Subsystem: 3431 3432Completed the major overhaul of the GPE support code that was begun in 3433July 34342010. Major features include: removal of _PRW execution in ACPICA (host 3435executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 3436changes to existing interfaces, simplification of GPE handler operation, 3437and 3438a handful of new interfaces: 3439 3440 AcpiUpdateAllGpes 3441 AcpiFinishGpe 3442 AcpiSetupGpeForWake 3443 AcpiSetGpeWakeMask 3444 One new file, evxfgpe.c to consolidate all external GPE interfaces. 3445 3446See the ACPICA Programmer Reference for full details and programming 3447information. See the new section 4.4 "General Purpose Event (GPE) 3448Support" 3449for a full overview, and section 8.7 "ACPI General Purpose Event 3450Management" 3451for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 3452Ming, 3453Bob Moore, Rafael Wysocki. 3454 3455Implemented a new GPE feature for Windows compatibility, the "Implicit 3456Wake 3457GPE Notify". This feature will automatically issue a Notify(2) on a 3458device 3459when a Wake GPE is received if there is no corresponding GPE method or 3460handler. ACPICA BZ 870. 3461 3462Fixed a problem with the Scope() operator during table parse and load 3463phase. 3464During load phase (table load or method execution), the scope operator 3465should 3466not enter the target into the namespace. Instead, it should open a new 3467scope 3468at the target location. Linux BZ 19462, ACPICA BZ 882. 3469 3470Example Code and Data Size: These are the sizes for the OS-independent 3471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3472debug version of the code includes the debug output trace mechanism and 3473has a 3474much larger code and data size. 3475 3476 Previous Release: 3477 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 3478 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 3479 Current Release: 3480 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3481 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3482 34832) iASL Compiler/Disassembler and Tools: 3484 3485iASL: Relax the alphanumeric restriction on _CID strings. These strings 3486are 3487"bus-specific" per the ACPI specification, and therefore any characters 3488are 3489acceptable. The only checks that can be performed are for a null string 3490and 3491perhaps for a leading asterisk. ACPICA BZ 886. 3492 3493iASL: Fixed a problem where a syntax error that caused a premature EOF 3494condition on the source file emitted a very confusing error message. The 3495premature EOF is now detected correctly. ACPICA BZ 891. 3496 3497Disassembler: Decode the AccessSize within a Generic Address Structure 3498(byte 3499access, word access, etc.) Note, this field does not allow arbitrary bit 3500access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 3501 3502New: AcpiNames utility - Example namespace dump utility. Shows an example 3503of 3504ACPICA configuration for a minimal namespace dump utility. Uses table and 3505namespace managers, but no AML interpreter. Does not add any 3506functionality 3507over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 3508partition and configure ACPICA. ACPICA BZ 883. 3509 3510AML Debugger: Increased the debugger buffer size for method return 3511objects. 3512Was 4K, increased to 16K. Also enhanced error messages for debugger 3513method 3514execution, including the buffer overflow case. 3515 3516---------------------------------------- 351713 October 2010. Summary of changes for version 20101013: 3518 35191) ACPI CA Core Subsystem: 3520 3521Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 3522now 3523clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 3524HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 3525 3526Changed the type of the predefined namespace object _TZ from ThermalZone 3527to 3528Device. This was found to be confusing to the host software that 3529processes 3530the various thermal zones, since _TZ is not really a ThermalZone. 3531However, 3532a 3533Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 3534Zhang. 3535 3536Added Windows Vista SP2 to the list of supported _OSI strings. The actual 3537string is "Windows 2006 SP2". 3538 3539Eliminated duplicate code in AcpiUtExecute* functions. Now that the 3540nsrepair 3541code automatically repairs _HID-related strings, this type of code is no 3542longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 3543878. 3544 3545Example Code and Data Size: These are the sizes for the OS-independent 3546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3547debug version of the code includes the debug output trace mechanism and 3548has a 3549much larger code and data size. 3550 3551 Previous Release: 3552 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3553 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3554 Current Release: 3555 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3556 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3557 35582) iASL Compiler/Disassembler and Tools: 3559 3560iASL: Implemented additional compile-time validation for _HID strings. 3561The 3562non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 3563length 3564of 3565the string must be exactly seven or eight characters. For both _HID and 3566_CID 3567strings, all characters must be alphanumeric. ACPICA BZ 874. 3568 3569iASL: Allow certain "null" resource descriptors. Some BIOS code creates 3570descriptors that are mostly or all zeros, with the expectation that they 3571will 3572be filled in at runtime. iASL now allows this as long as there is a 3573"resource 3574tag" (name) associated with the descriptor, which gives the ASL a handle 3575needed to modify the descriptor. ACPICA BZ 873. 3576 3577Added single-thread support to the generic Unix application OSL. 3578Primarily 3579for iASL support, this change removes the use of semaphores in the 3580single- 3581threaded ACPICA tools/applications - increasing performance. The 3582_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 3583option. ACPICA BZ 879. 3584 3585AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 3586support 3587for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 3588 3589iASL: Moved all compiler messages to a new file, aslmessages.h. 3590 3591---------------------------------------- 359215 September 2010. Summary of changes for version 20100915: 3593 35941) ACPI CA Core Subsystem: 3595 3596Removed the AcpiOsDerivePciId OSL interface. The various host 3597implementations 3598of this function were not OS-dependent and are now obsolete and can be 3599removed from all host OSLs. This function has been replaced by 3600AcpiHwDerivePciId, which is now part of the ACPICA core code. 3601AcpiHwDerivePciId has been implemented without recursion. Adds one new 3602module, hwpci.c. ACPICA BZ 857. 3603 3604Implemented a dynamic repair for _HID and _CID strings. The following 3605problems are now repaired at runtime: 1) Remove a leading asterisk in the 3606string, and 2) the entire string is uppercased. Both repairs are in 3607accordance with the ACPI specification and will simplify host driver 3608code. 3609ACPICA BZ 871. 3610 3611The ACPI_THREAD_ID type is no longer configurable, internally it is now 3612always UINT64. This simplifies the ACPICA code, especially any printf 3613output. 3614UINT64 is the only common data type for all thread_id types across all 3615operating systems. It is now up to the host OSL to cast the native 3616thread_id 3617type to UINT64 before returning the value to ACPICA (via 3618AcpiOsGetThreadId). 3619Lin Ming, Bob Moore. 3620 3621Added the ACPI_INLINE type to enhance the ACPICA configuration. The 3622"inline" 3623keyword is not standard across compilers, and this type allows inline to 3624be 3625configured on a per-compiler basis. Lin Ming. 3626 3627Made the system global AcpiGbl_SystemAwakeAndRunning publically 3628available. 3629Added an extern for this boolean in acpixf.h. Some hosts utilize this 3630value 3631during suspend/restore operations. ACPICA BZ 869. 3632 3633All code that implements error/warning messages with the "ACPI:" prefix 3634has 3635been moved to a new module, utxferror.c. 3636 3637The UINT64_OVERLAY was moved to utmath.c, which is the only module where 3638it 3639is used. ACPICA BZ 829. Lin Ming, Bob Moore. 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: 89.1K Code, 19.0K Data, 108.1K Total 3649 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 3650 Current Release: 3651 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 3652 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 3653 36542) iASL Compiler/Disassembler and Tools: 3655 3656iASL/Disassembler: Write ACPI errors to stderr instead of the output 3657file. 3658This keeps the output files free of random error messages that may 3659originate 3660from within the namespace/interpreter code. Used this opportunity to 3661merge 3662all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 3663866. Lin Ming, Bob Moore. 3664 3665Tools: update some printfs for ansi warnings on size_t. Handle width 3666change 3667of size_t on 32-bit versus 64-bit generations. Lin Ming. 3668 3669---------------------------------------- 367006 August 2010. Summary of changes for version 20100806: 3671 36721) ACPI CA Core Subsystem: 3673 3674Designed and implemented a new host interface to the _OSI support code. 3675This 3676will allow the host to dynamically add or remove multiple _OSI strings, 3677as 3678well as install an optional handler that is called for each _OSI 3679invocation. 3680Also added a new AML debugger command, 'osi' to display and modify the 3681global 3682_OSI string table, and test support in the AcpiExec utility. See the 3683ACPICA 3684reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 3685New Functions: 3686 AcpiInstallInterface - Add an _OSI string. 3687 AcpiRemoveInterface - Delete an _OSI string. 3688 AcpiInstallInterfaceHandler - Install optional _OSI handler. 3689Obsolete Functions: 3690 AcpiOsValidateInterface - no longer used. 3691New Files: 3692 source/components/utilities/utosi.c 3693 3694Re-introduced the support to enable multi-byte transfers for Embedded 3695Controller (EC) operation regions. A reported problem was found to be a 3696bug 3697in the host OS, not in the multi-byte support. Previously, the maximum 3698data 3699size passed to the EC operation region handler was a single byte. There 3700are 3701often EC Fields larger than one byte that need to be transferred, and it 3702is 3703useful for the EC driver to lock these as a single transaction. This 3704change 3705enables single transfers larger than 8 bits. This effectively changes the 3706access to the EC space from ByteAcc to AnyAcc, and will probably require 3707changes to the host OS Embedded Controller driver to enable 16/32/64/256- 3708bit 3709transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 3710 3711Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 3712prototype in acpiosxf.h had the output value pointer as a (void *). 3713It should be a (UINT64 *). This may affect some host OSL code. 3714 3715Fixed a couple problems with the recently modified Linux makefiles for 3716iASL 3717and AcpiExec. These new makefiles place the generated object files in the 3718local directory so that there can be no collisions between the files that 3719are 3720shared between them that are compiled with different options. 3721 3722Example Code and Data Size: These are the sizes for the OS-independent 3723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3724debug version of the code includes the debug output trace mechanism and 3725has a 3726much larger code and data size. 3727 3728 Previous Release: 3729 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3730 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 3731 Current Release: 3732 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 3733 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 3734 37352) iASL Compiler/Disassembler and Tools: 3736 3737iASL/Disassembler: Added a new option (-da, "disassemble all") to load 3738the 3739namespace from and disassemble an entire group of AML files. Useful for 3740loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 3741and 3742disassembling with one simple command. ACPICA BZ 865. Lin Ming. 3743 3744iASL: Allow multiple invocations of -e option. This change allows 3745multiple 3746uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 3747834. 3748Lin Ming. 3749 3750---------------------------------------- 375102 July 2010. Summary of changes for version 20100702: 3752 37531) ACPI CA Core Subsystem: 3754 3755Implemented several updates to the recently added GPE reference count 3756support. The model for "wake" GPEs is changing to give the host OS 3757complete 3758control of these GPEs. Eventually, the ACPICA core will not execute any 3759_PRW 3760methods, since the host already must execute them. Also, additional 3761changes 3762were made to help ensure that the reference counts are kept in proper 3763synchronization with reality. Rafael J. Wysocki. 3764 37651) Ensure that GPEs are not enabled twice during initialization. 37662) Ensure that GPE enable masks stay in sync with the reference count. 37673) Do not inadvertently enable GPEs when writing GPE registers. 37684) Remove the internal wake reference counter and add new AcpiGpeWakeup 3769interface. This interface will set or clear individual GPEs for wakeup. 37705) Remove GpeType argument from AcpiEnable and AcpiDisable. These 3771interfaces 3772are now used for "runtime" GPEs only. 3773 3774Changed the behavior of the GPE install/remove handler interfaces. The 3775GPE 3776is 3777no longer disabled during this process, as it was found to cause problems 3778on 3779some machines. Rafael J. Wysocki. 3780 3781Reverted a change introduced in version 20100528 to enable Embedded 3782Controller multi-byte transfers. This change was found to cause problems 3783with 3784Index Fields and possibly Bank Fields. It will be reintroduced when these 3785problems have been resolved. 3786 3787Fixed a problem with references to Alias objects within Package Objects. 3788A 3789reference to an Alias within the definition of a Package was not always 3790resolved properly. Aliases to objects like Processors, Thermal zones, 3791etc. 3792were resolved to the actual object instead of a reference to the object 3793as 3794it 3795should be. Package objects are only allowed to contain integer, string, 3796buffer, package, and reference objects. Redhat bugzilla 608648. 3797 3798Example Code and Data Size: These are the sizes for the OS-independent 3799acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3800debug version of the code includes the debug output trace mechanism and 3801has a 3802much larger code and data size. 3803 3804 Previous Release: 3805 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3806 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 3807 Current Release: 3808 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3809 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 3810 38112) iASL Compiler/Disassembler and Tools: 3812 3813iASL: Implemented a new compiler subsystem to allow definition and 3814compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 3815These 3816are called "ACPI Data Tables", and the new compiler is the "Data Table 3817Compiler". This compiler is intended to simplify the existing error-prone 3818process of creating these tables for the BIOS, as well as allowing the 3819disassembly, modification, recompilation, and override of existing ACPI 3820data 3821tables. See the iASL User Guide for detailed information. 3822 3823iASL: Implemented a new Template Generator option in support of the new 3824Data 3825Table Compiler. This option will create examples of all known ACPI tables 3826that can be used as the basis for table development. See the iASL 3827documentation and the -T option. 3828 3829Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 3830Descriptor Table). 3831 3832Updated the Linux makefiles for iASL and AcpiExec to place the generated 3833object files in the local directory so that there can be no collisions 3834between the shared files between them that are generated with different 3835options. 3836 3837Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 3838Use 3839the #define __APPLE__ to enable this support. 3840 3841---------------------------------------- 384228 May 2010. Summary of changes for version 20100528: 3843 3844Note: The ACPI 4.0a specification was released on April 5, 2010 and is 3845available at www.acpi.info. This is primarily an errata release. 3846 38471) ACPI CA Core Subsystem: 3848 3849Undefined ACPI tables: We are looking for the definitions for the 3850following 3851ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 3852 3853Implemented support to enable multi-byte transfers for Embedded 3854Controller 3855(EC) operation regions. Previously, the maximum data size passed to the 3856EC 3857operation region handler was a single byte. There are often EC Fields 3858larger 3859than one byte that need to be transferred, and it is useful for the EC 3860driver 3861to lock these as a single transaction. This change enables single 3862transfers 3863larger than 8 bits. This effectively changes the access to the EC space 3864from 3865ByteAcc to AnyAcc, and will probably require changes to the host OS 3866Embedded 3867Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 3868bit 3869transfers. Alexey Starikovskiy, Lin Ming 3870 3871Implemented a performance enhancement for namespace search and access. 3872This 3873change enhances the performance of namespace searches and walks by adding 3874a 3875backpointer to the parent in each namespace node. On large namespaces, 3876this 3877change can improve overall ACPI performance by up to 9X. Adding a pointer 3878to 3879each namespace node increases the overall size of the internal namespace 3880by 3881about 5%, since each namespace entry usually consists of both a namespace 3882node and an ACPI operand object. However, this is the first growth of the 3883namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 3884 3885Implemented a performance optimization that reduces the number of 3886namespace 3887walks. On control method exit, only walk the namespace if the method is 3888known 3889to have created namespace objects outside of its local scope. Previously, 3890the 3891entire namespace was traversed on each control method exit. This change 3892can 3893improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 3894Moore. 3895 3896Added support to truncate I/O addresses to 16 bits for Windows 3897compatibility. 3898Some ASL code has been seen in the field that inadvertently has bits set 3899above bit 15. This feature is optional and is enabled if the BIOS 3900requests 3901any Windows OSI strings. It can also be enabled by the host OS. Matthew 3902Garrett, Bob Moore. 3903 3904Added support to limit the maximum time for the ASL Sleep() operator. To 3905prevent accidental deep sleeps, limit the maximum time that Sleep() will 3906actually sleep. Configurable, the default maximum is two seconds. ACPICA 3907bugzilla 854. 3908 3909Added run-time validation support for the _WDG and_WED Microsoft 3910predefined 3911methods. These objects are defined by "Windows Instrumentation", and are 3912not 3913part of the ACPI spec. ACPICA BZ 860. 3914 3915Expanded all statistic counters used during namespace and device 3916initialization from 16 to 32 bits in order to support very large 3917namespaces. 3918 3919Replaced all instances of %d in printf format specifiers with %u since 3920nearly 3921all integers in ACPICA are unsigned. 3922 3923Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 3924returned 3925as AE_NO_HANDLER. 3926 3927Example Code and Data Size: These are the sizes for the OS-independent 3928acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3929debug version of the code includes the debug output trace mechanism and 3930has a 3931much larger code and data size. 3932 3933 Previous Release: 3934 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 3935 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 3936 Current Release: 3937 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 3938 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 3939 39402) iASL Compiler/Disassembler and Tools: 3941 3942iASL: Added compiler support for the _WDG and_WED Microsoft predefined 3943methods. These objects are defined by "Windows Instrumentation", and are 3944not 3945part of the ACPI spec. ACPICA BZ 860. 3946 3947AcpiExec: added option to disable the memory tracking mechanism. The -dt 3948option will disable the tracking mechanism, which improves performance 3949considerably. 3950 3951AcpiExec: Restructured the command line options into -d (disable) and -e 3952(enable) options. 3953 3954---------------------------------------- 395528 April 2010. Summary of changes for version 20100428: 3956 39571) ACPI CA Core Subsystem: 3958 3959Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 3960including FADT-based and GPE Block Devices, execute any _PRW methods in 3961the 3962new table, and process any _Lxx/_Exx GPE methods in the new table. Any 3963runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 3964immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 3965Devices. Provides compatibility with other ACPI implementations. Two new 3966files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 3967Moore. 3968 3969Fixed a regression introduced in version 20100331 within the table 3970manager 3971where initial table loading could fail. This was introduced in the fix 3972for 3973AcpiReallocateRootTable. Also, renamed some of fields in the table 3974manager 3975data structures to clarify their meaning and use. 3976 3977Fixed a possible allocation overrun during internal object copy in 3978AcpiUtCopySimpleObject. The original code did not correctly handle the 3979case 3980where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 3981847. 3982 3983Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 3984possible access beyond end-of-allocation. Also, now fully validate 3985descriptor 3986(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 3987 3988Example Code and Data Size: These are the sizes for the OS-independent 3989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3990debug version of the code includes the debug output trace mechanism and 3991has a 3992much larger code and data size. 3993 3994 Previous Release: 3995 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 3996 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 3997 Current Release: 3998 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 3999 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 4000 40012) iASL Compiler/Disassembler and Tools: 4002 4003iASL: Implemented Min/Max/Len/Gran validation for address resource 4004descriptors. This change implements validation for the address fields 4005that 4006are common to all address-type resource descriptors. These checks are 4007implemented: Checks for valid Min/Max, length within the Min/Max window, 4008valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 4009per 4010table 6-40 in the ACPI 4.0a specification. Also split the large 4011aslrestype1.c 4012and aslrestype2.c files into five new files. ACPICA BZ 840. 4013 4014iASL: Added support for the _Wxx predefined names. This support was 4015missing 4016and these names were not recognized by the compiler as valid predefined 4017names. ACPICA BZ 851. 4018 4019iASL: Added an error for all predefined names that are defined to return 4020no 4021value and thus must be implemented as Control Methods. These include all 4022of 4023the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 4024names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 4025 4026iASL: Implemented the -ts option to emit hex AML data in ASL format, as 4027an 4028ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 4029be 4030dynamically loaded via the Load() operator. Also cleaned up output for 4031the 4032- 4033ta and -tc options. ACPICA BZ 853. 4034 4035Tests: Added a new file with examples of extended iASL error checking. 4036Demonstrates the advanced error checking ability of the iASL compiler. 4037Available at tests/misc/badcode.asl. 4038 4039---------------------------------------- 404031 March 2010. Summary of changes for version 20100331: 4041 40421) ACPI CA Core Subsystem: 4043 4044Completed a major update for the GPE support in order to improve support 4045for 4046shared GPEs and to simplify both host OS and ACPICA code. Added a 4047reference 4048count mechanism to support shared GPEs that require multiple device 4049drivers. 4050Several external interfaces have changed. One external interface has been 4051removed. One new external interface was added. Most of the GPE external 4052interfaces now use the GPE spinlock instead of the events mutex (and the 4053Flags parameter for many GPE interfaces has been removed.) See the 4054updated 4055ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 4056Rafael 4057Wysocki. ACPICA BZ 831. 4058 4059Changed: 4060 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 4061Removed: 4062 AcpiSetGpeType 4063New: 4064 AcpiSetGpe 4065 4066Implemented write support for DataTable operation regions. These regions 4067are 4068defined via the DataTableRegion() operator. Previously, only read support 4069was 4070implemented. The ACPI specification allows DataTableRegions to be 4071read/write, 4072however. 4073 4074Implemented a new subsystem option to force a copy of the DSDT to local 4075memory. Optionally copy the entire DSDT to local memory (instead of 4076simply 4077mapping it.) There are some (albeit very rare) BIOSs that corrupt or 4078replace 4079the original DSDT, creating the need for this option. Default is FALSE, 4080do 4081not copy the DSDT. 4082 4083Implemented detection of a corrupted or replaced DSDT. This change adds 4084support to detect a DSDT that has been corrupted and/or replaced from 4085outside 4086the OS (by firmware). This is typically catastrophic for the system, but 4087has 4088been seen on some machines. Once this problem has been detected, the DSDT 4089copy option can be enabled via system configuration. Lin Ming, Bob Moore. 4090 4091Fixed two problems with AcpiReallocateRootTable during the root table 4092copy. 4093When copying the root table to the new allocation, the length used was 4094incorrect. The new size was used instead of the current table size, 4095meaning 4096too much data was copied. Also, the count of available slots for ACPI 4097tables 4098was not set correctly. Alexey Starikovskiy, Bob Moore. 4099 4100Example Code and Data Size: These are the sizes for the OS-independent 4101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4102debug version of the code includes the debug output trace mechanism and 4103has a 4104much larger code and data size. 4105 4106 Previous Release: 4107 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4108 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4109 Current Release: 4110 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 4111 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 4112 41132) iASL Compiler/Disassembler and Tools: 4114 4115iASL: Implement limited typechecking for values returned from predefined 4116control methods. The type of any returned static (unnamed) object is now 4117validated. For example, Return(1). ACPICA BZ 786. 4118 4119iASL: Fixed a predefined name object verification regression. Fixes a 4120problem 4121introduced in version 20100304. An error is incorrectly generated if a 4122predefined name is declared as a static named object with a value defined 4123using the keywords "Zero", "One", or "Ones". Lin Ming. 4124 4125iASL: Added Windows 7 support for the -g option (get local ACPI tables) 4126by 4127reducing the requested registry access rights. ACPICA BZ 842. 4128 4129Disassembler: fixed a possible fault when generating External() 4130statements. 4131Introduced in commit ae7d6fd: Properly handle externals with parent- 4132prefix 4133(carat). Fixes a string length allocation calculation. Lin Ming. 4134 4135---------------------------------------- 413604 March 2010. Summary of changes for version 20100304: 4137 41381) ACPI CA Core Subsystem: 4139 4140Fixed a possible problem with the AML Mutex handling function 4141AcpiExReleaseMutex where the function could fault under the very rare 4142condition when the interpreter has blocked, the interpreter lock is 4143released, 4144the interpreter is then reentered via the same thread, and attempts to 4145acquire an AML mutex that was previously acquired. FreeBSD report 140979. 4146Lin 4147Ming. 4148 4149Implemented additional configuration support for the AML "Debug Object". 4150Output from the debug object can now be enabled via a global variable, 4151AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 4152debugging. 4153This debug output is now available in the release version of ACPICA 4154instead 4155of just the debug version. Also, the entire debug output module can now 4156be 4157configured out of the ACPICA build if desired. One new file added, 4158executer/exdebug.c. Lin Ming, Bob Moore. 4159 4160Added header support for the ACPI MCHI table (Management Controller Host 4161Interface Table). This table was added in ACPI 4.0, but the defining 4162document 4163has only recently become available. 4164 4165Standardized output of integer values for ACPICA warnings/errors. Always 4166use 41670x prefix for hex output, always use %u for unsigned integer decimal 4168output. 4169Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 4170400 4171invocations.) These invocations were converted from the original 4172ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 4173 4174Example Code and Data Size: These are the sizes for the OS-independent 4175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4176debug version of the code includes the debug output trace mechanism and 4177has a 4178much larger code and data size. 4179 4180 Previous Release: 4181 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4182 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4183 Current Release: 4184 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 4185 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 4186 41872) iASL Compiler/Disassembler and Tools: 4188 4189iASL: Implemented typechecking support for static (non-control method) 4190predefined named objects that are declared with the Name() operator. For 4191example, the type of this object is now validated to be of type Integer: 4192Name(_BBN, 1). This change migrates the compiler to using the core 4193predefined 4194name table instead of maintaining a local version. Added a new file, 4195aslpredef.c. ACPICA BZ 832. 4196 4197Disassembler: Added support for the ACPI 4.0 MCHI table. 4198 4199---------------------------------------- 420021 January 2010. Summary of changes for version 20100121: 4201 42021) ACPI CA Core Subsystem: 4203 4204Added the 2010 copyright to all module headers and signons. This affects 4205virtually every file in the ACPICA core subsystem, the iASL compiler, the 4206tools/utilities, and the test suites. 4207 4208Implemented a change to the AcpiGetDevices interface to eliminate 4209unnecessary 4210invocations of the _STA method. In the case where a specific _HID is 4211requested, do not run _STA until a _HID match is found. This eliminates 4212potentially dozens of _STA calls during a search for a particular 4213device/HID, 4214which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 4215 4216Implemented an additional repair for predefined method return values. 4217Attempt 4218to repair unexpected NULL elements within returned Package objects. 4219Create 4220an 4221Integer of value zero, a NULL String, or a zero-length Buffer as 4222appropriate. 4223ACPICA BZ 818. Lin Ming, Bob Moore. 4224 4225Removed the obsolete ACPI_INTEGER data type. This type was introduced as 4226the 4227code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 4228(with 422964-bit AML integers). It is now obsolete and this change removes it from 4230the 4231ACPICA code base, replaced by UINT64. The original typedef has been 4232retained 4233for now for compatibility with existing device driver code. ACPICA BZ 4234824. 4235 4236Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 4237in 4238the parse tree object. 4239 4240Added additional warning options for the gcc-4 generation. Updated the 4241source 4242accordingly. This includes some code restructuring to eliminate 4243unreachable 4244code, elimination of some gotos, elimination of unused return values, 4245some 4246additional casting, and removal of redundant declarations. 4247 4248Example Code and Data Size: These are the sizes for the OS-independent 4249acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4250debug version of the code includes the debug output trace mechanism and 4251has a 4252much larger code and data size. 4253 4254 Previous Release: 4255 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4256 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4257 Current Release: 4258 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 4259 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 4260 42612) iASL Compiler/Disassembler and Tools: 4262 4263No functional changes for this release. 4264 4265---------------------------------------- 426614 December 2009. Summary of changes for version 20091214: 4267 42681) ACPI CA Core Subsystem: 4269 4270Enhanced automatic data type conversions for predefined name repairs. 4271This 4272change expands the automatic repairs/conversions for predefined name 4273return 4274values to make Integers, Strings, and Buffers fully interchangeable. 4275Also, 4276a 4277Buffer can be converted to a Package of Integers if necessary. The 4278nsrepair.c 4279module was completely restructured. Lin Ming, Bob Moore. 4280 4281Implemented automatic removal of null package elements during predefined 4282name 4283repairs. This change will automatically remove embedded and trailing NULL 4284package elements from returned package objects that are defined to 4285contain 4286a 4287variable number of sub-packages. The driver is then presented with a 4288package 4289with no null elements to deal with. ACPICA BZ 819. 4290 4291Implemented a repair for the predefined _FDE and _GTM names. The expected 4292return value for both names is a Buffer of 5 DWORDs. This repair fixes 4293two 4294possible problems (both seen in the field), where a package of integers 4295is 4296returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 4297Kim. 4298 4299Implemented additional module-level code support. This change will 4300properly 4301execute module-level code that is not at the root of the namespace (under 4302a 4303Device object, etc.). Now executes the code within the current scope 4304instead 4305of the root. ACPICA BZ 762. Lin Ming. 4306 4307Fixed possible mutex acquisition errors when running _REG methods. Fixes 4308a 4309problem where mutex errors can occur when running a _REG method that is 4310in 4311the same scope as a method-defined operation region or an operation 4312region 4313under a module-level IF block. This type of code is rare, so the problem 4314has 4315not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 4316 4317Fixed a possible memory leak during module-level code execution. An 4318object 4319could be leaked for each block of executed module-level code if the 4320interpreter slack mode is enabled This change deletes any implicitly 4321returned 4322object from the module-level code block. Lin Ming. 4323 4324Removed messages for successful predefined repair(s). The repair 4325mechanism 4326was considered too wordy. Now, messages are only unconditionally emitted 4327if 4328the return object cannot be repaired. Existing messages for successful 4329repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 4330827. 4331 4332Example Code and Data Size: These are the sizes for the OS-independent 4333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4334debug version of the code includes the debug output trace mechanism and 4335has a 4336much larger code and data size. 4337 4338 Previous Release: 4339 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4340 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4341 Current Release: 4342 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 4343 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 4344 43452) iASL Compiler/Disassembler and Tools: 4346 4347iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 4348files 4349were no longer automatically removed at the termination of the compile. 4350 4351acpiexec: Implemented the -f option to specify default region fill value. 4352This option specifies the value used to initialize buffers that simulate 4353operation regions. Default value is zero. Useful for debugging problems 4354that 4355depend on a specific initial value for a region or field. 4356 4357---------------------------------------- 435812 November 2009. Summary of changes for version 20091112: 4359 43601) ACPI CA Core Subsystem: 4361 4362Implemented a post-order callback to AcpiWalkNamespace. The existing 4363interface only has a pre-order callback. This change adds an additional 4364parameter for a post-order callback which will be more useful for bus 4365scans. 4366ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 4367 4368Modified the behavior of the operation region memory mapping cache for 4369SystemMemory. Ensure that the memory mappings created for operation 4370regions 4371do not cross 4K page boundaries. Crossing a page boundary while mapping 4372regions can cause kernel warnings on some hosts if the pages have 4373different 4374attributes. Such regions are probably BIOS bugs, and this is the 4375workaround. 4376Linux BZ 14445. Lin Ming. 4377 4378Implemented an automatic repair for predefined methods that must return 4379sorted lists. This change will repair (by sorting) packages returned by 4380_ALR, 4381_PSS, and _TSS. Drivers can now assume that the packages are correctly 4382sorted 4383and do not contain NULL package elements. Adds one new file, 4384namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 4385 4386Fixed a possible fault during predefined name validation if a return 4387Package 4388object contains NULL elements. Also adds a warning if a NULL element is 4389followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 4390may 4391include repair or removal of all such NULL elements where possible. 4392 4393Implemented additional module-level executable AML code support. This 4394change 4395will execute module-level code that is not at the root of the namespace 4396(under a Device object, etc.) at table load time. Module-level executable 4397AML 4398code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 4399 4400Implemented a new internal function to create Integer objects. This 4401function 4402simplifies miscellaneous object creation code. ACPICA BZ 823. 4403 4404Reduced the severity of predefined repair messages, Warning to Info. 4405Since 4406the object was successfully repaired, a warning is too severe. Reduced to 4407an 4408info message for now. These messages may eventually be changed to debug- 4409only. 4410ACPICA BZ 812. 4411 4412Example Code and Data Size: These are the sizes for the OS-independent 4413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4414debug version of the code includes the debug output trace mechanism and 4415has a 4416much larger code and data size. 4417 4418 Previous Release: 4419 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4420 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4421 Current Release: 4422 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 4423 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 4424 44252) iASL Compiler/Disassembler and Tools: 4426 4427iASL: Implemented Switch() with While(1) so that Break works correctly. 4428This 4429change correctly implements the Switch operator with a surrounding 4430While(1) 4431so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 4432 4433iASL: Added a message if a package initializer list is shorter than 4434package 4435length. Adds a new remark for a Package() declaration if an initializer 4436list 4437exists, but is shorter than the declared length of the package. Although 4438technically legal, this is probably a coding error and it is seen in the 4439field. ACPICA BZ 815. Lin Ming, Bob Moore. 4440 4441iASL: Fixed a problem where the compiler could fault after the maximum 4442number 4443of errors was reached (200). 4444 4445acpixtract: Fixed a possible warning for pointer cast if the compiler 4446warning 4447level set very high. 4448 4449---------------------------------------- 445013 October 2009. Summary of changes for version 20091013: 4451 44521) ACPI CA Core Subsystem: 4453 4454Fixed a problem where an Operation Region _REG method could be executed 4455more 4456than once. If a custom address space handler is installed by the host 4457before 4458the "initialize operation regions" phase of the ACPICA initialization, 4459any 4460_REG methods for that address space could be executed twice. This change 4461fixes the problem. ACPICA BZ 427. Lin Ming. 4462 4463Fixed a possible memory leak for the Scope() ASL operator. When the exact 4464invocation of "Scope(\)" is executed (change scope to root), one internal 4465operand object was leaked. Lin Ming. 4466 4467Implemented a run-time repair for the _MAT predefined method. If the _MAT 4468return value is defined as a Field object in the AML, and the field 4469size is less than or equal to the default width of an integer (32 or 447064),_MAT 4471can incorrectly return an Integer instead of a Buffer. ACPICA now 4472automatically repairs this problem. ACPICA BZ 810. 4473 4474Implemented a run-time repair for the _BIF and _BIX predefined methods. 4475The 4476"OEM Information" field is often incorrectly returned as an Integer with 4477value zero if the field is not supported by the platform. This is due to 4478an 4479ambiguity in the ACPI specification. The field should always be a string. 4480ACPICA now automatically repairs this problem by returning a NULL string 4481within the returned Package. ACPICA BZ 807. 4482 4483Example Code and Data Size: These are the sizes for the OS-independent 4484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4485debug version of the code includes the debug output trace mechanism and 4486has a 4487much larger code and data size. 4488 4489 Previous Release: 4490 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 4491 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 4492 Current Release: 4493 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 4494 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 4495 44962) iASL Compiler/Disassembler and Tools: 4497 4498Disassembler: Fixed a problem where references to external symbols that 4499contained one or more parent-prefixes (carats) were not handled 4500correctly, 4501possibly causing a fault. ACPICA BZ 806. Lin Ming. 4502 4503Disassembler: Restructured the code so that all functions that handle 4504external symbols are in a single module. One new file is added, 4505common/dmextern.c. 4506 4507AML Debugger: Added a max count argument for the Batch command (which 4508executes multiple predefined methods within the namespace.) 4509 4510iASL: Updated the compiler documentation (User Reference.) Available at 4511http://www.acpica.org/documentation/. ACPICA BZ 750. 4512 4513AcpiXtract: Updated for Lint and other formatting changes. Close all open 4514files. 4515 4516---------------------------------------- 451703 September 2009. Summary of changes for version 20090903: 4518 45191) ACPI CA Core Subsystem: 4520 4521For Windows Vista compatibility, added the automatic execution of an _INI 4522method located at the namespace root (\_INI). This method is executed at 4523table load time. This support is in addition to the automatic execution 4524of 4525\_SB._INI. Lin Ming. 4526 4527Fixed a possible memory leak in the interpreter for AML package objects 4528if 4529the package initializer list is longer than the defined size of the 4530package. 4531This apparently can only happen if the BIOS changes the package size on 4532the 4533fly (seen in a _PSS object), as ASL compilers do not allow this. The 4534interpreter will truncate the package to the defined size (and issue an 4535error 4536message), but previously could leave the extra objects undeleted if they 4537were 4538pre-created during the argument processing (such is the case if the 4539package 4540consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 4541 4542Fixed a problem seen when a Buffer or String is stored to itself via ASL. 4543This has been reported in the field. Previously, ACPICA would zero out 4544the 4545buffer/string. Now, the operation is treated as a noop. Provides Windows 4546compatibility. ACPICA BZ 803. Lin Ming. 4547 4548Removed an extraneous error message for ASL constructs of the form 4549Store(LocalX,LocalX) when LocalX is uninitialized. These curious 4550statements 4551are seen in many BIOSs and are once again treated as NOOPs and no error 4552is 4553emitted when they are encountered. ACPICA BZ 785. 4554 4555Fixed an extraneous warning message if a _DSM reserved method returns a 4556Package object. _DSM can return any type of object, so validation on the 4557return type cannot be performed. ACPICA BZ 802. 4558 4559Example Code and Data Size: These are the sizes for the OS-independent 4560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4561debug version of the code includes the debug output trace mechanism and 4562has a 4563much larger code and data size. 4564 4565 Previous Release: 4566 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 4567 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 4568 Current Release: 4569 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 4570 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 4571 45722) iASL Compiler/Disassembler and Tools: 4573 4574iASL: Fixed a problem with the use of the Alias operator and Resource 4575Templates. The correct alias is now constructed and no error is emitted. 4576ACPICA BZ 738. 4577 4578iASL: Implemented the -I option to specify additional search directories 4579for 4580include files. Allows multiple additional search paths for include files. 4581Directories are searched in the order specified on the command line 4582(after 4583the local directory is searched.) ACPICA BZ 800. 4584 4585iASL: Fixed a problem where the full pathname for include files was not 4586emitted for warnings/errors. This caused the IDE support to not work 4587properly. ACPICA BZ 765. 4588 4589iASL: Implemented the -@ option to specify a Windows-style response file 4590containing additional command line options. ACPICA BZ 801. 4591 4592AcpiExec: Added support to load multiple AML files simultaneously (such 4593as 4594a 4595DSDT and multiple SSDTs). Also added support for wildcards within the AML 4596pathname. These features allow all machine tables to be easily loaded and 4597debugged together. ACPICA BZ 804. 4598 4599Disassembler: Added missing support for disassembly of HEST table Error 4600Bank 4601subtables. 4602 4603---------------------------------------- 460430 July 2009. Summary of changes for version 20090730: 4605 4606The ACPI 4.0 implementation for ACPICA is complete with this release. 4607 46081) ACPI CA Core Subsystem: 4609 4610ACPI 4.0: Added header file support for all new and changed ACPI tables. 4611Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 4612new 4613for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 4614BERT, 4615EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 4616There 4617have been some ACPI 4.0 changes to other existing tables. Split the large 4618actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 4619 4620ACPI 4.0: Implemented predefined name validation for all new names. There 4621are 462231 new names in ACPI 4.0. The predefined validation module was split into 4623two 4624files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 4625 4626Implemented support for so-called "module-level executable code". This is 4627executable AML code that exists outside of any control method and is 4628intended 4629to be executed at table load time. Although illegal since ACPI 2.0, this 4630type 4631of code still exists and is apparently still being created. Blocks of 4632this 4633code are now detected and executed as intended. Currently, the code 4634blocks 4635must exist under either an If, Else, or While construct; these are the 4636typical cases seen in the field. ACPICA BZ 762. Lin Ming. 4637 4638Implemented an automatic dynamic repair for predefined names that return 4639nested Package objects. This applies to predefined names that are defined 4640to 4641return a variable-length Package of sub-packages. If the number of sub- 4642packages is one, BIOS code is occasionally seen that creates a simple 4643single 4644package with no sub-packages. This code attempts to fix the problem by 4645wrapping a new package object around the existing package. These methods 4646can 4647be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 4648BZ 4649790. 4650 4651Fixed a regression introduced in 20090625 for the AcpiGetDevices 4652interface. 4653The _HID/_CID matching was broken and no longer matched IDs correctly. 4654ACPICA 4655BZ 793. 4656 4657Fixed a problem with AcpiReset where the reset would silently fail if the 4658register was one of the protected I/O ports. AcpiReset now bypasses the 4659port 4660validation mechanism. This may eventually be driven into the 4661AcpiRead/Write 4662interfaces. 4663 4664Fixed a regression related to the recent update of the AcpiRead/Write 4665interfaces. A sleep/suspend could fail if the optional PM2 Control 4666register 4667does not exist during an attempt to write the Bus Master Arbitration bit. 4668(However, some hosts already delete the code that writes this bit, and 4669the 4670code may in fact be obsolete at this date.) ACPICA BZ 799. 4671 4672Fixed a problem where AcpiTerminate could fault if inadvertently called 4673twice 4674in succession. ACPICA BZ 795. 4675 4676Example Code and Data Size: These are the sizes for the OS-independent 4677acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4678debug version of the code includes the debug output trace mechanism and 4679has a 4680much larger code and data size. 4681 4682 Previous Release: 4683 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 4684 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 4685 Current Release: 4686 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 4687 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 4688 46892) iASL Compiler/Disassembler and Tools: 4690 4691ACPI 4.0: Implemented disassembler support for all new ACPI tables and 4692changes to existing tables. ACPICA BZ 775. 4693 4694---------------------------------------- 469525 June 2009. Summary of changes for version 20090625: 4696 4697The ACPI 4.0 Specification was released on June 16 and is available at 4698www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 4699continue for the next few releases. 4700 47011) ACPI CA Core Subsystem: 4702 4703ACPI 4.0: Implemented interpreter support for the IPMI operation region 4704address space. Includes support for bi-directional data buffers and an 4705IPMI 4706address space handler (to be installed by an IPMI device driver.) ACPICA 4707BZ 4708773. Lin Ming. 4709 4710ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 4711Includes 4712support in both the header files and the disassembler. 4713 4714Completed a major update for the AcpiGetObjectInfo external interface. 4715Changes include: 4716 - Support for variable, unlimited length HID, UID, and CID strings. 4717 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 4718etc.) 4719 - Call the _SxW power methods on behalf of a device object. 4720 - Determine if a device is a PCI root bridge. 4721 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 4722These changes will require an update to all callers of this interface. 4723See 4724the updated ACPICA Programmer Reference for details. One new source file 4725has 4726been added - utilities/utids.c. ACPICA BZ 368, 780. 4727 4728Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 4729transfers. The Value parameter has been extended from 32 bits to 64 bits 4730in 4731order to support new ACPI 4.0 tables. These changes will require an 4732update 4733to 4734all callers of these interfaces. See the ACPICA Programmer Reference for 4735details. ACPICA BZ 768. 4736 4737Fixed several problems with AcpiAttachData. The handler was not invoked 4738when 4739the host node was deleted. The data sub-object was not automatically 4740deleted 4741when the host node was deleted. The interface to the handler had an 4742unused 4743parameter, this was removed. ACPICA BZ 778. 4744 4745Enhanced the function that dumps ACPI table headers. All non-printable 4746characters in the string fields are now replaced with '?' (Signature, 4747OemId, 4748OemTableId, and CompilerId.) ACPI tables with non-printable characters in 4749these fields are occasionally seen in the field. ACPICA BZ 788. 4750 4751Fixed a problem with predefined method repair code where the code that 4752attempts to repair/convert an object of incorrect type is only executed 4753on 4754the first time the predefined method is called. The mechanism that 4755disables 4756warnings on subsequent calls was interfering with the repair mechanism. 4757ACPICA BZ 781. 4758 4759Fixed a possible memory leak in the predefined validation/repair code 4760when 4761a 4762buffer is automatically converted to an expected string object. 4763 4764Removed obsolete 16-bit files from the distribution and from the current 4765git 4766tree head. ACPICA BZ 776. 4767 4768Example Code and Data Size: These are the sizes for the OS-independent 4769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4770debug version of the code includes the debug output trace mechanism and 4771has a 4772much larger code and data size. 4773 4774 Previous Release: 4775 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 4776 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 4777 Current Release: 4778 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 4779 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 4780 47812) iASL Compiler/Disassembler and Tools: 4782 4783ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 4784operation region keyword. ACPICA BZ 771, 772. Lin Ming. 4785 4786ACPI 4.0: iASL - implemented compile-time validation support for all new 4787predefined names and control methods (31 total). ACPICA BZ 769. 4788 4789---------------------------------------- 479021 May 2009. Summary of changes for version 20090521: 4791 47921) ACPI CA Core Subsystem: 4793 4794Disabled the preservation of the SCI enable bit in the PM1 control 4795register. 4796The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 4797to 4798be 4799a "preserved" bit - "OSPM always preserves this bit position", section 48004.7.3.2.1. However, some machines fail if this bit is in fact preserved 4801because the bit needs to be explicitly set by the OS as a workaround. No 4802machines fail if the bit is not preserved. Therefore, ACPICA no longer 4803attempts to preserve this bit. 4804 4805Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 4806incorrectly formed _PRT package could cause a fault. Added validation to 4807ensure that each package element is actually a sub-package. 4808 4809Implemented a new interface to install or override a single control 4810method, 4811AcpiInstallMethod. This interface is useful when debugging in order to 4812repair 4813an existing method or to install a missing method without having to 4814override 4815the entire ACPI table. See the ACPICA Programmer Reference for use and 4816examples. Lin Ming, Bob Moore. 4817 4818Fixed several reference count issues with the DdbHandle object that is 4819created from a Load or LoadTable operator. Prevent premature deletion of 4820the 4821object. Also, mark the object as invalid once the table has been 4822unloaded. 4823This is needed because the handle itself may not be deleted after the 4824table 4825unload, depending on whether it has been stored in a named object by the 4826caller. Lin Ming. 4827 4828Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 4829mutexes of the same sync level are acquired but then not released in 4830strict 4831opposite order, the internally maintained Current Sync Level becomes 4832confused 4833and can cause subsequent execution errors. ACPICA BZ 471. 4834 4835Changed the allowable release order for ASL mutex objects. The ACPI 4.0 4836specification has been changed to make the SyncLevel for mutex objects 4837more 4838useful. When releasing a mutex, the SyncLevel of the mutex must now be 4839the 4840same as the current sync level. This makes more sense than the previous 4841rule 4842(SyncLevel less than or equal). This change updates the code to match the 4843specification. 4844 4845Fixed a problem with the local version of the AcpiOsPurgeCache function. 4846The 4847(local) cache must be locked during all cache object deletions. Andrew 4848Baumann. 4849 4850Updated the Load operator to use operation region interfaces. This 4851replaces 4852direct memory mapping with region access calls. Now, all region accesses 4853go 4854through the installed region handler as they should. 4855 4856Simplified and optimized the NsGetNextNode function. Reduced parameter 4857count 4858and reduced code for this frequently used function. 4859 4860Example Code and Data Size: These are the sizes for the OS-independent 4861acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4862debug version of the code includes the debug output trace mechanism and 4863has a 4864much larger code and data size. 4865 4866 Previous Release: 4867 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 4868 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 4869 Current Release: 4870 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 4871 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 4872 48732) iASL Compiler/Disassembler and Tools: 4874 4875Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 4876problems 4877with sub-table disassembly and handling invalid sub-tables. Attempt 4878recovery 4879after an invalid sub-table ID. 4880 4881---------------------------------------- 488222 April 2009. Summary of changes for version 20090422: 4883 48841) ACPI CA Core Subsystem: 4885 4886Fixed a compatibility issue with the recently released I/O port 4887protection 4888mechanism. For windows compatibility, 1) On a port protection violation, 4889simply ignore the request and do not return an exception (allow the 4890control 4891method to continue execution.) 2) If only part of the request overlaps a 4892protected port, read/write the individual ports that are not protected. 4893Linux 4894BZ 13036. Lin Ming 4895 4896Enhanced the execution of the ASL/AML BreakPoint operator so that it 4897actually 4898breaks into the AML debugger if the debugger is present. This matches the 4899ACPI-defined behavior. 4900 4901Fixed several possible warnings related to the use of the configurable 4902ACPI_THREAD_ID. This type can now be configured as either an integer or a 4903pointer with no warnings. Also fixes several warnings in printf-like 4904statements for the 64-bit build when the type is configured as a pointer. 4905ACPICA BZ 766, 767. 4906 4907Fixed a number of possible warnings when compiling with gcc 4+ (depending 4908on 4909warning options.) Examples include printf formats, aliasing, unused 4910globals, 4911missing prototypes, missing switch default statements, use of non-ANSI 4912library functions, use of non-ANSI constructs. See generate/unix/Makefile 4913for 4914a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 4915 4916Example Code and Data Size: These are the sizes for the OS-independent 4917acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 4918debug version of the code includes the debug output trace mechanism and 4919has a 4920much larger code and data size. 4921 4922 Previous Release: 4923 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 4924 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 4925 Current Release: 4926 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 4927 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 4928 49292) iASL Compiler/Disassembler and Tools: 4930 4931iASL: Fixed a generation warning from Bison 2.3 and fixed several 4932warnings 4933on 4934the 64-bit build. 4935 4936iASL: Fixed a problem where the Unix/Linux versions of the compiler could 4937not 4938correctly digest Windows/DOS formatted files (with CR/LF). 4939 4940iASL: Added a new option for "quiet mode" (-va) that produces only the 4941compilation summary, not individual errors and warnings. Useful for large 4942batch compilations. 4943 4944AcpiExec: Implemented a new option (-z) to enable a forced 4945semaphore/mutex 4946timeout that can be used to detect hang conditions during execution of 4947AML 4948code (includes both internal semaphores and AML-defined mutexes and 4949events.) 4950 4951Added new makefiles for the generation of acpica in a generic unix-like 4952environment. These makefiles are intended to generate the acpica tools 4953and 4954utilities from the original acpica git source tree structure. 4955 4956Test Suites: Updated and cleaned up the documentation files. Updated the 4957copyrights to 2009, affecting all source files. Use the new version of 4958iASL 4959with quiet mode. Increased the number of available semaphores in the 4960Windows 4961OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 4962added 4963an alternate implementation of the semaphore timeout to allow aslts to 4964execute fully on Cygwin. 4965 4966---------------------------------------- 496720 March 2009. Summary of changes for version 20090320: 4968 49691) ACPI CA Core Subsystem: 4970 4971Fixed a possible race condition between AcpiWalkNamespace and dynamic 4972table 4973unloads. Added a reader/writer locking mechanism to allow multiple 4974concurrent 4975namespace walks (readers), but block a dynamic table unload until it can 4976gain 4977exclusive write access to the namespace. This fixes a problem where a 4978table 4979unload could (possibly catastrophically) delete the portion of the 4980namespace 4981that is currently being examined by a walk. Adds a new file, utlock.c, 4982that 4983implements the reader/writer lock mechanism. ACPICA BZ 749. 4984 4985Fixed a regression introduced in version 20090220 where a change to the 4986FADT 4987handling could cause the ACPICA subsystem to access non-existent I/O 4988ports. 4989 4990Modified the handling of FADT register and table (FACS/DSDT) addresses. 4991The 4992FADT can contain both 32-bit and 64-bit versions of these addresses. 4993Previously, the 64-bit versions were favored, meaning that if both 32 and 499464 4995versions were valid, but not equal, the 64-bit version was used. This was 4996found to cause some machines to fail. Now, in this case, the 32-bit 4997version 4998is used instead. This now matches the Windows behavior. 4999 5000Implemented a new mechanism to protect certain I/O ports. Provides 5001Microsoft 5002compatibility and protects the standard PC I/O ports from access via AML 5003code. Adds a new file, hwvalid.c 5004 5005Fixed a possible extraneous warning message from the FADT support. The 5006message warns of a 32/64 length mismatch between the legacy and GAS 5007definitions for a register. 5008 5009Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 5010is 5011made obsolete by the port protection mechanism above. It was previously 5012used 5013to validate the entire address range of an operation region, which could 5014be 5015incorrect if the range included illegal ports, but fields within the 5016operation region did not actually access those ports. Validation is now 5017performed on a per-field basis instead of the entire region. 5018 5019Modified the handling of the PM1 Status Register ignored bit (bit 11.) 5020Ignored bits must be "preserved" according to the ACPI spec. Usually, 5021this 5022means a read/modify/write when writing to the register. However, for 5023status 5024registers, writing a one means clear the event. Writing a zero means 5025preserve 5026the event (do not clear.) This behavior is clarified in the ACPI 4.0 5027spec, 5028and the ACPICA code now simply always writes a zero to the ignored bit. 5029 5030Modified the handling of ignored bits for the PM1 A/B Control Registers. 5031As 5032per the ACPI specification, for the control registers, preserve 5033(read/modify/write) all bits that are defined as either reserved or 5034ignored. 5035 5036Updated the handling of write-only bits in the PM1 A/B Control Registers. 5037When reading the register, zero the write-only bits as per the ACPI spec. 5038ACPICA BZ 443. Lin Ming. 5039 5040Removed "Linux" from the list of supported _OSI strings. Linux no longer 5041wants to reply true to this request. The Windows strings are the only 5042paths 5043through the AML that are tested and known to work properly. 5044 5045 Previous Release: 5046 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5047 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5048 Current Release: 5049 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 5050 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 5051 50522) iASL Compiler/Disassembler and Tools: 5053 5054Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 5055and 5056aetables.c 5057 5058---------------------------------------- 505920 February 2009. Summary of changes for version 20090220: 5060 50611) ACPI CA Core Subsystem: 5062 5063Optimized the ACPI register locking. Removed locking for reads from the 5064ACPI 5065bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 5066is 5067not required when reading the single-bit registers. The 5068AcpiGetRegisterUnlocked function is no longer needed and has been 5069removed. 5070This will improve performance for reads on these registers. ACPICA BZ 5071760. 5072 5073Fixed the parameter validation for AcpiRead/Write. Now return 5074AE_BAD_PARAMETER if the input register pointer is null, and 5075AE_BAD_ADDRESS 5076if 5077the register has an address of zero. Previously, these cases simply 5078returned 5079AE_OK. For optional registers such as PM1B status/enable/control, the 5080caller 5081should check for a valid register address before calling. ACPICA BZ 748. 5082 5083Renamed the external ACPI bit register access functions. Renamed 5084AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 5085functions. The new names are AcpiReadBitRegister and 5086AcpiWriteBitRegister. 5087Also, restructured the code for these functions by simplifying the code 5088path 5089and condensing duplicate code to reduce code size. 5090 5091Added new functions to transparently handle the possibly split PM1 A/B 5092registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 5093functions 5094now handle the split registers for PM1 Status, Enable, and Control. 5095ACPICA 5096BZ 5097746. 5098 5099Added a function to handle the PM1 control registers, 5100AcpiHwWritePm1Control. 5101This function writes both of the PM1 control registers (A/B). These 5102registers 5103are different than the PM1 A/B status and enable registers in that 5104different 5105values can be written to the A/B registers. Most notably, the SLP_TYP 5106bits 5107can be different, as per the values returned from the _Sx predefined 5108methods. 5109 5110Removed an extra register write within AcpiHwClearAcpiStatus. This 5111function 5112was writing an optional PM1B status register twice. The existing call to 5113the 5114low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 5115A/B 5116register. ACPICA BZ 751. 5117 5118Split out the PM1 Status registers from the FADT. Added new globals for 5119these 5120registers (A/B), similar to the way the PM1 Enable registers are handled. 5121Instead of overloading the FADT Event Register blocks. This makes the 5122code 5123clearer and less prone to error. 5124 5125Fixed the warning message for when the platform contains too many ACPI 5126tables 5127for the default size of the global root table data structure. The 5128calculation 5129for the truncation value was incorrect. 5130 5131Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 5132obsolete macro, since it is now a simple reference to ->common.type. 5133There 5134were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 5135 5136Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 5137TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 5138simply SLEEP_TYPE. ACPICA BZ 754. 5139 5140Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 5141function is only needed on 64-bit host operating systems and is thus not 5142included for 32-bit hosts. 5143 5144Debug output: print the input and result for invocations of the _OSI 5145reserved 5146control method via the ACPI_LV_INFO debug level. Also, reduced some of 5147the 5148verbosity of this debug level. Len Brown. 5149 5150Example Code and Data Size: These are the sizes for the OS-independent 5151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5152debug version of the code includes the debug output trace mechanism and 5153has a 5154much larger code and data size. 5155 5156 Previous Release: 5157 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5158 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5159 Current Release: 5160 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 5161 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 5162 51632) iASL Compiler/Disassembler and Tools: 5164 5165Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 5166various legal performance profiles. 5167 5168---------------------------------------- 516923 January 2009. Summary of changes for version 20090123: 5170 51711) ACPI CA Core Subsystem: 5172 5173Added the 2009 copyright to all module headers and signons. This affects 5174virtually every file in the ACPICA core subsystem, the iASL compiler, and 5175the tools/utilities. 5176 5177Implemented a change to allow the host to override any ACPI table, 5178including 5179dynamically loaded tables. Previously, only the DSDT could be replaced by 5180the 5181host. With this change, the AcpiOsTableOverride interface is called for 5182each 5183table found in the RSDT/XSDT during ACPICA initialization, and also 5184whenever 5185a table is dynamically loaded via the AML Load operator. 5186 5187Updated FADT flag definitions, especially the Boot Architecture flags. 5188 5189Debugger: For the Find command, automatically pad the input ACPI name 5190with 5191underscores if the name is shorter than 4 characters. This enables a 5192match 5193with the actual namespace entry which is itself padded with underscores. 5194 5195Example Code and Data Size: These are the sizes for the OS-independent 5196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5197debug version of the code includes the debug output trace mechanism and 5198has a 5199much larger code and data size. 5200 5201 Previous Release: 5202 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5203 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5204 Current Release: 5205 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 5206 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 5207 52082) iASL Compiler/Disassembler and Tools: 5209 5210Fix build error under Bison-2.4. 5211 5212Dissasembler: Enhanced FADT support. Added decoding of the Boot 5213Architecture 5214flags. Now decode all flags, regardless of the FADT version. Flag output 5215includes the FADT version which first defined each flag. 5216 5217The iASL -g option now dumps the RSDT to a file (in addition to the FADT 5218and 5219DSDT). Windows only. 5220 5221---------------------------------------- 522204 December 2008. Summary of changes for version 20081204: 5223 52241) ACPI CA Core Subsystem: 5225 5226The ACPICA Programmer Reference has been completely updated and revamped 5227for 5228this release. This includes updates to the external interfaces, OSL 5229interfaces, the overview sections, and the debugger reference. 5230 5231Several new ACPICA interfaces have been implemented and documented in the 5232programmer reference: 5233AcpiReset - Writes the reset value to the FADT-defined reset register. 5234AcpiDisableAllGpes - Disable all available GPEs. 5235AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 5236AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 5237AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 5238AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 5239AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 5240 5241Most of the public ACPI hardware-related interfaces have been moved to a 5242new 5243file, components/hardware/hwxface.c 5244 5245Enhanced the FADT parsing and low-level ACPI register access: The ACPI 5246register lengths within the FADT are now used, and the low level ACPI 5247register access no longer hardcodes the ACPI register lengths. Given that 5248there may be some risk in actually trusting the FADT register lengths, a 5249run- 5250time option was added to fall back to the default hardcoded lengths if 5251the 5252FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 5253option is set to true for now, and a warning is issued if a suspicious 5254FADT 5255register length is overridden with the default value. 5256 5257Fixed a reference count issue in NsRepairObject. This problem was 5258introduced 5259in version 20081031 as part of a fix to repair Buffer objects within 5260Packages. Lin Ming. 5261 5262Added semaphore support to the Linux/Unix application OS-services layer 5263(OSL). ACPICA BZ 448. Lin Ming. 5264 5265Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 5266will 5267be implemented in the OSL, or will binary semaphores be used instead. 5268 5269Example Code and Data Size: These are the sizes for the OS-independent 5270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5271debug version of the code includes the debug output trace mechanism and 5272has a 5273much larger code and data size. 5274 5275 Previous Release: 5276 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5277 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5278 Current Release: 5279 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 5280 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 5281 52822) iASL Compiler/Disassembler and Tools: 5283 5284iASL: Completed the '-e' option to include additional ACPI tables in 5285order 5286to 5287aid with disassembly and External statement generation. ACPICA BZ 742. 5288Lin 5289Ming. 5290 5291iASL: Removed the "named object in while loop" error. The compiler cannot 5292determine how many times a loop will execute. ACPICA BZ 730. 5293 5294Disassembler: Implemented support for FADT revision 2 (MS extension). 5295ACPICA 5296BZ 743. 5297 5298Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 5299MCFG). 5300 5301---------------------------------------- 530231 October 2008. Summary of changes for version 20081031: 5303 53041) ACPI CA Core Subsystem: 5305 5306Restructured the ACPICA header files into public/private. acpi.h now 5307includes 5308only the "public" acpica headers. All other acpica headers are "private" 5309and 5310should not be included by acpica users. One new file, accommon.h is used 5311to 5312include the commonly used private headers for acpica code generation. 5313Future 5314plans include moving all private headers to a new subdirectory. 5315 5316Implemented an automatic Buffer->String return value conversion for 5317predefined ACPI methods. For these methods (such as _BIF), added 5318automatic 5319conversion for return objects that are required to be a String, but a 5320Buffer 5321was found instead. This can happen when reading string battery data from 5322an 5323operation region, because it used to be difficult to convert the data 5324from 5325buffer to string from within the ASL. Ensures that the host OS is 5326provided 5327with a valid null-terminated string. Linux BZ 11822. 5328 5329Updated the FACS waking vector interfaces. Split 5330AcpiSetFirmwareWakingVector 5331into two: one for the 32-bit vector, another for the 64-bit vector. This 5332is 5333required because the host OS must setup the wake much differently for 5334each 5335vector (real vs. protected mode, etc.) and the interface itself should 5336not 5337be 5338deciding which vector to use. Also, eliminated the 5339GetFirmwareWakingVector 5340interface, as it served no purpose (only the firmware reads the vector, 5341OS 5342only writes the vector.) ACPICA BZ 731. 5343 5344Implemented a mechanism to escape infinite AML While() loops. Added a 5345loop 5346counter to force exit from AML While loops if the count becomes too 5347large. 5348This can occur in poorly written AML when the hardware does not respond 5349within a while loop and the loop does not implement a timeout. The 5350maximum 5351loop count is configurable. A new exception code is returned when a loop 5352is 5353broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 5354 5355Optimized the execution of AML While loops. Previously, a control state 5356object was allocated and freed for each execution of the loop. The 5357optimization is to simply reuse the control state for each iteration. 5358This 5359speeds up the raw loop execution time by about 5%. 5360 5361Enhanced the implicit return mechanism. For Windows compatibility, return 5362an 5363implicit integer of value zero for methods that contain no executable 5364code. 5365Such methods are seen in the field as stubs (presumably), and can cause 5366drivers to fail if they expect a return value. Lin Ming. 5367 5368Allow multiple backslashes as root prefixes in namepaths. In a fully 5369qualified namepath, allow multiple backslash prefixes. This can happen 5370(and 5371is seen in the field) because of the use of a double-backslash in strings 5372(since backslash is the escape character) causing confusion. ACPICA BZ 5373739 5374Lin Ming. 5375 5376Emit a warning if two different FACS or DSDT tables are discovered in the 5377FADT. Checks if there are two valid but different addresses for the FACS 5378and 5379DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 5380 5381Consolidated the method argument count validation code. Merged the code 5382that 5383validates control method argument counts into the predefined validation 5384module. Eliminates possible multiple warnings for incorrect argument 5385counts. 5386 5387Implemented ACPICA example code. Includes code for ACPICA initialization, 5388handler installation, and calling a control method. Available at 5389source/tools/examples. 5390 5391Added a global pointer for FACS table to simplify internal FACS access. 5392Use 5393the global pointer instead of using AcpiGetTableByIndex for each FACS 5394access. 5395This simplifies the code for the Global Lock and the Firmware Waking 5396Vector(s). 5397 5398Example Code and Data Size: These are the sizes for the OS-independent 5399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5400debug version of the code includes the debug output trace mechanism and 5401has a 5402much larger code and data size. 5403 5404 Previous Release: 5405 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5406 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5407 Current Release: 5408 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 5409 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 5410 54112) iASL Compiler/Disassembler and Tools: 5412 5413iASL: Improved disassembly of external method calls. Added the -e option 5414to 5415allow the inclusion of additional ACPI tables to help with the 5416disassembly 5417of 5418method invocations and the generation of external declarations during the 5419disassembly. Certain external method invocations cannot be disassembled 5420properly without the actual declaration of the method. Use the -e option 5421to 5422include the table where the external method(s) are actually declared. 5423Most 5424useful for disassembling SSDTs that make method calls back to the master 5425DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 5426-d 5427-e dsdt.aml ssdt1.aml 5428 5429iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 5430problem where the use of an alias within a namepath would result in a not 5431found error or cause the compiler to fault. Also now allows forward 5432references from the Alias operator itself. ACPICA BZ 738. 5433 5434---------------------------------------- 543526 September 2008. Summary of changes for version 20080926: 5436 54371) ACPI CA Core Subsystem: 5438 5439Designed and implemented a mechanism to validate predefined ACPI methods 5440and 5441objects. This code validates the predefined ACPI objects (objects whose 5442names 5443start with underscore) that appear in the namespace, at the time they are 5444evaluated. The argument count and the type of the returned object are 5445validated against the ACPI specification. The purpose of this validation 5446is 5447to detect problems with the BIOS-implemented predefined ACPI objects 5448before 5449the results are returned to the ACPI-related drivers. Future enhancements 5450may 5451include actual repair of incorrect return objects where possible. Two new 5452files are nspredef.c and acpredef.h. 5453 5454Fixed a fault in the AML parser if a memory allocation fails during the 5455Op 5456completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 5457 5458Fixed an issue with implicit return compatibility. This change improves 5459the 5460implicit return mechanism to be more compatible with the MS interpreter. 5461Lin 5462Ming, ACPICA BZ 349. 5463 5464Implemented support for zero-length buffer-to-string conversions. Allow 5465zero 5466length strings during interpreter buffer-to-string conversions. For 5467example, 5468during the ToDecimalString and ToHexString operators, as well as implicit 5469conversions. Fiodor Suietov, ACPICA BZ 585. 5470 5471Fixed two possible memory leaks in the error exit paths of 5472AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 5473are 5474similar in that they use a stack of state objects in order to eliminate 5475recursion. The stack must be fully unwound and deallocated if an error 5476occurs. Lin Ming. ACPICA BZ 383. 5477 5478Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 5479global 5480ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 5481Moore ACPICA BZ 442. 5482 5483Removed the obsolete version number in module headers. Removed the 5484"$Revision" number that appeared in each module header. This version 5485number 5486was useful under SourceSafe and CVS, but has no meaning under git. It is 5487not 5488only incorrect, it could also be misleading. 5489 5490Example Code and Data Size: These are the sizes for the OS-independent 5491acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5492debug version of the code includes the debug output trace mechanism and 5493has a 5494much larger code and data size. 5495 5496 Previous Release: 5497 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5498 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 5499 Current Release: 5500 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 5501 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 5502 5503---------------------------------------- 550429 August 2008. Summary of changes for version 20080829: 5505 55061) ACPI CA Core Subsystem: 5507 5508Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 5509Reference. Changes include the elimination of cheating on the Object 5510field 5511for the DdbHandle subtype, addition of a reference class field to 5512differentiate the various reference types (instead of an AML opcode), and 5513the 5514cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 5515 5516Reduce an error to a warning for an incorrect method argument count. 5517Previously aborted with an error if too few arguments were passed to a 5518control method via the external ACPICA interface. Now issue a warning 5519instead 5520and continue. Handles the case where the method inadvertently declares 5521too 5522many arguments, but does not actually use the extra ones. Applies mainly 5523to 5524the predefined methods. Lin Ming. Linux BZ 11032. 5525 5526Disallow the evaluation of named object types with no intrinsic value. 5527Return 5528AE_TYPE for objects that have no value and therefore evaluation is 5529undefined: 5530Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 5531of 5532these types were allowed, but an exception would be generated at some 5533point 5534during the evaluation. Now, the error is generated up front. 5535 5536Fixed a possible memory leak in the AcpiNsGetExternalPathname function 5537(nsnames.c). Fixes a leak in the error exit path. 5538 5539Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 5540debug 5541levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 5542ACPI_EXCEPTION 5543interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 5544ACPI_LV_EVENTS. 5545 5546Removed obsolete and/or unused exception codes from the acexcep.h header. 5547There is the possibility that certain device drivers may be affected if 5548they 5549use any of these exceptions. 5550 5551The ACPICA documentation has been added to the public git source tree, 5552under 5553acpica/documents. Included are the ACPICA programmer reference, the iASL 5554compiler reference, and the changes.txt release logfile. 5555 5556Example Code and Data Size: These are the sizes for the OS-independent 5557acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5558debug version of the code includes the debug output trace mechanism and 5559has a 5560much larger code and data size. 5561 5562 Previous Release: 5563 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5564 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 5565 Current Release: 5566 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5567 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 5568 55692) iASL Compiler/Disassembler and Tools: 5570 5571Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 5572defines _SCP with 3 arguments. Previous versions defined it with only 1 5573argument. iASL now allows both definitions. 5574 5575iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 5576zero- 5577length subtables when disassembling ACPI tables. Also fixed a couple of 5578errors where a full 16-bit table type field was not extracted from the 5579input 5580properly. 5581 5582acpisrc: Improve comment counting mechanism for generating source code 5583statistics. Count first and last lines of multi-line comments as 5584whitespace, 5585not comment lines. Handle Linux legal header in addition to standard 5586acpica 5587header. 5588 5589---------------------------------------- 5590 559129 July 2008. Summary of changes for version 20080729: 5592 55931) ACPI CA Core Subsystem: 5594 5595Fix a possible deadlock in the GPE dispatch. Remove call to 5596AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 5597attempt 5598to acquire the GPE lock but can deadlock since the GPE lock is already 5599held 5600at dispatch time. This code was introduced in version 20060831 as a 5601response 5602to Linux BZ 6881 and has since been removed from Linux. 5603 5604Add a function to dereference returned reference objects. Examines the 5605return 5606object from a call to AcpiEvaluateObject. Any Index or RefOf references 5607are 5608automatically dereferenced in an attempt to return something useful 5609(these 5610reference types cannot be converted into an external ACPI_OBJECT.) 5611Provides 5612MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 5613 5614x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 5615subtables for the MADT and one new subtable for the SRAT. Includes 5616disassembler and AcpiSrc support. Data from the Intel 64 Architecture 5617x2APIC 5618Specification, June 2008. 5619 5620Additional error checking for pathname utilities. Add error check after 5621all 5622calls to AcpiNsGetPathnameLength. Add status return from 5623AcpiNsBuildExternalPath and check after all calls. Add parameter 5624validation 5625to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 5626 5627Return status from the global init function AcpiUtGlobalInitialize. This 5628is 5629used by both the kernel subsystem and the utilities such as iASL 5630compiler. 5631The function could possibly fail when the caches are initialized. Yang 5632Yi. 5633 5634Add a function to decode reference object types to strings. Created for 5635improved error messages. 5636 5637Improve object conversion error messages. Better error messages during 5638object 5639conversion from internal to the external ACPI_OBJECT. Used for external 5640calls 5641to AcpiEvaluateObject. 5642 5643Example Code and Data Size: These are the sizes for the OS-independent 5644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5645debug version of the code includes the debug output trace mechanism and 5646has a 5647much larger code and data size. 5648 5649 Previous Release: 5650 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 5651 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 5652 Current Release: 5653 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 5654 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 5655 56562) iASL Compiler/Disassembler and Tools: 5657 5658Debugger: fix a possible hang when evaluating non-methods. Fixes a 5659problem 5660introduced in version 20080701. If the object being evaluated (via 5661execute 5662command) is not a method, the debugger can hang while trying to obtain 5663non- 5664existent parameters. 5665 5666iASL: relax error for using reserved "_T_x" identifiers. These names can 5667appear in a disassembled ASL file if they were emitted by the original 5668compiler. Instead of issuing an error or warning and forcing the user to 5669manually change these names, issue a remark instead. 5670 5671iASL: error if named object created in while loop. Emit an error if any 5672named 5673object is created within a While loop. If allowed, this code will 5674generate 5675a 5676run-time error on the second iteration of the loop when an attempt is 5677made 5678to 5679create the same named object twice. ACPICA bugzilla 730. 5680 5681iASL: Support absolute pathnames for include files. Add support for 5682absolute 5683pathnames within the Include operator. previously, only relative 5684pathnames 5685were supported. 5686 5687iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 5688Descriptor. 5689The ACPI spec requires one interrupt minimum. BZ 423 5690 5691iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 5692Handles the case for the Interrupt Resource Descriptor where 5693the ResourceSource argument is omitted but ResourceSourceIndex 5694is present. Now leave room for the Index. BZ 426 5695 5696iASL: Prevent error message if CondRefOf target does not exist. Fixes 5697cases 5698where an error message is emitted if the target does not exist. BZ 516 5699 5700iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 5701(get ACPI tables on Windows). This was apparently broken in version 570220070919. 5703 5704AcpiXtract: Handle EOF while extracting data. Correctly handle the case 5705where 5706the EOF happens immediately after the last table in the input file. Print 5707completion message. Previously, no message was displayed in this case. 5708 5709---------------------------------------- 571001 July 2008. Summary of changes for version 20080701: 5711 57120) Git source tree / acpica.org 5713 5714Fixed a problem where a git-clone from http would not transfer the entire 5715source tree. 5716 57171) ACPI CA Core Subsystem: 5718 5719Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 5720enable bit. Now performs a read-change-write of the enable register 5721instead 5722of simply writing out the cached enable mask. This will prevent 5723inadvertent 5724enabling of GPEs if a rogue GPE is received during initialization (before 5725GPE 5726handlers are installed.) 5727 5728Implemented a copy for dynamically loaded tables. Previously, dynamically 5729loaded tables were simply mapped - but on some machines this memory is 5730corrupted after suspend. Now copy the table to a local buffer. For the 5731OpRegion case, added checksum verify. Use the table length from the table 5732header, not the region length. For the Buffer case, use the table length 5733also. Dennis Noordsij, Bob Moore. BZ 10734 5734 5735Fixed a problem where the same ACPI table could not be dynamically loaded 5736and 5737unloaded more than once. Without this change, a table cannot be loaded 5738again 5739once it has been loaded/unloaded one time. The current mechanism does not 5740unregister a table upon an unload. During a load, if the same table is 5741found, 5742this no longer returns an exception. BZ 722 5743 5744Fixed a problem where the wrong descriptor length was calculated for the 5745EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 5746EndTag 5747are calculated as 12 bytes long, but the actual length in the internal 5748descriptor is 16 because of the round-up to 8 on the 64-bit build. 5749Reported 5750by Linn Crosetto. BZ 728 5751 5752Fixed a possible memory leak in the Unload operator. The DdbHandle 5753returned 5754by Load() did not have its reference count decremented during unload, 5755leading 5756to a memory leak. Lin Ming. BZ 727 5757 5758Fixed a possible memory leak when deleting thermal/processor objects. Any 5759associated notify handlers (and objects) were not being deleted. Fiodor 5760Suietov. BZ 506 5761 5762Fixed the ordering of the ASCII names in the global mutex table to match 5763the 5764actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 5765only. 5766Vegard Nossum. BZ 726 5767 5768Enhanced the AcpiGetObjectInfo interface to return the number of required 5769arguments if the object is a control method. Added this call to the 5770debugger 5771so the proper number of default arguments are passed to a method. This 5772prevents a warning when executing methods from AcpiExec. 5773 5774Added a check for an invalid handle in AcpiGetObjectInfo. Return 5775AE_BAD_PARAMETER if input handle is invalid. BZ 474 5776 5777Fixed an extraneous warning from exconfig.c on the 64-bit build. 5778 5779Example Code and Data Size: These are the sizes for the OS-independent 5780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5781debug version of the code includes the debug output trace mechanism and 5782has a 5783much larger code and data size. 5784 5785 Previous Release: 5786 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 5787 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 5788 Current Release: 5789 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 5790 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 5791 57922) iASL Compiler/Disassembler and Tools: 5793 5794iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 5795resource descriptor names. 5796 5797iASL: Detect invalid ASCII characters in input (windows version). Removed 5798the 5799"-CF" flag from the flex compile, enables correct detection of non-ASCII 5800characters in the input. BZ 441 5801 5802iASL: Eliminate warning when result of LoadTable is not used. Eliminate 5803the 5804"result of operation not used" warning when the DDB handle returned from 5805LoadTable is not used. The warning is not needed. BZ 590 5806 5807AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 5808method 5809to 5810pass address of table to the AML. Added option to disable OpRegion 5811simulation 5812to allow creation of an OpRegion with a real address that was passed to 5813_CFG. 5814All of this allows testing of the Load and Unload operators from 5815AcpiExec. 5816 5817Debugger: update tables command for unloaded tables. Handle unloaded 5818tables 5819and use the standard table header output routine. 5820 5821---------------------------------------- 582209 June 2008. Summary of changes for version 20080609: 5823 58241) ACPI CA Core Subsystem: 5825 5826Implemented a workaround for reversed _PRT entries. A significant number 5827of 5828BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 5829change dynamically detects and repairs this problem. Provides 5830compatibility 5831with MS ACPI. BZ 6859 5832 5833Simplified the internal ACPI hardware interfaces to eliminate the locking 5834flag parameter from Register Read/Write. Added a new external interface, 5835AcpiGetRegisterUnlocked. 5836 5837Fixed a problem where the invocation of a GPE control method could hang. 5838This 5839was a regression introduced in 20080514. The new method argument count 5840validation mechanism can enter an infinite loop when a GPE method is 5841dispatched. Problem fixed by removing the obsolete code that passed GPE 5842block 5843information to the notify handler via the control method parameter 5844pointer. 5845 5846Fixed a problem where the _SST execution status was incorrectly returned 5847to 5848the caller of AcpiEnterSleepStatePrep. This was a regression introduced 5849in 585020080514. _SST is optional and a NOT_FOUND exception should never be 5851returned. BZ 716 5852 5853Fixed a problem where a deleted object could be accessed from within the 5854AML 5855parser. This was a regression introduced in version 20080123 as a fix for 5856the 5857Unload operator. Lin Ming. BZ 10669 5858 5859Cleaned up the debug operand dump mechanism. Eliminated unnecessary 5860operands 5861and eliminated the use of a negative index in a loop. Operands are now 5862displayed in the correct order, not backwards. This also fixes a 5863regression 5864introduced in 20080514 on 64-bit systems where the elimination of 5865ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 5866715 5867 5868Fixed a possible memory leak in EvPciConfigRegionSetup where the error 5869exit 5870path did not delete a locally allocated structure. 5871 5872Updated definitions for the DMAR and SRAT tables to synchronize with the 5873current specifications. Includes disassembler support. 5874 5875Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 5876loop termination value was used. Loop terminated on iteration early, 5877missing 5878one mutex. Linn Crosetto 5879 5880Example Code and Data Size: These are the sizes for the OS-independent 5881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5882debug version of the code includes the debug output trace mechanism and 5883has a 5884much larger code and data size. 5885 5886 Previous Release: 5887 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 5888 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 5889 Current Release: 5890 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 5891 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 5892 58932) iASL Compiler/Disassembler and Tools: 5894 5895Disassembler: Implemented support for EisaId() within _CID objects. Now 5896disassemble integer _CID objects back to EisaId invocations, including 5897multiple integers within _CID packages. Includes single-step support for 5898debugger also. 5899 5900Disassembler: Added support for DMAR and SRAT table definition changes. 5901 5902---------------------------------------- 590314 May 2008. Summary of changes for version 20080514: 5904 59051) ACPI CA Core Subsystem: 5906 5907Fixed a problem where GPEs were enabled too early during the ACPICA 5908initialization. This could lead to "handler not installed" errors on some 5909machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 5910This 5911ensures that all operation regions and devices throughout the namespace 5912have 5913been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 5914 5915Implemented a change to the enter sleep code. Moved execution of the _GTS 5916method to just before setting sleep enable bit. The execution was moved 5917from 5918AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 5919immediately before the SLP_EN bit is set, as per the ACPI specification. 5920Luming Yu, BZ 1653. 5921 5922Implemented a fix to disable unknown GPEs (2nd version). Now always 5923disable 5924the GPE, even if ACPICA thinks that that it is already disabled. It is 5925possible that the AML or some other code has enabled the GPE unbeknownst 5926to 5927the ACPICA code. 5928 5929Fixed a problem with the Field operator where zero-length fields would 5930return 5931an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 5932ASL 5933field declarations in Field(), BankField(), and IndexField(). BZ 10606. 5934 5935Implemented a fix for the Load operator, now load the table at the 5936namespace 5937root. This reverts a change introduced in version 20071019. The table is 5938now 5939loaded at the namespace root even though this goes against the ACPI 5940specification. This provides compatibility with other ACPI 5941implementations. 5942The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 5943Ming. 5944 5945Fixed a problem where ACPICA would not Load() tables with unusual 5946signatures. 5947Now ignore ACPI table signature for Load() operator. Only "SSDT" is 5948acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 5949Therefore, signature validation is worthless. Apparently MS ACPI accepts 5950such 5951signatures, ACPICA must be compatible. BZ 10454. 5952 5953Fixed a possible negative array index in AcpiUtValidateException. Added 5954NULL 5955fields to the exception string arrays to eliminate a -1 subtraction on 5956the 5957SubStatus field. 5958 5959Updated the debug tracking macros to reduce overall code and data size. 5960Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 5961instead of pointers to static strings. Jan Beulich and Bob Moore. 5962 5963Implemented argument count checking in control method invocation via 5964AcpiEvaluateObject. Now emit an error if too few arguments, warning if 5965too 5966many. This applies only to extern programmatic control method execution, 5967not 5968method-to-method calls within the AML. Lin Ming. 5969 5970Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 5971no 5972longer needed, especially with the removal of 16-bit support. It was 5973replaced 5974mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 5975bit 5976on 597732/64-bit platforms is required. 5978 5979Added the C const qualifier for appropriate string constants -- mostly 5980MODULE_NAME and printf format strings. Jan Beulich. 5981 5982Example Code and Data Size: These are the sizes for the OS-independent 5983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5984debug version of the code includes the debug output trace mechanism and 5985has a 5986much larger code and data size. 5987 5988 Previous Release: 5989 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 5990 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 5991 Current Release: 5992 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 5993 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 5994 59952) iASL Compiler/Disassembler and Tools: 5996 5997Implemented ACPI table revision ID validation in the disassembler. Zero 5998is 5999always invalid. For DSDTs, the ID controls the interpreter integer width. 60001 6001means 32-bit and this is unusual. 2 or greater is 64-bit. 6002 6003---------------------------------------- 600421 March 2008. Summary of changes for version 20080321: 6005 60061) ACPI CA Core Subsystem: 6007 6008Implemented an additional change to the GPE support in order to suppress 6009spurious or stray GPEs. The AcpiEvDisableGpe function will now 6010permanently 6011disable incoming GPEs that are neither enabled nor disabled -- meaning 6012that 6013the GPE is unknown to the system. This should prevent future interrupt 6014floods 6015from that GPE. BZ 6217 (Zhang Rui) 6016 6017Fixed a problem where NULL package elements were not returned to the 6018AcpiEvaluateObject interface correctly. The element was simply ignored 6019instead of returning a NULL ACPI_OBJECT package element, potentially 6020causing 6021a buffer overflow and/or confusing the caller who expected a fixed number 6022of 6023elements. BZ 10132 (Lin Ming, Bob Moore) 6024 6025Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 6026Dword, 6027Qword), Field, BankField, and IndexField operators when invoked from 6028inside 6029an executing control method. In this case, these operators created 6030namespace 6031nodes that were incorrectly left marked as permanent nodes instead of 6032temporary nodes. This could cause a problem if there is race condition 6033between an exiting control method and a running namespace walk. (Reported 6034by 6035Linn Crosetto) 6036 6037Fixed a problem where the CreateField and CreateXXXField operators would 6038incorrectly allow duplicate names (the name of the field) with no 6039exception 6040generated. 6041 6042Implemented several changes for Notify handling. Added support for new 6043Notify 6044values (ACPI 2.0+) and improved the Notify debug output. Notify on 6045PowerResource objects is no longer allowed, as per the ACPI 6046specification. 6047(Bob Moore, Zhang Rui) 6048 6049All Reference Objects returned via the AcpiEvaluateObject interface are 6050now 6051marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 6052for 6053NULL objects - either NULL package elements or unresolved named 6054references. 6055 6056Fixed a problem where an extraneous debug message was produced for 6057package 6058objects (when debugging enabled). The message "Package List length larger 6059than NumElements count" is now produced in the correct case, and is now 6060an 6061error message rather than a debug message. Added a debug message for the 6062opposite case, where NumElements is larger than the Package List (the 6063package 6064will be padded out with NULL elements as per the ACPI spec.) 6065 6066Implemented several improvements for the output of the ASL "Debug" object 6067to 6068clarify and keep all data for a given object on one output line. 6069 6070Fixed two size calculation issues with the variable-length Start 6071Dependent 6072resource descriptor. 6073 6074Example Code and Data Size: These are the sizes for the OS-independent 6075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6076debug version of the code includes the debug output trace mechanism and 6077has 6078a much larger code and data size. 6079 6080 Previous 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 Current Release: 6084 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 6085 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 6086 60872) iASL Compiler/Disassembler and Tools: 6088 6089Fixed a problem with the use of the Switch operator where execution of 6090the 6091containing method by multiple concurrent threads could cause an 6092AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 6093actual Switch opcode, it must be simulated with local named temporary 6094variables and if/else pairs. The solution chosen was to mark any method 6095that 6096uses Switch as Serialized, thus preventing multiple thread entries. BZ 6097469. 6098 6099---------------------------------------- 610013 February 2008. Summary of changes for version 20080213: 6101 61021) ACPI CA Core Subsystem: 6103 6104Implemented another MS compatibility design change for GPE/Notify 6105handling. 6106GPEs are now cleared/enabled asynchronously to allow all pending notifies 6107to 6108complete first. It is expected that the OSL will queue the enable request 6109behind all pending notify requests (may require changes to the local host 6110OSL 6111in AcpiOsExecute). Alexey Starikovskiy. 6112 6113Fixed a problem where buffer and package objects passed as arguments to a 6114control method via the external AcpiEvaluateObject interface could cause 6115an 6116AE_AML_INTERNAL exception depending on the order and type of operators 6117executed by the target control method. 6118 6119Fixed a problem where resource descriptor size optimization could cause a 6120problem when a _CRS resource template is passed to a _SRS method. The 6121_SRS 6122resource template must use the same descriptors (with the same size) as 6123returned from _CRS. This change affects the following resource 6124descriptors: 6125IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 61269487) 6127 6128Fixed a problem where a CopyObject to RegionField, BankField, and 6129IndexField 6130objects did not perform an implicit conversion as it should. These types 6131must 6132retain their initial type permanently as per the ACPI specification. 6133However, 6134a CopyObject to all other object types should not perform an implicit 6135conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 6136 6137Fixed a problem with the AcpiGetDevices interface where the mechanism to 6138match device CIDs did not examine the entire list of available CIDs, but 6139instead aborted on the first non-matching CID. Andrew Patterson. 6140 6141Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 6142was 6143inadvertently changed to return a 16-bit value instead of a 32-bit value, 6144truncating the upper dword of a 64-bit value. This macro is only used to 6145display debug output, so no incorrect calculations were made. Also, 6146reimplemented the macro so that a 64-bit shift is not performed by 6147inefficient compilers. 6148 6149Added missing va_end statements that should correspond with each va_start 6150statement. 6151 6152Example Code and Data Size: These are the sizes for the OS-independent 6153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6154debug version of the code includes the debug output trace mechanism and 6155has 6156a much larger code and data size. 6157 6158 Previous Release: 6159 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6160 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6161 Current Release: 6162 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 6163 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 6164 61652) iASL Compiler/Disassembler and Tools: 6166 6167Implemented full disassembler support for the following new ACPI tables: 6168BERT, EINJ, and ERST. Implemented partial disassembler support for the 6169complicated HEST table. These tables support the Windows Hardware Error 6170Architecture (WHEA). 6171 6172---------------------------------------- 617323 January 2008. Summary of changes for version 20080123: 6174 61751) ACPI CA Core Subsystem: 6176 6177Added the 2008 copyright to all module headers and signons. This affects 6178virtually every file in the ACPICA core subsystem, the iASL compiler, and 6179the tools/utilities. 6180 6181Fixed a problem with the SizeOf operator when used with Package and 6182Buffer 6183objects. These objects have deferred execution for some arguments, and 6184the 6185execution is now completed before the SizeOf is executed. This problem 6186caused 6187unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 6188BZ 61899558 6190 6191Implemented an enhancement to the interpreter "slack mode". In the 6192absence 6193of 6194an explicit return or an implicitly returned object from the last 6195executed 6196opcode, a control method will now implicitly return an integer of value 0 6197for 6198Microsoft compatibility. (Lin Ming) BZ 392 6199 6200Fixed a problem with the Load operator where an exception was not 6201returned 6202in 6203the case where the table is already loaded. (Lin Ming) BZ 463 6204 6205Implemented support for the use of DDBHandles as an Indexed Reference, as 6206per 6207the ACPI spec. (Lin Ming) BZ 486 6208 6209Implemented support for UserTerm (Method invocation) for the Unload 6210operator 6211as per the ACPI spec. (Lin Ming) BZ 580 6212 6213Fixed a problem with the LoadTable operator where the OemId and 6214OemTableId 6215input strings could cause unexpected failures if they were shorter than 6216the 6217maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 6218 6219Implemented support for UserTerm (Method invocation) for the Unload 6220operator 6221as per the ACPI spec. (Lin Ming) BZ 580 6222 6223Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 6224HEST, 6225IBFT, UEFI, WDAT. Disassembler support is forthcoming. 6226 6227Example Code and Data Size: These are the sizes for the OS-independent 6228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6229debug version of the code includes the debug output trace mechanism and 6230has 6231a much larger code and data size. 6232 6233 Previous Release: 6234 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6235 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6236 Current Release: 6237 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 6238 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 6239 62402) iASL Compiler/Disassembler and Tools: 6241 6242Implemented support in the disassembler for checksum validation on 6243incoming 6244binary DSDTs and SSDTs. If incorrect, a message is displayed within the 6245table 6246header dump at the start of the disassembly. 6247 6248Implemented additional debugging information in the namespace listing 6249file 6250created during compilation. In addition to the namespace hierarchy, the 6251full 6252pathname to each namespace object is displayed. 6253 6254Fixed a problem with the disassembler where invalid ACPI tables could 6255cause 6256faults or infinite loops. 6257 6258Fixed an unexpected parse error when using the optional "parameter types" 6259list in a control method declaration. (Lin Ming) BZ 397 6260 6261Fixed a problem where two External declarations with the same name did 6262not 6263cause an error (Lin Ming) BZ 509 6264 6265Implemented support for full TermArgs (adding Argx, Localx and method 6266invocation) for the ParameterData parameter to the LoadTable operator. 6267(Lin 6268Ming) BZ 583,587 6269 6270---------------------------------------- 627119 December 2007. Summary of changes for version 20071219: 6272 62731) ACPI CA Core Subsystem: 6274 6275Implemented full support for deferred execution for the TermArg string 6276arguments for DataTableRegion. This enables forward references and full 6277operand resolution for the three string arguments. Similar to 6278OperationRegion 6279deferred argument execution.) Lin Ming. BZ 430 6280 6281Implemented full argument resolution support for the BankValue argument 6282to 6283BankField. Previously, only constants were supported, now any TermArg may 6284be 6285used. Lin Ming BZ 387, 393 6286 6287Fixed a problem with AcpiGetDevices where the search of a branch of the 6288device tree could be terminated prematurely. In accordance with the ACPI 6289specification, the search down the current branch is terminated if a 6290device 6291is both not present and not functional (instead of just not present.) 6292Yakui 6293Zhao. 6294 6295Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 6296if 6297the underlying AML code changed the GPE enable registers. Now, any 6298unknown 6299incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 6300disabled 6301instead of simply ignored. Rui Zhang. 6302 6303Fixed a problem with Index Fields where the Index register was 6304incorrectly 6305limited to a maximum of 32 bits. Now any size may be used. 6306 6307Fixed a couple memory leaks associated with "implicit return" objects 6308when 6309the AML Interpreter slack mode is enabled. Lin Ming BZ 349 6310 6311Example Code and Data Size: These are the sizes for the OS-independent 6312acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6313debug version of the code includes the debug output trace mechanism and 6314has 6315a much larger code and data size. 6316 6317 Previous Release: 6318 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6319 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6320 Current Release: 6321 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 6322 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 6323 6324---------------------------------------- 632514 November 2007. Summary of changes for version 20071114: 6326 63271) ACPI CA Core Subsystem: 6328 6329Implemented event counters for each of the Fixed Events, the ACPI SCI 6330(interrupt) itself, and control methods executed. Named 6331AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 6332These 6333should be useful for debugging and statistics. 6334 6335Implemented a new external interface, AcpiGetStatistics, to retrieve the 6336contents of the various event counters. Returns the current values for 6337AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 6338AcpiMethodCount. The interface can be expanded in the future if new 6339counters 6340are added. Device drivers should use this interface rather than access 6341the 6342counters directly. 6343 6344Fixed a problem with the FromBCD and ToBCD operators. With some 6345compilers, 6346the ShortDivide function worked incorrectly, causing problems with the 6347BCD 6348functions with large input values. A truncation from 64-bit to 32-bit 6349inadvertently occurred. Internal BZ 435. Lin Ming 6350 6351Fixed a problem with Index references passed as method arguments. 6352References 6353passed as arguments to control methods were dereferenced immediately 6354(before 6355control was passed to the called method). The references are now 6356correctly 6357passed directly to the called method. BZ 5389. Lin Ming 6358 6359Fixed a problem with CopyObject used in conjunction with the Index 6360operator. 6361The reference was incorrectly dereferenced before the copy. The reference 6362is 6363now correctly copied. BZ 5391. Lin Ming 6364 6365Fixed a problem with Control Method references within Package objects. 6366These 6367references are now correctly generated. This completes the package 6368construction overhaul that began in version 20071019. 6369 6370Example Code and Data Size: These are the sizes for the OS-independent 6371acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6372debug version of the code includes the debug output trace mechanism and 6373has 6374a much larger code and data size. 6375 6376 Previous Release: 6377 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6378 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6379 Current Release: 6380 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 6381 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 6382 6383 63842) iASL Compiler/Disassembler and Tools: 6385 6386The AcpiExec utility now installs handlers for all of the predefined 6387Operation Region types. New types supported are: PCI_Config, CMOS, and 6388PCIBARTarget. 6389 6390Fixed a problem with the 64-bit version of AcpiExec where the extended 6391(64- 6392bit) address fields for the DSDT and FACS within the FADT were not being 6393used, causing truncation of the upper 32-bits of these addresses. Lin 6394Ming 6395and Bob Moore 6396 6397---------------------------------------- 639819 October 2007. Summary of changes for version 20071019: 6399 64001) ACPI CA Core Subsystem: 6401 6402Fixed a problem with the Alias operator when the target of the alias is a 6403named ASL operator that opens a new scope -- Scope, Device, 6404PowerResource, 6405Processor, and ThermalZone. In these cases, any children of the original 6406operator could not be accessed via the alias, potentially causing 6407unexpected 6408AE_NOT_FOUND exceptions. (BZ 9067) 6409 6410Fixed a problem with the Package operator where all named references were 6411created as object references and left otherwise unresolved. According to 6412the 6413ACPI specification, a Package can only contain Data Objects or references 6414to 6415control methods. The implication is that named references to Data Objects 6416(Integer, Buffer, String, Package, BufferField, Field) should be resolved 6417immediately upon package creation. This is the approach taken with this 6418change. References to all other named objects (Methods, Devices, Scopes, 6419etc.) are all now properly created as reference objects. (BZ 5328) 6420 6421Reverted a change to Notify handling that was introduced in version 642220070508. This version changed the Notify handling from asynchronous to 6423fully synchronous (Device driver Notify handling with respect to the 6424Notify 6425ASL operator). It was found that this change caused more problems than it 6426solved and was removed by most users. 6427 6428Fixed a problem with the Increment and Decrement operators where the type 6429of 6430the target object could be unexpectedly and incorrectly changed. (BZ 353) 6431Lin Ming. 6432 6433Fixed a problem with the Load and LoadTable operators where the table 6434location within the namespace was ignored. Instead, the table was always 6435loaded into the root or current scope. Lin Ming. 6436 6437Fixed a problem with the Load operator when loading a table from a buffer 6438object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 6439 6440Fixed a problem with the Debug object where a store of a DdbHandle 6441reference 6442object to the Debug object could cause a fault. 6443 6444Added a table checksum verification for the Load operator, in the case 6445where 6446the load is from a buffer. (BZ 578). 6447 6448Implemented additional parameter validation for the LoadTable operator. 6449The 6450length of the input strings SignatureString, OemIdString, and OemTableId 6451are 6452now checked for maximum lengths. (BZ 582) Lin Ming. 6453 6454Example Code and Data Size: These are the sizes for the OS-independent 6455acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6456debug version of the code includes the debug output trace mechanism and 6457has 6458a much larger code and data size. 6459 6460 Previous Release: 6461 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6462 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6463 Current Release: 6464 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 6465 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 6466 6467 64682) iASL Compiler/Disassembler: 6469 6470Fixed a problem where if a single file was specified and the file did not 6471exist, no error message was emitted. (Introduced with wildcard support in 6472version 20070917.) 6473 6474---------------------------------------- 647519 September 2007. Summary of changes for version 20070919: 6476 64771) ACPI CA Core Subsystem: 6478 6479Designed and implemented new external interfaces to install and remove 6480handlers for ACPI table-related events. Current events that are defined 6481are 6482LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 6483they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 6484AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 6485 6486Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 6487(acpi_serialized option on Linux) could cause some systems to hang during 6488initialization. (Bob Moore) BZ 8171 6489 6490Fixed a problem where objects of certain types (Device, ThermalZone, 6491Processor, PowerResource) can be not found if they are declared and 6492referenced from within the same control method (Lin Ming) BZ 341 6493 6494Example Code and Data Size: These are the sizes for the OS-independent 6495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6496debug version of the code includes the debug output trace mechanism and 6497has 6498a much larger code and data size. 6499 6500 Previous Release: 6501 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 6502 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 6503 Current Release: 6504 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 6505 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 6506 6507 65082) iASL Compiler/Disassembler: 6509 6510Implemented support to allow multiple files to be compiled/disassembled 6511in 6512a 6513single invocation. This includes command line wildcard support for both 6514the 6515Windows and Unix versions of the compiler. This feature simplifies the 6516disassembly and compilation of multiple ACPI tables in a single 6517directory. 6518 6519---------------------------------------- 652008 May 2007. Summary of changes for version 20070508: 6521 65221) ACPI CA Core Subsystem: 6523 6524Implemented a Microsoft compatibility design change for the handling of 6525the 6526Notify AML operator. Previously, notify handlers were dispatched and 6527executed completely asynchronously in a deferred thread. The new design 6528still executes the notify handlers in a different thread, but the 6529original 6530thread that executed the Notify() now waits at a synchronization point 6531for 6532the notify handler to complete. Some machines depend on a synchronous 6533Notify 6534operator in order to operate correctly. 6535 6536Implemented support to allow Package objects to be passed as method 6537arguments to the external AcpiEvaluateObject interface. Previously, this 6538would return the AE_NOT_IMPLEMENTED exception. This feature had not been 6539implemented since there were no reserved control methods that required it 6540until recently. 6541 6542Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 6543that 6544contained invalid non-zero values in reserved fields could cause later 6545failures because these fields have meaning in later revisions of the 6546FADT. 6547For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 6548fields 6549are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 6550 6551Fixed a problem where the Global Lock handle was not properly updated if 6552a 6553thread that acquired the Global Lock via executing AML code then 6554attempted 6555to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 6556Joe 6557Liu. 6558 6559Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 6560could be corrupted if the interrupt being removed was at the head of the 6561list. Reported by Linn Crosetto. 6562 6563Example Code and Data Size: These are the sizes for the OS-independent 6564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6565debug version of the code includes the debug output trace mechanism and 6566has 6567a much larger code and data size. 6568 6569 Previous Release: 6570 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6571 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 6572 Current Release: 6573 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 6574 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 6575 6576---------------------------------------- 657720 March 2007. Summary of changes for version 20070320: 6578 65791) ACPI CA Core Subsystem: 6580 6581Implemented a change to the order of interpretation and evaluation of AML 6582operand objects within the AML interpreter. The interpreter now evaluates 6583operands in the order that they appear in the AML stream (and the 6584corresponding ASL code), instead of in the reverse order (after the 6585entire 6586operand list has been parsed). The previous behavior caused several 6587subtle 6588incompatibilities with the Microsoft AML interpreter as well as being 6589somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 6590 6591Implemented a change to the ACPI Global Lock support. All interfaces to 6592the 6593global lock now allow the same thread to acquire the lock multiple times. 6594This affects the AcpiAcquireGlobalLock external interface to the global 6595lock 6596as well as the internal use of the global lock to support AML fields -- a 6597control method that is holding the global lock can now simultaneously 6598access 6599AML fields that require global lock protection. Previously, in both 6600cases, 6601this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 6602to 6603AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 6604Controller. There is no change to the behavior of the AML Acquire 6605operator, 6606as this can already be used to acquire a mutex multiple times by the same 6607thread. BZ 8066. With assistance from Alexey Starikovskiy. 6608 6609Fixed a problem where invalid objects could be referenced in the AML 6610Interpreter after error conditions. During operand evaluation, ensure 6611that 6612the internal "Return Object" field is cleared on error and only valid 6613pointers are stored there. Caused occasional access to deleted objects 6614that 6615resulted in "large reference count" warning messages. Valery Podrezov. 6616 6617Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 6618on 6619deeply nested control method invocations. BZ 7873, local BZ 487. Valery 6620Podrezov. 6621 6622Fixed an internal problem with the handling of result objects on the 6623interpreter result stack. BZ 7872. Valery Podrezov. 6624 6625Removed obsolete code that handled the case where AML_NAME_OP is the 6626target 6627of a reference (Reference.Opcode). This code was no longer necessary. BZ 66287874. Valery Podrezov. 6629 6630Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 6631was 6632a 6633remnant from the previously discontinued 16-bit support. 6634 6635Example Code and Data Size: These are the sizes for the OS-independent 6636acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6637debug version of the code includes the debug output trace mechanism and 6638has 6639a much larger code and data size. 6640 6641 Previous Release: 6642 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6643 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6644 Current Release: 6645 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6646 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 6647 6648---------------------------------------- 664926 January 2007. Summary of changes for version 20070126: 6650 66511) ACPI CA Core Subsystem: 6652 6653Added the 2007 copyright to all module headers and signons. This affects 6654virtually every file in the ACPICA core subsystem, the iASL compiler, and 6655the utilities. 6656 6657Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 6658during a table load. A bad pointer was passed in the case where the DSDT 6659is 6660overridden, causing a fault in this case. 6661 6662Example Code and Data Size: These are the sizes for the OS-independent 6663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6664debug version of the code includes the debug output trace mechanism and 6665has 6666a much larger code and data size. 6667 6668 Previous Release: 6669 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6670 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6671 Current Release: 6672 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6673 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6674 6675---------------------------------------- 667615 December 2006. Summary of changes for version 20061215: 6677 66781) ACPI CA Core Subsystem: 6679 6680Support for 16-bit ACPICA has been completely removed since it is no 6681longer 6682necessary and it clutters the code. All 16-bit macros, types, and 6683conditional compiles have been removed, cleaning up and simplifying the 6684code 6685across the entire subsystem. DOS support is no longer needed since the 6686bootable Linux firmware kit is now available. 6687 6688The handler for the Global Lock is now removed during AcpiTerminate to 6689enable a clean subsystem restart, via the implementation of the 6690AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 6691HP) 6692 6693Implemented enhancements to the multithreading support within the 6694debugger 6695to enable improved multithreading debugging and evaluation of the 6696subsystem. 6697(Valery Podrezov) 6698 6699Debugger: Enhanced the Statistics/Memory command to emit the total 6700(maximum) 6701memory used during the execution, as well as the maximum memory consumed 6702by 6703each of the various object types. (Valery Podrezov) 6704 6705Example Code and Data Size: These are the sizes for the OS-independent 6706acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6707debug version of the code includes the debug output trace mechanism and 6708has 6709a much larger code and data size. 6710 6711 Previous Release: 6712 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 6713 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 6714 Current Release: 6715 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 6716 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 6717 6718 67192) iASL Compiler/Disassembler and Tools: 6720 6721AcpiExec: Implemented a new option (-m) to display full memory use 6722statistics upon subsystem/program termination. (Valery Podrezov) 6723 6724---------------------------------------- 672509 November 2006. Summary of changes for version 20061109: 6726 67271) ACPI CA Core Subsystem: 6728 6729Optimized the Load ASL operator in the case where the source operand is 6730an 6731operation region. Simply map the operation region memory, instead of 6732performing a bytewise read. (Region must be of type SystemMemory, see 6733below.) 6734 6735Fixed the Load ASL operator for the case where the source operand is a 6736region field. A buffer object is also allowed as the source operand. BZ 6737480 6738 6739Fixed a problem where the Load ASL operator allowed the source operand to 6740be 6741an operation region of any type. It is now restricted to regions of type 6742SystemMemory, as per the ACPI specification. BZ 481 6743 6744Additional cleanup and optimizations for the new Table Manager code. 6745 6746AcpiEnable will now fail if all of the required ACPI tables are not 6747loaded 6748(FADT, FACS, DSDT). BZ 477 6749 6750Added #pragma pack(8/4) to acobject.h to ensure that the structures in 6751this 6752header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 6753manually optimized to be aligned and will not work if it is byte-packed. 6754 6755Example Code and Data Size: These are the sizes for the OS-independent 6756acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6757debug version of the code includes the debug output trace mechanism and 6758has 6759a much larger code and data size. 6760 6761 Previous Release: 6762 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 6763 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 6764 Current Release: 6765 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 6766 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 6767 6768 67692) iASL Compiler/Disassembler and Tools: 6770 6771Fixed a problem where the presence of the _OSI predefined control method 6772within complex expressions could cause an internal compiler error. 6773 6774AcpiExec: Implemented full region support for multiple address spaces. 6775SpaceId is now part of the REGION object. BZ 429 6776 6777---------------------------------------- 677811 October 2006. Summary of changes for version 20061011: 6779 67801) ACPI CA Core Subsystem: 6781 6782Completed an AML interpreter performance enhancement for control method 6783execution. Previously a 2-pass parse/execution, control methods are now 6784completely parsed and executed in a single pass. This improves overall 6785interpreter performance by ~25%, reduces code size, and reduces CPU stack 6786use. (Valery Podrezov + interpreter changes in version 20051202 that 6787eliminated namespace loading during the pass one parse.) 6788 6789Implemented _CID support for PCI Root Bridge detection. If the _HID does 6790not 6791match the predefined PCI Root Bridge IDs, the _CID list (if present) is 6792now 6793obtained and also checked for an ID match. 6794 6795Implemented additional support for the PCI _ADR execution: upsearch until 6796a 6797device scope is found before executing _ADR. This allows PCI_Config 6798operation regions to be declared locally within control methods 6799underneath 6800PCI device objects. 6801 6802Fixed a problem with a possible race condition between threads executing 6803AcpiWalkNamespace and the AML interpreter. This condition was removed by 6804modifying AcpiWalkNamespace to (by default) ignore all temporary 6805namespace 6806entries created during any concurrent control method execution. An 6807additional namespace race condition is known to exist between 6808AcpiWalkNamespace and the Load/Unload ASL operators and is still under 6809investigation. 6810 6811Restructured the AML ParseLoop function, breaking it into several 6812subfunctions in order to reduce CPU stack use and improve 6813maintainability. 6814(Mikhail Kouzmich) 6815 6816AcpiGetHandle: Fix for parameter validation to detect invalid 6817combinations 6818of prefix handle and pathname. BZ 478 6819 6820Example Code and Data Size: These are the sizes for the OS-independent 6821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6822debug version of the code includes the debug output trace mechanism and 6823has 6824a much larger code and data size. 6825 6826 Previous Release: 6827 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6828 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 6829 Current Release: 6830 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 6831 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 6832 68332) iASL Compiler/Disassembler and Tools: 6834 6835Ported the -g option (get local ACPI tables) to the new ACPICA Table 6836Manager 6837to restore original behavior. 6838 6839---------------------------------------- 684027 September 2006. Summary of changes for version 20060927: 6841 68421) ACPI CA Core Subsystem: 6843 6844Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 6845These functions now use a spinlock for mutual exclusion and the interrupt 6846level indication flag is not needed. 6847 6848Fixed a problem with the Global Lock where the lock could appear to be 6849obtained before it is actually obtained. The global lock semaphore was 6850inadvertently created with one unit instead of zero units. (BZ 464) 6851Fiodor 6852Suietov. 6853 6854Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 6855during 6856a read from a buffer or region field. (BZ 458) Fiodor Suietov. 6857 6858Example Code and Data Size: These are the sizes for the OS-independent 6859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6860debug version of the code includes the debug output trace mechanism and 6861has 6862a much larger code and data size. 6863 6864 Previous Release: 6865 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6866 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 6867 Current Release: 6868 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6869 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 6870 6871 68722) iASL Compiler/Disassembler and Tools: 6873 6874Fixed a compilation problem with the pre-defined Resource Descriptor 6875field 6876names where an "object does not exist" error could be incorrectly 6877generated 6878if the parent ResourceTemplate pathname places the template within a 6879different namespace scope than the current scope. (BZ 7212) 6880 6881Fixed a problem where the compiler could hang after syntax errors 6882detected 6883in an ElseIf construct. (BZ 453) 6884 6885Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 6886operator. An incorrect output filename was produced when this parameter 6887was 6888a null string (""). Now, the original input filename is used as the AML 6889output filename, with an ".aml" extension. 6890 6891Implemented a generic batch command mode for the AcpiExec utility 6892(execute 6893any AML debugger command) (Valery Podrezov). 6894 6895---------------------------------------- 689612 September 2006. Summary of changes for version 20060912: 6897 68981) ACPI CA Core Subsystem: 6899 6900Enhanced the implementation of the "serialized mode" of the interpreter 6901(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 6902specified, instead of creating a serialization semaphore per control 6903method, 6904the interpreter lock is simply no longer released before a blocking 6905operation during control method execution. This effectively makes the AML 6906Interpreter single-threaded. The overhead of a semaphore per-method is 6907eliminated. 6908 6909Fixed a regression where an error was no longer emitted if a control 6910method 6911attempts to create 2 objects of the same name. This once again returns 6912AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 6913that 6914will dynamically serialize the control method to possible prevent future 6915errors. (BZ 440) 6916 6917Integrated a fix for a problem with PCI Express HID detection in the PCI 6918Config Space setup procedure. (BZ 7145) 6919 6920Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 6921AcpiHwInitialize function - the FADT registers are now validated when the 6922table is loaded. 6923 6924Added two new warnings during FADT verification - 1) if the FADT is 6925larger 6926than the largest known FADT version, and 2) if there is a mismatch 6927between 6928a 692932-bit block address and the 64-bit X counterpart (when both are non- 6930zero.) 6931 6932Example Code and Data Size: These are the sizes for the OS-independent 6933acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6934debug version of the code includes the debug output trace mechanism and 6935has 6936a much larger code and data size. 6937 6938 Previous Release: 6939 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 6940 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 6941 Current Release: 6942 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 6943 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 6944 6945 69462) iASL Compiler/Disassembler and Tools: 6947 6948Fixed a problem with the implementation of the Switch() operator where 6949the 6950temporary variable was declared too close to the actual Switch, instead 6951of 6952at method level. This could cause a problem if the Switch() operator is 6953within a while loop, causing an error on the second iteration. (BZ 460) 6954 6955Disassembler - fix for error emitted for unknown type for target of scope 6956operator. Now, ignore it and continue. 6957 6958Disassembly of an FADT now verifies the input FADT and reports any errors 6959found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 6960 6961Disassembly of raw data buffers with byte initialization data now 6962prefixes 6963each output line with the current buffer offset. 6964 6965Disassembly of ASF! table now includes all variable-length data fields at 6966the end of some of the subtables. 6967 6968The disassembler now emits a comment if a buffer appears to be a 6969ResourceTemplate, but cannot be disassembled as such because the EndTag 6970does 6971not appear at the very end of the buffer. 6972 6973AcpiExec - Added the "-t" command line option to enable the serialized 6974mode 6975of the AML interpreter. 6976 6977---------------------------------------- 697831 August 2006. Summary of changes for version 20060831: 6979 69801) ACPI CA Core Subsystem: 6981 6982Miscellaneous fixes for the Table Manager: 6983- Correctly initialize internal common FADT for all 64-bit "X" fields 6984- Fixed a couple table mapping issues during table load 6985- Fixed a couple alignment issues for IA64 6986- Initialize input array to zero in AcpiInitializeTables 6987- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 6988AcpiGetTableByIndex 6989 6990Change for GPE support: when a "wake" GPE is received, all wake GPEs are 6991now 6992immediately disabled to prevent the waking GPE from firing again and to 6993prevent other wake GPEs from interrupting the wake process. 6994 6995Added the AcpiGpeCount global that tracks the number of processed GPEs, 6996to 6997be used for debugging systems with a large number of ACPI interrupts. 6998 6999Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 7000both the ACPICA headers and the disassembler. 7001 7002Example Code and Data Size: These are the sizes for the OS-independent 7003acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7004debug version of the code includes the debug output trace mechanism and 7005has 7006a much larger code and data size. 7007 7008 Previous Release: 7009 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7010 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7011 Current Release: 7012 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 7013 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 7014 7015 70162) iASL Compiler/Disassembler and Tools: 7017 7018Disassembler support for the DMAR ACPI table. 7019 7020---------------------------------------- 702123 August 2006. Summary of changes for version 20060823: 7022 70231) ACPI CA Core Subsystem: 7024 7025The Table Manager component has been completely redesigned and 7026reimplemented. The new design is much simpler, and reduces the overall 7027code 7028and data size of the kernel-resident ACPICA by approximately 5%. Also, it 7029is 7030now possible to obtain the ACPI tables very early during kernel 7031initialization, even before dynamic memory management is initialized. 7032(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 7033 7034Obsolete ACPICA interfaces: 7035 7036- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 7037init 7038time). 7039- AcpiLoadTable: Not needed. 7040- AcpiUnloadTable: Not needed. 7041 7042New ACPICA interfaces: 7043 7044- AcpiInitializeTables: Must be called before the table manager can be 7045used. 7046- AcpiReallocateRootTable: Used to transfer the root table to dynamically 7047allocated memory after it becomes available. 7048- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 7049tables 7050in the RSDT/XSDT. 7051 7052Other ACPICA changes: 7053 7054- AcpiGetTableHeader returns the actual mapped table header, not a copy. 7055Use 7056AcpiOsUnmapMemory to free this mapping. 7057- AcpiGetTable returns the actual mapped table. The mapping is managed 7058internally and must not be deleted by the caller. Use of this interface 7059causes no additional dynamic memory allocation. 7060- AcpiFindRootPointer: Support for physical addressing has been 7061eliminated, 7062it appeared to be unused. 7063- The interface to AcpiOsMapMemory has changed to be consistent with the 7064other allocation interfaces. 7065- The interface to AcpiOsGetRootPointer has changed to eliminate 7066unnecessary 7067parameters. 7068- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 706964- 7070bit platforms. Was previously 64 bits on all platforms. 7071- The interface to the ACPI Global Lock acquire/release macros have 7072changed 7073slightly since ACPICA no longer keeps a local copy of the FACS with a 7074constructed pointer to the actual global lock. 7075 7076Porting to the new table manager: 7077 7078- AcpiInitializeTables: Must be called once, and can be called anytime 7079during the OS initialization process. It allows the host to specify an 7080area 7081of memory to be used to store the internal version of the RSDT/XSDT (root 7082table). This allows the host to access ACPI tables before memory 7083management 7084is initialized and running. 7085- AcpiReallocateRootTable: Can be called after memory management is 7086running 7087to copy the root table to a dynamically allocated array, freeing up the 7088scratch memory specified in the call to AcpiInitializeTables. 7089- AcpiSubsystemInitialize: This existing interface is independent of the 7090Table Manager, and does not have to be called before the Table Manager 7091can 7092be used, it only must be called before the rest of ACPICA can be used. 7093- ACPI Tables: Some changes have been made to the names and structure of 7094the 7095actbl.h and actbl1.h header files and may require changes to existing 7096code. 7097For example, bitfields have been completely removed because of their lack 7098of 7099portability across C compilers. 7100- Update interfaces to the Global Lock acquire/release macros if local 7101versions are used. (see acwin.h) 7102 7103Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 7104 7105New files: tbfind.c 7106 7107Example Code and Data Size: These are the sizes for the OS-independent 7108acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7109debug version of the code includes the debug output trace mechanism and 7110has 7111a much larger code and data size. 7112 7113 Previous Release: 7114 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7115 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7116 Current Release: 7117 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 7118 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 7119 7120 71212) iASL Compiler/Disassembler and Tools: 7122 7123No changes for this release. 7124 7125---------------------------------------- 712621 July 2006. Summary of changes for version 20060721: 7127 71281) ACPI CA Core Subsystem: 7129 7130The full source code for the ASL test suite used to validate the iASL 7131compiler and the ACPICA core subsystem is being released with the ACPICA 7132source for the first time. The source is contained in a separate package 7133and 7134consists of over 1100 files that exercise all ASL/AML operators. The 7135package 7136should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 7137Fiodor 7138Suietov) 7139 7140Completed a new design and implementation for support of the ACPI Global 7141Lock. On the OS side, the global lock is now treated as a standard AML 7142mutex. Previously, multiple OS threads could "acquire" the global lock 7143simultaneously. However, this could cause the BIOS to be starved out of 7144the 7145lock - especially in cases such as the Embedded Controller driver where 7146there is a tight coupling between the OS and the BIOS. 7147 7148Implemented an optimization for the ACPI Global Lock interrupt mechanism. 7149The Global Lock interrupt handler no longer queues the execution of a 7150separate thread to signal the global lock semaphore. Instead, the 7151semaphore 7152is signaled directly from the interrupt handler. 7153 7154Implemented support within the AML interpreter for package objects that 7155contain a larger AML length (package list length) than the package 7156element 7157count. In this case, the length of the package is truncated to match the 7158package element count. Some BIOS code apparently modifies the package 7159length 7160on the fly, and this change supports this behavior. Provides 7161compatibility 7162with the MS AML interpreter. (With assistance from Fiodor Suietov) 7163 7164Implemented a temporary fix for the BankValue parameter of a Bank Field 7165to 7166support all constant values, now including the Zero and One opcodes. 7167Evaluation of this parameter must eventually be converted to a full 7168TermArg 7169evaluation. A not-implemented error is now returned (temporarily) for 7170non- 7171constant values for this parameter. 7172 7173Fixed problem reports (Fiodor Suietov) integrated: 7174- Fix for premature object deletion after CopyObject on Operation Region 7175(BZ 7176350) 7177 7178Example Code and Data Size: These are the sizes for the OS-independent 7179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7180debug version of the code includes the debug output trace mechanism and 7181has 7182a much larger code and data size. 7183 7184 Previous Release: 7185 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 7186 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 7187 Current Release: 7188 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7189 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7190 7191 71922) iASL Compiler/Disassembler and Tools: 7193 7194No changes for this release. 7195 7196---------------------------------------- 719707 July 2006. Summary of changes for version 20060707: 7198 71991) ACPI CA Core Subsystem: 7200 7201Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 7202that do not allow the initialization of address pointers within packed 7203structures - even though the hardware itself may support misaligned 7204transfers. Some of the debug data structures are packed by default to 7205minimize size. 7206 7207Added an error message for the case where AcpiOsGetThreadId() returns 7208zero. 7209A non-zero value is required by the core ACPICA code to ensure the proper 7210operation of AML mutexes and recursive control methods. 7211 7212The DSDT is now the only ACPI table that determines whether the AML 7213interpreter is in 32-bit or 64-bit mode. Not really a functional change, 7214but 7215the hooks for per-table 32/64 switching have been removed from the code. 7216A 7217clarification to the ACPI specification is forthcoming in ACPI 3.0B. 7218 7219Fixed a possible leak of an OwnerID in the error path of 7220AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 7221deletion to a single place in AcpiTbUninstallTable to correct possible 7222leaks 7223when using the AcpiTbDeleteTablesByType interface (with assistance from 7224Lance Ortiz.) 7225 7226Fixed a problem with Serialized control methods where the semaphore 7227associated with the method could be over-signaled after multiple method 7228invocations. 7229 7230Fixed two issues with the locking of the internal namespace data 7231structure. 7232Both the Unload() operator and AcpiUnloadTable interface now lock the 7233namespace during the namespace deletion associated with the table unload 7234(with assistance from Linn Crosetto.) 7235 7236Fixed problem reports (Valery Podrezov) integrated: 7237- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 7238 7239Fixed problem reports (Fiodor Suietov) integrated: 7240- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 7241- On Address Space handler deletion, needless deactivation call (BZ 374) 7242- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 7243375) 7244- Possible memory leak, Notify sub-objects of Processor, Power, 7245ThermalZone 7246(BZ 376) 7247- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 7248- Minimum Length of RSDT should be validated (BZ 379) 7249- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 7250Handler (BZ (380) 7251- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 7252loaded 7253(BZ 381) 7254 7255Example Code and Data Size: These are the sizes for the OS-independent 7256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7257debug version of the code includes the debug output trace mechanism and 7258has 7259a much larger code and data size. 7260 7261 Previous Release: 7262 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7263 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7264 Current Release: 7265 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 7266 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 7267 7268 72692) iASL Compiler/Disassembler and Tools: 7270 7271Fixed problem reports: 7272Compiler segfault when ASL contains a long (>1024) String declaration (BZ 7273436) 7274 7275---------------------------------------- 727623 June 2006. Summary of changes for version 20060623: 7277 72781) ACPI CA Core Subsystem: 7279 7280Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 7281allows the type to be customized to the host OS for improved efficiency 7282(since a spinlock is usually a very small object.) 7283 7284Implemented support for "ignored" bits in the ACPI registers. According 7285to 7286the ACPI specification, these bits should be preserved when writing the 7287registers via a read/modify/write cycle. There are 3 bits preserved in 7288this 7289manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 7290 7291Implemented the initial deployment of new OSL mutex interfaces. Since 7292some 7293host operating systems have separate mutex and semaphore objects, this 7294feature was requested. The base code now uses mutexes (and the new mutex 7295interfaces) wherever a binary semaphore was used previously. However, for 7296the current release, the mutex interfaces are defined as macros to map 7297them 7298to the existing semaphore interfaces. Therefore, no OSL changes are 7299required 7300at this time. (See acpiosxf.h) 7301 7302Fixed several problems with the support for the control method SyncLevel 7303parameter. The SyncLevel now works according to the ACPI specification 7304and 7305in concert with the Mutex SyncLevel parameter, since the current 7306SyncLevel 7307is a property of the executing thread. Mutual exclusion for control 7308methods 7309is now implemented with a mutex instead of a semaphore. 7310 7311Fixed three instances of the use of the C shift operator in the bitfield 7312support code (exfldio.c) to avoid the use of a shift value larger than 7313the 7314target data width. The behavior of C compilers is undefined in this case 7315and 7316can cause unpredictable results, and therefore the case must be detected 7317and 7318avoided. (Fiodor Suietov) 7319 7320Added an info message whenever an SSDT or OEM table is loaded dynamically 7321via the Load() or LoadTable() ASL operators. This should improve 7322debugging 7323capability since it will show exactly what tables have been loaded 7324(beyond 7325the tables present in the RSDT/XSDT.) 7326 7327Example Code and Data Size: These are the sizes for the OS-independent 7328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7329debug version of the code includes the debug output trace mechanism and 7330has 7331a much larger code and data size. 7332 7333 Previous Release: 7334 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7335 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7336 Current Release: 7337 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 7338 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 7339 7340 73412) iASL Compiler/Disassembler and Tools: 7342 7343No changes for this release. 7344 7345---------------------------------------- 734608 June 2006. Summary of changes for version 20060608: 7347 73481) ACPI CA Core Subsystem: 7349 7350Converted the locking mutex used for the ACPI hardware to a spinlock. 7351This 7352change should eliminate all problems caused by attempting to acquire a 7353semaphore at interrupt level, and it means that all ACPICA external 7354interfaces that directly access the ACPI hardware can be safely called 7355from 7356interrupt level. OSL code that implements the semaphore interfaces should 7357be 7358able to eliminate any workarounds for being called at interrupt level. 7359 7360Fixed a regression introduced in 20060526 where the ACPI device 7361initialization could be prematurely aborted with an AE_NOT_FOUND if a 7362device 7363did not have an optional _INI method. 7364 7365Fixed an IndexField issue where a write to the Data Register should be 7366limited in size to the AccessSize (width) of the IndexField itself. (BZ 7367433, 7368Fiodor Suietov) 7369 7370Fixed problem reports (Valery Podrezov) integrated: 7371- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 7372 7373Fixed problem reports (Fiodor Suietov) integrated: 7374- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 7375 7376Removed four global mutexes that were obsolete and were no longer being 7377used. 7378 7379Example Code and Data Size: These are the sizes for the OS-independent 7380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7381debug version of the code includes the debug output trace mechanism and 7382has 7383a much larger code and data size. 7384 7385 Previous Release: 7386 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7387 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7388 Current Release: 7389 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 7390 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 7391 7392 73932) iASL Compiler/Disassembler and Tools: 7394 7395Fixed a fault when using -g option (get tables from registry) on Windows 7396machines. 7397 7398Fixed problem reports integrated: 7399- Generate error if CreateField NumBits parameter is zero. (BZ 405) 7400- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 7401Suietov) 7402- Global table revision override (-r) is ignored (BZ 413) 7403 7404---------------------------------------- 740526 May 2006. Summary of changes for version 20060526: 7406 74071) ACPI CA Core Subsystem: 7408 7409Restructured, flattened, and simplified the internal interfaces for 7410namespace object evaluation - resulting in smaller code, less CPU stack 7411use, 7412and fewer interfaces. (With assistance from Mikhail Kouzmich) 7413 7414Fixed a problem with the CopyObject operator where the first parameter 7415was 7416not typed correctly for the parser, interpreter, compiler, and 7417disassembler. 7418Caused various errors and unexpected behavior. 7419 7420Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 7421produced incorrect results with some C compilers. Since the behavior of C 7422compilers when the shift value is larger than the datatype width is 7423apparently not well defined, the interpreter now detects this condition 7424and 7425simply returns zero as expected in all such cases. (BZ 395) 7426 7427Fixed problem reports (Valery Podrezov) integrated: 7428- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 7429- Allow interpreter to handle nested method declarations (BZ 5361) 7430 7431Fixed problem reports (Fiodor Suietov) integrated: 7432- AcpiTerminate doesn't free debug memory allocation list objects (BZ 7433355) 7434- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 7435356) 7436- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 7437- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 7438- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 7439- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 7440- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 7441- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 7442- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 7443365) 7444- Status of the Global Initialization Handler call not used (BZ 366) 7445- Incorrect object parameter to Global Initialization Handler (BZ 367) 7446 7447Example Code and Data Size: These are the sizes for the OS-independent 7448acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7449debug version of the code includes the debug output trace mechanism and 7450has 7451a much larger code and data size. 7452 7453 Previous Release: 7454 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 7455 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 7456 Current Release: 7457 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 7458 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 7459 7460 74612) iASL Compiler/Disassembler and Tools: 7462 7463Modified the parser to allow the names IO, DMA, and IRQ to be used as 7464namespace identifiers with no collision with existing resource descriptor 7465macro names. This provides compatibility with other ASL compilers and is 7466most useful for disassembly/recompilation of existing tables without 7467parse 7468errors. (With assistance from Thomas Renninger) 7469 7470Disassembler: fixed an incorrect disassembly problem with the 7471DataTableRegion and CopyObject operators. Fixed a possible fault during 7472disassembly of some Alias operators. 7473 7474---------------------------------------- 747512 May 2006. Summary of changes for version 20060512: 7476 74771) ACPI CA Core Subsystem: 7478 7479Replaced the AcpiOsQueueForExecution interface with a new interface named 7480AcpiOsExecute. The major difference is that the new interface does not 7481have 7482a Priority parameter, this appeared to be useless and has been replaced 7483by 7484a 7485Type parameter. The Type tells the host what type of execution is being 7486requested, such as global lock handler, notify handler, GPE handler, etc. 7487This allows the host to queue and execute the request as appropriate for 7488the 7489request type, possibly using different work queues and different 7490priorities 7491for the various request types. This enables fixes for multithreading 7492deadlock problems such as BZ #5534, and will require changes to all 7493existing 7494OS interface layers. (Alexey Starikovskiy and Bob Moore) 7495 7496Fixed a possible memory leak associated with the support for the so- 7497called 7498"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 7499Suietov) 7500 7501Fixed a problem with the Load() operator where a table load from an 7502operation region could overwrite an internal table buffer by up to 7 7503bytes 7504and cause alignment faults on IPF systems. (With assistance from Luming 7505Yu) 7506 7507Example Code and Data Size: These are the sizes for the OS-independent 7508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7509debug version of the code includes the debug output trace mechanism and 7510has 7511a much larger code and data size. 7512 7513 Previous Release: 7514 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 7515 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 7516 Current Release: 7517 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 7518 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 7519 7520 7521 75222) iASL Compiler/Disassembler and Tools: 7523 7524Disassembler: Implemented support to cross reference the internal 7525namespace 7526and automatically generate ASL External() statements for symbols not 7527defined 7528within the current table being disassembled. This will simplify the 7529disassembly and recompilation of interdependent tables such as SSDTs 7530since 7531these statements will no longer have to be added manually. 7532 7533Disassembler: Implemented experimental support to automatically detect 7534invocations of external control methods and generate appropriate 7535External() 7536statements. This is problematic because the AML cannot be correctly 7537parsed 7538until the number of arguments for each control method is known. 7539Currently, 7540standalone method invocations and invocations as the source operand of a 7541Store() statement are supported. 7542 7543Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 7544LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 7545LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 7546more readable and likely closer to the original ASL source. 7547 7548---------------------------------------- 754921 April 2006. Summary of changes for version 20060421: 7550 75511) ACPI CA Core Subsystem: 7552 7553Removed a device initialization optimization introduced in 20051216 where 7554the _STA method was not run unless an _INI was also present for the same 7555device. This optimization could cause problems because it could allow 7556_INI 7557methods to be run within a not-present device subtree. (If a not-present 7558device had no _INI, _STA would not be run, the not-present status would 7559not 7560be discovered, and the children of the device would be incorrectly 7561traversed.) 7562 7563Implemented a new _STA optimization where namespace subtrees that do not 7564contain _INI are identified and ignored during device initialization. 7565Selectively running _STA can significantly improve boot time on large 7566machines (with assistance from Len Brown.) 7567 7568Implemented support for the device initialization case where the returned 7569_STA flags indicate a device not-present but functioning. In this case, 7570_INI 7571is not run, but the device children are examined for presence, as per the 7572ACPI specification. 7573 7574Implemented an additional change to the IndexField support in order to 7575conform to MS behavior. The value written to the Index Register is not 7576simply a byte offset, it is a byte offset in units of the access width of 7577the parent Index Field. (Fiodor Suietov) 7578 7579Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 7580interface is called during the creation of all AML operation regions, and 7581allows the host OS to exert control over what addresses it will allow the 7582AML code to access. Operation Regions whose addresses are disallowed will 7583cause a runtime exception when they are actually accessed (will not 7584affect 7585or abort table loading.) See oswinxf or osunixxf for an example 7586implementation. 7587 7588Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 7589interface allows the host OS to match the various "optional" 7590interface/behavior strings for the _OSI predefined control method as 7591appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 7592for an example implementation. 7593 7594Restructured and corrected various problems in the exception handling 7595code 7596paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 7597(with assistance from Takayoshi Kochi.) 7598 7599Modified the Linux source converter to ignore quoted string literals 7600while 7601converting identifiers from mixed to lower case. This will correct 7602problems 7603with the disassembler and other areas where such strings must not be 7604modified. 7605 7606The ACPI_FUNCTION_* macros no longer require quotes around the function 7607name. This allows the Linux source converter to convert the names, now 7608that 7609the converter ignores quoted strings. 7610 7611Example Code and Data Size: These are the sizes for the OS-independent 7612acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7613debug version of the code includes the debug output trace mechanism and 7614has 7615a much larger code and data size. 7616 7617 Previous Release: 7618 7619 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 7620 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 7621 Current Release: 7622 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 7623 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 7624 7625 76262) iASL Compiler/Disassembler and Tools: 7627 7628Implemented 3 new warnings for iASL, and implemented multiple warning 7629levels 7630(w2 flag). 7631 76321) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 7633not 7634WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 7635check for the possible timeout, a warning is issued. 7636 76372) Useless operators: If an ASL operator does not specify an optional 7638target 7639operand and it also does not use the function return value from the 7640operator, a warning is issued since the operator effectively does 7641nothing. 7642 76433) Unreferenced objects: If a namespace object is created, but never 7644referenced, a warning is issued. This is a warning level 2 since there 7645are 7646cases where this is ok, such as when a secondary table is loaded that 7647uses 7648the unreferenced objects. Even so, care is taken to only flag objects 7649that 7650don't look like they will ever be used. For example, the reserved methods 7651(starting with an underscore) are usually not referenced because it is 7652expected that the OS will invoke them. 7653 7654---------------------------------------- 765531 March 2006. Summary of changes for version 20060331: 7656 76571) ACPI CA Core Subsystem: 7658 7659Implemented header file support for the following additional ACPI tables: 7660ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 7661support, 7662all current and known ACPI tables are now defined in the ACPICA headers 7663and 7664are available for use by device drivers and other software. 7665 7666Implemented support to allow tables that contain ACPI names with invalid 7667characters to be loaded. Previously, this would cause the table load to 7668fail, but since there are several known cases of such tables on existing 7669machines, this change was made to enable ACPI support for them. Also, 7670this 7671matches the behavior of the Microsoft ACPI implementation. 7672 7673Fixed a couple regressions introduced during the memory optimization in 7674the 767520060317 release. The namespace node definition required additional 7676reorganization and an internal datatype that had been changed to 8-bit 7677was 7678restored to 32-bit. (Valery Podrezov) 7679 7680Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 7681could be passed through to AcpiOsReleaseObject which is unexpected. Such 7682null pointers are now trapped and ignored, matching the behavior of the 7683previous implementation before the deployment of AcpiOsReleaseObject. 7684(Valery Podrezov, Fiodor Suietov) 7685 7686Fixed a memory mapping leak during the deletion of a SystemMemory 7687operation 7688region where a cached memory mapping was not deleted. This became a 7689noticeable problem for operation regions that are defined within 7690frequently 7691used control methods. (Dana Meyers) 7692 7693Reorganized the ACPI table header files into two main files: one for the 7694ACPI tables consumed by the ACPICA core, and another for the 7695miscellaneous 7696ACPI tables that are consumed by the drivers and other software. The 7697various 7698FADT definitions were merged into one common section and three different 7699tables (ACPI 1.0, 1.0+, and 2.0) 7700 7701Example Code and Data Size: These are the sizes for the OS-independent 7702acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7703debug version of the code includes the debug output trace mechanism and 7704has 7705a much larger code and data size. 7706 7707 Previous 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 Current Release: 7711 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 7712 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 7713 7714 77152) iASL Compiler/Disassembler and Tools: 7716 7717Disassembler: Implemented support to decode and format all non-AML ACPI 7718tables (tables other than DSDTs and SSDTs.) This includes the new tables 7719added to the ACPICA headers, therefore all current and known ACPI tables 7720are 7721supported. 7722 7723Disassembler: The change to allow ACPI names with invalid characters also 7724enables the disassembly of such tables. Invalid characters within names 7725are 7726changed to '*' to make the name printable; the iASL compiler will still 7727generate an error for such names, however, since this is an invalid ACPI 7728character. 7729 7730Implemented an option for AcpiXtract (-a) to extract all tables found in 7731the 7732input file. The default invocation extracts only the DSDTs and SSDTs. 7733 7734Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 7735makefile for the AcpiXtract utility. 7736 7737---------------------------------------- 773817 March 2006. Summary of changes for version 20060317: 7739 77401) ACPI CA Core Subsystem: 7741 7742Implemented the use of a cache object for all internal namespace nodes. 7743Since there are about 1000 static nodes in a typical system, this will 7744decrease memory use for cache implementations that minimize per- 7745allocation 7746overhead (such as a slab allocator.) 7747 7748Removed the reference count mechanism for internal namespace nodes, since 7749it 7750was deemed unnecessary. This reduces the size of each namespace node by 7751about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 7752case, 7753and 32 bytes for the 64-bit case. 7754 7755Optimized several internal data structures to reduce object size on 64- 7756bit 7757platforms by packing data within the 64-bit alignment. This includes the 7758frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 7759instances corresponding to the namespace objects. 7760 7761Added two new strings for the predefined _OSI method: "Windows 2001.1 7762SP1" 7763and "Windows 2006". 7764 7765Split the allocation tracking mechanism out to a separate file, from 7766utalloc.c to uttrack.c. This mechanism appears to be only useful for 7767application-level code. Kernels may wish to not include uttrack.c in 7768distributions. 7769 7770Removed all remnants of the obsolete ACPI_REPORT_* macros and the 7771associated 7772code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 7773macros.) 7774 7775Code and Data Size: These are the sizes for the acpica.lib produced by 7776the 7777Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 7778ACPI 7779driver or OSPM code. The debug version of the code includes the debug 7780output 7781trace mechanism and has a much larger code and data size. Note that these 7782values will vary depending on the efficiency of the compiler and the 7783compiler options used during generation. 7784 7785 Previous Release: 7786 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7787 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 7788 Current Release: 7789 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 7790 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 7791 7792 77932) iASL Compiler/Disassembler and Tools: 7794 7795Implemented an ANSI C version of the acpixtract utility. This version 7796will 7797automatically extract the DSDT and all SSDTs from the input acpidump text 7798file and dump the binary output to separate files. It can also display a 7799summary of the input file including the headers for each table found and 7800will extract any single ACPI table, with any signature. (See 7801source/tools/acpixtract) 7802 7803---------------------------------------- 780410 March 2006. Summary of changes for version 20060310: 7805 78061) ACPI CA Core Subsystem: 7807 7808Tagged all external interfaces to the subsystem with the new 7809ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 7810assist 7811kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 7812macro. The default definition is NULL. 7813 7814Added the ACPI_THREAD_ID type for the return value from 7815AcpiOsGetThreadId. 7816This allows the host to define this as necessary to simplify kernel 7817integration. The default definition is ACPI_NATIVE_UINT. 7818 7819Fixed two interpreter problems related to error processing, the deletion 7820of 7821objects, and placing invalid pointers onto the internal operator result 7822stack. BZ 6028, 6151 (Valery Podrezov) 7823 7824Increased the reference count threshold where a warning is emitted for 7825large 7826reference counts in order to eliminate unnecessary warnings on systems 7827with 7828large namespaces (especially 64-bit.) Increased the value from 0x400 to 78290x800. 7830 7831Due to universal disagreement as to the meaning of the 'c' in the 7832calloc() 7833function, the ACPI_MEM_CALLOCATE macro has been renamed to 7834ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 7835ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 7836ACPI_FREE. 7837 7838Code and Data Size: These are the sizes for the acpica.lib produced by 7839the 7840Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 7841ACPI 7842driver or OSPM code. The debug version of the code includes the debug 7843output 7844trace mechanism and has a much larger code and data size. Note that these 7845values will vary depending on the efficiency of the compiler and the 7846compiler options used during generation. 7847 7848 Previous Release: 7849 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 7850 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 7851 Current Release: 7852 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7853 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 7854 7855 78562) iASL Compiler/Disassembler: 7857 7858Disassembler: implemented support for symbolic resource descriptor 7859references. If a CreateXxxxField operator references a fixed offset 7860within 7861a 7862resource descriptor, a name is assigned to the descriptor and the offset 7863is 7864translated to the appropriate resource tag and pathname. The addition of 7865this support brings the disassembled code very close to the original ASL 7866source code and helps eliminate run-time errors when the disassembled 7867code 7868is modified (and recompiled) in such a way as to invalidate the original 7869fixed offsets. 7870 7871Implemented support for a Descriptor Name as the last parameter to the 7872ASL 7873Register() macro. This parameter was inadvertently left out of the ACPI 7874specification, and will be added for ACPI 3.0b. 7875 7876Fixed a problem where the use of the "_OSI" string (versus the full path 7877"\_OSI") caused an internal compiler error. ("No back ptr to op") 7878 7879Fixed a problem with the error message that occurs when an invalid string 7880is 7881used for a _HID object (such as one with an embedded asterisk: 7882"*PNP010A".) 7883The correct message is now displayed. 7884 7885---------------------------------------- 788617 February 2006. Summary of changes for version 20060217: 7887 78881) ACPI CA Core Subsystem: 7889 7890Implemented a change to the IndexField support to match the behavior of 7891the 7892Microsoft AML interpreter. The value written to the Index register is now 7893a 7894byte offset, no longer an index based upon the width of the Data 7895register. 7896This should fix IndexField problems seen on some machines where the Data 7897register is not exactly one byte wide. The ACPI specification will be 7898clarified on this point. 7899 7900Fixed a problem where several resource descriptor types could overrun the 7901internal descriptor buffer due to size miscalculation: VendorShort, 7902VendorLong, and Interrupt. This was noticed on IA64 machines, but could 7903affect all platforms. 7904 7905Fixed a problem where individual resource descriptors were misaligned 7906within 7907the internal buffer, causing alignment faults on IA64 platforms. 7908 7909Code and Data Size: These are the sizes for the acpica.lib produced by 7910the 7911Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 7912ACPI 7913driver or OSPM code. The debug version of the code includes the debug 7914output 7915trace mechanism and has a much larger code and data size. Note that these 7916values will vary depending on the efficiency of the compiler and the 7917compiler options used during generation. 7918 7919 Previous Release: 7920 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7921 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 7922 Current Release: 7923 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 7924 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 7925 7926 79272) iASL Compiler/Disassembler: 7928 7929Implemented support for new reserved names: _WDG and _WED are Microsoft 7930extensions for Windows Instrumentation Management, _TDL is a new ACPI- 7931defined method (Throttling Depth Limit.) 7932 7933Fixed a problem where a zero-length VendorShort or VendorLong resource 7934descriptor was incorrectly emitted as a descriptor of length one. 7935 7936---------------------------------------- 793710 February 2006. Summary of changes for version 20060210: 7938 79391) ACPI CA Core Subsystem: 7940 7941Removed a couple of extraneous ACPI_ERROR messages that appeared during 7942normal execution. These became apparent after the conversion from 7943ACPI_DEBUG_PRINT. 7944 7945Fixed a problem where the CreateField operator could hang if the BitIndex 7946or 7947NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 7948 7949Fixed a problem where a DeRefOf operation on a buffer object incorrectly 7950failed with an exception. This also fixes a couple of related RefOf and 7951DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 7952 7953Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 7954of 7955AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 7956BZ 79575480) 7958 7959Implemented a memory cleanup at the end of the execution of each 7960iteration 7961of an AML While() loop, preventing the accumulation of outstanding 7962objects. 7963(Valery Podrezov, BZ 5427) 7964 7965Eliminated a chunk of duplicate code in the object resolution code. 7966(Valery 7967Podrezov, BZ 5336) 7968 7969Fixed several warnings during the 64-bit code generation. 7970 7971The AcpiSrc source code conversion tool now inserts one line of 7972whitespace 7973after an if() statement that is followed immediately by a comment, 7974improving 7975readability of the Linux code. 7976 7977Code and Data Size: The current and previous library sizes for the core 7978subsystem are shown below. These are the code and data sizes for the 7979acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 7980These 7981values do not include any ACPI driver or OSPM code. The debug version of 7982the 7983code includes the debug output trace mechanism and has a much larger code 7984and data size. Note that these values will vary depending on the 7985efficiency 7986of the compiler and the compiler options used during generation. 7987 7988 Previous Release: 7989 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 7990 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 7991 Current Release: 7992 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 7993 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 7994 7995 79962) iASL Compiler/Disassembler: 7997 7998Fixed a problem with the disassembly of a BankField operator with a 7999complex 8000expression for the BankValue parameter. 8001 8002---------------------------------------- 800327 January 2006. Summary of changes for version 20060127: 8004 80051) ACPI CA Core Subsystem: 8006 8007Implemented support in the Resource Manager to allow unresolved 8008namestring 8009references within resource package objects for the _PRT method. This 8010support 8011is in addition to the previously implemented unresolved reference support 8012within the AML parser. If the interpreter slack mode is enabled, these 8013unresolved references will be passed through to the caller as a NULL 8014package 8015entry. 8016 8017Implemented and deployed new macros and functions for error and warning 8018messages across the subsystem. These macros are simpler and generate less 8019code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 8020ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 8021macros remain defined to allow ACPI drivers time to migrate to the new 8022macros. 8023 8024Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 8025the 8026Acquire/Release Lock OSL interfaces. 8027 8028Fixed a problem where Alias ASL operators are sometimes not correctly 8029resolved, in both the interpreter and the iASL compiler. 8030 8031Fixed several problems with the implementation of the 8032ConcatenateResTemplate 8033ASL operator. As per the ACPI specification, zero length buffers are now 8034treated as a single EndTag. One-length buffers always cause a fatal 8035exception. Non-zero length buffers that do not end with a full 2-byte 8036EndTag 8037cause a fatal exception. 8038 8039Fixed a possible structure overwrite in the AcpiGetObjectInfo external 8040interface. (With assistance from Thomas Renninger) 8041 8042Code and Data Size: The current and previous library sizes for the core 8043subsystem are shown below. These are the code and data sizes for the 8044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8045These 8046values do not include any ACPI driver or OSPM code. The debug version of 8047the 8048code includes the debug output trace mechanism and has a much larger code 8049and data size. Note that these values will vary depending on the 8050efficiency 8051of the compiler and the compiler options used during generation. 8052 8053 Previous Release: 8054 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8055 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8056 Current Release: 8057 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 8058 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 8059 8060 80612) iASL Compiler/Disassembler: 8062 8063Fixed an internal error that was generated for any forward references to 8064ASL 8065Alias objects. 8066 8067---------------------------------------- 806813 January 2006. Summary of changes for version 20060113: 8069 80701) ACPI CA Core Subsystem: 8071 8072Added 2006 copyright to all module headers and signons. This affects 8073virtually every file in the ACPICA core subsystem, iASL compiler, and the 8074utilities. 8075 8076Enhanced the ACPICA error reporting in order to simplify user migration 8077to 8078the non-debug version of ACPICA. Replaced all instances of the 8079ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 8080debug 8081levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 8082respectively. This preserves all error and warning messages in the non- 8083debug 8084version of the ACPICA code (this has been referred to as the "debug lite" 8085option.) Over 200 cases were converted to create a total of over 380 8086error/warning messages across the ACPICA code. This increases the code 8087and 8088data size of the default non-debug version of the code somewhat (about 808913K), 8090but all error/warning reporting may be disabled if desired (and code 8091eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 8092configuration option. The size of the debug version of ACPICA remains 8093about 8094the same. 8095 8096Fixed a memory leak within the AML Debugger "Set" command. One object was 8097not properly deleted for every successful invocation of the command. 8098 8099Code and Data Size: The current and previous library sizes for the core 8100subsystem are shown below. These are the code and data sizes for the 8101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8102These 8103values do not include any ACPI driver or OSPM code. The debug version of 8104the 8105code includes the debug output trace mechanism and has a much larger code 8106and data size. Note that these values will vary depending on the 8107efficiency 8108of the compiler and the compiler options used during generation. 8109 8110 Previous Release: 8111 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8112 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8113 Current Release: 8114 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 8115 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 8116 8117 81182) iASL Compiler/Disassembler: 8119 8120The compiler now officially supports the ACPI 3.0a specification that was 8121released on December 30, 2005. (Specification is available at 8122www.acpi.info) 8123 8124---------------------------------------- 812516 December 2005. Summary of changes for version 20051216: 8126 81271) ACPI CA Core Subsystem: 8128 8129Implemented optional support to allow unresolved names within ASL Package 8130objects. A null object is inserted in the package when a named reference 8131cannot be located in the current namespace. Enabled via the interpreter 8132slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 8133machines 8134that contain such code. 8135 8136Implemented an optimization to the initialization sequence that can 8137improve 8138boot time. During ACPI device initialization, the _STA method is now run 8139if 8140and only if the _INI method exists. The _STA method is used to determine 8141if 8142the device is present; An _INI can only be run if _STA returns present, 8143but 8144it is a waste of time to run the _STA method if the _INI does not exist. 8145(Prototype and assistance from Dong Wei) 8146 8147Implemented use of the C99 uintptr_t for the pointer casting macros if it 8148is 8149available in the current compiler. Otherwise, the default (void *) cast 8150is 8151used as before. 8152 8153Fixed some possible memory leaks found within the execution path of the 8154Break, Continue, If, and CreateField operators. (Valery Podrezov) 8155 8156Fixed a problem introduced in the 20051202 release where an exception is 8157generated during method execution if a control method attempts to declare 8158another method. 8159 8160Moved resource descriptor string constants that are used by both the AML 8161disassembler and AML debugger to the common utilities directory so that 8162these components are independent. 8163 8164Implemented support in the AcpiExec utility (-e switch) to globally 8165ignore 8166exceptions during control method execution (method is not aborted.) 8167 8168Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 8169generation. 8170 8171Code and Data Size: The current and previous library sizes for the core 8172subsystem are shown below. These are the code and data sizes for the 8173acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8174These 8175values do not include any ACPI driver or OSPM code. The debug version of 8176the 8177code includes the debug output trace mechanism and has a much larger code 8178and data size. Note that these values will vary depending on the 8179efficiency 8180of the compiler and the compiler options used during generation. 8181 8182 Previous Release: 8183 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8184 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 8185 Current Release: 8186 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 8187 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 8188 8189 81902) iASL Compiler/Disassembler: 8191 8192Fixed a problem where a CPU stack overflow fault could occur if a 8193recursive 8194method call was made from within a Return statement. 8195 8196---------------------------------------- 819702 December 2005. Summary of changes for version 20051202: 8198 81991) ACPI CA Core Subsystem: 8200 8201Modified the parsing of control methods to no longer create namespace 8202objects during the first pass of the parse. Objects are now created only 8203during the execute phase, at the moment the namespace creation operator 8204is 8205encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 8206This 8207should eliminate ALREADY_EXISTS exceptions seen on some machines where 8208reentrant control methods are protected by an AML mutex. The mutex will 8209now 8210correctly block multiple threads from attempting to create the same 8211object 8212more than once. 8213 8214Increased the number of available Owner Ids for namespace object tracking 8215from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 8216on 8217some machines with a large number of ACPI tables (either static or 8218dynamic). 8219 8220Fixed a problem with the AcpiExec utility where a fault could occur when 8221the 8222-b switch (batch mode) is used. 8223 8224Enhanced the namespace dump routine to output the owner ID for each 8225namespace object. 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.3K Code, 12.3K Data, 88.6K 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.2K Code, 67.4K Data, 230.6K Total 8244 8245 82462) iASL Compiler/Disassembler: 8247 8248Fixed a parse error during compilation of certain Switch/Case constructs. 8249To 8250simplify the parse, the grammar now allows for multiple Default 8251statements 8252and this error is now detected and flagged during the analysis phase. 8253 8254Disassembler: The disassembly now includes the contents of the original 8255table header within a comment at the start of the file. This includes the 8256name and version of the original ASL compiler. 8257 8258---------------------------------------- 825917 November 2005. Summary of changes for version 20051117: 8260 82611) ACPI CA Core Subsystem: 8262 8263Fixed a problem in the AML parser where the method thread count could be 8264decremented below zero if any errors occurred during the method parse 8265phase. 8266This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 8267machines. 8268This also fixed a related regression with the mechanism that detects and 8269corrects methods that cannot properly handle reentrancy (related to the 8270deployment of the new OwnerId mechanism.) 8271 8272Eliminated the pre-parsing of control methods (to detect errors) during 8273table load. Related to the problem above, this was causing unwind issues 8274if 8275any errors occurred during the parse, and it seemed to be overkill. A 8276table 8277load should not be aborted if there are problems with any single control 8278method, thus rendering this feature rather pointless. 8279 8280Fixed a problem with the new table-driven resource manager where an 8281internal 8282buffer overflow could occur for small resource templates. 8283 8284Implemented a new external interface, AcpiGetVendorResource. This 8285interface 8286will find and return a vendor-defined resource descriptor within a _CRS 8287or 8288_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 8289Helgaas. 8290 8291Removed the length limit (200) on string objects as per the upcoming ACPI 82923.0A specification. This affects the following areas of the interpreter: 82931) 8294any implicit conversion of a Buffer to a String, 2) a String object 8295result 8296of the ASL Concatentate operator, 3) the String object result of the ASL 8297ToString operator. 8298 8299Fixed a problem in the Windows OS interface layer (OSL) where a 8300WAIT_FOREVER 8301on a semaphore object would incorrectly timeout. This allows the 8302multithreading features of the AcpiExec utility to work properly under 8303Windows. 8304 8305Updated the Linux makefiles for the iASL compiler and AcpiExec to include 8306the recently added file named "utresrc.c". 8307 8308Code and Data Size: The current and previous library sizes for the core 8309subsystem are shown below. These are the code and data sizes for the 8310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8311These 8312values do not include any ACPI driver or OSPM code. The debug version of 8313the 8314code includes the debug output trace mechanism and has a much larger code 8315and data size. Note that these values will vary depending on the 8316efficiency 8317of the compiler and the compiler options used during generation. 8318 8319 Previous Release: 8320 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8321 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8322 Current Release: 8323 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 8324 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8325 8326 83272) iASL Compiler/Disassembler: 8328 8329Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 8330specification. For the iASL compiler, this means that string literals 8331within 8332the source ASL can be of any length. 8333 8334Enhanced the listing output to dump the AML code for resource descriptors 8335immediately after the ASL code for each descriptor, instead of in a block 8336at 8337the end of the entire resource template. 8338 8339Enhanced the compiler debug output to dump the entire original parse tree 8340constructed during the parse phase, before any transforms are applied to 8341the 8342tree. The transformed tree is dumped also. 8343 8344---------------------------------------- 834502 November 2005. Summary of changes for version 20051102: 8346 83471) ACPI CA Core Subsystem: 8348 8349Modified the subsystem initialization sequence to improve GPE support. 8350The 8351GPE initialization has been split into two parts in order to defer 8352execution 8353of the _PRW methods (Power Resources for Wake) until after the hardware 8354is 8355fully initialized and the SCI handler is installed. This allows the _PRW 8356methods to access fields protected by the Global Lock. This will fix 8357systems 8358where a NO_GLOBAL_LOCK exception has been seen during initialization. 8359 8360Converted the ACPI internal object disassemble and display code within 8361the 8362AML debugger to fully table-driven operation, reducing code size and 8363increasing maintainability. 8364 8365Fixed a regression with the ConcatenateResTemplate() ASL operator 8366introduced 8367in the 20051021 release. 8368 8369Implemented support for "local" internal ACPI object types within the 8370debugger "Object" command and the AcpiWalkNamespace external interfaces. 8371These local types include RegionFields, BankFields, IndexFields, Alias, 8372and 8373reference objects. 8374 8375Moved common AML resource handling code into a new file, "utresrc.c". 8376This 8377code is shared by both the Resource Manager and the AML Debugger. 8378 8379Code and Data Size: The current and previous library sizes for the core 8380subsystem are shown below. These are the code and data sizes for the 8381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8382These 8383values do not include any ACPI driver or OSPM code. The debug version of 8384the 8385code includes the debug output trace mechanism and has a much larger code 8386and data size. Note that these values will vary depending on the 8387efficiency 8388of the compiler and the compiler options used during generation. 8389 8390 Previous Release: 8391 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8392 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8393 Current Release: 8394 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 8395 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 8396 8397 83982) iASL Compiler/Disassembler: 8399 8400Fixed a problem with very large initializer lists (more than 4000 8401elements) 8402for both Buffer and Package objects where the parse stack could overflow. 8403 8404Enhanced the pre-compile source code scan for non-ASCII characters to 8405ignore 8406characters within comment fields. The scan is now always performed and is 8407no 8408longer optional, detecting invalid characters within a source file 8409immediately rather than during the parse phase or later. 8410 8411Enhanced the ASL grammar definition to force early reductions on all 8412list- 8413style grammar elements so that the overall parse stack usage is greatly 8414reduced. This should improve performance and reduce the possibility of 8415parse 8416stack overflow. 8417 8418Eliminated all reduce/reduce conflicts in the iASL parser generation. 8419Also, 8420with the addition of a %expected statement, the compiler generates from 8421source with no warnings. 8422 8423Fixed a possible segment fault in the disassembler if the input filename 8424does not contain a "dot" extension (Thomas Renninger). 8425 8426---------------------------------------- 842721 October 2005. Summary of changes for version 20051021: 8428 84291) ACPI CA Core Subsystem: 8430 8431Implemented support for the EM64T and other x86-64 processors. This 8432essentially entails recognizing that these processors support non-aligned 8433memory transfers. Previously, all 64-bit processors were assumed to lack 8434hardware support for non-aligned transfers. 8435 8436Completed conversion of the Resource Manager to nearly full table-driven 8437operation. Specifically, the resource conversion code (convert AML to 8438internal format and the reverse) and the debug code to dump internal 8439resource descriptors are fully table-driven, reducing code and data size 8440and 8441improving maintainability. 8442 8443The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 8444word 8445on 64-bit processors instead of a fixed 32-bit word. (With assistance 8446from 8447Alexey Starikovskiy) 8448 8449Implemented support within the resource conversion code for the Type- 8450Specific byte within the various ACPI 3.0 *WordSpace macros. 8451 8452Fixed some issues within the resource conversion code for the type- 8453specific 8454flags for both Memory and I/O address resource descriptors. For Memory, 8455implemented support for the MTP and TTP flags. For I/O, split the TRS and 8456TTP flags into two separate fields. 8457 8458Code and Data Size: The current and previous library sizes for the core 8459subsystem are shown below. These are the code and data sizes for the 8460acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8461These 8462values do not include any ACPI driver or OSPM code. The debug version of 8463the 8464code includes the debug output trace mechanism and has a much larger code 8465and data size. Note that these values will vary depending on the 8466efficiency 8467of the compiler and the compiler options used during generation. 8468 8469 Previous Release: 8470 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 8471 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 8472 Current Release: 8473 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 8474 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 8475 8476 8477 84782) iASL Compiler/Disassembler: 8479 8480Relaxed a compiler restriction that disallowed a ResourceIndex byte if 8481the 8482corresponding ResourceSource string was not also present in a resource 8483descriptor declaration. This restriction caused problems with existing 8484AML/ASL code that includes the Index byte without the string. When such 8485AML 8486was disassembled, it could not be compiled without modification. Further, 8487the modified code created a resource template with a different size than 8488the 8489original, breaking code that used fixed offsets into the resource 8490template 8491buffer. 8492 8493Removed a recent feature of the disassembler to ignore a lone 8494ResourceIndex 8495byte. This byte is now emitted if present so that the exact AML can be 8496reproduced when the disassembled code is recompiled. 8497 8498Improved comments and text alignment for the resource descriptor code 8499emitted by the disassembler. 8500 8501Implemented disassembler support for the ACPI 3.0 AccessSize field within 8502a 8503Register() resource descriptor. 8504 8505---------------------------------------- 850630 September 2005. Summary of changes for version 20050930: 8507 85081) ACPI CA Core Subsystem: 8509 8510Completed a major overhaul of the Resource Manager code - specifically, 8511optimizations in the area of the AML/internal resource conversion code. 8512The 8513code has been optimized to simplify and eliminate duplicated code, CPU 8514stack 8515use has been decreased by optimizing function parameters and local 8516variables, and naming conventions across the manager have been 8517standardized 8518for clarity and ease of maintenance (this includes function, parameter, 8519variable, and struct/typedef names.) The update may force changes in some 8520driver code, depending on how resources are handled by the host OS. 8521 8522All Resource Manager dispatch and information tables have been moved to a 8523single location for clarity and ease of maintenance. One new file was 8524created, named "rsinfo.c". 8525 8526The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 8527guarantee that the argument is not evaluated twice, making them less 8528prone 8529to macro side-effects. However, since there exists the possibility of 8530additional stack use if a particular compiler cannot optimize them (such 8531as 8532in the debug generation case), the original macros are optionally 8533available. 8534Note that some invocations of the return_VALUE macro may now cause size 8535mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 8536to 8537eliminate these. (From Randy Dunlap) 8538 8539Implemented a new mechanism to enable debug tracing for individual 8540control 8541methods. A new external interface, AcpiDebugTrace, is provided to enable 8542this mechanism. The intent is to allow the host OS to easily enable and 8543disable tracing for problematic control methods. This interface can be 8544easily exposed to a user or debugger interface if desired. See the file 8545psxface.c for details. 8546 8547AcpiUtCallocate will now return a valid pointer if a length of zero is 8548specified - a length of one is used and a warning is issued. This matches 8549the behavior of AcpiUtAllocate. 8550 8551Code and Data Size: The current and previous library sizes for the core 8552subsystem are shown below. These are the code and data sizes for the 8553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8554These 8555values do not include any ACPI driver or OSPM code. The debug version of 8556the 8557code includes the debug output trace mechanism and has a much larger code 8558and data size. Note that these values will vary depending on the 8559efficiency 8560of the compiler and the compiler options used during generation. 8561 8562 Previous Release: 8563 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 8564 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 8565 Current Release: 8566 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 8567 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 8568 8569 85702) iASL Compiler/Disassembler: 8571 8572A remark is issued if the effective compile-time length of a package or 8573buffer is zero. Previously, this was a warning. 8574 8575---------------------------------------- 857616 September 2005. Summary of changes for version 20050916: 8577 85781) ACPI CA Core Subsystem: 8579 8580Fixed a problem within the Resource Manager where support for the Generic 8581Register descriptor was not fully implemented. This descriptor is now 8582fully 8583recognized, parsed, disassembled, and displayed. 8584 8585Completely restructured the Resource Manager code to utilize table-driven 8586dispatch and lookup, eliminating many of the large switch() statements. 8587This 8588reduces overall subsystem code size and code complexity. Affects the 8589resource parsing and construction, disassembly, and debug dump output. 8590 8591Cleaned up and restructured the debug dump output for all resource 8592descriptors. Improved readability of the output and reduced code size. 8593 8594Fixed a problem where changes to internal data structures caused the 8595optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 8596 8597Code and Data Size: The current and previous library sizes for the core 8598subsystem are shown below. These are the code and data sizes for the 8599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 8600These 8601values do not include any ACPI driver or OSPM code. The debug version of 8602the 8603code includes the debug output trace mechanism and has a much larger code 8604and data size. Note that these values will vary depending on the 8605efficiency 8606of the compiler and the compiler options used during generation. 8607 8608 Previous Release: 8609 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 8610 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 8611 Current Release: 8612 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 8613 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 8614 8615 86162) iASL Compiler/Disassembler: 8617 8618Updated the disassembler to automatically insert an EndDependentFn() 8619macro 8620into the ASL stream if this macro is missing in the original AML code, 8621simplifying compilation of the resulting ASL module. 8622 8623Fixed a problem in the disassembler where a disassembled ResourceSource 8624string (within a large resource descriptor) was not surrounded by quotes 8625and 8626not followed by a comma, causing errors when the resulting ASL module was 8627compiled. Also, escape sequences within a ResourceSource string are now 8628handled correctly (especially "\\") 8629 8630---------------------------------------- 863102 September 2005. Summary of changes for version 20050902: 8632 86331) ACPI CA Core Subsystem: 8634 8635Fixed a problem with the internal Owner ID allocation and deallocation 8636mechanisms for control method execution and recursive method invocation. 8637This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 8638messages seen on some systems. Recursive method invocation depth is 8639currently limited to 255. (Alexey Starikovskiy) 8640 8641Completely eliminated all vestiges of support for the "module-level 8642executable code" until this support is fully implemented and debugged. 8643This 8644should eliminate the NO_RETURN_VALUE exceptions seen during table load on 8645some systems that invoke this support. 8646 8647Fixed a problem within the resource manager code where the transaction 8648flags 8649for a 64-bit address descriptor were handled incorrectly in the type- 8650specific flag byte. 8651 8652Consolidated duplicate code within the address descriptor resource 8653manager 8654code, reducing overall subsystem code size. 8655 8656Fixed a fault when using the AML debugger "disassemble" command to 8657disassemble individual control methods. 8658 8659Removed references to the "release_current" directory within the Unix 8660release package. 8661 8662Code and Data Size: The current and previous core subsystem library sizes 8663are shown below. These are the code and data sizes for the acpica.lib 8664produced by the Microsoft Visual C++ 6.0 compiler. These values do not 8665include any ACPI driver or OSPM code. The debug version of the code 8666includes 8667the debug output trace mechanism and has a much larger code and data 8668size. 8669Note that these values will vary depending on the efficiency of the 8670compiler 8671and the compiler options used during generation. 8672 8673 Previous Release: 8674 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8675 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 8676 Current Release: 8677 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 8678 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 8679 8680 86812) iASL Compiler/Disassembler: 8682 8683Implemented an error check for illegal duplicate values in the interrupt 8684and 8685dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 8686Interrupt(). 8687 8688Implemented error checking for the Irq() and IrqNoFlags() macros to 8689detect 8690too many values in the interrupt list (16 max) and invalid values in the 8691list (range 0 - 15) 8692 8693The maximum length string literal within an ASL file is now restricted to 8694200 characters as per the ACPI specification. 8695 8696Fixed a fault when using the -ln option (generate namespace listing). 8697 8698Implemented an error check to determine if a DescriptorName within a 8699resource descriptor has already been used within the current scope. 8700 8701---------------------------------------- 870215 August 2005. Summary of changes for version 20050815: 8703 87041) ACPI CA Core Subsystem: 8705 8706Implemented a full bytewise compare to determine if a table load request 8707is 8708attempting to load a duplicate table. The compare is performed if the 8709table 8710signatures and table lengths match. This will allow different tables with 8711the same OEM Table ID and revision to be loaded - probably against the 8712ACPI 8713specification, but discovered in the field nonetheless. 8714 8715Added the changes.txt logfile to each of the zipped release packages. 8716 8717Code and Data Size: Current and previous core subsystem library sizes are 8718shown below. These are the code and data sizes for the acpica.lib 8719produced 8720by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8721any ACPI driver or OSPM code. The debug version of the code includes the 8722debug output trace mechanism and has a much larger code and data size. 8723Note 8724that these values will vary depending on the efficiency of the compiler 8725and 8726the compiler options used during generation. 8727 8728 Previous Release: 8729 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8730 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 8731 Current Release: 8732 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8733 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 8734 8735 87362) iASL Compiler/Disassembler: 8737 8738Fixed a problem where incorrect AML code could be generated for Package 8739objects if optimization is disabled (via the -oa switch). 8740 8741Fixed a problem with where incorrect AML code is generated for variable- 8742length packages when the package length is not specified and the number 8743of 8744initializer values is greater than 255. 8745 8746 8747---------------------------------------- 874829 July 2005. Summary of changes for version 20050729: 8749 87501) ACPI CA Core Subsystem: 8751 8752Implemented support to ignore an attempt to install/load a particular 8753ACPI 8754table more than once. Apparently there exists BIOS code that repeatedly 8755attempts to load the same SSDT upon certain events. With assistance from 8756Venkatesh Pallipadi. 8757 8758Restructured the main interface to the AML parser in order to correctly 8759handle all exceptional conditions. This will prevent leakage of the 8760OwnerId 8761resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 8762some 8763machines. With assistance from Alexey Starikovskiy. 8764 8765Support for "module level code" has been disabled in this version due to 8766a 8767number of issues that have appeared on various machines. The support can 8768be 8769enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 8770compilation. When the issues are fully resolved, the code will be enabled 8771by 8772default again. 8773 8774Modified the internal functions for debug print support to define the 8775FunctionName parameter as a (const char *) for compatibility with 8776compiler 8777built-in macros such as __FUNCTION__, etc. 8778 8779Linted the entire ACPICA source tree for both 32-bit and 64-bit. 8780 8781Implemented support to display an object count summary for the AML 8782Debugger 8783commands Object and Methods. 8784 8785Code and Data Size: Current and previous core subsystem library sizes are 8786shown below. These are the code and data sizes for the acpica.lib 8787produced 8788by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8789any ACPI driver or OSPM code. The debug version of the code includes the 8790debug output trace mechanism and has a much larger code and data size. 8791Note 8792that these values will vary depending on the efficiency of the compiler 8793and 8794the compiler options used during generation. 8795 8796 Previous Release: 8797 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 8798 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 8799 Current Release: 8800 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 8801 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 8802 8803 88042) iASL Compiler/Disassembler: 8805 8806Fixed a regression that appeared in the 20050708 version of the compiler 8807where an error message was inadvertently emitted for invocations of the 8808_OSI 8809reserved control method. 8810 8811---------------------------------------- 881208 July 2005. Summary of changes for version 20050708: 8813 88141) ACPI CA Core Subsystem: 8815 8816The use of the CPU stack in the debug version of the subsystem has been 8817considerably reduced. Previously, a debug structure was declared in every 8818function that used the debug macros. This structure has been removed in 8819favor of declaring the individual elements as parameters to the debug 8820functions. This reduces the cumulative stack use during nested execution 8821of 8822ACPI function calls at the cost of a small increase in the code size of 8823the 8824debug version of the subsystem. With assistance from Alexey Starikovskiy 8825and 8826Len Brown. 8827 8828Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 8829headers to define a macro that will return the current function name at 8830runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 8831by 8832the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 8833compiler-dependent header, the function name is saved on the CPU stack 8834(one 8835pointer per function.) This mechanism is used because apparently there 8836exists no standard ANSI-C defined macro that that returns the function 8837name. 8838 8839Redesigned and reimplemented the "Owner ID" mechanism used to track 8840namespace objects created/deleted by ACPI tables and control method 8841execution. A bitmap is now used to allocate and free the IDs, thus 8842solving 8843the wraparound problem present in the previous implementation. The size 8844of 8845the namespace node descriptor was reduced by 2 bytes as a result (Alexey 8846Starikovskiy). 8847 8848Removed the UINT32_BIT and UINT16_BIT types that were used for the 8849bitfield 8850flag definitions within the headers for the predefined ACPI tables. These 8851have been replaced by UINT8_BIT in order to increase the code portability 8852of 8853the subsystem. If the use of UINT8 remains a problem, we may be forced to 8854eliminate bitfields entirely because of a lack of portability. 8855 8856Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 8857This 8858is a frequently used function and this improvement increases the 8859performance 8860of the entire subsystem (Alexey Starikovskiy). 8861 8862Fixed several possible memory leaks and the inverse - premature object 8863deletion (Alexey Starikovskiy). 8864 8865Code and Data Size: Current and previous core subsystem library sizes are 8866shown below. These are the code and data sizes for the acpica.lib 8867produced 8868by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8869any ACPI driver or OSPM code. The debug version of the code includes the 8870debug output trace mechanism and has a much larger code and data size. 8871Note 8872that these values will vary depending on the efficiency of the compiler 8873and 8874the compiler options used during generation. 8875 8876 Previous Release: 8877 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 8878 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 8879 Current Release: 8880 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 8881 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 8882 8883---------------------------------------- 888424 June 2005. Summary of changes for version 20050624: 8885 88861) ACPI CA Core Subsystem: 8887 8888Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 8889the host-defined cache object. This allows the OSL implementation to 8890define 8891and type this object in any manner desired, simplifying the OSL 8892implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 8893Linux, and should be defined in the OS-specific header file for other 8894operating systems as required. 8895 8896Changed the interface to AcpiOsAcquireObject to directly return the 8897requested object as the function return (instead of ACPI_STATUS.) This 8898change was made for performance reasons, since this is the purpose of the 8899interface in the first place. AcpiOsAcquireObject is now similar to the 8900AcpiOsAllocate interface. 8901 8902Implemented a new AML debugger command named Businfo. This command 8903displays 8904information about all devices that have an associate _PRT object. The 8905_ADR, 8906_HID, _UID, and _CID are displayed for these devices. 8907 8908Modified the initialization sequence in AcpiInitializeSubsystem to call 8909the 8910OSL interface AcpiOslInitialize first, before any local initialization. 8911This 8912change was required because the global initialization now calls OSL 8913interfaces. 8914 8915Enhanced the Dump command to display the entire contents of Package 8916objects 8917(including all sub-objects and their values.) 8918 8919Restructured the code base to split some files because of size and/or 8920because the code logically belonged in a separate file. New files are 8921listed 8922below. All makefiles and project files included in the ACPI CA release 8923have 8924been updated. 8925 utilities/utcache.c /* Local cache interfaces */ 8926 utilities/utmutex.c /* Local mutex support */ 8927 utilities/utstate.c /* State object support */ 8928 interpreter/parser/psloop.c /* Main AML parse loop */ 8929 8930Code and Data Size: Current and previous core subsystem library sizes are 8931shown below. These are the code and data sizes for the acpica.lib 8932produced 8933by the Microsoft Visual C++ 6.0 compiler, and these values do not include 8934any ACPI driver or OSPM code. The debug version of the code includes the 8935debug output trace mechanism and has a much larger code and data size. 8936Note 8937that these values will vary depending on the efficiency of the compiler 8938and 8939the compiler options used during generation. 8940 8941 Previous Release: 8942 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 8943 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 8944 Current Release: 8945 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 8946 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 8947 8948 89492) iASL Compiler/Disassembler: 8950 8951Fixed a regression introduced in version 20050513 where the use of a 8952Package 8953object within a Case() statement caused a compile time exception. The 8954original behavior has been restored (a Match() operator is emitted.) 8955 8956---------------------------------------- 895717 June 2005. Summary of changes for version 20050617: 8958 89591) ACPI CA Core Subsystem: 8960 8961Moved the object cache operations into the OS interface layer (OSL) to 8962allow 8963the host OS to handle these operations if desired (for example, the Linux 8964OSL will invoke the slab allocator). This support is optional; the 8965compile 8966time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 8967cache 8968code in the ACPI CA core. The new OSL interfaces are shown below. See 8969utalloc.c for an example implementation, and acpiosxf.h for the exact 8970interface definitions. With assistance from Alexey Starikovskiy. 8971 AcpiOsCreateCache 8972 AcpiOsDeleteCache 8973 AcpiOsPurgeCache 8974 AcpiOsAcquireObject 8975 AcpiOsReleaseObject 8976 8977Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 8978return 8979and restore a flags parameter. This fits better with many OS lock models. 8980Note: the current execution state (interrupt handler or not) is no longer 8981passed to these interfaces. If necessary, the OSL must determine this 8982state 8983by itself, a simple and fast operation. With assistance from Alexey 8984Starikovskiy. 8985 8986Fixed a problem in the ACPI table handling where a valid XSDT was assumed 8987present if the revision of the RSDP was 2 or greater. According to the 8988ACPI 8989specification, the XSDT is optional in all cases, and the table manager 8990therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 8991Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 8992contain 8993only the RSDT. 8994 8995Fixed an interpreter problem with the Mid() operator in the case of an 8996input 8997string where the resulting output string is of zero length. It now 8998correctly 8999returns a valid, null terminated string object instead of a string object 9000with a null pointer. 9001 9002Fixed a problem with the control method argument handling to allow a 9003store 9004to an Arg object that already contains an object of type Device. The 9005Device 9006object is now correctly overwritten. Previously, an error was returned. 9007 9008 9009Enhanced the debugger Find command to emit object values in addition to 9010the 9011found object pathnames. The output format is the same as the dump 9012namespace 9013command. 9014 9015Enhanced the debugger Set command. It now has the ability to set the 9016value 9017of any Named integer object in the namespace (Previously, only method 9018locals 9019and args could be set.) 9020 9021Code and Data Size: Current and previous core subsystem library sizes are 9022shown below. These are the code and data sizes for the acpica.lib 9023produced 9024by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9025any ACPI driver or OSPM code. The debug version of the code includes the 9026debug output trace mechanism and has a much larger code and data size. 9027Note 9028that these values will vary depending on the efficiency of the compiler 9029and 9030the compiler options used during generation. 9031 9032 Previous Release: 9033 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9034 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9035 Current Release: 9036 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 9037 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 9038 9039 90402) iASL Compiler/Disassembler: 9041 9042Fixed a regression in the disassembler where if/else/while constructs 9043were 9044output incorrectly. This problem was introduced in the previous release 9045(20050526). This problem also affected the single-step disassembly in the 9046debugger. 9047 9048Fixed a problem where compiling the reserved _OSI method would randomly 9049(but 9050rarely) produce compile errors. 9051 9052Enhanced the disassembler to emit compilable code in the face of 9053incorrect 9054AML resource descriptors. If the optional ResourceSourceIndex is present, 9055but the ResourceSource is not, do not emit the ResourceSourceIndex in the 9056disassembly. Otherwise, the resulting code cannot be compiled without 9057errors. 9058 9059---------------------------------------- 906026 May 2005. Summary of changes for version 20050526: 9061 90621) ACPI CA Core Subsystem: 9063 9064Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 9065the module level (not within a control method.) These opcodes are 9066executed 9067exactly once at the time the table is loaded. This type of code was legal 9068up 9069until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 9070in 9071order to provide backwards compatibility with earlier BIOS 9072implementations. 9073This eliminates the "Encountered executable code at module level" warning 9074that was previously generated upon detection of such code. 9075 9076Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 9077inadvertently be generated during the lookup of namespace objects in the 9078second pass parse of ACPI tables and control methods. It appears that 9079this 9080problem could occur during the resolution of forward references to 9081namespace 9082objects. 9083 9084Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 9085corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 9086allows the deadlock detection debug code to be compiled out in the normal 9087case, improving mutex performance (and overall subsystem performance) 9088considerably. 9089 9090Implemented a handful of miscellaneous fixes for possible memory leaks on 9091error conditions and error handling control paths. These fixes were 9092suggested by FreeBSD and the Coverity Prevent source code analysis tool. 9093 9094Added a check for a null RSDT pointer in AcpiGetFirmwareTable 9095(tbxfroot.c) 9096to prevent a fault in this error case. 9097 9098Code and Data Size: Current and previous core subsystem library sizes are 9099shown below. These are the code and data sizes for the acpica.lib 9100produced 9101by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9102any ACPI driver or OSPM code. The debug version of the code includes the 9103debug output trace mechanism and has a much larger code and data size. 9104Note 9105that these values will vary depending on the efficiency of the compiler 9106and 9107the compiler options used during generation. 9108 9109 Previous Release: 9110 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9111 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9112 Current Release: 9113 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 9114 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 9115 9116 91172) iASL Compiler/Disassembler: 9118 9119Implemented support to allow Type 1 and Type 2 ASL operators to appear at 9120the module level (not within a control method.) These operators will be 9121executed once at the time the table is loaded. This type of code was 9122legal 9123up until the release of ACPI 2.0B (2002) and is now supported by the iASL 9124compiler in order to provide backwards compatibility with earlier BIOS 9125ASL 9126code. 9127 9128The ACPI integer width (specified via the table revision ID or the -r 9129override, 32 or 64 bits) is now used internally during compile-time 9130constant 9131folding to ensure that constants are truncated to 32 bits if necessary. 9132Previously, the revision ID value was only emitted in the AML table 9133header. 9134 9135An error message is now generated for the Mutex and Method operators if 9136the 9137SyncLevel parameter is outside the legal range of 0 through 15. 9138 9139Fixed a problem with the Method operator ParameterTypes list handling 9140(ACPI 91413.0). Previously, more than 2 types or 2 arguments generated a syntax 9142error. 9143The actual underlying implementation of method argument typechecking is 9144still under development, however. 9145 9146---------------------------------------- 914713 May 2005. Summary of changes for version 20050513: 9148 91491) ACPI CA Core Subsystem: 9150 9151Implemented support for PCI Express root bridges -- added support for 9152device 9153PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 9154 9155The interpreter now automatically truncates incoming 64-bit constants to 915632 9157bits if currently executing out of a 32-bit ACPI table (Revision < 2). 9158This 9159also affects the iASL compiler constant folding. (Note: as per below, the 9160iASL compiler no longer allows 64-bit constants within 32-bit tables.) 9161 9162Fixed a problem where string and buffer objects with "static" pointers 9163(pointers to initialization data within an ACPI table) were not handled 9164consistently. The internal object copy operation now always copies the 9165data 9166to a newly allocated buffer, regardless of whether the source object is 9167static or not. 9168 9169Fixed a problem with the FromBCD operator where an implicit result 9170conversion was improperly performed while storing the result to the 9171target 9172operand. Since this is an "explicit conversion" operator, the implicit 9173conversion should never be performed on the output. 9174 9175Fixed a problem with the CopyObject operator where a copy to an existing 9176named object did not always completely overwrite the existing object 9177stored 9178at name. Specifically, a buffer-to-buffer copy did not delete the 9179existing 9180buffer. 9181 9182Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 9183and 9184structs for consistency. 9185 9186Code and Data Size: Current and previous core subsystem library sizes are 9187shown below. These are the code and data sizes for the acpica.lib 9188produced 9189by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9190any ACPI driver or OSPM code. The debug version of the code includes the 9191debug output trace mechanism and has a much larger code and data size. 9192Note 9193that these values will vary depending on the efficiency of the compiler 9194and 9195the compiler options used during generation. 9196 9197 Previous Release: 9198 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9199 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9200 Current Release: (Same sizes) 9201 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9202 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9203 9204 92052) iASL Compiler/Disassembler: 9206 9207The compiler now emits a warning if an attempt is made to generate a 64- 9208bit 9209integer constant from within a 32-bit ACPI table (Revision < 2). The 9210integer 9211is truncated to 32 bits. 9212 9213Fixed a problem with large package objects: if the static length of the 9214package is greater than 255, the "variable length package" opcode is 9215emitted. Previously, this caused an error. This requires an update to the 9216ACPI spec, since it currently (incorrectly) states that packages larger 9217than 9218255 elements are not allowed. 9219 9220The disassembler now correctly handles variable length packages and 9221packages 9222larger than 255 elements. 9223 9224---------------------------------------- 922508 April 2005. Summary of changes for version 20050408: 9226 92271) ACPI CA Core Subsystem: 9228 9229Fixed three cases in the interpreter where an "index" argument to an ASL 9230function was still (internally) 32 bits instead of the required 64 bits. 9231This was the Index argument to the Index, Mid, and Match operators. 9232 9233The "strupr" function is now permanently local (AcpiUtStrupr), since this 9234is 9235not a POSIX-defined function and not present in most kernel-level C 9236libraries. All references to the C library strupr function have been 9237removed 9238from the headers. 9239 9240Completed the deployment of static functions/prototypes. All prototypes 9241with 9242the static attribute have been moved from the headers to the owning C 9243file. 9244 9245Implemented an extract option (-e) for the AcpiBin utility (AML binary 9246utility). This option allows the utility to extract individual ACPI 9247tables 9248from the output of AcpiDmp. It provides the same functionality of the 9249acpixtract.pl perl script without the worry of setting the correct perl 9250options. AcpiBin runs on Windows and has not yet been generated/validated 9251in 9252the Linux/Unix environment (but should be soon). 9253 9254Updated and fixed the table dump option for AcpiBin (-d). This option 9255converts a single ACPI table to a hex/ascii file, similar to the output 9256of 9257AcpiDmp. 9258 9259Code and Data Size: Current and previous core subsystem library sizes are 9260shown below. These are the code and data sizes for the acpica.lib 9261produced 9262by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9263any ACPI driver or OSPM code. The debug version of the code includes the 9264debug output trace mechanism and has a much larger code and data size. 9265Note 9266that these values will vary depending on the efficiency of the compiler 9267and 9268the compiler options used during generation. 9269 9270 Previous Release: 9271 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9272 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9273 Current Release: 9274 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 9275 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 9276 9277 92782) iASL Compiler/Disassembler: 9279 9280Disassembler fix: Added a check to ensure that the table length found in 9281the 9282ACPI table header within the input file is not longer than the actual 9283input 9284file size. This indicates some kind of file or table corruption. 9285 9286---------------------------------------- 928729 March 2005. Summary of changes for version 20050329: 9288 92891) ACPI CA Core Subsystem: 9290 9291An error is now generated if an attempt is made to create a Buffer Field 9292of 9293length zero (A CreateField with a length operand of zero.) 9294 9295The interpreter now issues a warning whenever executable code at the 9296module 9297level is detected during ACPI table load. This will give some idea of the 9298prevalence of this type of code. 9299 9300Implemented support for references to named objects (other than control 9301methods) within package objects. 9302 9303Enhanced package object output for the debug object. Package objects are 9304now 9305completely dumped, showing all elements. 9306 9307Enhanced miscellaneous object output for the debug object. Any object can 9308now be written to the debug object (for example, a device object can be 9309written, and the type of the object will be displayed.) 9310 9311The "static" qualifier has been added to all local functions across both 9312the 9313core subsystem and the iASL compiler. 9314 9315The number of "long" lines (> 80 chars) within the source has been 9316significantly reduced, by about 1/3. 9317 9318Cleaned up all header files to ensure that all CA/iASL functions are 9319prototyped (even static functions) and the formatting is consistent. 9320 9321Two new header files have been added, acopcode.h and acnames.h. 9322 9323Removed several obsolete functions that were no longer used. 9324 9325Code and Data Size: Current and previous core subsystem library sizes are 9326shown below. These are the code and data sizes for the acpica.lib 9327produced 9328by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9329any ACPI driver or OSPM code. The debug version of the code includes the 9330debug output trace mechanism and has a much larger code and data size. 9331Note 9332that these values will vary depending on the efficiency of the compiler 9333and 9334the compiler options used during generation. 9335 9336 Previous Release: 9337 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9338 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9339 Current Release: 9340 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 9341 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 9342 9343 9344 93452) iASL Compiler/Disassembler: 9346 9347Fixed a problem with the resource descriptor generation/support. For the 9348ResourceSourceIndex and the ResourceSource fields, both must be present, 9349or 9350both must be not present - can't have one without the other. 9351 9352The compiler now returns non-zero from the main procedure if any errors 9353have 9354occurred during the compilation. 9355 9356 9357---------------------------------------- 935809 March 2005. Summary of changes for version 20050309: 9359 93601) ACPI CA Core Subsystem: 9361 9362The string-to-buffer implicit conversion code has been modified again 9363after 9364a change to the ACPI specification. In order to match the behavior of 9365the 9366other major ACPI implementation, the target buffer is no longer truncated 9367if 9368the source string is smaller than an existing target buffer. This change 9369requires an update to the ACPI spec, and should eliminate the recent 9370AE_AML_BUFFER_LIMIT issues. 9371 9372The "implicit return" support was rewritten to a new algorithm that 9373solves 9374the general case. Rather than attempt to determine when a method is about 9375to 9376exit, the result of every ASL operator is saved momentarily until the 9377very 9378next ASL operator is executed. Therefore, no matter how the method exits, 9379there will always be a saved implicit return value. This feature is only 9380enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 9381eliminate 9382AE_AML_NO_RETURN_VALUE errors when enabled. 9383 9384Implemented implicit conversion support for the predicate (operand) of 9385the 9386If, Else, and While operators. String and Buffer arguments are 9387automatically 9388converted to Integers. 9389 9390Changed the string-to-integer conversion behavior to match the new ACPI 9391errata: "If no integer object exists, a new integer is created. The ASCII 9392string is interpreted as a hexadecimal constant. Each string character is 9393interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 9394with the first character as the most significant digit, and ending with 9395the 9396first non-hexadecimal character or end-of-string." This means that the 9397first 9398non-hex character terminates the conversion and this is the code that was 9399changed. 9400 9401Fixed a problem where the ObjectType operator would fail (fault) when 9402used 9403on an Index of a Package which pointed to a null package element. The 9404operator now properly returns zero (Uninitialized) in this case. 9405 9406Fixed a problem where the While operator used excessive memory by not 9407properly popping the result stack during execution. There was no memory 9408leak 9409after execution, however. (Code provided by Valery Podrezov.) 9410 9411Fixed a problem where references to control methods within Package 9412objects 9413caused the method to be invoked, instead of producing a reference object 9414pointing to the method. 9415 9416Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 9417to 9418improve performance and reduce code size. (Code provided by Alexey 9419Starikovskiy.) 9420 9421Code and Data Size: Current and previous core subsystem library sizes are 9422shown below. These are the code and data sizes for the acpica.lib 9423produced 9424by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9425any ACPI driver or OSPM code. The debug version of the code includes the 9426debug output trace mechanism and has a much larger code and data size. 9427Note 9428that these values will vary depending on the efficiency of the compiler 9429and 9430the compiler options used during generation. 9431 9432 Previous Release: 9433 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9434 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 9435 Current Release: 9436 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9437 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 9438 9439 94402) iASL Compiler/Disassembler: 9441 9442Fixed a problem with the Return operator with no arguments. Since the AML 9443grammar for the byte encoding requires an operand for the Return opcode, 9444the 9445compiler now emits a Return(Zero) for this case. An ACPI specification 9446update has been written for this case. 9447 9448For tables other than the DSDT, namepath optimization is automatically 9449disabled. This is because SSDTs can be loaded anywhere in the namespace, 9450the 9451compiler has no knowledge of where, and thus cannot optimize namepaths. 9452 9453Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 9454inadvertently omitted from the ACPI specification, and will require an 9455update to the spec. 9456 9457The source file scan for ASCII characters is now optional (-a). This 9458change 9459was made because some vendors place non-ascii characters within comments. 9460However, the scan is simply a brute-force byte compare to ensure all 9461characters in the file are in the range 0x00 to 0x7F. 9462 9463Fixed a problem with the CondRefOf operator where the compiler was 9464inappropriately checking for the existence of the target. Since the point 9465of 9466the operator is to check for the existence of the target at run-time, the 9467compiler no longer checks for the target existence. 9468 9469Fixed a problem where errors generated from the internal AML interpreter 9470during constant folding were not handled properly, causing a fault. 9471 9472Fixed a problem with overly aggressive range checking for the Stall 9473operator. The valid range (max 255) is now only checked if the operand is 9474of 9475type Integer. All other operand types cannot be statically checked. 9476 9477Fixed a problem where control method references within the RefOf, 9478DeRefOf, 9479and ObjectType operators were not treated properly. They are now treated 9480as 9481actual references, not method invocations. 9482 9483Fixed and enhanced the "list namespace" option (-ln). This option was 9484broken 9485a number of releases ago. 9486 9487Improved error handling for the Field, IndexField, and BankField 9488operators. 9489The compiler now cleanly reports and recovers from errors in the field 9490component (FieldUnit) list. 9491 9492Fixed a disassembler problem where the optional ResourceDescriptor fields 9493TRS and TTP were not always handled correctly. 9494 9495Disassembler - Comments in output now use "//" instead of "/*" 9496 9497---------------------------------------- 949828 February 2005. Summary of changes for version 20050228: 9499 95001) ACPI CA Core Subsystem: 9501 9502Fixed a problem where the result of an Index() operator (an object 9503reference) must increment the reference count on the target object for 9504the 9505life of the object reference. 9506 9507Implemented AML Interpreter and Debugger support for the new ACPI 3.0 9508Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 9509WordSpace 9510resource descriptors. 9511 9512Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 9513Space Descriptor" string, indicating interpreter support for the 9514descriptors 9515above. 9516 9517Implemented header support for the new ACPI 3.0 FADT flag bits. 9518 9519Implemented header support for the new ACPI 3.0 PCI Express bits for the 9520PM1 9521status/enable registers. 9522 9523Updated header support for the MADT processor local Apic struct and MADT 9524platform interrupt source struct for new ACPI 3.0 fields. 9525 9526Implemented header support for the SRAT and SLIT ACPI tables. 9527 9528Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 9529flag 9530at runtime. 9531 9532Code and Data Size: Current and previous core subsystem library sizes are 9533shown below. These are the code and data sizes for the acpica.lib 9534produced 9535by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9536any ACPI driver or OSPM code. The debug version of the code includes the 9537debug output trace mechanism and has a much larger code and data size. 9538Note 9539that these values will vary depending on the efficiency of the compiler 9540and 9541the compiler options used during generation. 9542 9543 Previous Release: 9544 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 9545 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 9546 Current Release: 9547 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9548 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 9549 9550 95512) iASL Compiler/Disassembler: 9552 9553Fixed a problem with the internal 64-bit String-to-integer conversion 9554with 9555strings less than two characters long. 9556 9557Fixed a problem with constant folding where the result of the Index() 9558operator can not be considered a constant. This means that Index() cannot 9559be 9560a type3 opcode and this will require an update to the ACPI specification. 9561 9562Disassembler: Implemented support for the TTP, MTP, and TRS resource 9563descriptor fields. These fields were inadvertently ignored and not output 9564in 9565the disassembly of the resource descriptor. 9566 9567 9568 ---------------------------------------- 956911 February 2005. Summary of changes for version 20050211: 9570 95711) ACPI CA Core Subsystem: 9572 9573Implemented ACPI 3.0 support for implicit conversion within the Match() 9574operator. MatchObjects can now be of type integer, buffer, or string 9575instead 9576of just type integer. Package elements are implicitly converted to the 9577type 9578of the MatchObject. This change aligns the behavior of Match() with the 9579behavior of the other logical operators (LLess(), etc.) It also requires 9580an 9581errata change to the ACPI specification as this support was intended for 9582ACPI 3.0, but was inadvertently omitted. 9583 9584Fixed a problem with the internal implicit "to buffer" conversion. 9585Strings 9586that are converted to buffers will cause buffer truncation if the string 9587is 9588smaller than the target buffer. Integers that are converted to buffers 9589will 9590not cause buffer truncation, only zero extension (both as per the ACPI 9591spec.) The problem was introduced when code was added to truncate the 9592buffer, but this should not be performed in all cases, only the string 9593case. 9594 9595Fixed a problem with the Buffer and Package operators where the 9596interpreter 9597would get confused if two such operators were used as operands to an ASL 9598operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 9599stack was not being popped after the execution of these operators, 9600resulting 9601in an AE_NO_RETURN_VALUE exception. 9602 9603Fixed a problem with constructs of the form Store(Index(...),...). The 9604reference object returned from Index was inadvertently resolved to an 9605actual 9606value. This problem was introduced in version 20050114 when the behavior 9607of 9608Store() was modified to restrict the object types that can be used as the 9609source operand (to match the ACPI specification.) 9610 9611Reduced excessive stack use within the AcpiGetObjectInfo procedure. 9612 9613Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 9614 9615Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 9616 9617Code and Data Size: Current and previous core subsystem library sizes are 9618shown below. These are the code and data sizes for the acpica.lib 9619produced 9620by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9621any ACPI driver or OSPM code. The debug version of the code includes the 9622debug output trace mechanism and has a much larger code and data size. 9623Note 9624that these values will vary depending on the efficiency of the compiler 9625and 9626the compiler options used during generation. 9627 9628 Previous Release: 9629 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 9630 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 9631 Current Release: 9632 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 9633 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 9634 9635 96362) iASL Compiler/Disassembler: 9637 9638Fixed a code generation problem in the constant folding optimization code 9639where incorrect code was generated if a constant was reduced to a buffer 9640object (i.e., a reduced type 5 opcode.) 9641 9642Fixed a typechecking problem for the ToBuffer operator. Caused by an 9643incorrect return type in the internal opcode information table. 9644 9645---------------------------------------- 964625 January 2005. Summary of changes for version 20050125: 9647 96481) ACPI CA Core Subsystem: 9649 9650Fixed a recently introduced problem with the Global Lock where the 9651underlying semaphore was not created. This problem was introduced in 9652version 20050114, and caused an AE_AML_NO_OPERAND exception during an 9653Acquire() operation on _GL. 9654 9655The local object cache is now optional, and is disabled by default. Both 9656AcpiExec and the iASL compiler enable the cache because they run in user 9657mode and this enhances their performance. #define 9658ACPI_ENABLE_OBJECT_CACHE 9659to enable the local cache. 9660 9661Fixed an issue in the internal function AcpiUtEvaluateObject concerning 9662the 9663optional "implicit return" support where an error was returned if no 9664return 9665object was expected, but one was implicitly returned. AE_OK is now 9666returned 9667in this case and the implicitly returned object is deleted. 9668AcpiUtEvaluateObject is only occasionally used, and only to execute 9669reserved 9670methods such as _STA and _INI where the return type is known up front. 9671 9672Fixed a few issues with the internal convert-to-integer code. It now 9673returns 9674an error if an attempt is made to convert a null string, a string of only 9675blanks/tabs, or a zero-length buffer. This affects both implicit 9676conversion 9677and explicit conversion via the ToInteger() operator. 9678 9679The internal debug code in AcpiUtAcquireMutex has been commented out. It 9680is 9681not needed for normal operation and should increase the performance of 9682the 9683entire subsystem. The code remains in case it is needed for debug 9684purposes 9685again. 9686 9687The AcpiExec source and makefile are included in the Unix/Linux package 9688for 9689the first time. 9690 9691Code and Data Size: Current and previous core subsystem library sizes are 9692shown below. These are the code and data sizes for the acpica.lib 9693produced 9694by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9695any ACPI driver or OSPM code. The debug version of the code includes the 9696debug output trace mechanism and has a much larger code and data size. 9697Note 9698that these values will vary depending on the efficiency of the compiler 9699and 9700the compiler options used during generation. 9701 9702 Previous Release: 9703 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 9704 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 9705 Current Release: 9706 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 9707 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 9708 97092) iASL Compiler/Disassembler: 9710 9711Switch/Case support: A warning is now issued if the type of the Switch 9712value 9713cannot be determined at compile time. For example, Switch(Arg0) will 9714generate the warning, and the type is assumed to be an integer. As per 9715the 9716ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 9717the 9718warning. 9719 9720Switch/Case support: Implemented support for buffer and string objects as 9721the switch value. This is an ACPI 3.0 feature, now that LEqual supports 9722buffers and strings. 9723 9724Switch/Case support: The emitted code for the LEqual() comparisons now 9725uses 9726the switch value as the first operand, not the second. The case value is 9727now 9728the second operand, and this allows the case value to be implicitly 9729converted to the type of the switch value, not the other way around. 9730 9731Switch/Case support: Temporary variables are now emitted immediately 9732within 9733the control method, not at the global level. This means that there are 9734now 973536 temps available per-method, not 36 temps per-module as was the case 9736with 9737the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 9738 9739---------------------------------------- 974014 January 2005. Summary of changes for version 20050114: 9741 9742Added 2005 copyright to all module headers. This affects every module in 9743the core subsystem, iASL compiler, and the utilities. 9744 97451) ACPI CA Core Subsystem: 9746 9747Fixed an issue with the String-to-Buffer conversion code where the string 9748null terminator was not included in the buffer after conversion, but 9749there 9750is existing ASL that assumes the string null terminator is included. This 9751is 9752the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 9753introduced in the previous version when the code was updated to correctly 9754set the converted buffer size as per the ACPI specification. The ACPI 9755spec 9756is ambiguous and will be updated to specify that the null terminator must 9757be 9758included in the converted buffer. This also affects the ToBuffer() ASL 9759operator. 9760 9761Fixed a problem with the Mid() ASL/AML operator where it did not work 9762correctly on Buffer objects. Newly created sub-buffers were not being 9763marked 9764as initialized. 9765 9766 9767Fixed a problem in AcpiTbFindTable where incorrect string compares were 9768performed on the OemId and OemTableId table header fields. These fields 9769are 9770not null terminated, so strncmp is now used instead of strcmp. 9771 9772Implemented a restriction on the Store() ASL/AML operator to align the 9773behavior with the ACPI specification. Previously, any object could be 9774used 9775as the source operand. Now, the only objects that may be used are 9776Integers, 9777Buffers, Strings, Packages, Object References, and DDB Handles. If 9778necessary, the original behavior can be restored by enabling the 9779EnableInterpreterSlack flag. 9780 9781Enhanced the optional "implicit return" support to allow an implicit 9782return 9783value from methods that are invoked externally via the AcpiEvaluateObject 9784interface. This enables implicit returns from the _STA and _INI methods, 9785for example. 9786 9787Changed the Revision() ASL/AML operator to return the current version of 9788the 9789AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 9790returned 9791the supported ACPI version (This is the function of the _REV method). 9792 9793Updated the _REV predefined method to return the currently supported 9794version 9795of ACPI, now 3. 9796 9797Implemented batch mode option for the AcpiExec utility (-b). 9798 9799Code and Data Size: Current and previous core subsystem library sizes are 9800shown below. These are the code and data sizes for the acpica.lib 9801produced 9802by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9803any ACPI driver or OSPM code. The debug version of the code includes the 9804debug output trace mechanism and has a much larger code and data size. 9805Note 9806that these values will vary depending on the efficiency of the compiler 9807and 9808the compiler options used during generation. 9809 9810 Previous Release: 9811 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9812 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 9813 Current Release: 9814 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 9815 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 9816 9817---------------------------------------- 981810 December 2004. Summary of changes for version 20041210: 9819 9820ACPI 3.0 support is nearing completion in both the iASL compiler and the 9821ACPI CA core subsystem. 9822 98231) ACPI CA Core Subsystem: 9824 9825Fixed a problem in the ToDecimalString operator where the resulting 9826string 9827length was incorrectly calculated. The length is now calculated exactly, 9828eliminating incorrect AE_STRING_LIMIT exceptions. 9829 9830Fixed a problem in the ToHexString operator to allow a maximum 200 9831character 9832string to be produced. 9833 9834Fixed a problem in the internal string-to-buffer and buffer-to-buffer 9835copy 9836routine where the length of the resulting buffer was not truncated to the 9837new size (if the target buffer already existed). 9838 9839Code and Data Size: Current and previous core subsystem library sizes are 9840shown below. These are the code and data sizes for the acpica.lib 9841produced 9842by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9843any ACPI driver or OSPM code. The debug version of the code includes the 9844debug output trace mechanism and has a much larger code and data size. 9845Note 9846that these values will vary depending on the efficiency of the compiler 9847and 9848the compiler options used during generation. 9849 9850 Previous Release: 9851 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9852 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 9853 Current Release: 9854 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9855 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 9856 9857 98582) iASL Compiler/Disassembler: 9859 9860Implemented the new ACPI 3.0 resource template macros - DWordSpace, 9861ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 9862Includes support in the disassembler. 9863 9864Implemented support for the new (ACPI 3.0) parameter to the Register 9865macro, 9866AccessSize. 9867 9868Fixed a problem where the _HE resource name for the Interrupt macro was 9869referencing bit 0 instead of bit 1. 9870 9871Implemented check for maximum 255 interrupts in the Interrupt macro. 9872 9873Fixed a problem with the predefined resource descriptor names where 9874incorrect AML code was generated if the offset within the resource buffer 9875was 0 or 1. The optimizer shortened the AML code to a single byte opcode 9876but did not update the surrounding package lengths. 9877 9878Changes to the Dma macro: All channels within the channel list must be 9879in 9880the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 9881optional (default is BusMaster). 9882 9883Implemented check for maximum 7 data bytes for the VendorShort macro. 9884 9885The ReadWrite parameter is now optional for the Memory32 and similar 9886macros. 9887 9888---------------------------------------- 988903 December 2004. Summary of changes for version 20041203: 9890 98911) ACPI CA Core Subsystem: 9892 9893The low-level field insertion/extraction code (exfldio) has been 9894completely 9895rewritten to eliminate unnecessary complexity, bugs, and boundary 9896conditions. 9897 9898Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 9899ToDecimalString 9900operators where the input operand could be inadvertently deleted if no 9901conversion was necessary (e.g., if the input to ToInteger was an Integer 9902object.) 9903 9904Fixed a problem with the ToDecimalString and ToHexString where an 9905incorrect 9906exception code was returned if the resulting string would be > 200 chars. 9907AE_STRING_LIMIT is now returned. 9908 9909Fixed a problem with the Concatenate operator where AE_OK was always 9910returned, even if the operation failed. 9911 9912Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 9913semaphores to be allocated. 9914 9915Code and Data Size: Current and previous core subsystem library sizes are 9916shown below. These are the code and data sizes for the acpica.lib 9917produced 9918by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9919any ACPI driver or OSPM code. The debug version of the code includes the 9920debug output trace mechanism and has a much larger code and data size. 9921Note 9922that these values will vary depending on the efficiency of the compiler 9923and 9924the compiler options used during generation. 9925 9926 Previous Release: 9927 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9928 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9929 Current Release: 9930 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 9931 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 9932 9933 99342) iASL Compiler/Disassembler: 9935 9936Fixed typechecking for the ObjectType and SizeOf operators. Problem was 9937recently introduced in 20041119. 9938 9939Fixed a problem with the ToUUID macro where the upper nybble of each 9940buffer 9941byte was inadvertently set to zero. 9942 9943---------------------------------------- 994419 November 2004. Summary of changes for version 20041119: 9945 99461) ACPI CA Core Subsystem: 9947 9948Fixed a problem in the internal ConvertToInteger routine where new 9949integers 9950were not truncated to 32 bits for 32-bit ACPI tables. This routine 9951converts 9952buffers and strings to integers. 9953 9954Implemented support to store a value to an Index() on a String object. 9955This 9956is an ACPI 2.0 feature that had not yet been implemented. 9957 9958Implemented new behavior for storing objects to individual package 9959elements 9960(via the Index() operator). The previous behavior was to invoke the 9961implicit 9962conversion rules if an object was already present at the index. The new 9963behavior is to simply delete any existing object and directly store the 9964new 9965object. Although the ACPI specification seems unclear on this subject, 9966other 9967ACPI implementations behave in this manner. (This is the root of the 9968AE_BAD_HEX_CONSTANT issue.) 9969 9970Modified the RSDP memory scan mechanism to support the extended checksum 9971for 9972ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 9973RSDP signature is found with a valid checksum. 9974 9975Code and Data Size: Current and previous core subsystem library sizes are 9976shown below. These are the code and data sizes for the acpica.lib 9977produced 9978by the Microsoft Visual C++ 6.0 compiler, and these values do not include 9979any ACPI driver or OSPM code. The debug version of the code includes the 9980debug output trace mechanism and has a much larger code and data size. 9981Note 9982that these values will vary depending on the efficiency of the compiler 9983and 9984the compiler options used during generation. 9985 9986 Previous Release: 9987 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9988 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9989 Current Release: 9990 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 9991 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 9992 9993 99942) iASL Compiler/Disassembler: 9995 9996Fixed a missing semicolon in the aslcompiler.y file. 9997 9998---------------------------------------- 999905 November 2004. Summary of changes for version 20041105: 10000 100011) ACPI CA Core Subsystem: 10002 10003Implemented support for FADT revision 2. This was an interim table 10004(between 10005ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 10006 10007Implemented optional support to allow uninitialized LocalX and ArgX 10008variables in a control method. The variables are initialized to an 10009Integer 10010object with a value of zero. This support is enabled by setting the 10011AcpiGbl_EnableInterpreterSlack flag to TRUE. 10012 10013Implemented support for Integer objects for the SizeOf operator. Either 100144 10015or 8 is returned, depending on the current integer size (32-bit or 64- 10016bit, 10017depending on the parent table revision). 10018 10019Fixed a problem in the implementation of the SizeOf and ObjectType 10020operators 10021where the operand was resolved to a value too early, causing incorrect 10022return values for some objects. 10023 10024Fixed some possible memory leaks during exceptional conditions. 10025 10026Code and Data Size: Current and previous core subsystem library sizes are 10027shown below. These are the code and data sizes for the acpica.lib 10028produced 10029by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10030any ACPI driver or OSPM code. The debug version of the code includes the 10031debug output trace mechanism and has a much larger code and data size. 10032Note 10033that these values will vary depending on the efficiency of the compiler 10034and 10035the compiler options used during generation. 10036 10037 Previous Release: 10038 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10039 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10040 Current Release: 10041 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 10042 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 10043 10044 100452) iASL Compiler/Disassembler: 10046 10047Implemented support for all ACPI 3.0 reserved names and methods. 10048 10049Implemented all ACPI 3.0 grammar elements in the front-end, including 10050support for semicolons. 10051 10052Implemented the ACPI 3.0 Function() and ToUUID() macros 10053 10054Fixed a problem in the disassembler where a Scope() operator would not be 10055emitted properly if the target of the scope was in another table. 10056 10057---------------------------------------- 1005815 October 2004. Summary of changes for version 20041015: 10059 10060Note: ACPI CA is currently undergoing an in-depth and complete formal 10061evaluation to test/verify the following areas. Other suggestions are 10062welcome. This will result in an increase in the frequency of releases and 10063the number of bug fixes in the next few months. 10064 - Functional tests for all ASL/AML operators 10065 - All implicit/explicit type conversions 10066 - Bit fields and operation regions 10067 - 64-bit math support and 32-bit-only "truncated" math support 10068 - Exceptional conditions, both compiler and interpreter 10069 - Dynamic object deletion and memory leaks 10070 - ACPI 3.0 support when implemented 10071 - External interfaces to the ACPI subsystem 10072 10073 100741) ACPI CA Core Subsystem: 10075 10076Fixed two alignment issues on 64-bit platforms - within debug statements 10077in 10078AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 10079Address 10080field within the non-aligned ACPI generic address structure. 10081 10082Fixed a problem in the Increment and Decrement operators where incorrect 10083operand resolution could result in the inadvertent modification of the 10084original integer when the integer is passed into another method as an 10085argument and the arg is then incremented/decremented. 10086 10087Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 10088bit 10089BCD number were truncated during conversion. 10090 10091Fixed a problem in the ToDecimal operator where the length of the 10092resulting 10093string could be set incorrectly too long if the input operand was a 10094Buffer 10095object. 10096 10097Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 10098(0) 10099within a buffer would prematurely terminate a compare between buffer 10100objects. 10101 10102Added a check for string overflow (>200 characters as per the ACPI 10103specification) during the Concatenate operator with two string operands. 10104 10105Code and Data Size: Current and previous core subsystem library sizes are 10106shown below. These are the code and data sizes for the acpica.lib 10107produced 10108by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10109any ACPI driver or OSPM code. The debug version of the code includes the 10110debug output trace mechanism and has a much larger code and data size. 10111Note 10112that these values will vary depending on the efficiency of the compiler 10113and 10114the compiler options used during generation. 10115 10116 Previous Release: 10117 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10118 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10119 Current Release: 10120 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10121 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 10122 10123 10124 101252) iASL Compiler/Disassembler: 10126 10127Allow the use of the ObjectType operator on uninitialized Locals and Args 10128(returns 0 as per the ACPI specification). 10129 10130Fixed a problem where the compiler would fault if there was a syntax 10131error 10132in the FieldName of all of the various CreateXXXField operators. 10133 10134Disallow the use of lower case letters within the EISAID macro, as per 10135the 10136ACPI specification. All EISAID strings must be of the form "UUUNNNN" 10137Where 10138U is an uppercase letter and N is a hex digit. 10139 10140 10141---------------------------------------- 1014206 October 2004. Summary of changes for version 20041006: 10143 101441) ACPI CA Core Subsystem: 10145 10146Implemented support for the ACPI 3.0 Timer operator. This ASL function 10147implements a 64-bit timer with 100 nanosecond granularity. 10148 10149Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 10150implement the ACPI 3.0 Timer operator. This allows the host OS to 10151implement 10152the timer with the best clock available. Also, it keeps the core 10153subsystem 10154out of the clock handling business, since the host OS (usually) performs 10155this function. 10156 10157Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 10158functions use a 64-bit address which is part of the packed ACPI Generic 10159Address Structure. Since the structure is non-aligned, the alignment 10160macros 10161are now used to extract the address to a local variable before use. 10162 10163Fixed a problem where the ToInteger operator assumed all input strings 10164were 10165hexadecimal. The operator now handles both decimal strings and hex 10166strings 10167(prefixed with "0x"). 10168 10169Fixed a problem where the string length in the string object created as a 10170result of the internal ConvertToString procedure could be incorrect. This 10171potentially affected all implicit conversions and also the 10172ToDecimalString 10173and ToHexString operators. 10174 10175Fixed two problems in the ToString operator. If the length parameter was 10176zero, an incorrect string object was created and the value of the input 10177length parameter was inadvertently changed from zero to Ones. 10178 10179Fixed a problem where the optional ResourceSource string in the 10180ExtendedIRQ 10181resource macro was ignored. 10182 10183Simplified the interfaces to the internal division functions, reducing 10184code 10185size and complexity. 10186 10187Code and Data Size: Current and previous core subsystem library sizes are 10188shown below. These are the code and data sizes for the acpica.lib 10189produced 10190by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10191any ACPI driver or OSPM code. The debug version of the code includes the 10192debug output trace mechanism and has a much larger code and data size. 10193Note 10194that these values will vary depending on the efficiency of the compiler 10195and 10196the compiler options used during generation. 10197 10198 Previous Release: 10199 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10200 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10201 Current Release: 10202 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10203 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 10204 10205 102062) iASL Compiler/Disassembler: 10207 10208Implemented support for the ACPI 3.0 Timer operator. 10209 10210Fixed a problem where the Default() operator was inadvertently ignored in 10211a 10212Switch/Case block. This was a problem in the translation of the Switch 10213statement to If...Else pairs. 10214 10215Added support to allow a standalone Return operator, with no parentheses 10216(or 10217operands). 10218 10219Fixed a problem with code generation for the ElseIf operator where the 10220translated Else...If parse tree was improperly constructed leading to the 10221loss of some code. 10222 10223---------------------------------------- 1022422 September 2004. Summary of changes for version 20040922: 10225 102261) ACPI CA Core Subsystem: 10227 10228Fixed a problem with the implementation of the LNot() operator where 10229"Ones" 10230was not returned for the TRUE case. Changed the code to return Ones 10231instead 10232of (!Arg) which was usually 1. This change affects iASL constant folding 10233for 10234this operator also. 10235 10236Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 10237not 10238initialized properly -- Now zero the entire buffer in this case where the 10239buffer already exists. 10240 10241Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 10242Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 10243related code considerably. This will require changes/updates to all OS 10244interface layers (OSLs.) 10245 10246Implemented a new external interface, AcpiInstallExceptionHandler, to 10247allow 10248a system exception handler to be installed. This handler is invoked upon 10249any 10250run-time exception that occurs during control method execution. 10251 10252Added support for the DSDT in AcpiTbFindTable. This allows the 10253DataTableRegion() operator to access the local copy of the DSDT. 10254 10255Code and Data Size: Current and previous core subsystem library sizes are 10256shown below. These are the code and data sizes for the acpica.lib 10257produced 10258by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10259any ACPI driver or OSPM code. The debug version of the code includes the 10260debug output trace mechanism and has a much larger code and data size. 10261Note 10262that these values will vary depending on the efficiency of the compiler 10263and 10264the compiler options used during generation. 10265 10266 Previous Release: 10267 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10268 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10269 Current Release: 10270 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 10271 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 10272 10273 102742) iASL Compiler/Disassembler: 10275 10276Fixed a problem with constant folding and the LNot operator. LNot was 10277returning 1 in the TRUE case, not Ones as per the ACPI specification. 10278This 10279could result in the generation of an incorrect folded/reduced constant. 10280 10281End-Of-File is now allowed within a "//"-style comment. A parse error no 10282longer occurs if such a comment is at the very end of the input ASL 10283source 10284file. 10285 10286Implemented the "-r" option to override the Revision in the table header. 10287The initial use of this option will be to simplify the evaluation of the 10288AML 10289interpreter by allowing a single ASL source module to be compiled for 10290either 1029132-bit or 64-bit integers. 10292 10293 10294---------------------------------------- 1029527 August 2004. Summary of changes for version 20040827: 10296 102971) ACPI CA Core Subsystem: 10298 10299- Implemented support for implicit object conversion in the non-numeric 10300logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 10301and 10302LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 10303the second operand is implicitly converted on the fly to match the type 10304of 10305the first operand. For example: 10306 10307 LEqual (Source1, Source2) 10308 10309Source1 and Source2 must each evaluate to an integer, a string, or a 10310buffer. 10311The data type of Source1 dictates the required type of Source2. Source2 10312is 10313implicitly converted if necessary to match the type of Source1. 10314 10315- Updated and corrected the behavior of the string conversion support. 10316The 10317rules concerning conversion of buffers to strings (according to the ACPI 10318specification) are as follows: 10319 10320ToDecimalString - explicit byte-wise conversion of buffer to string of 10321decimal values (0-255) separated by commas. ToHexString - explicit byte- 10322wise 10323conversion of buffer to string of hex values (0-FF) separated by commas. 10324ToString - explicit byte-wise conversion of buffer to string. Byte-by- 10325byte 10326copy with no transform except NULL terminated. Any other implicit buffer- 10327to- 10328string conversion - byte-wise conversion of buffer to string of hex 10329values 10330(0-FF) separated by spaces. 10331 10332- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 10333 10334- Fixed a problem in AcpiNsGetPathnameLength where the returned length 10335was 10336one byte too short in the case of a node in the root scope. This could 10337cause a fault during debug output. 10338 10339- Code and Data Size: Current and previous core subsystem library sizes 10340are 10341shown below. These are the code and data sizes for the acpica.lib 10342produced 10343by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10344any ACPI driver or OSPM code. The debug version of the code includes the 10345debug output trace mechanism and has a much larger code and data size. 10346Note 10347that these values will vary depending on the efficiency of the compiler 10348and 10349the compiler options used during generation. 10350 10351 Previous Release: 10352 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10353 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10354 Current Release: 10355 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 10356 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 10357 10358 103592) iASL Compiler/Disassembler: 10360 10361- Fixed a Linux generation error. 10362 10363 10364---------------------------------------- 1036516 August 2004. Summary of changes for version 20040816: 10366 103671) ACPI CA Core Subsystem: 10368 10369Designed and implemented support within the AML interpreter for the so- 10370called "implicit return". This support returns the result of the last 10371ASL 10372operation within a control method, in the absence of an explicit Return() 10373operator. A few machines depend on this behavior, even though it is not 10374explicitly supported by the ASL language. It is optional support that 10375can 10376be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 10377 10378Removed support for the PCI_Config address space from the internal low 10379level 10380hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 10381support was not used internally, and would not work correctly anyway 10382because 10383the PCI bus number and segment number were not supported. There are 10384separate interfaces for PCI configuration space access because of the 10385unique 10386interface. 10387 10388Code and Data Size: Current and previous core subsystem library sizes are 10389shown below. These are the code and data sizes for the acpica.lib 10390produced 10391by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10392any ACPI driver or OSPM code. The debug version of the code includes the 10393debug output trace mechanism and has a much larger code and data size. 10394Note 10395that these values will vary depending on the efficiency of the compiler 10396and 10397the compiler options used during generation. 10398 10399 Previous Release: 10400 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10401 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10402 Current Release: 10403 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 10404 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 10405 10406 104072) iASL Compiler/Disassembler: 10408 10409Fixed a problem where constants in ASL expressions at the root level (not 10410within a control method) could be inadvertently truncated during code 10411generation. This problem was introduced in the 20040715 release. 10412 10413 10414---------------------------------------- 1041515 July 2004. Summary of changes for version 20040715: 10416 104171) ACPI CA Core Subsystem: 10418 10419Restructured the internal HW GPE interfaces to pass/track the current 10420state 10421of interrupts (enabled/disabled) in order to avoid possible deadlock and 10422increase flexibility of the interfaces. 10423 10424Implemented a "lexicographical compare" for String and Buffer objects 10425within 10426the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 10427- 10428as per further clarification to the ACPI specification. Behavior is 10429similar 10430to C library "strcmp". 10431 10432Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 10433external function. In the 32-bit non-debug case, the stack use has been 10434reduced from 168 bytes to 32 bytes. 10435 10436Deployed a new run-time configuration flag, 10437AcpiGbl_EnableInterpreterSlack, 10438whose purpose is to allow the AML interpreter to forgive certain bad AML 10439constructs. Default setting is FALSE. 10440 10441Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 10442IO 10443support code. If enabled, it allows field access to go beyond the end of 10444a 10445region definition if the field is within the region length rounded up to 10446the 10447next access width boundary (a common coding error.) 10448 10449Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 10450ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 10451these 10452symbols are lowercased by the latest version of the AcpiSrc tool. 10453 10454The prototypes for the PCI interfaces in acpiosxf.h have been updated to 10455rename "Register" to simply "Reg" to prevent certain compilers from 10456complaining. 10457 10458Code and Data Size: Current and previous core subsystem library sizes are 10459shown below. These are the code and data sizes for the acpica.lib 10460produced 10461by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10462any ACPI driver or OSPM code. The debug version of the code includes the 10463debug output trace mechanism and has a much larger code and data size. 10464Note 10465that these values will vary depending on the efficiency of the compiler 10466and 10467the compiler options used during generation. 10468 10469 Previous Release: 10470 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10471 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 10472 Current Release: 10473 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 10474 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 10475 10476 104772) iASL Compiler/Disassembler: 10478 10479Implemented full support for Package objects within the Case() operator. 10480Note: The Break() operator is currently not supported within Case blocks 10481(TermLists) as there is some question about backward compatibility with 10482ACPI 104831.0 interpreters. 10484 10485 10486Fixed a problem where complex terms were not supported properly within 10487the 10488Switch() operator. 10489 10490Eliminated extraneous warning for compiler-emitted reserved names of the 10491form "_T_x". (Used in Switch/Case operators.) 10492 10493Eliminated optimization messages for "_T_x" objects and small constants 10494within the DefinitionBlock operator. 10495 10496 10497---------------------------------------- 1049815 June 2004. Summary of changes for version 20040615: 10499 105001) ACPI CA Core Subsystem: 10501 10502Implemented support for Buffer and String objects (as per ACPI 2.0) for 10503the 10504following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 10505LLessEqual. 10506 10507All directory names in the entire source package are lower case, as they 10508were in earlier releases. 10509 10510Implemented "Disassemble" command in the AML debugger that will 10511disassemble 10512a single control method. 10513 10514Code and Data Size: Current and previous core subsystem library sizes are 10515shown below. These are the code and data sizes for the acpica.lib 10516produced 10517by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10518any ACPI driver or OSPM code. The debug version of the code includes the 10519debug output trace mechanism and has a much larger code and data size. 10520Note 10521that these values will vary depending on the efficiency of the compiler 10522and 10523the compiler options used during generation. 10524 10525 Previous Release: 10526 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 10527 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 10528 10529 Current Release: 10530 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 10531 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 10532 10533 105342) iASL Compiler/Disassembler: 10535 10536Implemented support for Buffer and String objects (as per ACPI 2.0) for 10537the 10538following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 10539LLessEqual. 10540 10541All directory names in the entire source package are lower case, as they 10542were in earlier releases. 10543 10544Fixed a fault when using the -g or -d<nofilename> options if the FADT was 10545not found. 10546 10547Fixed an issue with the Windows version of the compiler where later 10548versions 10549of Windows place the FADT in the registry under the name "FADT" and not 10550"FACP" as earlier versions did. This applies when using the -g or - 10551d<nofilename> options. The compiler now looks for both strings as 10552necessary. 10553 10554Fixed a problem with compiler namepath optimization where a namepath 10555within 10556the Scope() operator could not be optimized if the namepath was a subpath 10557of 10558the current scope path. 10559 10560---------------------------------------- 1056127 May 2004. Summary of changes for version 20040527: 10562 105631) ACPI CA Core Subsystem: 10564 10565Completed a new design and implementation for EBDA (Extended BIOS Data 10566Area) 10567support in the RSDP scan code. The original code improperly scanned for 10568the 10569EBDA by simply scanning from memory location 0 to 0x400. The correct 10570method 10571is to first obtain the EBDA pointer from within the BIOS data area, then 10572scan 1K of memory starting at the EBDA pointer. There appear to be few 10573if 10574any machines that place the RSDP in the EBDA, however. 10575 10576Integrated a fix for a possible fault during evaluation of BufferField 10577arguments. Obsolete code that was causing the problem was removed. 10578 10579Found and fixed a problem in the Field Support Code where data could be 10580corrupted on a bit field read that starts on an aligned boundary but does 10581not end on an aligned boundary. Merged the read/write "datum length" 10582calculation code into a common procedure. 10583 10584Rolled in a couple of changes to the FreeBSD-specific header. 10585 10586 10587Code and Data Size: Current and previous core subsystem library sizes are 10588shown below. These are the code and data sizes for the acpica.lib 10589produced 10590by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10591any ACPI driver or OSPM code. The debug version of the code includes the 10592debug output trace mechanism and has a much larger code and data size. 10593Note 10594that these values will vary depending on the efficiency of the compiler 10595and 10596the compiler options used during generation. 10597 10598 Previous Release: 10599 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10600 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 10601 Current Release: 10602 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 10603 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 10604 10605 106062) iASL Compiler/Disassembler: 10607 10608Fixed a generation warning produced by some overly-verbose compilers for 10609a 1061064-bit constant. 10611 10612---------------------------------------- 1061314 May 2004. Summary of changes for version 20040514: 10614 106151) ACPI CA Core Subsystem: 10616 10617Fixed a problem where hardware GPE enable bits sometimes not set properly 10618during and after GPE method execution. Result of 04/27 changes. 10619 10620Removed extra "clear all GPEs" when sleeping/waking. 10621 10622Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 10623AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 10624to 10625the new AcpiEv* calls as appropriate. 10626 10627ACPI_OS_NAME was removed from the OS-specific headers. The default name 10628is 10629now "Microsoft Windows NT" for maximum compatibility. However this can 10630be 10631changed by modifying the acconfig.h file. 10632 10633Allow a single invocation of AcpiInstallNotifyHandler for a handler that 10634traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 10635 10636Run _INI methods on ThermalZone objects. This is against the ACPI 10637specification, but there is apparently ASL code in the field that has 10638these 10639_INI methods, and apparently "other" AML interpreters execute them. 10640 10641Performed a full 16/32/64 bit lint that resulted in some small changes. 10642 10643Added a sleep simulation command to the AML debugger to test sleep code. 10644 10645Code and Data Size: Current and previous core subsystem library sizes are 10646shown below. These are the code and data sizes for the acpica.lib 10647produced 10648by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10649any ACPI driver or OSPM code. The debug version of the code includes the 10650debug output trace mechanism and has a much larger code and data size. 10651Note 10652that these values will vary depending on the efficiency of the compiler 10653and 10654the compiler options used during generation. 10655 10656 Previous Release: 10657 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10658 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 10659 Current Release: 10660 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10661 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 10662 10663---------------------------------------- 1066427 April 2004. Summary of changes for version 20040427: 10665 106661) ACPI CA Core Subsystem: 10667 10668Completed a major overhaul of the GPE handling within ACPI CA. There are 10669now three types of GPEs: wake-only, runtime-only, and combination 10670wake/run. 10671The only GPEs allowed to be combination wake/run are for button-style 10672devices such as a control-method power button, control-method sleep 10673button, 10674or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 10675not 10676referenced by any _PRW methods are marked for "runtime" and hardware 10677enabled. Any GPE that is referenced by a _PRW method is marked for 10678"wake" 10679(and disabled at runtime). However, at sleep time, only those GPEs that 10680have been specifically enabled for wake via the AcpiEnableGpe interface 10681will 10682actually be hardware enabled. 10683 10684A new external interface has been added, AcpiSetGpeType(), that is meant 10685to 10686be used by device drivers to force a GPE to a particular type. It will 10687be 10688especially useful for the drivers for the button devices mentioned above. 10689 10690Completed restructuring of the ACPI CA initialization sequence so that 10691default operation region handlers are installed before GPEs are 10692initialized 10693and the _PRW methods are executed. This will prevent errors when the 10694_PRW 10695methods attempt to access system memory or I/O space. 10696 10697GPE enable/disable no longer reads the GPE enable register. We now keep 10698the 10699enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 10700thus no longer depend on the hardware to maintain these bits. 10701 10702Always clear the wake status and fixed/GPE status bits before sleep, even 10703for state S5. 10704 10705Improved the AML debugger output for displaying the GPE blocks and their 10706current status. 10707 10708Added new strings for the _OSI method, of the form "Windows 2001 SPx" 10709where 10710x = 0,1,2,3,4. 10711 10712Fixed a problem where the physical address was incorrectly calculated 10713when 10714the Load() operator was used to directly load from an Operation Region 10715(vs. 10716loading from a Field object.) Also added check for minimum table length 10717for 10718this case. 10719 10720Fix for multiple mutex acquisition. Restore original thread SyncLevel on 10721mutex release. 10722 10723Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 10724consistency with the other fields returned. 10725 10726Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 10727structure for each GPE in the system, so the size of this structure is 10728important. 10729 10730CPU stack requirement reduction: Cleaned up the method execution and 10731object 10732evaluation paths so that now a parameter structure is passed, instead of 10733copying the various method parameters over and over again. 10734 10735In evregion.c: Correctly exit and reenter the interpreter region if and 10736only if dispatching an operation region request to a user-installed 10737handler. 10738Do not exit/reenter when dispatching to a default handler (e.g., default 10739system memory or I/O handlers) 10740 10741 10742Notes for updating drivers for the new GPE support. The following 10743changes 10744must be made to ACPI-related device drivers that are attached to one or 10745more 10746GPEs: (This information will be added to the ACPI CA Programmer 10747Reference.) 10748 107491) AcpiInstallGpeHandler no longer automatically enables the GPE, you 10750must 10751explicitly call AcpiEnableGpe. 107522) There is a new interface called AcpiSetGpeType. This should be called 10753before enabling the GPE. Also, this interface will automatically disable 10754the GPE if it is currently enabled. 107553) AcpiEnableGpe no longer supports a GPE type flag. 10756 10757Specific drivers that must be changed: 107581) EC driver: 10759 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 10760AeGpeHandler, NULL); 10761 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 10762 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 10763 107642) Button Drivers (Power, Lid, Sleep): 10765Run _PRW method under parent device 10766If _PRW exists: /* This is a control-method button */ 10767 Extract GPE number and possibly GpeDevice 10768 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 10769 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 10770 10771For all other devices that have _PRWs, we automatically set the GPE type 10772to 10773ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 10774This 10775must be done on a selective basis, usually requiring some kind of user 10776app 10777to allow the user to pick the wake devices. 10778 10779 10780Code and Data Size: Current and previous core subsystem library sizes are 10781shown below. These are the code and data sizes for the acpica.lib 10782produced 10783by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10784any ACPI driver or OSPM code. The debug version of the code includes the 10785debug output trace mechanism and has a much larger code and data size. 10786Note 10787that these values will vary depending on the efficiency of the compiler 10788and 10789the compiler options used during generation. 10790 10791 Previous Release: 10792 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 10793 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 10794 Current Release: 10795 10796 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 10797 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 10798 10799 10800 10801---------------------------------------- 1080202 April 2004. Summary of changes for version 20040402: 10803 108041) ACPI CA Core Subsystem: 10805 10806Fixed an interpreter problem where an indirect store through an ArgX 10807parameter was incorrectly applying the "implicit conversion rules" during 10808the store. From the ACPI specification: "If the target is a method local 10809or 10810argument (LocalX or ArgX), no conversion is performed and the result is 10811stored directly to the target". The new behavior is to disable implicit 10812conversion during ALL stores to an ArgX. 10813 10814Changed the behavior of the _PRW method scan to ignore any and all errors 10815returned by a given _PRW. This prevents the scan from aborting from the 10816failure of any single _PRW. 10817 10818Moved the runtime configuration parameters from the global init procedure 10819to 10820static variables in acglobal.h. This will allow the host to override the 10821default values easily. 10822 10823Code and Data Size: Current and previous core subsystem library sizes are 10824shown below. These are the code and data sizes for the acpica.lib 10825produced 10826by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10827any ACPI driver or OSPM code. The debug version of the code includes the 10828debug output trace mechanism and has a much larger code and data size. 10829Note 10830that these values will vary depending on the efficiency of the compiler 10831and 10832the compiler options used during generation. 10833 10834 Previous 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 Current Release: 10838 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 10839 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 10840 10841 108422) iASL Compiler/Disassembler: 10843 10844iASL now fully disassembles SSDTs. However, External() statements are 10845not 10846generated automatically for unresolved symbols at this time. This is a 10847planned feature for future implementation. 10848 10849Fixed a scoping problem in the disassembler that occurs when the type of 10850the 10851target of a Scope() operator is overridden. This problem caused an 10852incorrectly nested internal namespace to be constructed. 10853 10854Any warnings or errors that are emitted during disassembly are now 10855commented 10856out automatically so that the resulting file can be recompiled without 10857any 10858hand editing. 10859 10860---------------------------------------- 1086126 March 2004. Summary of changes for version 20040326: 10862 108631) ACPI CA Core Subsystem: 10864 10865Implemented support for "wake" GPEs via interaction between GPEs and the 10866_PRW methods. Every GPE that is pointed to by one or more _PRWs is 10867identified as a WAKE GPE and by default will no longer be enabled at 10868runtime. Previously, we were blindly enabling all GPEs with a 10869corresponding 10870_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 10871We 10872believe this has been the cause of thousands of "spurious" GPEs on some 10873systems. 10874 10875This new GPE behavior is can be reverted to the original behavior (enable 10876ALL GPEs at runtime) via a runtime flag. 10877 10878Fixed a problem where aliased control methods could not access objects 10879properly. The proper scope within the namespace was not initialized 10880(transferred to the target of the aliased method) before executing the 10881target method. 10882 10883Fixed a potential race condition on internal object deletion on the 10884return 10885object in AcpiEvaluateObject. 10886 10887Integrated a fix for resource descriptors where both _MEM and _MTP were 10888being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 10889wide, 0x0F instead of 0x03.) 10890 10891Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 10892preventing 10893a 10894fault in some cases. 10895 10896Updated Notify() values for debug statements in evmisc.c 10897 10898Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 10899 10900Code and Data Size: Current and previous core subsystem library sizes are 10901shown below. These are the code and data sizes for the acpica.lib 10902produced 10903by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10904any ACPI driver or OSPM code. The debug version of the code includes the 10905debug output trace mechanism and has a much larger code and data size. 10906Note 10907that these values will vary depending on the efficiency of the compiler 10908and 10909the compiler options used during generation. 10910 10911 Previous Release: 10912 10913 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 10914 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 10915 Current Release: 10916 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 10917 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 10918 10919---------------------------------------- 1092011 March 2004. Summary of changes for version 20040311: 10921 109221) ACPI CA Core Subsystem: 10923 10924Fixed a problem where errors occurring during the parse phase of control 10925method execution did not abort cleanly. For example, objects created and 10926installed in the namespace were not deleted. This caused all subsequent 10927invocations of the method to return the AE_ALREADY_EXISTS exception. 10928 10929Implemented a mechanism to force a control method to "Serialized" 10930execution 10931if the method attempts to create namespace objects. (The root of the 10932AE_ALREADY_EXISTS problem.) 10933 10934Implemented support for the predefined _OSI "internal" control method. 10935Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 10936and 10937"Windows 2001.1", and can be easily upgraded for new strings as 10938necessary. 10939This feature will allow "other" operating systems to execute the fully 10940tested, "Windows" code path through the ASL code 10941 10942Global Lock Support: Now allows multiple acquires and releases with any 10943internal thread. Removed concept of "owning thread" for this special 10944mutex. 10945 10946Fixed two functions that were inappropriately declaring large objects on 10947the 10948CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 10949during 10950method execution considerably. 10951 10952Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 10953S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 10954 10955Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 10956defined on the machine. 10957 10958Implemented two runtime options: One to force all control method 10959execution 10960to "Serialized" to mimic Windows behavior, another to disable _OSI 10961support 10962if it causes problems on a given machine. 10963 10964Code and Data Size: Current and previous core subsystem library sizes are 10965shown below. These are the code and data sizes for the acpica.lib 10966produced 10967by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10968any ACPI driver or OSPM code. The debug version of the code includes the 10969debug output trace mechanism and has a much larger code and data size. 10970Note 10971that these values will vary depending on the efficiency of the compiler 10972and 10973the compiler options used during generation. 10974 10975 Previous Release: 10976 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 10977 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 10978 Current Release: 10979 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 10980 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 10981 109822) iASL Compiler/Disassembler: 10983 10984Fixed an array size problem for FreeBSD that would cause the compiler to 10985fault. 10986 10987---------------------------------------- 1098820 February 2004. Summary of changes for version 20040220: 10989 10990 109911) ACPI CA Core Subsystem: 10992 10993Implemented execution of _SxD methods for Device objects in the 10994GetObjectInfo interface. 10995 10996Fixed calls to _SST method to pass the correct arguments. 10997 10998Added a call to _SST on wake to restore to "working" state. 10999 11000Check for End-Of-Buffer failure case in the WalkResources interface. 11001 11002Integrated fix for 64-bit alignment issue in acglobal.h by moving two 11003structures to the beginning of the file. 11004 11005After wake, clear GPE status register(s) before enabling GPEs. 11006 11007After wake, clear/enable power button. (Perhaps we should clear/enable 11008all 11009fixed events upon wake.) 11010 11011Fixed a couple of possible memory leaks in the Namespace manager. 11012 11013Integrated latest acnetbsd.h file. 11014 11015---------------------------------------- 1101611 February 2004. Summary of changes for version 20040211: 11017 11018 110191) ACPI CA Core Subsystem: 11020 11021Completed investigation and implementation of the call-by-reference 11022mechanism for control method arguments. 11023 11024Fixed a problem where a store of an object into an indexed package could 11025fail if the store occurs within a different method than the method that 11026created the package. 11027 11028Fixed a problem where the ToDecimal operator could return incorrect 11029results. 11030 11031Fixed a problem where the CopyObject operator could fail on some of the 11032more 11033obscure objects (e.g., Reference objects.) 11034 11035Improved the output of the Debug object to display buffer, package, and 11036index objects. 11037 11038Fixed a problem where constructs of the form "RefOf (ArgX)" did not 11039return 11040the expected result. 11041 11042Added permanent ACPI_REPORT_ERROR macros for all instances of the 11043ACPI_AML_INTERNAL exception. 11044 11045Integrated latest version of acfreebsd.h 11046 11047---------------------------------------- 1104816 January 2004. Summary of changes for version 20040116: 11049 11050The purpose of this release is primarily to update the copyright years in 11051each module, thus causing a huge number of diffs. There are a few small 11052functional changes, however. 11053 110541) ACPI CA Core Subsystem: 11055 11056Improved error messages when there is a problem finding one or more of 11057the 11058required base ACPI tables 11059 11060Reintroduced the definition of APIC_HEADER in actbl.h 11061 11062Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 11063 11064Removed extraneous reference to NewObj in dsmthdat.c 11065 110662) iASL compiler 11067 11068Fixed a problem introduced in December that disabled the correct 11069disassembly 11070of Resource Templates 11071 11072 11073---------------------------------------- 1107403 December 2003. Summary of changes for version 20031203: 11075 110761) ACPI CA Core Subsystem: 11077 11078Changed the initialization of Operation Regions during subsystem 11079init to perform two entire walks of the ACPI namespace; The first 11080to initialize the regions themselves, the second to execute the 11081_REG methods. This fixed some interdependencies across _REG 11082methods found on some machines. 11083 11084Fixed a problem where a Store(Local0, Local1) could simply update 11085the object reference count, and not create a new copy of the 11086object if the Local1 is uninitialized. 11087 11088Implemented support for the _SST reserved method during sleep 11089transitions. 11090 11091Implemented support to clear the SLP_TYP and SLP_EN bits when 11092waking up, this is apparently required by some machines. 11093 11094When sleeping, clear the wake status only if SleepState is not S5. 11095 11096Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 11097pointer arithmetic advanced a string pointer too far. 11098 11099Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 11100could be returned if the requested table has not been loaded. 11101 11102Within the support for IRQ resources, restructured the handling of 11103the active and edge/level bits. 11104 11105Fixed a few problems in AcpiPsxExecute() where memory could be 11106leaked under certain error conditions. 11107 11108Improved error messages for the cases where the ACPI mode could 11109not be entered. 11110 11111Code and Data Size: Current and previous core subsystem library 11112sizes are shown below. These are the code and data sizes for the 11113acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11114these values do not include any ACPI driver or OSPM code. The 11115debug version of the code includes the debug output trace 11116mechanism and has a much larger code and data size. Note that 11117these values will vary depending on the efficiency of the compiler 11118and the compiler options used during generation. 11119 11120 Previous Release (20031029): 11121 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11122 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11123 Current Release: 11124 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 11125 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 11126 111272) iASL Compiler/Disassembler: 11128 11129Implemented a fix for the iASL disassembler where a bad index was 11130generated. This was most noticeable on 64-bit platforms 11131 11132 11133---------------------------------------- 1113429 October 2003. Summary of changes for version 20031029: 11135 111361) ACPI CA Core Subsystem: 11137 11138 11139Fixed a problem where a level-triggered GPE with an associated 11140_Lxx control method was incorrectly cleared twice. 11141 11142Fixed a problem with the Field support code where an access can 11143occur beyond the end-of-region if the field is non-aligned but 11144extends to the very end of the parent region (resulted in an 11145AE_AML_REGION_LIMIT exception.) 11146 11147Fixed a problem with ACPI Fixed Events where an RT Clock handler 11148would not get invoked on an RTC event. The RTC event bitmasks for 11149the PM1 registers were not being initialized properly. 11150 11151Implemented support for executing _STA and _INI methods for 11152Processor objects. Although this is currently not part of the 11153ACPI specification, there is existing ASL code that depends on the 11154init-time execution of these methods. 11155 11156Implemented and deployed a GetDescriptorName function to decode 11157the various types of internal descriptors. Guards against null 11158descriptors during debug output also. 11159 11160Implemented and deployed a GetNodeName function to extract the 4- 11161character namespace node name. This function simplifies the debug 11162and error output, as well as guarding against null pointers during 11163output. 11164 11165Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 11166simplify the debug and error output of 64-bit integers. This 11167macro replaces the HIDWORD and LODWORD macros for dumping these 11168integers. 11169 11170Updated the implementation of the Stall() operator to only call 11171AcpiOsStall(), and also return an error if the operand is larger 11172than 255. This preserves the required behavior of not 11173relinquishing the processor, as would happen if AcpiOsSleep() was 11174called for "long stalls". 11175 11176Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 11177initialized are now treated as NOOPs. 11178 11179Cleaned up a handful of warnings during 64-bit generation. 11180 11181Fixed a reported error where and incorrect GPE number was passed 11182to the GPE dispatch handler. This value is only used for error 11183output, however. Used this opportunity to clean up and streamline 11184the GPE dispatch code. 11185 11186Code and Data Size: Current and previous core subsystem library 11187sizes are shown below. These are the code and data sizes for the 11188acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11189these values do not include any ACPI driver or OSPM code. The 11190 11191debug version of the code includes the debug output trace 11192mechanism and has a much larger code and data size. Note that 11193these values will vary depending on the efficiency of the compiler 11194and the compiler options used during generation. 11195 11196 Previous Release (20031002): 11197 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11198 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11199 Current Release: 11200 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 11201 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 11202 11203 112042) iASL Compiler/Disassembler: 11205 11206Updated the iASL compiler to return an error if the operand to the 11207Stall() operator is larger than 255. 11208 11209 11210---------------------------------------- 1121102 October 2003. Summary of changes for version 20031002: 11212 11213 112141) ACPI CA Core Subsystem: 11215 11216Fixed a problem with Index Fields where the index was not 11217incremented for fields that require multiple writes to the 11218index/data registers (Fields that are wider than the data 11219register.) 11220 11221Fixed a problem with all Field objects where a write could go 11222beyond the end-of-field if the field was larger than the access 11223granularity and therefore required multiple writes to complete the 11224request. An extra write beyond the end of the field could happen 11225inadvertently. 11226 11227Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 11228would incorrectly be returned if the width of the Data Register 11229was larger than the specified field access width. 11230 11231Completed fixes for LoadTable() and Unload() and verified their 11232operation. Implemented full support for the "DdbHandle" object 11233throughout the ACPI CA subsystem. 11234 11235Implemented full support for the MADT and ECDT tables in the ACPI 11236CA header files. Even though these tables are not directly 11237consumed by ACPI CA, the header definitions are useful for ACPI 11238device drivers. 11239 11240Integrated resource descriptor fixes posted to the Linux ACPI 11241list. This included checks for minimum descriptor length, and 11242support for trailing NULL strings within descriptors that have 11243optional string elements. 11244 11245Code and Data Size: Current and previous core subsystem library 11246sizes are shown below. These are the code and data sizes for the 11247acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11248these values do not include any ACPI driver or OSPM code. The 11249debug version of the code includes the debug output trace 11250mechanism and has a much larger code and data size. Note that 11251these values will vary depending on the efficiency of the compiler 11252and the compiler options used during generation. 11253 11254 Previous Release (20030918): 11255 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11256 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11257 Current Release: 11258 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 11259 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 11260 11261 112622) iASL Compiler: 11263 11264Implemented detection of non-ASCII characters within the input 11265source ASL file. This catches attempts to compile binary (AML) 11266files early in the compile, with an informative error message. 11267 11268Fixed a problem where the disassembler would fault if the output 11269filename could not be generated or if the output file could not be 11270opened. 11271 11272---------------------------------------- 1127318 September 2003. Summary of changes for version 20030918: 11274 11275 112761) ACPI CA Core Subsystem: 11277 11278Found and fixed a longstanding problem with the late execution of 11279the various deferred AML opcodes (such as Operation Regions, 11280Buffer Fields, Buffers, and Packages). If the name string 11281specified for the name of the new object placed the object in a 11282scope other than the current scope, the initialization/execution 11283of the opcode failed. The solution to this problem was to 11284implement a mechanism where the late execution of such opcodes 11285does not attempt to lookup/create the name a second time in an 11286incorrect scope. This fixes the "region size computed 11287incorrectly" problem. 11288 11289Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 11290Global Lock AE_BAD_PARAMETER error. 11291 11292Fixed several 64-bit issues with prototypes, casting and data 11293types. 11294 11295Removed duplicate prototype from acdisasm.h 11296 11297Fixed an issue involving EC Operation Region Detach (Shaohua Li) 11298 11299Code and Data Size: Current and previous core subsystem library 11300sizes are shown below. These are the code and data sizes for the 11301acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11302these values do not include any ACPI driver or OSPM code. The 11303debug version of the code includes the debug output trace 11304mechanism and has a much larger code and data size. Note that 11305these values will vary depending on the efficiency of the compiler 11306and the compiler options used during generation. 11307 11308 Previous Release: 11309 11310 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11311 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11312 Current Release: 11313 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 11314 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 11315 11316 113172) Linux: 11318 11319Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 11320correct sleep time in seconds. 11321 11322---------------------------------------- 1132314 July 2003. Summary of changes for version 20030619: 11324 113251) ACPI CA Core Subsystem: 11326 11327Parse SSDTs in order discovered, as opposed to reverse order 11328(Hrvoje Habjanic) 11329 11330Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 11331Klausner, 11332 Nate Lawson) 11333 11334 113352) Linux: 11336 11337Dynamically allocate SDT list (suggested by Andi Kleen) 11338 11339proc function return value cleanups (Andi Kleen) 11340 11341Correctly handle NMI watchdog during long stalls (Andrew Morton) 11342 11343Make it so acpismp=force works (reported by Andrew Morton) 11344 11345 11346---------------------------------------- 1134719 June 2003. Summary of changes for version 20030619: 11348 113491) ACPI CA Core Subsystem: 11350 11351Fix To/FromBCD, eliminating the need for an arch-specific #define. 11352 11353Do not acquire a semaphore in the S5 shutdown path. 11354 11355Fix ex_digits_needed for 0. (Takayoshi Kochi) 11356 11357Fix sleep/stall code reversal. (Andi Kleen) 11358 11359Revert a change having to do with control method calling 11360semantics. 11361 113622) Linux: 11363 11364acpiphp update (Takayoshi Kochi) 11365 11366Export acpi_disabled for sonypi (Stelian Pop) 11367 11368Mention acpismp=force in config help 11369 11370Re-add acpitable.c and acpismp=force. This improves backwards 11371 11372compatibility and also cleans up the code to a significant degree. 11373 11374Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 11375 11376---------------------------------------- 1137722 May 2003. Summary of changes for version 20030522: 11378 113791) ACPI CA Core Subsystem: 11380 11381Found and fixed a reported problem where an AE_NOT_FOUND error 11382occurred occasionally during _BST evaluation. This turned out to 11383be an Owner ID allocation issue where a called method did not get 11384a new ID assigned to it. Eventually, (after 64k calls), the Owner 11385ID UINT16 would wraparound so that the ID would be the same as the 11386caller's and the called method would delete the caller's 11387namespace. 11388 11389Implemented extended error reporting for control methods that are 11390aborted due to a run-time exception. Output includes the exact 11391AML instruction that caused the method abort, a dump of the method 11392locals and arguments at the time of the abort, and a trace of all 11393nested control method calls. 11394 11395Modified the interpreter to allow the creation of buffers of zero 11396length from the AML code. Implemented new code to ensure that no 11397attempt is made to actually allocate a memory buffer (of length 11398zero) - instead, a simple buffer object with a NULL buffer pointer 11399and length zero is created. A warning is no longer issued when 11400the AML attempts to create a zero-length buffer. 11401 11402Implemented a workaround for the "leading asterisk issue" in 11403_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 11404asterisk is automatically removed if present in any HID, UID, or 11405CID strings. The iASL compiler will still flag this asterisk as 11406an error, however. 11407 11408Implemented full support for _CID methods that return a package of 11409multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 11410now additionally returns a device _CID list if present. This 11411required a change to the external interface in order to pass an 11412ACPI_BUFFER object as a parameter since the _CID list is of 11413variable length. 11414 11415Fixed a problem with the new AE_SAME_HANDLER exception where 11416handler initialization code did not know about this exception. 11417 11418Code and Data Size: Current and previous core subsystem library 11419sizes are shown below. These are the code and data sizes for the 11420acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 11421these values do not include any ACPI driver or OSPM code. The 11422debug version of the code includes the debug output trace 11423mechanism and has a much larger code and data size. Note that 11424these values will vary depending on the efficiency of the compiler 11425and the compiler options used during generation. 11426 11427 Previous Release (20030509): 11428 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 11429 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 11430 Current Release: 11431 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 11432 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 11433 11434 114352) Linux: 11436 11437Fixed a bug in which we would reinitialize the ACPI interrupt 11438after it was already working, thus disabling all ACPI and the IRQs 11439for any other device sharing the interrupt. (Thanks to Stian 11440Jordet) 11441 11442Toshiba driver update (John Belmonte) 11443 11444Return only 0 or 1 for our interrupt handler status (Andrew 11445Morton) 11446 11447 114483) iASL Compiler: 11449 11450Fixed a reported problem where multiple (nested) ElseIf() 11451statements were not handled correctly by the compiler, resulting 11452in incorrect warnings and incorrect AML code. This was a problem 11453in both the ASL parser and the code generator. 11454 11455 114564) Documentation: 11457 11458Added changes to existing interfaces, new exception codes, and new 11459text concerning reference count object management versus garbage 11460collection. 11461 11462---------------------------------------- 1146309 May 2003. Summary of changes for version 20030509. 11464 11465 114661) ACPI CA Core Subsystem: 11467 11468Changed the subsystem initialization sequence to hold off 11469installation of address space handlers until the hardware has been 11470initialized and the system has entered ACPI mode. This is because 11471the installation of space handlers can cause _REG methods to be 11472run. Previously, the _REG methods could potentially be run before 11473ACPI mode was enabled. 11474 11475Fixed some memory leak issues related to address space handler and 11476notify handler installation. There were some problems with the 11477reference count mechanism caused by the fact that the handler 11478objects are shared across several namespace objects. 11479 11480Fixed a reported problem where reference counts within the 11481namespace were not properly updated when named objects created by 11482method execution were deleted. 11483 11484Fixed a reported problem where multiple SSDTs caused a deletion 11485issue during subsystem termination. Restructured the table data 11486structures to simplify the linked lists and the related code. 11487 11488Fixed a problem where the table ID associated with secondary 11489tables (SSDTs) was not being propagated into the namespace objects 11490created by those tables. This would only present a problem for 11491tables that are unloaded at run-time, however. 11492 11493Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 11494type as the length parameter (instead of UINT32). 11495 11496Solved a long-standing problem where an ALREADY_EXISTS error 11497appears on various systems. This problem could happen when there 11498are multiple PCI_Config operation regions under a single PCI root 11499bus. This doesn't happen very frequently, but there are some 11500systems that do this in the ASL. 11501 11502Fixed a reported problem where the internal DeleteNode function 11503was incorrectly handling the case where a namespace node was the 11504first in the parent's child list, and had additional peers (not 11505the only child, but first in the list of children.) 11506 11507Code and Data Size: Current core subsystem library sizes are shown 11508below. These are the code and data sizes for the acpica.lib 11509produced by the Microsoft Visual C++ 6.0 compiler, and these 11510values do not include any ACPI driver or OSPM code. The debug 11511version of the code includes the debug output trace mechanism and 11512has a much larger code and data size. Note that these values will 11513vary depending on the efficiency of the compiler and the compiler 11514options used during generation. 11515 11516 Previous Release 11517 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 11518 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 11519 Current Release: 11520 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 11521 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 11522 11523 115242) Linux: 11525 11526Allow ":" in OS override string (Ducrot Bruno) 11527 11528Kobject fix (Greg KH) 11529 11530 115313 iASL Compiler/Disassembler: 11532 11533Fixed a problem in the generation of the C source code files (AML 11534is emitted in C source statements for BIOS inclusion) where the 11535Ascii dump that appears within a C comment at the end of each line 11536could cause a compile time error if the AML sequence happens to 11537have an open comment or close comment sequence embedded. 11538 11539 11540---------------------------------------- 1154124 April 2003. Summary of changes for version 20030424. 11542 11543 115441) ACPI CA Core Subsystem: 11545 11546Support for big-endian systems has been implemented. Most of the 11547support has been invisibly added behind big-endian versions of the 11548ACPI_MOVE_* macros. 11549 11550Fixed a problem in AcpiHwDisableGpeBlock() and 11551AcpiHwClearGpeBlock() where an incorrect offset was passed to the 11552low level hardware write routine. The offset parameter was 11553actually eliminated from the low level read/write routines because 11554they had become obsolete. 11555 11556Fixed a problem where a handler object was deleted twice during 11557the removal of a fixed event handler. 11558 11559 115602) Linux: 11561 11562A fix for SMP systems with link devices was contributed by 11563 11564Compaq's Dan Zink. 11565 11566(2.5) Return whether we handled the interrupt in our IRQ handler. 11567(Linux ISRs no longer return void, so we can propagate the handler 11568return value from the ACPI CA core back to the OS.) 11569 11570 11571 115723) Documentation: 11573 11574The ACPI CA Programmer Reference has been updated to reflect new 11575interfaces and changes to existing interfaces. 11576 11577---------------------------------------- 1157828 March 2003. Summary of changes for version 20030328. 11579 115801) ACPI CA Core Subsystem: 11581 11582The GPE Block Device support has been completed. New interfaces 11583are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 11584interfaces (enable, disable, clear, getstatus) have been split 11585into separate interfaces for Fixed Events and General Purpose 11586Events (GPEs) in order to support GPE Block Devices properly. 11587 11588Fixed a problem where the error message "Failed to acquire 11589semaphore" would appear during operations on the embedded 11590controller (EC). 11591 11592Code and Data Size: Current core subsystem library sizes are shown 11593below. These are the code and data sizes for the acpica.lib 11594produced by the Microsoft Visual C++ 6.0 compiler, and these 11595values do not include any ACPI driver or OSPM code. The debug 11596version of the code includes the debug output trace mechanism and 11597has a much larger code and data size. Note that these values will 11598vary depending on the efficiency of the compiler and the compiler 11599options used during generation. 11600 11601 Previous Release 11602 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 11603 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 11604 Current Release: 11605 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 11606 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 11607 11608 11609---------------------------------------- 1161028 February 2003. Summary of changes for version 20030228. 11611 11612 116131) ACPI CA Core Subsystem: 11614 11615The GPE handling and dispatch code has been completely overhauled 11616in preparation for support of GPE Block Devices (ID ACPI0006). 11617This affects internal data structures and code only; there should 11618be no differences visible externally. One new file has been 11619added, evgpeblk.c 11620 11621The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 11622fields that are used to determine the GPE block lengths. The 11623REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 11624structures are ignored. This is per the ACPI specification but it 11625isn't very clear. The full 256 Block 0/1 GPEs are now supported 11626(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 11627 11628In the SCI interrupt handler, removed the read of the PM1_CONTROL 11629register to look at the SCI_EN bit. On some machines, this read 11630causes an SMI event and greatly slows down SCI events. (This may 11631in fact be the cause of slow battery status response on some 11632systems.) 11633 11634Fixed a problem where a store of a NULL string to a package object 11635could cause the premature deletion of the object. This was seen 11636during execution of the battery _BIF method on some systems, 11637resulting in no battery data being returned. 11638 11639Added AcpiWalkResources interface to simplify parsing of resource 11640lists. 11641 11642Code and Data Size: Current core subsystem library sizes are shown 11643below. These are the code and data sizes for the acpica.lib 11644produced by the Microsoft Visual C++ 6.0 compiler, and these 11645values do not include any ACPI driver or OSPM code. The debug 11646version of the code includes the debug output trace mechanism and 11647has a much larger code and data size. Note that these values will 11648vary depending on the efficiency of the compiler and the compiler 11649options used during generation. 11650 11651 Previous Release 11652 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11653 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11654 Current Release: 11655 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 11656 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 11657 11658 116592) Linux 11660 11661S3 fixes (Ole Rohne) 11662 11663Update ACPI PHP driver with to use new acpi_walk_resource API 11664(Bjorn Helgaas) 11665 11666Add S4BIOS support (Pavel Machek) 11667 11668Map in entire table before performing checksum (John Stultz) 11669 11670Expand the mem= cmdline to allow the specification of reserved and 11671ACPI DATA blocks (Pavel Machek) 11672 11673Never use ACPI on VISWS 11674 11675Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 11676 11677Revert a change that allowed P_BLK lengths to be 4 or 5. This is 11678causing us to think that some systems support C2 when they really 11679don't. 11680 11681Do not count processor objects for non-present CPUs (Thanks to 11682Dominik Brodowski) 11683 11684 116853) iASL Compiler: 11686 11687Fixed a problem where ASL include files could not be found and 11688opened. 11689 11690Added support for the _PDC reserved name. 11691 11692 11693---------------------------------------- 1169422 January 2003. Summary of changes for version 20030122. 11695 11696 116971) ACPI CA Core Subsystem: 11698 11699Added a check for constructs of the form: Store (Local0, Local0) 11700where Local0 is not initialized. Apparently, some BIOS 11701programmers believe that this is a NOOP. Since this store doesn't 11702do anything anyway, the new prototype behavior will ignore this 11703error. This is a case where we can relax the strict checking in 11704the interpreter in the name of compatibility. 11705 11706 117072) Linux 11708 11709The AcpiSrc Source Conversion Utility has been released with the 11710Linux package for the first time. This is the utility that is 11711used to convert the ACPI CA base source code to the Linux version. 11712 11713(Both) Handle P_BLK lengths shorter than 6 more gracefully 11714 11715(Both) Move more headers to include/acpi, and delete an unused 11716header. 11717 11718(Both) Move drivers/acpi/include directory to include/acpi 11719 11720(Both) Boot functions don't use cmdline, so don't pass it around 11721 11722(Both) Remove include of unused header (Adrian Bunk) 11723 11724(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 11725the 11726former now also includes the latter, acpiphp.h only needs the one, 11727now. 11728 11729(2.5) Make it possible to select method of bios restoring after S3 11730resume. [=> no more ugly ifdefs] (Pavel Machek) 11731 11732(2.5) Make proc write interfaces work (Pavel Machek) 11733 11734(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 11735 11736(2.5) Break out ACPI Perf code into its own module, under cpufreq 11737(Dominik Brodowski) 11738 11739(2.4) S4BIOS support (Ducrot Bruno) 11740 11741(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 11742Visinoni) 11743 11744 117453) iASL Compiler: 11746 11747Added support to disassemble SSDT and PSDTs. 11748 11749Implemented support to obtain SSDTs from the Windows registry if 11750available. 11751 11752 11753---------------------------------------- 1175409 January 2003. Summary of changes for version 20030109. 11755 117561) ACPI CA Core Subsystem: 11757 11758Changed the behavior of the internal Buffer-to-String conversion 11759function. The current ACPI specification states that the contents 11760of the buffer are "converted to a string of two-character 11761hexadecimal numbers, each separated by a space". Unfortunately, 11762this definition is not backwards compatible with existing ACPI 1.0 11763implementations (although the behavior was not defined in the ACPI 117641.0 specification). The new behavior simply copies data from the 11765buffer to the string until a null character is found or the end of 11766the buffer is reached. The new String object is always null 11767terminated. This problem was seen during the generation of _BIF 11768battery data where incorrect strings were returned for battery 11769type, etc. This will also require an errata to the ACPI 11770specification. 11771 11772Renamed all instances of NATIVE_UINT and NATIVE_INT to 11773ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 11774 11775Copyright in all module headers (both Linux and non-Linux) has be 11776updated to 2003. 11777 11778Code and Data Size: Current core subsystem library sizes are shown 11779below. These are the code and data sizes for the acpica.lib 11780produced by the Microsoft Visual C++ 6.0 compiler, and these 11781values do not include any ACPI driver or OSPM code. The debug 11782version of the code includes the debug output trace mechanism and 11783has a much larger code and data size. Note that these values will 11784vary depending on the efficiency of the compiler and the compiler 11785options used during generation. 11786 11787 Previous Release 11788 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11789 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11790 Current Release: 11791 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11792 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11793 11794 117952) Linux 11796 11797Fixed an oops on module insertion/removal (Matthew Tippett) 11798 11799(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 11800 11801(2.5) Replace pr_debug (Randy Dunlap) 11802 11803(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 11804 11805(Both) Eliminate spawning of thread from timer callback, in favor 11806of schedule_work() 11807 11808(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 11809 11810(Both) Added define for Fixed Function HW region (Matthew Wilcox) 11811 11812(Both) Add missing statics to button.c (Pavel Machek) 11813 11814Several changes have been made to the source code translation 11815utility that generates the Linux Code in order to make the code 11816more "Linux-like": 11817 11818All typedefs on structs and unions have been removed in keeping 11819with the Linux coding style. 11820 11821Removed the non-Linux SourceSafe module revision number from each 11822module header. 11823 11824Completed major overhaul of symbols to be lowercased for linux. 11825Doubled the number of symbols that are lowercased. 11826 11827Fixed a problem where identifiers within procedure headers and 11828within quotes were not fully lower cased (they were left with a 11829starting capital.) 11830 11831Some C macros whose only purpose is to allow the generation of 16- 11832bit code are now completely removed in the Linux code, increasing 11833readability and maintainability. 11834 11835---------------------------------------- 11836 1183712 December 2002. Summary of changes for version 20021212. 11838 11839 118401) ACPI CA Core Subsystem: 11841 11842Fixed a problem where the creation of a zero-length AML Buffer 11843would cause a fault. 11844 11845Fixed a problem where a Buffer object that pointed to a static AML 11846buffer (in an ACPI table) could inadvertently be deleted, causing 11847memory corruption. 11848 11849Fixed a problem where a user buffer (passed in to the external 11850ACPI CA interfaces) could be overwritten if the buffer was too 11851small to complete the operation, causing memory corruption. 11852 11853Fixed a problem in the Buffer-to-String conversion code where a 11854string of length one was always returned, regardless of the size 11855of the input Buffer object. 11856 11857Removed the NATIVE_CHAR data type across the entire source due to 11858lack of need and lack of consistent use. 11859 11860Code and Data Size: Current core subsystem library sizes are shown 11861below. These are the code and data sizes for the acpica.lib 11862produced by the Microsoft Visual C++ 6.0 compiler, and these 11863values do not include any ACPI driver or OSPM code. The debug 11864version of the code includes the debug output trace mechanism and 11865has a much larger code and data size. Note that these values will 11866vary depending on the efficiency of the compiler and the compiler 11867options used during generation. 11868 11869 Previous Release 11870 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 11871 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 11872 Current Release: 11873 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 11874 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 11875 11876 11877---------------------------------------- 1187805 December 2002. Summary of changes for version 20021205. 11879 118801) ACPI CA Core Subsystem: 11881 11882Fixed a problem where a store to a String or Buffer object could 11883cause corruption of the DSDT if the object type being stored was 11884the same as the target object type and the length of the object 11885being stored was equal to or smaller than the original (existing) 11886target object. This was seen to cause corruption of battery _BIF 11887buffers if the _BIF method modified the buffer on the fly. 11888 11889Fixed a problem where an internal error was generated if a control 11890method invocation was used in an OperationRegion, Buffer, or 11891Package declaration. This was caused by the deferred parsing of 11892the control method and thus the deferred creation of the internal 11893method object. The solution to this problem was to create the 11894internal method object at the moment the method is encountered in 11895the first pass - so that subsequent references to the method will 11896able to obtain the required parameter count and thus properly 11897parse the method invocation. This problem presented itself as an 11898AE_AML_INTERNAL during the pass 1 parse phase during table load. 11899 11900Fixed a problem where the internal String object copy routine did 11901not always allocate sufficient memory for the target String object 11902and caused memory corruption. This problem was seen to cause 11903"Allocation already present in list!" errors as memory allocation 11904became corrupted. 11905 11906Implemented a new function for the evaluation of namespace objects 11907that allows the specification of the allowable return object 11908types. This simplifies a lot of code that checks for a return 11909object of one or more specific objects returned from the 11910evaluation (such as _STA, etc.) This may become and external 11911function if it would be useful to ACPI-related drivers. 11912 11913Completed another round of prefixing #defines with "ACPI_" for 11914clarity. 11915 11916Completed additional code restructuring to allow more modular 11917linking for iASL compiler and AcpiExec. Several files were split 11918creating new files. New files: nsparse.c dsinit.c evgpe.c 11919 11920Implemented an abort mechanism to terminate an executing control 11921method via the AML debugger. This feature is useful for debugging 11922control methods that depend (wait) for specific hardware 11923responses. 11924 11925Code and Data Size: Current core subsystem library sizes are shown 11926below. These are the code and data sizes for the acpica.lib 11927produced by the Microsoft Visual C++ 6.0 compiler, and these 11928values do not include any ACPI driver or OSPM code. The debug 11929version of the code includes the debug output trace mechanism and 11930has a much larger code and data size. Note that these values will 11931vary depending on the efficiency of the compiler and the compiler 11932options used during generation. 11933 11934 Previous Release 11935 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 11936 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 11937 Current Release: 11938 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 11939 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 11940 11941 119422) iASL Compiler/Disassembler 11943 11944Fixed a compiler code generation problem for "Interrupt" Resource 11945Descriptors. If specified in the ASL, the optional "Resource 11946Source Index" and "Resource Source" fields were not inserted into 11947the correct location within the AML resource descriptor, creating 11948an invalid descriptor. 11949 11950Fixed a disassembler problem for "Interrupt" resource descriptors. 11951The optional "Resource Source Index" and "Resource Source" fields 11952were ignored. 11953 11954 11955---------------------------------------- 1195622 November 2002. Summary of changes for version 20021122. 11957 11958 119591) ACPI CA Core Subsystem: 11960 11961Fixed a reported problem where an object stored to a Method Local 11962or Arg was not copied to a new object during the store - the 11963object pointer was simply copied to the Local/Arg. This caused 11964all subsequent operations on the Local/Arg to also affect the 11965original source of the store operation. 11966 11967Fixed a problem where a store operation to a Method Local or Arg 11968was not completed properly if the Local/Arg contained a reference 11969(from RefOf) to a named field. The general-purpose store-to- 11970namespace-node code is now used so that this case is handled 11971automatically. 11972 11973Fixed a problem where the internal object copy routine would cause 11974a protection fault if the object being copied was a Package and 11975contained either 1) a NULL package element or 2) a nested sub- 11976package. 11977 11978Fixed a problem with the GPE initialization that resulted from an 11979ambiguity in the ACPI specification. One section of the 11980specification states that both the address and length of the GPE 11981block must be zero if the block is not supported. Another section 11982implies that only the address need be zero if the block is not 11983supported. The code has been changed so that both the address and 11984the length must be non-zero to indicate a valid GPE block (i.e., 11985if either the address or the length is zero, the GPE block is 11986invalid.) 11987 11988Code and Data Size: Current core subsystem library sizes are shown 11989below. These are the code and data sizes for the acpica.lib 11990produced by the Microsoft Visual C++ 6.0 compiler, and these 11991values do not include any ACPI driver or OSPM code. The debug 11992version of the code includes the debug output trace mechanism and 11993has a much larger code and data size. Note that these values will 11994vary depending on the efficiency of the compiler and the compiler 11995options used during generation. 11996 11997 Previous Release 11998 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 11999 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12000 Current Release: 12001 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12002 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 12003 12004 120052) Linux 12006 12007Cleaned up EC driver. Exported an external EC read/write 12008interface. By going through this, other drivers (most notably 12009sonypi) will be able to serialize access to the EC. 12010 12011 120123) iASL Compiler/Disassembler 12013 12014Implemented support to optionally generate include files for both 12015ASM and C (the -i switch). This simplifies BIOS development by 12016automatically creating include files that contain external 12017declarations for the symbols that are created within the 12018 12019(optionally generated) ASM and C AML source files. 12020 12021 12022---------------------------------------- 1202315 November 2002. Summary of changes for version 20021115. 12024 120251) ACPI CA Core Subsystem: 12026 12027Fixed a memory leak problem where an error during resolution of 12028 12029method arguments during a method invocation from another method 12030failed to cleanup properly by deleting all successfully resolved 12031argument objects. 12032 12033Fixed a problem where the target of the Index() operator was not 12034correctly constructed if the source object was a package. This 12035problem has not been detected because the use of a target operand 12036with Index() is very rare. 12037 12038Fixed a problem with the Index() operator where an attempt was 12039made to delete the operand objects twice. 12040 12041Fixed a problem where an attempt was made to delete an operand 12042twice during execution of the CondRefOf() operator if the target 12043did not exist. 12044 12045Implemented the first of perhaps several internal create object 12046functions that create and initialize a specific object type. This 12047consolidates duplicated code wherever the object is created, thus 12048shrinking the size of the subsystem. 12049 12050Implemented improved debug/error messages for errors that occur 12051during nested method invocations. All executing method pathnames 12052are displayed (with the error) as the call stack is unwound - thus 12053simplifying debug. 12054 12055Fixed a problem introduced in the 10/02 release that caused 12056premature deletion of a buffer object if a buffer was used as an 12057ASL operand where an integer operand is required (Thus causing an 12058implicit object conversion from Buffer to Integer.) The change in 12059the 10/02 release was attempting to fix a memory leak (albeit 12060incorrectly.) 12061 12062Code and Data Size: Current core subsystem library sizes are shown 12063below. These are the code and data sizes for the acpica.lib 12064produced by the Microsoft Visual C++ 6.0 compiler, and these 12065values do not include any ACPI driver or OSPM code. The debug 12066version of the code includes the debug output trace mechanism and 12067has a much larger code and data size. Note that these values will 12068vary depending on the efficiency of the compiler and the compiler 12069options used during generation. 12070 12071 Previous Release 12072 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12073 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12074 Current Release: 12075 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 12076 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 12077 12078 120792) Linux 12080 12081Changed the implementation of the ACPI semaphores to use down() 12082instead of down_interruptable(). It is important that the 12083execution of ACPI control methods not be interrupted by signals. 12084Methods must run to completion, or the system may be left in an 12085unknown/unstable state. 12086 12087Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 12088(Shawn Starr) 12089 12090 120913) iASL Compiler/Disassembler 12092 12093 12094Changed the default location of output files. All output files 12095are now placed in the current directory by default instead of in 12096the directory of the source file. This change may affect some 12097existing makefiles, but it brings the behavior of the compiler in 12098line with other similar tools. The location of the output files 12099can be overridden with the -p command line switch. 12100 12101 12102---------------------------------------- 1210311 November 2002. Summary of changes for version 20021111. 12104 12105 121060) ACPI Specification 2.0B is released and is now available at: 12107http://www.acpi.info/index.html 12108 12109 121101) ACPI CA Core Subsystem: 12111 12112Implemented support for the ACPI 2.0 SMBus Operation Regions. 12113This includes the early detection and handoff of the request to 12114the SMBus region handler (avoiding all of the complex field 12115support code), and support for the bidirectional return packet 12116from an SMBus write operation. This paves the way for the 12117development of SMBus drivers in each host operating system. 12118 12119Fixed a problem where the semaphore WAIT_FOREVER constant was 12120defined as 32 bits, but must be 16 bits according to the ACPI 12121specification. This had the side effect of causing ASL 12122Mutex/Event timeouts even though the ASL code requested a wait 12123forever. Changed all internal references to the ACPI timeout 12124parameter to 16 bits to prevent future problems. Changed the name 12125of WAIT_FOREVER to ACPI_WAIT_FOREVER. 12126 12127Code and Data Size: Current core subsystem library sizes are shown 12128below. These are the code and data sizes for the acpica.lib 12129produced by the Microsoft Visual C++ 6.0 compiler, and these 12130values do not include any ACPI driver or OSPM code. The debug 12131version of the code includes the debug output trace mechanism and 12132has a much larger code and data size. Note that these values will 12133vary depending on the efficiency of the compiler and the compiler 12134options used during generation. 12135 12136 Previous Release 12137 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12138 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12139 Current Release: 12140 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 12141 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 12142 12143 121442) Linux 12145 12146Module loading/unloading fixes (John Cagle) 12147 12148 121493) iASL Compiler/Disassembler 12150 12151Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 12152 12153Implemented support for the disassembly of all SMBus protocol 12154keywords (SMBQuick, SMBWord, etc.) 12155 12156---------------------------------------- 1215701 November 2002. Summary of changes for version 20021101. 12158 12159 121601) ACPI CA Core Subsystem: 12161 12162Fixed a problem where platforms that have a GPE1 block but no GPE0 12163block were not handled correctly. This resulted in a "GPE 12164overlap" error message. GPE0 is no longer required. 12165 12166Removed code added in the previous release that inserted nodes 12167into the namespace in alphabetical order. This caused some side- 12168effects on various machines. The root cause of the problem is 12169still under investigation since in theory, the internal ordering 12170of the namespace nodes should not matter. 12171 12172 12173Enhanced error reporting for the case where a named object is not 12174found during control method execution. The full ACPI namepath 12175(name reference) of the object that was not found is displayed in 12176this case. 12177 12178Note: as a result of the overhaul of the namespace object types in 12179the previous release, the namespace nodes for the predefined 12180scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 12181instead of ACPI_TYPE_ANY. This simplifies the namespace 12182management code but may affect code that walks the namespace tree 12183looking for specific object types. 12184 12185Code and Data Size: Current core subsystem library sizes are shown 12186below. These are the code and data sizes for the acpica.lib 12187produced by the Microsoft Visual C++ 6.0 compiler, and these 12188values do not include any ACPI driver or OSPM code. The debug 12189version of the code includes the debug output trace mechanism and 12190has a much larger code and data size. Note that these values will 12191vary depending on the efficiency of the compiler and the compiler 12192options used during generation. 12193 12194 Previous Release 12195 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12196 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12197 Current Release: 12198 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 12199 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 12200 12201 122022) Linux 12203 12204Fixed a problem introduced in the previous release where the 12205Processor and Thermal objects were not recognized and installed in 12206/proc. This was related to the scope type change described above. 12207 12208 122093) iASL Compiler/Disassembler 12210 12211Implemented the -g option to get all of the required ACPI tables 12212from the registry and save them to files (Windows version of the 12213compiler only.) The required tables are the FADT, FACS, and DSDT. 12214 12215Added ACPI table checksum validation during table disassembly in 12216order to catch corrupted tables. 12217 12218 12219---------------------------------------- 1222022 October 2002. Summary of changes for version 20021022. 12221 122221) ACPI CA Core Subsystem: 12223 12224Implemented a restriction on the Scope operator that the target 12225must already exist in the namespace at the time the operator is 12226encountered (during table load or method execution). In other 12227words, forward references are not allowed and Scope() cannot 12228create a new object. This changes the previous behavior where the 12229interpreter would create the name if not found. This new behavior 12230correctly enables the search-to-root algorithm during namespace 12231lookup of the target name. Because of this upsearch, this fixes 12232the known Compaq _SB_.OKEC problem and makes both the AML 12233interpreter and iASL compiler compatible with other ACPI 12234implementations. 12235 12236Completed a major overhaul of the internal ACPI object types for 12237the ACPI Namespace and the associated operand objects. Many of 12238these types had become obsolete with the introduction of the two- 12239pass namespace load. This cleanup simplifies the code and makes 12240the entire namespace load mechanism much clearer and easier to 12241understand. 12242 12243Improved debug output for tracking scope opening/closing to help 12244diagnose scoping issues. The old scope name as well as the new 12245scope name are displayed. Also improved error messages for 12246problems with ASL Mutex objects and error messages for GPE 12247problems. 12248 12249Cleaned up the namespace dump code, removed obsolete code. 12250 12251All string output (for all namespace/object dumps) now uses the 12252common ACPI string output procedure which handles escapes properly 12253and does not emit non-printable characters. 12254 12255Fixed some issues with constants in the 64-bit version of the 12256local C library (utclib.c) 12257 12258 122592) Linux 12260 12261EC Driver: No longer attempts to acquire the Global Lock at 12262interrupt level. 12263 12264 122653) iASL Compiler/Disassembler 12266 12267Implemented ACPI 2.0B grammar change that disallows all Type 1 and 122682 opcodes outside of a control method. This means that the 12269"executable" operators (versus the "namespace" operators) cannot 12270be used at the table level; they can only be used within a control 12271method. 12272 12273Implemented the restriction on the Scope() operator where the 12274target must already exist in the namespace at the time the 12275operator is encountered (during ASL compilation). In other words, 12276forward references are not allowed and Scope() cannot create a new 12277object. This makes the iASL compiler compatible with other ACPI 12278implementations and makes the Scope() implementation adhere to the 12279ACPI specification. 12280 12281Fixed a problem where namepath optimization for the Alias operator 12282was optimizing the wrong path (of the two namepaths.) This caused 12283a "Missing alias link" error message. 12284 12285Fixed a problem where an "unknown reserved name" warning could be 12286incorrectly generated for names like "_SB" when the trailing 12287underscore is not used in the original ASL. 12288 12289Fixed a problem where the reserved name check did not handle 12290NamePaths with multiple NameSegs correctly. The first nameseg of 12291the NamePath was examined instead of the last NameSeg. 12292 12293 12294---------------------------------------- 12295 1229602 October 2002. Summary of changes for this release. 12297 12298 122991) ACPI CA Core Subsystem version 20021002: 12300 12301Fixed a problem where a store/copy of a string to an existing 12302string did not always set the string length properly in the String 12303object. 12304 12305Fixed a reported problem with the ToString operator where the 12306behavior was identical to the ToHexString operator instead of just 12307simply converting a raw buffer to a string data type. 12308 12309Fixed a problem where CopyObject and the other "explicit" 12310conversion operators were not updating the internal namespace node 12311type as part of the store operation. 12312 12313Fixed a memory leak during implicit source operand conversion 12314where the original object was not deleted if it was converted to a 12315new object of a different type. 12316 12317Enhanced error messages for all problems associated with namespace 12318lookups. Common procedure generates and prints the lookup name as 12319well as the formatted status. 12320 12321Completed implementation of a new design for the Alias support 12322within the namespace. The existing design did not handle the case 12323where a new object was assigned to one of the two names due to the 12324use of an explicit conversion operator, resulting in the two names 12325pointing to two different objects. The new design simply points 12326the Alias name to the original name node - not to the object. 12327This results in a level of indirection that must be handled in the 12328name resolution mechanism. 12329 12330Code and Data Size: Current core subsystem library sizes are shown 12331below. These are the code and data sizes for the acpica.lib 12332produced by the Microsoft Visual C++ 6.0 compiler, and these 12333values do not include any ACPI driver or OSPM code. The debug 12334version of the code includes the debug output trace mechanism and 12335has a larger code and data size. Note that these values will vary 12336depending on the efficiency of the compiler and the compiler 12337options used during generation. 12338 12339 Previous Release 12340 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 12341 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 12342 Current Release: 12343 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 12344 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 12345 12346 123472) Linux 12348 12349Initialize thermal driver's timer before it is used. (Knut 12350Neumann) 12351 12352Allow handling negative celsius values. (Kochi Takayoshi) 12353 12354Fix thermal management and make trip points. R/W (Pavel Machek) 12355 12356Fix /proc/acpi/sleep. (P. Christeas) 12357 12358IA64 fixes. (David Mosberger) 12359 12360Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 12361 12362Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 12363Brodowski) 12364 12365 123663) iASL Compiler/Disassembler 12367 12368Clarified some warning/error messages. 12369 12370 12371---------------------------------------- 1237218 September 2002. Summary of changes for this release. 12373 12374 123751) ACPI CA Core Subsystem version 20020918: 12376 12377Fixed a reported problem with reference chaining (via the Index() 12378and RefOf() operators) in the ObjectType() and SizeOf() operators. 12379The definition of these operators includes the dereferencing of 12380all chained references to return information on the base object. 12381 12382Fixed a problem with stores to indexed package elements - the 12383existing code would not complete the store if an "implicit 12384conversion" was not performed. In other words, if the existing 12385object (package element) was to be replaced completely, the code 12386didn't handle this case. 12387 12388Relaxed typechecking on the ASL "Scope" operator to allow the 12389target name to refer to an object of type Integer, String, or 12390Buffer, in addition to the scoping object types (Device, 12391predefined Scopes, Processor, PowerResource, and ThermalZone.) 12392This allows existing AML code that has workarounds for a bug in 12393Windows to function properly. A warning is issued, however. This 12394affects both the AML interpreter and the iASL compiler. Below is 12395an example of this type of ASL code: 12396 12397 Name(DEB,0x00) 12398 Scope(DEB) 12399 { 12400 12401Fixed some reported problems with 64-bit integer support in the 12402local implementation of C library functions (clib.c) 12403 12404 124052) Linux 12406 12407Use ACPI fix map region instead of IOAPIC region, since it is 12408undefined in non-SMP. 12409 12410Ensure that the SCI has the proper polarity and trigger, even on 12411systems that do not have an interrupt override entry in the MADT. 12412 124132.5 big driver reorganization (Pat Mochel) 12414 12415Use early table mapping code from acpitable.c (Andi Kleen) 12416 12417New blacklist entries (Andi Kleen) 12418 12419Blacklist improvements. Split blacklist code out into a separate 12420file. Move checking the blacklist to very early. Previously, we 12421would use ACPI tables, and then halfway through init, check the 12422blacklist -- too late. Now, it's early enough to completely fall- 12423back to non-ACPI. 12424 12425 124263) iASL Compiler/Disassembler version 20020918: 12427 12428Fixed a problem where the typechecking code didn't know that an 12429alias could point to a method. In other words, aliases were not 12430being dereferenced during typechecking. 12431 12432 12433---------------------------------------- 1243429 August 2002. Summary of changes for this release. 12435 124361) ACPI CA Core Subsystem Version 20020829: 12437 12438If the target of a Scope() operator already exists, it must be an 12439object type that actually opens a scope -- such as a Device, 12440Method, Scope, etc. This is a fatal runtime error. Similar error 12441check has been added to the iASL compiler also. 12442 12443Tightened up the namespace load to disallow multiple names in the 12444same scope. This previously was allowed if both objects were of 12445the same type. (i.e., a lookup was the same as entering a new 12446name). 12447 12448 124492) Linux 12450 12451Ensure that the ACPI interrupt has the proper trigger and 12452polarity. 12453 12454local_irq_disable is extraneous. (Matthew Wilcox) 12455 12456Make "acpi=off" actually do what it says, and not use the ACPI 12457interpreter *or* the tables. 12458 12459Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 12460Takayoshi) 12461 12462 124633) iASL Compiler/Disassembler Version 20020829: 12464 12465Implemented namepath optimization for name declarations. For 12466example, a declaration like "Method (\_SB_.ABCD)" would get 12467optimized to "Method (ABCD)" if the declaration is within the 12468\_SB_ scope. This optimization is in addition to the named 12469reference path optimization first released in the previous 12470version. This would seem to complete all possible optimizations 12471for namepaths within the ASL/AML. 12472 12473If the target of a Scope() operator already exists, it must be an 12474object type that actually opens a scope -- such as a Device, 12475Method, Scope, etc. 12476 12477Implemented a check and warning for unreachable code in the same 12478block below a Return() statement. 12479 12480Fixed a problem where the listing file was not generated if the 12481compiler aborted if the maximum error count was exceeded (200). 12482 12483Fixed a problem where the typechecking of method return values was 12484broken. This includes the check for a return value when the 12485method is invoked as a TermArg (a return value is expected.) 12486 12487Fixed a reported problem where EOF conditions during a quoted 12488string or comment caused a fault. 12489 12490 12491---------------------------------------- 1249215 August 2002. Summary of changes for this release. 12493 124941) ACPI CA Core Subsystem Version 20020815: 12495 12496Fixed a reported problem where a Store to a method argument that 12497contains a reference did not perform the indirect store correctly. 12498This problem was created during the conversion to the new 12499reference object model - the indirect store to a method argument 12500code was not updated to reflect the new model. 12501 12502Reworked the ACPI mode change code to better conform to ACPI 2.0, 12503handle corner cases, and improve code legibility (Kochi Takayoshi) 12504 12505Fixed a problem with the pathname parsing for the carat (^) 12506prefix. The heavy use of the carat operator by the new namepath 12507optimization in the iASL compiler uncovered a problem with the AML 12508interpreter handling of this prefix. In the case where one or 12509more carats precede a single nameseg, the nameseg was treated as 12510standalone and the search rule (to root) was inadvertently 12511applied. This could cause both the iASL compiler and the 12512interpreter to find the wrong object or to miss the error that 12513should occur if the object does not exist at that exact pathname. 12514 12515Found and fixed the problem where the HP Pavilion DSDT would not 12516load. This was a relatively minor tweak to the table loading code 12517(a problem caused by the unexpected encounter with a method 12518invocation not within a control method), but it does not solve the 12519overall issue of the execution of AML code at the table level. 12520This investigation is still ongoing. 12521 12522Code and Data Size: Current core subsystem library sizes are shown 12523below. These are the code and data sizes for the acpica.lib 12524produced by the Microsoft Visual C++ 6.0 compiler, and these 12525values do not include any ACPI driver or OSPM code. The debug 12526version of the code includes the debug output trace mechanism and 12527has a larger code and data size. Note that these values will vary 12528depending on the efficiency of the compiler and the compiler 12529options used during generation. 12530 12531 Previous Release 12532 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 12533 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 12534 Current Release: 12535 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 12536 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 12537 12538 125392) Linux 12540 12541Remove redundant slab.h include (Brad Hards) 12542 12543Fix several bugs in thermal.c (Herbert Nachtnebel) 12544 12545Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 12546 12547Change acpi_system_suspend to use updated irq functions (Pavel 12548Machek) 12549 12550Export acpi_get_firmware_table (Matthew Wilcox) 12551 12552Use proper root proc entry for ACPI (Kochi Takayoshi) 12553 12554Fix early-boot table parsing (Bjorn Helgaas) 12555 12556 125573) iASL Compiler/Disassembler 12558 12559Reworked the compiler options to make them more consistent and to 12560use two-letter options where appropriate. We were running out of 12561sensible letters. This may break some makefiles, so check the 12562current options list by invoking the compiler with no parameters. 12563 12564Completed the design and implementation of the ASL namepath 12565optimization option for the compiler. This option optimizes all 12566references to named objects to the shortest possible path. The 12567first attempt tries to utilize a single nameseg (4 characters) and 12568the "search-to-root" algorithm used by the interpreter. If that 12569cannot be used (because either the name is not in the search path 12570or there is a conflict with another object with the same name), 12571the pathname is optimized using the carat prefix (usually a 12572shorter string than specifying the entire path from the root.) 12573 12574Implemented support to obtain the DSDT from the Windows registry 12575(when the disassembly option is specified with no input file). 12576Added this code as the implementation for AcpiOsTableOverride in 12577the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 12578utility) to scan memory for the DSDT to the AcpiOsTableOverride 12579function in the DOS OSL to make the disassembler truly OS 12580independent. 12581 12582Implemented a new option to disassemble and compile in one step. 12583When used without an input filename, this option will grab the 12584DSDT from the local machine, disassemble it, and compile it in one 12585step. 12586 12587Added a warning message for invalid escapes (a backslash followed 12588by any character other than the allowable escapes). This catches 12589the quoted string error "\_SB_" (which should be "\\_SB_" ). 12590 12591Also, there are numerous instances in the ACPI specification where 12592this error occurs. 12593 12594Added a compiler option to disable all optimizations. This is 12595basically the "compatibility mode" because by using this option, 12596the AML code will come out exactly the same as other ASL 12597compilers. 12598 12599Added error messages for incorrectly ordered dependent resource 12600functions. This includes: missing EndDependentFn macro at end of 12601dependent resource list, nested dependent function macros (both 12602start and end), and missing StartDependentFn macro. These are 12603common errors that should be caught at compile time. 12604 12605Implemented _OSI support for the disassembler and compiler. _OSI 12606must be included in the namespace for proper disassembly (because 12607the disassembler must know the number of arguments.) 12608 12609Added an "optimization" message type that is optional (off by 12610default). This message is used for all optimizations - including 12611constant folding, integer optimization, and namepath optimization. 12612 12613---------------------------------------- 1261425 July 2002. Summary of changes for this release. 12615 12616 126171) ACPI CA Core Subsystem Version 20020725: 12618 12619The AML Disassembler has been enhanced to produce compilable ASL 12620code and has been integrated into the iASL compiler (see below) as 12621well as the single-step disassembly for the AML debugger and the 12622disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 12623resource templates and macros are fully supported. The 12624disassembler has been tested on over 30 different AML files, 12625producing identical AML when the resulting disassembled ASL file 12626is recompiled with the same ASL compiler. 12627 12628Modified the Resource Manager to allow zero interrupts and zero 12629dma channels during the GetCurrentResources call. This was 12630causing problems on some platforms. 12631 12632Added the AcpiOsRedirectOutput interface to the OSL to simplify 12633output redirection for the AcpiOsPrintf and AcpiOsVprintf 12634interfaces. 12635 12636Code and Data Size: Current core subsystem library sizes are shown 12637below. These are the code and data sizes for the acpica.lib 12638produced by the Microsoft Visual C++ 6.0 compiler, and these 12639values do not include any ACPI driver or OSPM code. The debug 12640version of the code includes the debug output trace mechanism and 12641has a larger code and data size. Note that these values will vary 12642depending on the efficiency of the compiler and the compiler 12643options used during generation. 12644 12645 Previous Release 12646 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 12647 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 12648 Current Release: 12649 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 12650 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 12651 12652 126532) Linux 12654 12655Fixed a panic in the EC driver (Dominik Brodowski) 12656 12657Implemented checksum of the R/XSDT itself during Linux table scan 12658(Richard Schaal) 12659 12660 126613) iASL compiler 12662 12663The AML disassembler is integrated into the compiler. The "-d" 12664option invokes the disassembler to completely disassemble an 12665input AML file, producing as output a text ASL file with the 12666extension ".dsl" (to avoid name collisions with existing .asl 12667source files.) A future enhancement will allow the disassembler 12668to obtain the BIOS DSDT from the registry under Windows. 12669 12670Fixed a problem with the VendorShort and VendorLong resource 12671descriptors where an invalid AML sequence was created. 12672 12673Implemented a fix for BufferData term in the ASL parser. It was 12674inadvertently defined twice, allowing invalid syntax to pass and 12675causing reduction conflicts. 12676 12677Fixed a problem where the Ones opcode could get converted to a 12678value of zero if "Ones" was used where a byte, word or dword value 12679was expected. The 64-bit value is now truncated to the correct 12680size with the correct value. 12681 12682 12683 12684---------------------------------------- 1268502 July 2002. Summary of changes for this release. 12686 12687 126881) ACPI CA Core Subsystem Version 20020702: 12689 12690The Table Manager code has been restructured to add several new 12691features. Tables that are not required by the core subsystem 12692(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 12693validated in any way and are returned from AcpiGetFirmwareTable if 12694requested. The AcpiOsTableOverride interface is now called for 12695each table that is loaded by the subsystem in order to allow the 12696host to override any table it chooses. Previously, only the DSDT 12697could be overridden. Added one new files, tbrsdt.c and 12698tbgetall.c. 12699 12700Fixed a problem with the conversion of internal package objects to 12701external objects (when a package is returned from a control 12702method.) The return buffer length was set to zero instead of the 12703proper length of the package object. 12704 12705Fixed a reported problem with the use of the RefOf and DeRefOf 12706operators when passing reference arguments to control methods. A 12707new type of Reference object is used internally for references 12708produced by the RefOf operator. 12709 12710Added additional error messages in the Resource Manager to explain 12711AE_BAD_DATA errors when they occur during resource parsing. 12712 12713Split the AcpiEnableSubsystem into two primitives to enable a 12714finer granularity initialization sequence. These two calls should 12715be called in this order: AcpiEnableSubsystem (flags), 12716AcpiInitializeObjects (flags). The flags parameter remains the 12717same. 12718 12719 127202) Linux 12721 12722Updated the ACPI utilities module to understand the new style of 12723fully resolved package objects that are now returned from the core 12724subsystem. This eliminates errors of the form: 12725 12726 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 12727 acpi_utils-0430 [145] acpi_evaluate_reference: 12728 Invalid element in package (not a device reference) 12729 12730The method evaluation utility uses the new buffer allocation 12731scheme instead of calling AcpiEvaluate Object twice. 12732 12733Added support for ECDT. This allows the use of the Embedded 12734 12735Controller before the namespace has been fully initialized, which 12736is necessary for ACPI 2.0 support, and for some laptops to 12737initialize properly. (Laptops using ECDT are still rare, so only 12738limited testing was performed of the added functionality.) 12739 12740Fixed memory leaks in the EC driver. 12741 12742Eliminated a brittle code structure in acpi_bus_init(). 12743 12744Eliminated the acpi_evaluate() helper function in utils.c. It is 12745no longer needed since acpi_evaluate_object can optionally 12746allocate memory for the return object. 12747 12748Implemented fix for keyboard hang when getting battery readings on 12749some systems (Stephen White) 12750 12751PCI IRQ routing update (Dominik Brodowski) 12752 12753Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 12754support 12755 12756---------------------------------------- 1275711 June 2002. Summary of changes for this release. 12758 12759 127601) ACPI CA Core Subsystem Version 20020611: 12761 12762Fixed a reported problem where constants such as Zero and One 12763appearing within _PRT packages were not handled correctly within 12764the resource manager code. Originally reported against the ASL 12765compiler because the code generator now optimizes integers to 12766their minimal AML representation (i.e. AML constants if possible.) 12767The _PRT code now handles all AML constant opcodes correctly 12768(Zero, One, Ones, Revision). 12769 12770Fixed a problem with the Concatenate operator in the AML 12771interpreter where a buffer result object was incorrectly marked as 12772not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 12773 12774All package sub-objects are now fully resolved before they are 12775returned from the external ACPI interfaces. This means that name 12776strings are resolved to object handles, and constant operators 12777(Zero, One, Ones, Revision) are resolved to Integers. 12778 12779Implemented immediate resolution of the AML Constant opcodes 12780(Zero, One, Ones, Revision) to Integer objects upon detection 12781within the AML stream. This has simplified and reduced the 12782generated code size of the subsystem by eliminating about 10 12783switch statements for these constants (which previously were 12784contained in Reference objects.) The complicating issues are that 12785the Zero opcode is used as a "placeholder" for unspecified 12786optional target operands and stores to constants are defined to be 12787no-ops. 12788 12789Code and Data Size: Current core subsystem library sizes are shown 12790below. These are the code and data sizes for the acpica.lib 12791produced by the Microsoft Visual C++ 6.0 compiler, and these 12792values do not include any ACPI driver or OSPM code. The debug 12793version of the code includes the debug output trace mechanism and 12794has a larger code and data size. Note that these values will vary 12795depending on the efficiency of the compiler and the compiler 12796options used during generation. 12797 12798 Previous Release 12799 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 12800 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 12801 Current Release: 12802 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 12803 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 12804 12805 128062) Linux 12807 12808 12809Added preliminary support for obtaining _TRA data for PCI root 12810bridges (Bjorn Helgaas). 12811 12812 128133) iASL Compiler Version X2046: 12814 12815Fixed a problem where the "_DDN" reserved name was defined to be a 12816control method with one argument. There are no arguments, and 12817_DDN does not have to be a control method. 12818 12819Fixed a problem with the Linux version of the compiler where the 12820source lines printed with error messages were the wrong lines. 12821This turned out to be the "LF versus CR/LF" difference between 12822Windows and Unix. This appears to be the longstanding issue 12823concerning listing output and error messages. 12824 12825Fixed a problem with the Linux version of compiler where opcode 12826names within error messages were wrong. This was caused by a 12827slight difference in the output of the Flex tool on Linux versus 12828Windows. 12829 12830Fixed a problem with the Linux compiler where the hex output files 12831contained some garbage data caused by an internal buffer overrun. 12832 12833 12834---------------------------------------- 1283517 May 2002. Summary of changes for this release. 12836 12837 128381) ACPI CA Core Subsystem Version 20020517: 12839 12840Implemented a workaround to an BIOS bug discovered on the HP 12841OmniBook where the FADT revision number and the table size are 12842inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 12843behavior is to fallback to using only the ACPI 1.0 fields of the 12844FADT if the table is too small to be a ACPI 2.0 table as claimed 12845by the revision number. Although this is a BIOS bug, this is a 12846case where the workaround is simple enough and with no side 12847effects, so it seemed prudent to add it. A warning message is 12848issued, however. 12849 12850Implemented minimum size checks for the fixed-length ACPI tables - 12851- the FADT and FACS, as well as consistency checks between the 12852revision number and the table size. 12853 12854Fixed a reported problem in the table override support where the 12855new table pointer was incorrectly treated as a physical address 12856instead of a logical address. 12857 12858Eliminated the use of the AE_AML_ERROR exception and replaced it 12859with more descriptive codes. 12860 12861Fixed a problem where an exception would occur if an ASL Field was 12862defined with no named Field Units underneath it (used by some 12863index fields). 12864 12865Code and Data Size: Current core subsystem library sizes are shown 12866below. These are the code and data sizes for the acpica.lib 12867produced by the Microsoft Visual C++ 6.0 compiler, and these 12868values do not include any ACPI driver or OSPM code. The debug 12869version of the code includes the debug output trace mechanism and 12870has a larger code and data size. Note that these values will vary 12871depending on the efficiency of the compiler and the compiler 12872options used during generation. 12873 12874 Previous Release 12875 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 12876 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 12877 Current Release: 12878 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 12879 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 12880 12881 12882 128832) Linux 12884 12885Much work done on ACPI init (MADT and PCI IRQ routing support). 12886(Paul D. and Dominik Brodowski) 12887 12888Fix PCI IRQ-related panic on boot (Sam Revitch) 12889 12890Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 12891 12892Fix "MHz" typo (Dominik Brodowski) 12893 12894Fix RTC year 2000 issue (Dominik Brodowski) 12895 12896Preclude multiple button proc entries (Eric Brunet) 12897 12898Moved arch-specific code out of include/platform/aclinux.h 12899 129003) iASL Compiler Version X2044: 12901 12902Implemented error checking for the string used in the EISAID macro 12903(Usually used in the definition of the _HID object.) The code now 12904strictly enforces the PnP format - exactly 7 characters, 3 12905uppercase letters and 4 hex digits. 12906 12907If a raw string is used in the definition of the _HID object 12908(instead of the EISAID macro), the string must contain all 12909alphanumeric characters (e.g., "*PNP0011" is not allowed because 12910of the asterisk.) 12911 12912Implemented checking for invalid use of ACPI reserved names for 12913most of the name creation operators (Name, Device, Event, Mutex, 12914OperationRegion, PowerResource, Processor, and ThermalZone.) 12915Previously, this check was only performed for control methods. 12916 12917Implemented an additional check on the Name operator to emit an 12918error if a reserved name that must be implemented in ASL as a 12919control method is used. We know that a reserved name must be a 12920method if it is defined with input arguments. 12921 12922The warning emitted when a namespace object reference is not found 12923during the cross reference phase has been changed into an error. 12924The "External" directive should be used for names defined in other 12925modules. 12926 12927 129284) Tools and Utilities 12929 12930The 16-bit tools (adump16 and aexec16) have been regenerated and 12931tested. 12932 12933Fixed a problem with the output of both acpidump and adump16 where 12934the indentation of closing parentheses and brackets was not 12935 12936aligned properly with the parent block. 12937 12938 12939---------------------------------------- 1294003 May 2002. Summary of changes for this release. 12941 12942 129431) ACPI CA Core Subsystem Version 20020503: 12944 12945Added support a new OSL interface that allows the host operating 12946 12947system software to override the DSDT found in the firmware - 12948AcpiOsTableOverride. With this interface, the OSL can examine the 12949version of the firmware DSDT and replace it with a different one 12950if desired. 12951 12952Added new external interfaces for accessing ACPI registers from 12953device drivers and other system software - AcpiGetRegister and 12954AcpiSetRegister. This was simply an externalization of the 12955existing AcpiHwBitRegister interfaces. 12956 12957Fixed a regression introduced in the previous build where the 12958ASL/AML CreateField operator always returned an error, 12959"destination must be a NS Node". 12960 12961Extended the maximum time (before failure) to successfully enable 12962ACPI mode to 3 seconds. 12963 12964Code and Data Size: Current core subsystem library sizes are shown 12965below. These are the code and data sizes for the acpica.lib 12966produced by the Microsoft Visual C++ 6.0 compiler, and these 12967values do not include any ACPI driver or OSPM code. The debug 12968version of the code includes the debug output trace mechanism and 12969has a larger code and data size. Note that these values will vary 12970depending on the efficiency of the compiler and the compiler 12971options used during generation. 12972 12973 Previous Release 12974 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 12975 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 12976 Current Release: 12977 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 12978 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 12979 12980 129812) Linux 12982 12983Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 12984free. While 3 out of 4 of our in-house systems work fine, the last 12985one still hangs when testing the LAPIC timer. 12986 12987Renamed many files in 2.5 kernel release to omit "acpi_" from the 12988name. 12989 12990Added warning on boot for Presario 711FR. 12991 12992Sleep improvements (Pavel Machek) 12993 12994ACPI can now be built without CONFIG_PCI enabled. 12995 12996IA64: Fixed memory map functions (JI Lee) 12997 12998 129993) iASL Compiler Version X2043: 13000 13001Added support to allow the compiler to be integrated into the MS 13002VC++ development environment for one-button compilation of single 13003files or entire projects -- with error-to-source-line mapping. 13004 13005Implemented support for compile-time constant folding for the 13006Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 13007specification. This allows the ASL writer to use expressions 13008instead of Integer/Buffer/String constants in terms that must 13009evaluate to constants at compile time and will also simplify the 13010emitted AML in any such sub-expressions that can be folded 13011(evaluated at compile-time.) This increases the size of the 13012compiler significantly because a portion of the ACPI CA AML 13013interpreter is included within the compiler in order to pre- 13014evaluate constant expressions. 13015 13016 13017Fixed a problem with the "Unicode" ASL macro that caused the 13018compiler to fault. (This macro is used in conjunction with the 13019_STR reserved name.) 13020 13021Implemented an AML opcode optimization to use the Zero, One, and 13022Ones opcodes where possible to further reduce the size of integer 13023constants and thus reduce the overall size of the generated AML 13024code. 13025 13026Implemented error checking for new reserved terms for ACPI version 130272.0A. 13028 13029Implemented the -qr option to display the current list of ACPI 13030reserved names known to the compiler. 13031 13032Implemented the -qc option to display the current list of ASL 13033operators that are allowed within constant expressions and can 13034therefore be folded at compile time if the operands are constants. 13035 13036 130374) Documentation 13038 13039Updated the Programmer's Reference for new interfaces, data types, 13040and memory allocation model options. 13041 13042Updated the iASL Compiler User Reference to apply new format and 13043add information about new features and options. 13044 13045---------------------------------------- 1304619 April 2002. Summary of changes for this release. 13047 130481) ACPI CA Core Subsystem Version 20020419: 13049 13050The source code base for the Core Subsystem has been completely 13051cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 13052versions. The Lint option files used are included in the 13053/acpi/generate/lint directory. 13054 13055Implemented enhanced status/error checking across the entire 13056Hardware manager subsystem. Any hardware errors (reported from 13057the OSL) are now bubbled up and will abort a running control 13058method. 13059 13060 13061Fixed a problem where the per-ACPI-table integer width (32 or 64) 13062was stored only with control method nodes, causing a fault when 13063non-control method code was executed during table loading. The 13064solution implemented uses a global variable to indicate table 13065width across the entire ACPI subsystem. Therefore, ACPI CA does 13066not support mixed integer widths across different ACPI tables 13067(DSDT, SSDT). 13068 13069Fixed a problem where NULL extended fields (X fields) in an ACPI 130702.0 ACPI FADT caused the table load to fail. Although the 13071existing ACPI specification is a bit fuzzy on this topic, the new 13072behavior is to fall back on a ACPI 1.0 field if the corresponding 13073ACPI 2.0 X field is zero (even though the table revision indicates 13074a full ACPI 2.0 table.) The ACPI specification will be updated to 13075clarify this issue. 13076 13077Fixed a problem with the SystemMemory operation region handler 13078where memory was always accessed byte-wise even if the AML- 13079specified access width was larger than a byte. This caused 13080problems on systems with memory-mapped I/O. Memory is now 13081accessed with the width specified. On systems that do not support 13082non-aligned transfers, a check is made to guarantee proper address 13083alignment before proceeding in order to avoid an AML-caused 13084alignment fault within the kernel. 13085 13086 13087Fixed a problem with the ExtendedIrq resource where only one byte 13088of the 4-byte Irq field was extracted. 13089 13090Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 13091function was out of date and required a rewrite. 13092 13093Code and Data Size: Current core subsystem library sizes are shown 13094below. These are the code and data sizes for the acpica.lib 13095produced by the Microsoft Visual C++ 6.0 compiler, and these 13096values do not include any ACPI driver or OSPM code. The debug 13097version of the code includes the debug output trace mechanism and 13098has a larger code and data size. Note that these values will vary 13099depending on the efficiency of the compiler and the compiler 13100options used during generation. 13101 13102 Previous Release 13103 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13104 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13105 Current Release: 13106 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 13107 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 13108 13109 131102) Linux 13111 13112PCI IRQ routing fixes (Dominik Brodowski) 13113 13114 131153) iASL Compiler Version X2042: 13116 13117Implemented an additional compile-time error check for a field 13118unit whose size + minimum access width would cause a run-time 13119access beyond the end-of-region. Previously, only the field size 13120itself was checked. 13121 13122The Core subsystem and iASL compiler now share a common parse 13123object in preparation for compile-time evaluation of the type 131243/4/5 ASL operators. 13125 13126 13127---------------------------------------- 13128Summary of changes for this release: 03_29_02 13129 131301) ACPI CA Core Subsystem Version 20020329: 13131 13132Implemented support for late evaluation of TermArg operands to 13133Buffer and Package objects. This allows complex expressions to be 13134used in the declarations of these object types. 13135 13136Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 131371.0, if the field was larger than 32 bits, it was returned as a 13138buffer - otherwise it was returned as an integer. In ACPI 2.0, 13139the field is returned as a buffer only if the field is larger than 1314064 bits. The TableRevision is now considered when making this 13141conversion to avoid incompatibility with existing ASL code. 13142 13143Implemented logical addressing for AcpiOsGetRootPointer. This 13144allows an RSDP with either a logical or physical address. With 13145this support, the host OS can now override all ACPI tables with 13146one logical RSDP. Includes implementation of "typed" pointer 13147support to allow a common data type for both physical and logical 13148pointers internally. This required a change to the 13149AcpiOsGetRootPointer interface. 13150 13151Implemented the use of ACPI 2.0 Generic Address Structures for all 13152GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 13153mapped I/O for these ACPI features. 13154 13155Initialization now ignores not only non-required tables (All 13156tables other than the FADT, FACS, DSDT, and SSDTs), but also does 13157not validate the table headers of unrecognized tables. 13158 13159Fixed a problem where a notify handler could only be 13160installed/removed on an object of type Device. All "notify" 13161 13162objects are now supported -- Devices, Processor, Power, and 13163Thermal. 13164 13165Removed most verbosity from the ACPI_DB_INFO debug level. Only 13166critical information is returned when this debug level is enabled. 13167 13168Code and Data Size: Current core subsystem library sizes are shown 13169below. These are the code and data sizes for the acpica.lib 13170produced by the Microsoft Visual C++ 6.0 compiler, and these 13171values do not include any ACPI driver or OSPM code. The debug 13172version of the code includes the debug output trace mechanism and 13173has a larger code and data size. Note that these values will vary 13174depending on the efficiency of the compiler and the compiler 13175options used during generation. 13176 13177 Previous Release 13178 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13179 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13180 Current Release: 13181 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 13182 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 13183 13184 131852) Linux: 13186 13187The processor driver (acpi_processor.c) now fully supports ACPI 131882.0-based processor performance control (e.g. Intel(R) 13189SpeedStep(TM) technology) Note that older laptops that only have 13190the Intel "applet" interface are not supported through this. The 13191'limit' and 'performance' interface (/proc) are fully functional. 13192[Note that basic policy for controlling performance state 13193transitions will be included in the next version of ospmd.] The 13194idle handler was modified to more aggressively use C2, and PIIX4 13195errata handling underwent a complete overhaul (big thanks to 13196Dominik Brodowski). 13197 13198Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 13199based devices in the ACPI namespace are now dynamically bound 13200(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 13201This allows, among other things, ACPI to resolve bus numbers for 13202subordinate PCI bridges. 13203 13204Enhanced PCI IRQ routing to get the proper bus number for _PRT 13205entries defined underneath PCI bridges. 13206 13207Added IBM 600E to bad bios list due to invalid _ADR value for 13208PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 13209 13210In the process of adding full MADT support (e.g. IOAPIC) for IA32 13211(acpi.c, mpparse.c) -- stay tuned. 13212 13213Added back visual differentiation between fixed-feature and 13214control-method buttons in dmesg. Buttons are also subtyped (e.g. 13215button/power/PWRF) to simplify button identification. 13216 13217We no longer use -Wno-unused when compiling debug. Please ignore 13218any "_THIS_MODULE defined but not used" messages. 13219 13220Can now shut down the system using "magic sysrq" key. 13221 13222 132233) iASL Compiler version 2041: 13224 13225Fixed a problem where conversion errors for hex/octal/decimal 13226constants were not reported. 13227 13228Implemented a fix for the General Register template Address field. 13229This field was 8 bits when it should be 64. 13230 13231Fixed a problem where errors/warnings were no longer being emitted 13232within the listing output file. 13233 13234Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 13235exactly 4 characters, alphanumeric only. 13236 13237 13238 13239 13240---------------------------------------- 13241Summary of changes for this release: 03_08_02 13242 13243 132441) ACPI CA Core Subsystem Version 20020308: 13245 13246Fixed a problem with AML Fields where the use of the "AccessAny" 13247keyword could cause an interpreter error due to attempting to read 13248or write beyond the end of the parent Operation Region. 13249 13250Fixed a problem in the SystemMemory Operation Region handler where 13251an attempt was made to map memory beyond the end of the region. 13252This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 13253errors on some Linux systems. 13254 13255Fixed a problem where the interpreter/namespace "search to root" 13256algorithm was not functioning for some object types. Relaxed the 13257internal restriction on the search to allow upsearches for all 13258external object types as well as most internal types. 13259 13260 132612) Linux: 13262 13263We now use safe_halt() macro versus individual calls to sti | hlt. 13264 13265Writing to the processor limit interface should now work. "echo 1" 13266will increase the limit, 2 will decrease, and 0 will reset to the 13267 13268default. 13269 13270 132713) ASL compiler: 13272 13273Fixed segfault on Linux version. 13274 13275 13276---------------------------------------- 13277Summary of changes for this release: 02_25_02 13278 132791) ACPI CA Core Subsystem: 13280 13281 13282Fixed a problem where the GPE bit masks were not initialized 13283properly, causing erratic GPE behavior. 13284 13285Implemented limited support for multiple calling conventions. The 13286code can be generated with either the VPL (variable parameter 13287list, or "C") convention, or the FPL (fixed parameter list, or 13288"Pascal") convention. The core subsystem is about 3.4% smaller 13289when generated with FPL. 13290 13291 132922) Linux 13293 13294Re-add some /proc/acpi/event functionality that was lost during 13295the rewrite 13296 13297Resolved issue with /proc events for fixed-feature buttons showing 13298up as the system device. 13299 13300Fixed checks on C2/C3 latencies to be inclusive of maximum values. 13301 13302Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 13303 13304Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 13305 13306Fixed limit interface & usage to fix bugs with passive cooling 13307hysterisis. 13308 13309Restructured PRT support. 13310 13311 13312---------------------------------------- 13313Summary of changes for this label: 02_14_02 13314 13315 133161) ACPI CA Core Subsystem: 13317 13318Implemented support in AcpiLoadTable to allow loading of FACS and 13319FADT tables. 13320 13321Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 13322been removed. All 64-bit platforms should be migrated to the ACPI 133232.0 tables. The actbl71.h header has been removed from the source 13324tree. 13325 13326All C macros defined within the subsystem have been prefixed with 13327"ACPI_" to avoid collision with other system include files. 13328 13329Removed the return value for the two AcpiOsPrint interfaces, since 13330it is never used and causes lint warnings for ignoring the return 13331value. 13332 13333Added error checking to all internal mutex acquire and release 13334calls. Although a failure from one of these interfaces is 13335probably a fatal system error, these checks will cause the 13336immediate abort of the currently executing method or interface. 13337 13338Fixed a problem where the AcpiSetCurrentResources interface could 13339fault. This was a side effect of the deployment of the new memory 13340allocation model. 13341 13342Fixed a couple of problems with the Global Lock support introduced 13343in the last major build. The "common" (1.0/2.0) internal FACS was 13344being overwritten with the FACS signature and clobbering the 13345Global Lock pointer. Also, the actual firmware FACS was being 13346unmapped after construction of the "common" FACS, preventing 13347access to the actual Global Lock field within it. The "common" 13348internal FACS is no longer installed as an actual ACPI table; it 13349is used simply as a global. 13350 13351Code and Data Size: Current core subsystem library sizes are shown 13352below. These are the code and data sizes for the acpica.lib 13353produced by the Microsoft Visual C++ 6.0 compiler, and these 13354values do not include any ACPI driver or OSPM code. The debug 13355version of the code includes the debug output trace mechanism and 13356has a larger code and data size. Note that these values will vary 13357depending on the efficiency of the compiler and the compiler 13358options used during generation. 13359 13360 Previous Release (02_07_01) 13361 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13362 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13363 Current Release: 13364 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 13365 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 13366 13367 133682) Linux 13369 13370Updated Linux-specific code for core macro and OSL interface 13371changes described above. 13372 13373Improved /proc/acpi/event. It now can be opened only once and has 13374proper poll functionality. 13375 13376Fixed and restructured power management (acpi_bus). 13377 13378Only create /proc "view by type" when devices of that class exist. 13379 13380Fixed "charging/discharging" bug (and others) in acpi_battery. 13381 13382Improved thermal zone code. 13383 13384 133853) ASL Compiler, version X2039: 13386 13387 13388Implemented the new compiler restriction on ASL String hex/octal 13389escapes to non-null, ASCII values. An error results if an invalid 13390value is used. (This will require an ACPI 2.0 specification 13391change.) 13392 13393AML object labels that are output to the optional C and ASM source 13394are now prefixed with both the ACPI table signature and table ID 13395to help guarantee uniqueness within a large BIOS project. 13396 13397 13398---------------------------------------- 13399Summary of changes for this label: 02_01_02 13400 134011) ACPI CA Core Subsystem: 13402 13403ACPI 2.0 support is complete in the entire Core Subsystem and the 13404ASL compiler. All new ACPI 2.0 operators are implemented and all 13405other changes for ACPI 2.0 support are complete. With 13406simultaneous code and data optimizations throughout the subsystem, 13407ACPI 2.0 support has been implemented with almost no additional 13408cost in terms of code and data size. 13409 13410Implemented a new mechanism for allocation of return buffers. If 13411the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 13412be allocated on behalf of the caller. Consolidated all return 13413buffer validation and allocation to a common procedure. Return 13414buffers will be allocated via the primary OSL allocation interface 13415since it appears that a separate pool is not needed by most users. 13416If a separate pool is required for these buffers, the caller can 13417still use the original mechanism and pre-allocate the buffer(s). 13418 13419Implemented support for string operands within the DerefOf 13420operator. 13421 13422Restructured the Hardware and Event managers to be table driven, 13423simplifying the source code and reducing the amount of generated 13424code. 13425 13426Split the common read/write low-level ACPI register bitfield 13427procedure into a separate read and write, simplifying the code 13428considerably. 13429 13430Obsoleted the AcpiOsCallocate OSL interface. This interface was 13431used only a handful of times and didn't have enough critical mass 13432for a separate interface. Replaced with a common calloc procedure 13433in the core. 13434 13435Fixed a reported problem with the GPE number mapping mechanism 13436that allows GPE1 numbers to be non-contiguous with GPE0. 13437Reorganized the GPE information and shrunk a large array that was 13438originally large enough to hold info for all possible GPEs (256) 13439to simply large enough to hold all GPEs up to the largest GPE 13440number on the machine. 13441 13442Fixed a reported problem with resource structure alignment on 64- 13443bit platforms. 13444 13445Changed the AcpiEnableEvent and AcpiDisableEvent external 13446interfaces to not require any flags for the common case of 13447enabling/disabling a GPE. 13448 13449Implemented support to allow a "Notify" on a Processor object. 13450 13451Most TBDs in comments within the source code have been resolved 13452and eliminated. 13453 13454 13455Fixed a problem in the interpreter where a standalone parent 13456prefix (^) was not handled correctly in the interpreter and 13457debugger. 13458 13459Removed obsolete and unnecessary GPE save/restore code. 13460 13461Implemented Field support in the ASL Load operator. This allows a 13462table to be loaded from a named field, in addition to loading a 13463table directly from an Operation Region. 13464 13465Implemented timeout and handle support in the external Global Lock 13466interfaces. 13467 13468Fixed a problem in the AcpiDump utility where pathnames were no 13469longer being generated correctly during the dump of named objects. 13470 13471Modified the AML debugger to give a full display of if/while 13472predicates instead of just one AML opcode at a time. (The 13473predicate can have several nested ASL statements.) The old method 13474was confusing during single stepping. 13475 13476Code and Data Size: Current core subsystem library sizes are shown 13477below. These are the code and data sizes for the acpica.lib 13478produced by the Microsoft Visual C++ 6.0 compiler, and these 13479values do not include any ACPI driver or OSPM code. The debug 13480version of the code includes the debug output trace mechanism and 13481has a larger code and data size. Note that these values will vary 13482depending on the efficiency of the compiler and the compiler 13483options used during generation. 13484 13485 Previous Release (12_18_01) 13486 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 13487 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 13488 Current Release: 13489 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 13490 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 13491 134922) Linux 13493 13494 Implemented fix for PIIX reverse throttling errata (Processor 13495driver) 13496 13497Added new Limit interface (Processor and Thermal drivers) 13498 13499New thermal policy (Thermal driver) 13500 13501Many updates to /proc 13502 13503Battery "low" event support (Battery driver) 13504 13505Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 13506 13507IA32 - IA64 initialization unification, no longer experimental 13508 13509Menuconfig options redesigned 13510 135113) ASL Compiler, version X2037: 13512 13513Implemented several new output features to simplify integration of 13514AML code into firmware: 1) Output the AML in C source code with 13515labels for each named ASL object. The original ASL source code 13516is interleaved as C comments. 2) Output the AML in ASM source code 13517with labels and interleaved ASL source. 3) Output the AML in 13518raw hex table form, in either C or ASM. 13519 13520Implemented support for optional string parameters to the 13521LoadTable operator. 13522 13523Completed support for embedded escape sequences within string 13524literals. The compiler now supports all single character escapes 13525as well as the Octal and Hex escapes. Note: the insertion of a 13526null byte into a string literal (via the hex/octal escape) causes 13527the string to be immediately terminated. A warning is issued. 13528 13529Fixed a problem where incorrect AML was generated for the case 13530where an ASL namepath consists of a single parent prefix ( 13531 13532) with no trailing name segments. 13533 13534The compiler has been successfully generated with a 64-bit C 13535compiler. 13536 13537 13538 13539 13540---------------------------------------- 13541Summary of changes for this label: 12_18_01 13542 135431) Linux 13544 13545Enhanced blacklist with reason and severity fields. Any table's 13546signature may now be used to identify a blacklisted system. 13547 13548Call _PIC control method to inform the firmware which interrupt 13549model the OS is using. Turn on any disabled link devices. 13550 13551Cleaned up busmgr /proc error handling (Andreas Dilger) 13552 13553 2) ACPI CA Core Subsystem: 13554 13555Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 13556while loop) 13557 13558Completed implementation of the ACPI 2.0 "Continue", 13559"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 13560operators. All new ACPI 2.0 operators are now implemented in both 13561the ASL compiler and the AML interpreter. The only remaining ACPI 135622.0 task is support for the String data type in the DerefOf 13563operator. Fixed a problem with AcquireMutex where the status code 13564was lost if the caller had to actually wait for the mutex. 13565 13566Increased the maximum ASL Field size from 64K bits to 4G bits. 13567 13568Completed implementation of the external Global Lock interfaces -- 13569AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 13570Handler parameters were added. 13571 13572Completed another pass at removing warnings and issues when 13573compiling with 64-bit compilers. The code now compiles cleanly 13574with the Intel 64-bit C/C++ compiler. Most notably, the pointer 13575add and subtract (diff) macros have changed considerably. 13576 13577 13578Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1357964-bit platforms, 32-bits on all others. This type is used 13580wherever memory allocation and/or the C sizeof() operator is used, 13581and affects the OSL memory allocation interfaces AcpiOsAllocate 13582and AcpiOsCallocate. 13583 13584Implemented sticky user breakpoints in the AML debugger. 13585 13586Code and Data Size: Current core subsystem library sizes are shown 13587below. These are the code and data sizes for the acpica.lib 13588produced by the Microsoft Visual C++ 6.0 compiler, and these 13589values do not include any ACPI driver or OSPM code. The debug 13590version of the code includes the debug output trace mechanism and 13591has a larger code and data size. Note that these values will vary 13592depending on the efficiency of the compiler and the compiler 13593options used during generation. 13594 13595 Previous Release (12_05_01) 13596 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 13597 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 13598 Current Release: 13599 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 13600 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 13601 13602 3) ASL Compiler, version X2034: 13603 13604Now checks for (and generates an error if detected) the use of a 13605Break or Continue statement without an enclosing While statement. 13606 13607 13608Successfully generated the compiler with the Intel 64-bit C 13609compiler. 13610 13611 ---------------------------------------- 13612Summary of changes for this label: 12_05_01 13613 13614 1) ACPI CA Core Subsystem: 13615 13616The ACPI 2.0 CopyObject operator is fully implemented. This 13617operator creates a new copy of an object (and is also used to 13618bypass the "implicit conversion" mechanism of the Store operator.) 13619 13620The ACPI 2.0 semantics for the SizeOf operator are fully 13621implemented. The change is that performing a SizeOf on a 13622reference object causes an automatic dereference of the object to 13623tha actual value before the size is evaluated. This behavior was 13624undefined in ACPI 1.0. 13625 13626The ACPI 2.0 semantics for the Extended IRQ resource descriptor 13627have been implemented. The interrupt polarity and mode are now 13628independently set. 13629 13630Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 13631appearing in Package objects were not properly converted to 13632integers when the internal Package was converted to an external 13633object (via the AcpiEvaluateObject interface.) 13634 13635Fixed a problem with the namespace object deletion mechanism for 13636objects created by control methods. There were two parts to this 13637problem: 1) Objects created during the initialization phase method 13638parse were not being deleted, and 2) The object owner ID mechanism 13639to track objects was broken. 13640 13641Fixed a problem where the use of the ASL Scope operator within a 13642control method would result in an invalid opcode exception. 13643 13644Fixed a problem introduced in the previous label where the buffer 13645length required for the _PRT structure was not being returned 13646correctly. 13647 13648Code and Data Size: Current core subsystem library sizes are shown 13649below. These are the code and data sizes for the acpica.lib 13650produced by the Microsoft Visual C++ 6.0 compiler, and these 13651values do not include any ACPI driver or OSPM code. The debug 13652version of the code includes the debug output trace mechanism and 13653has a larger code and data size. Note that these values will vary 13654depending on the efficiency of the compiler and the compiler 13655options used during generation. 13656 13657 Previous Release (11_20_01) 13658 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 13659 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 13660 13661 Current Release: 13662 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 13663 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 13664 13665 2) Linux: 13666 13667Updated all files to apply cleanly against 2.4.16. 13668 13669Added basic PCI Interrupt Routing Table (PRT) support for IA32 13670(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 13671version supports both static and dyanmic PRT entries, but dynamic 13672entries are treated as if they were static (not yet 13673reconfigurable). Architecture- specific code to use this data is 13674absent on IA32 but should be available shortly. 13675 13676Changed the initialization sequence to start the ACPI interpreter 13677(acpi_init) prior to initialization of the PCI driver (pci_init) 13678in init/main.c. This ordering is required to support PRT and 13679facilitate other (future) enhancement. A side effect is that the 13680ACPI bus driver and certain device drivers can no longer be loaded 13681as modules. 13682 13683Modified the 'make menuconfig' options to allow PCI Interrupt 13684Routing support to be included without the ACPI Bus and other 13685device drivers. 13686 13687 3) ASL Compiler, version X2033: 13688 13689Fixed some issues with the use of the new CopyObject and 13690DataTableRegion operators. Both are fully functional. 13691 13692 ---------------------------------------- 13693Summary of changes for this label: 11_20_01 13694 13695 20 November 2001. Summary of changes for this release. 13696 13697 1) ACPI CA Core Subsystem: 13698 13699Updated Index support to match ACPI 2.0 semantics. Storing a 13700Integer, String, or Buffer to an Index of a Buffer will store only 13701the least-significant byte of the source to the Indexed buffer 13702byte. Multiple writes are not performed. 13703 13704Fixed a problem where the access type used in an AccessAs ASL 13705operator was not recorded correctly into the field object. 13706 13707Fixed a problem where ASL Event objects were created in a 13708signalled state. Events are now created in an unsignalled state. 13709 13710The internal object cache is now purged after table loading and 13711initialization to reduce the use of dynamic kernel memory -- on 13712the assumption that object use is greatest during the parse phase 13713of the entire table (versus the run-time use of individual control 13714methods.) 13715 13716ACPI 2.0 variable-length packages are now fully operational. 13717 13718Code and Data Size: Code and Data optimizations have permitted new 13719feature development with an actual reduction in the library size. 13720Current core subsystem library sizes are shown below. These are 13721the code and data sizes for the acpica.lib produced by the 13722Microsoft Visual C++ 6.0 compiler, and these values do not include 13723any ACPI driver or OSPM code. The debug version of the code 13724includes the debug output trace mechanism and has a larger code 13725and data size. Note that these values will vary depending on the 13726efficiency of the compiler and the compiler options used during 13727generation. 13728 13729 Previous Release (11_09_01): 13730 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 13731 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 13732 13733 Current Release: 13734 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 13735 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 13736 13737 2) Linux: 13738 13739Enhanced the ACPI boot-time initialization code to allow the use 13740of Local APIC tables for processor enumeration on IA-32, and to 13741pave the way for a fully MPS-free boot (on SMP systems) in the 13742near future. This functionality replaces 13743arch/i386/kernel/acpitables.c, which was introduced in an earlier 137442.4.15-preX release. To enable this feature you must add 13745"acpi_boot=on" to the kernel command line -- see the help entry 13746for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 13747the works... 13748 13749Restructured the configuration options to allow boot-time table 13750parsing support without inclusion of the ACPI Interpreter (and 13751other) code. 13752 13753NOTE: This release does not include fixes for the reported events, 13754power-down, and thermal passive cooling issues (coming soon). 13755 13756 3) ASL Compiler: 13757 13758Added additional typechecking for Fields within restricted access 13759Operation Regions. All fields within EC and CMOS regions must be 13760declared with ByteAcc. All fields withing SMBus regions must be 13761declared with the BufferAcc access type. 13762 13763Fixed a problem where the listing file output of control methods 13764no longer interleaved the actual AML code with the ASL source 13765code. 13766 13767 13768 13769 13770---------------------------------------- 13771Summary of changes for this label: 11_09_01 13772 137731) ACPI CA Core Subsystem: 13774 13775Implemented ACPI 2.0-defined support for writes to fields with a 13776Buffer, String, or Integer source operand that is smaller than the 13777target field. In these cases, the source operand is zero-extended 13778to fill the target field. 13779 13780Fixed a problem where a Field starting bit offset (within the 13781parent operation region) was calculated incorrectly if the 13782 13783alignment of the field differed from the access width. This 13784affected CreateWordField, CreateDwordField, CreateQwordField, and 13785possibly other fields that use the "AccessAny" keyword. 13786 13787Fixed a problem introduced in the 11_02_01 release where indirect 13788stores through method arguments did not operate correctly. 13789 137902) Linux: 13791 13792Implemented boot-time ACPI table parsing support 13793(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 13794facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 13795legacy BIOS interfaces (e.g. MPS) for the configuration of system 13796processors, memory, and interrupts during setup_arch(). Note that 13797this patch does not include the required architecture-specific 13798changes required to apply this information -- subsequent patches 13799will be posted for both IA32 and IA64 to achieve this. 13800 13801Added low-level sleep support for IA32 platforms, courtesy of Pat 13802Mochel. This allows IA32 systems to transition to/from various 13803sleeping states (e.g. S1, S3), although the lack of a centralized 13804driver model and power-manageable drivers will prevent its 13805(successful) use on most systems. 13806 13807Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 13808submenu, unified IA32 and IA64 options, added new "Boot using ACPI 13809tables" option, etc. 13810 13811Increased the default timeout for the EC driver from 1ms to 10ms 13812(1000 cycles of 10us) to try to address AE_TIME errors during EC 13813transactions. 13814 13815 ---------------------------------------- 13816Summary of changes for this label: 11_02_01 13817 138181) ACPI CA Core Subsystem: 13819 13820ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 13821(QWordAcc keyword). All ACPI 2.0 64-bit support is now 13822implemented. 13823 13824OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 13825changes to support ACPI 2.0 Qword field access. Read/Write 13826PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 13827accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 13828the value parameter for the address space handler interface is now 13829an ACPI_INTEGER. OSL implementations of these interfaces must now 13830handle the case where the Width parameter is 64. 13831 13832Index Fields: Fixed a problem where unaligned bit assembly and 13833disassembly for IndexFields was not supported correctly. 13834 13835Index and Bank Fields: Nested Index and Bank Fields are now 13836supported. During field access, a check is performed to ensure 13837that the value written to an Index or Bank register is not out of 13838the range of the register. The Index (or Bank) register is 13839written before each access to the field data. Future support will 13840include allowing individual IndexFields to be wider than the 13841DataRegister width. 13842 13843Fields: Fixed a problem where the AML interpreter was incorrectly 13844attempting to write beyond the end of a Field/OpRegion. This was 13845a boundary case that occurred when a DWORD field was written to a 13846BYTE access OpRegion, forcing multiple writes and causing the 13847interpreter to write one datum too many. 13848 13849Fields: Fixed a problem with Field/OpRegion access where the 13850starting bit address of a field was incorrectly calculated if the 13851current access type was wider than a byte (WordAcc, DwordAcc, or 13852QwordAcc). 13853 13854Fields: Fixed a problem where forward references to individual 13855FieldUnits (individual Field names within a Field definition) were 13856not resolved during the AML table load. 13857 13858Fields: Fixed a problem where forward references from a Field 13859definition to the parent Operation Region definition were not 13860resolved during the AML table load. 13861 13862Fields: Duplicate FieldUnit names within a scope are now detected 13863during AML table load. 13864 13865Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 13866returned an incorrect name for the root node. 13867 13868Code and Data Size: Code and Data optimizations have permitted new 13869feature development with an actual reduction in the library size. 13870Current core subsystem library sizes are shown below. These are 13871the code and data sizes for the acpica.lib produced by the 13872Microsoft Visual C++ 6.0 compiler, and these values do not include 13873any ACPI driver or OSPM code. The debug version of the code 13874includes the debug output trace mechanism and has a larger code 13875and data size. Note that these values will vary depending on the 13876efficiency of the compiler and the compiler options used during 13877generation. 13878 13879 Previous Release (10_18_01): 13880 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 13881 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 13882 13883 Current Release: 13884 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 13885 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 13886 13887 2) Linux: 13888 13889Improved /proc processor output (Pavel Machek) Re-added 13890MODULE_LICENSE("GPL") to all modules. 13891 13892 3) ASL Compiler version X2030: 13893 13894Duplicate FieldUnit names within a scope are now detected and 13895flagged as errors. 13896 13897 4) Documentation: 13898 13899Programmer Reference updated to reflect OSL and address space 13900handler interface changes described above. 13901 13902---------------------------------------- 13903Summary of changes for this label: 10_18_01 13904 13905ACPI CA Core Subsystem: 13906 13907Fixed a problem with the internal object reference count mechanism 13908that occasionally caused premature object deletion. This resolves 13909all of the outstanding problem reports where an object is deleted 13910in the middle of an interpreter evaluation. Although this problem 13911only showed up in rather obscure cases, the solution to the 13912problem involved an adjustment of all reference counts involving 13913objects attached to namespace nodes. 13914 13915Fixed a problem with Field support in the interpreter where 13916writing to an aligned field whose length is an exact multiple (2 13917or greater) of the field access granularity would cause an attempt 13918to write beyond the end of the field. 13919 13920The top level AML opcode execution functions within the 13921interpreter have been renamed with a more meaningful and 13922consistent naming convention. The modules exmonad.c and 13923exdyadic.c were eliminated. New modules are exoparg1.c, 13924exoparg2.c, exoparg3.c, and exoparg6.c. 13925 13926Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 13927 13928Fixed a problem where the AML debugger was causing some internal 13929objects to not be deleted during subsystem termination. 13930 13931Fixed a problem with the external AcpiEvaluateObject interface 13932where the subsystem would fault if the named object to be 13933evaluated refered to a constant such as Zero, Ones, etc. 13934 13935Fixed a problem with IndexFields and BankFields where the 13936subsystem would fault if the index, data, or bank registers were 13937not defined in the same scope as the field itself. 13938 13939Added printf format string checking for compilers that support 13940this feature. Corrected more than 50 instances of issues with 13941format specifiers within invocations of ACPI_DEBUG_PRINT 13942throughout the core subsystem code. 13943 13944The ASL "Revision" operator now returns the ACPI support level 13945implemented in the core - the value "2" since the ACPI 2.0 support 13946is more than 50% implemented. 13947 13948Enhanced the output of the AML debugger "dump namespace" command 13949to output in a more human-readable form. 13950 13951Current core subsystem library code sizes are shown below. These 13952 13953are the code and data sizes for the acpica.lib produced by the 13954Microsoft Visual C++ 6.0 compiler, and these values do not include 13955any ACPI driver or OSPM code. The debug version of the code 13956includes the full debug trace mechanism -- leading to a much 13957 13958larger code and data size. Note that these values will vary 13959depending on the efficiency of the compiler and the compiler 13960options used during generation. 13961 13962 Previous Label (09_20_01): 13963 Non-Debug Version: 65K Code, 5K Data, 70K Total 13964 Debug Version: 138K Code, 58K Data, 196K Total 13965 13966 This Label: 13967 13968 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 13969 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 13970 13971Linux: 13972 13973Implemented a "Bad BIOS Blacklist" to track machines that have 13974known ASL/AML problems. 13975 13976Enhanced the /proc interface for the thermal zone driver and added 13977support for _HOT (the critical suspend trip point). The 'info' 13978file now includes threshold/policy information, and allows setting 13979of _SCP (cooling preference) and _TZP (polling frequency) values 13980to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 13981frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 13982preference to the passive/quiet mode (if supported by the ASL). 13983 13984Implemented a workaround for a gcc bug that resuted in an OOPs 13985when loading the control method battery driver. 13986 13987 ---------------------------------------- 13988Summary of changes for this label: 09_20_01 13989 13990 ACPI CA Core Subsystem: 13991 13992The AcpiEnableEvent and AcpiDisableEvent interfaces have been 13993modified to allow individual GPE levels to be flagged as wake- 13994enabled (i.e., these GPEs are to remain enabled when the platform 13995sleeps.) 13996 13997The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 13998support wake-enabled GPEs. This means that upon entering the 13999sleep state, all GPEs that are not wake-enabled are disabled. 14000When leaving the sleep state, these GPEs are reenabled. 14001 14002A local double-precision divide/modulo module has been added to 14003enhance portability to OS kernels where a 64-bit math library is 14004not available. The new module is "utmath.c". 14005 14006Several optimizations have been made to reduce the use of CPU 14007stack. Originally over 2K, the maximum stack usage is now below 140082K at 1860 bytes (1.82k) 14009 14010Fixed a problem with the AcpiGetFirmwareTable interface where the 14011root table pointer was not mapped into a logical address properly. 14012 14013Fixed a problem where a NULL pointer was being dereferenced in the 14014interpreter code for the ASL Notify operator. 14015 14016Fixed a problem where the use of the ASL Revision operator 14017returned an error. This operator now returns the current version 14018of the ACPI CA core subsystem. 14019 14020Fixed a problem where objects passed as control method parameters 14021to AcpiEvaluateObject were always deleted at method termination. 14022However, these objects may end up being stored into the namespace 14023by the called method. The object reference count mechanism was 14024applied to these objects instead of a force delete. 14025 14026Fixed a problem where static strings or buffers (contained in the 14027AML code) that are declared as package elements within the ASL 14028code could cause a fault because the interpreter would attempt to 14029delete them. These objects are now marked with the "static 14030object" flag to prevent any attempt to delete them. 14031 14032Implemented an interpreter optimization to use operands directly 14033from the state object instead of extracting the operands to local 14034variables. This reduces stack use and code size, and improves 14035performance. 14036 14037The module exxface.c was eliminated as it was an unnecessary extra 14038layer of code. 14039 14040Current core subsystem library code sizes are shown below. These 14041are the code and data sizes for the acpica.lib produced by the 14042Microsoft Visual C++ 6.0 compiler, and these values do not include 14043any ACPI driver or OSPM code. The debug version of the code 14044includes the full debug trace mechanism -- leading to a much 14045larger code and data size. Note that these values will vary 14046depending on the efficiency of the compiler and the compiler 14047options used during generation. 14048 14049 Non-Debug Version: 65K Code, 5K Data, 70K Total 14050(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 14051Total (Previously 195K) 14052 14053Linux: 14054 14055Support for ACPI 2.0 64-bit integers has been added. All ACPI 14056Integer objects are now 64 bits wide 14057 14058All Acpi data types and structures are now in lower case. Only 14059Acpi macros are upper case for differentiation. 14060 14061 Documentation: 14062 14063Changes to the external interfaces as described above. 14064 14065 ---------------------------------------- 14066Summary of changes for this label: 08_31_01 14067 14068 ACPI CA Core Subsystem: 14069 14070A bug with interpreter implementation of the ASL Divide operator 14071was found and fixed. The implicit function return value (not the 14072explicit store operands) was returning the remainder instead of 14073the quotient. This was a longstanding bug and it fixes several 14074known outstanding issues on various platforms. 14075 14076The ACPI_DEBUG_PRINT and function trace entry/exit macros have 14077been further optimized for size. There are 700 invocations of the 14078DEBUG_PRINT macro alone, so each optimization reduces the size of 14079the debug version of the subsystem significantly. 14080 14081A stack trace mechanism has been implemented. The maximum stack 14082usage is about 2K on 32-bit platforms. The debugger command "stat 14083stack" will display the current maximum stack usage. 14084 14085All public symbols and global variables within the subsystem are 14086now prefixed with the string "Acpi". This keeps all of the 14087symbols grouped together in a kernel map, and avoids conflicts 14088with other kernel subsystems. 14089 14090Most of the internal fixed lookup tables have been moved into the 14091code segment via the const operator. 14092 14093Several enhancements have been made to the interpreter to both 14094reduce the code size and improve performance. 14095 14096Current core subsystem library code sizes are shown below. These 14097are the code and data sizes for the acpica.lib produced by the 14098Microsoft Visual C++ 6.0 compiler, and these values do not include 14099any ACPI driver or OSPM code. The debug version of the code 14100includes the full debug trace mechanism which contains over 700 14101invocations of the DEBUG_PRINT macro, 500 function entry macro 14102invocations, and over 900 function exit macro invocations -- 14103leading to a much larger code and data size. Note that these 14104values will vary depending on the efficiency of the compiler and 14105the compiler options used during generation. 14106 14107 Non-Debug Version: 64K Code, 5K Data, 69K Total 14108Debug Version: 137K Code, 58K Data, 195K Total 14109 14110 Linux: 14111 14112Implemented wbinvd() macro, pending a kernel-wide definition. 14113 14114Fixed /proc/acpi/event to handle poll() and short reads. 14115 14116 ASL Compiler, version X2026: 14117 14118Fixed a problem introduced in the previous label where the AML 14119 14120code emitted for package objects produced packages with zero 14121length. 14122 14123 ---------------------------------------- 14124Summary of changes for this label: 08_16_01 14125 14126ACPI CA Core Subsystem: 14127 14128The following ACPI 2.0 ASL operators have been implemented in the 14129AML interpreter (These are already supported by the Intel ASL 14130compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 14131ToBuffer. Support for 64-bit AML constants is implemented in the 14132AML parser, debugger, and disassembler. 14133 14134The internal memory tracking mechanism (leak detection code) has 14135been upgraded to reduce the memory overhead (a separate tracking 14136block is no longer allocated for each memory allocation), and now 14137supports all of the internal object caches. 14138 14139The data structures and code for the internal object caches have 14140been coelesced and optimized so that there is a single cache and 14141memory list data structure and a single group of functions that 14142implement generic cache management. This has reduced the code 14143size in both the debug and release versions of the subsystem. 14144 14145The DEBUG_PRINT macro(s) have been optimized for size and replaced 14146by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 14147different, because it generates a single call to an internal 14148function. This results in a savings of about 90 bytes per 14149invocation, resulting in an overall code and data savings of about 1415016% in the debug version of the subsystem. 14151 14152 Linux: 14153 14154Fixed C3 disk corruption problems and re-enabled C3 on supporting 14155machines. 14156 14157Integrated low-level sleep code by Patrick Mochel. 14158 14159Further tweaked source code Linuxization. 14160 14161Other minor fixes. 14162 14163 ASL Compiler: 14164 14165Support for ACPI 2.0 variable length packages is fixed/completed. 14166 14167Fixed a problem where the optional length parameter for the ACPI 141682.0 ToString operator. 14169 14170Fixed multiple extraneous error messages when a syntax error is 14171detected within the declaration line of a control method. 14172 14173 ---------------------------------------- 14174Summary of changes for this label: 07_17_01 14175 14176ACPI CA Core Subsystem: 14177 14178Added a new interface named AcpiGetFirmwareTable to obtain any 14179ACPI table via the ACPI signature. The interface can be called at 14180any time during kernel initialization, even before the kernel 14181virtual memory manager is initialized and paging is enabled. This 14182allows kernel subsystems to obtain ACPI tables very early, even 14183before the ACPI CA subsystem is initialized. 14184 14185Fixed a problem where Fields defined with the AnyAcc attribute 14186could be resolved to the incorrect address under the following 14187conditions: 1) the field width is larger than 8 bits and 2) the 14188parent operation region is not defined on a DWORD boundary. 14189 14190Fixed a problem where the interpreter is not being locked during 14191namespace initialization (during execution of the _INI control 14192methods), causing an error when an attempt is made to release it 14193later. 14194 14195ACPI 2.0 support in the AML Interpreter has begun and will be 14196ongoing throughout the rest of this year. In this label, The Mod 14197operator is implemented. 14198 14199Added a new data type to contain full PCI addresses named 14200ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 14201and Function values. 14202 14203 Linux: 14204 14205Enhanced the Linux version of the source code to change most 14206capitalized ACPI type names to lowercase. For example, all 14207instances of ACPI_STATUS are changed to acpi_status. This will 14208result in a large diff, but the change is strictly cosmetic and 14209aligns the CA code closer to the Linux coding standard. 14210 14211OSL Interfaces: 14212 14213The interfaces to the PCI configuration space have been changed to 14214add the PCI Segment number and to split the single 32-bit combined 14215DeviceFunction field into two 16-bit fields. This was 14216accomplished by moving the four values that define an address in 14217PCI configuration space (segment, bus, device, and function) to 14218the new ACPI_PCI_ID structure. 14219 14220The changes to the PCI configuration space interfaces led to a 14221reexamination of the complete set of address space access 14222interfaces for PCI, I/O, and Memory. The previously existing 18 14223interfaces have proven difficult to maintain (any small change 14224must be propagated across at least 6 interfaces) and do not easily 14225allow for future expansion to 64 bits if necessary. Also, on some 14226systems, it would not be appropriate to demultiplex the access 14227width (8, 16, 32,or 64) before calling the OSL if the 14228corresponding native OS interfaces contain a similar access width 14229parameter. For these reasons, the 18 address space interfaces 14230have been replaced by these 6 new ones: 14231 14232AcpiOsReadPciConfiguration 14233AcpiOsWritePciConfiguration 14234AcpiOsReadMemory 14235AcpiOsWriteMemory 14236AcpiOsReadPort 14237AcpiOsWritePort 14238 14239Added a new interface named AcpiOsGetRootPointer to allow the OSL 14240to perform the platform and/or OS-specific actions necessary to 14241obtain the ACPI RSDP table pointer. On IA-32 platforms, this 14242interface will simply call down to the CA core to perform the low- 14243memory search for the table. On IA-64, the RSDP is obtained from 14244EFI. Migrating this interface to the OSL allows the CA core to 14245 14246remain OS and platform independent. 14247 14248Added a new interface named AcpiOsSignal to provide a generic 14249"function code and pointer" interface for various miscellaneous 14250signals and notifications that must be made to the host OS. The 14251first such signals are intended to support the ASL Fatal and 14252Breakpoint operators. In the latter case, the AcpiOsBreakpoint 14253interface has been obsoleted. 14254 14255The definition of the AcpiFormatException interface has been 14256changed to simplify its use. The caller no longer must supply a 14257buffer to the call; A pointer to a const string is now returned 14258directly. This allows the call to be easily used in printf 14259statements, etc. since the caller does not have to manage a local 14260buffer. 14261 14262 14263 ASL Compiler, Version X2025: 14264 14265The ACPI 2.0 Switch/Case/Default operators have been implemented 14266and are fully functional. They will work with all ACPI 1.0 14267interpreters, since the operators are simply translated to If/Else 14268pairs. 14269 14270The ACPI 2.0 ElseIf operator is implemented and will also work 14271with 1.0 interpreters, for the same reason. 14272 14273Implemented support for ACPI 2.0 variable-length packages. These 14274packages have a separate opcode, and their size is determined by 14275the interpreter at run-time. 14276 14277Documentation The ACPI CA Programmer Reference has been updated to 14278reflect the new interfaces and changes to existing interfaces. 14279 14280 ------------------------------------------ 14281Summary of changes for this label: 06_15_01 14282 14283 ACPI CA Core Subsystem: 14284 14285Fixed a problem where a DWORD-accessed field within a Buffer 14286object would get its byte address inadvertently rounded down to 14287the nearest DWORD. Buffers are always Byte-accessible. 14288 14289 ASL Compiler, version X2024: 14290 14291Fixed a problem where the Switch() operator would either fault or 14292hang the compiler. Note however, that the AML code for this ACPI 142932.0 operator is not yet implemented. 14294 14295Compiler uses the new AcpiOsGetTimer interface to obtain compile 14296timings. 14297 14298Implementation of the CreateField operator automatically converts 14299a reference to a named field within a resource descriptor from a 14300byte offset to a bit offset if required. 14301 14302Added some missing named fields from the resource descriptor 14303support. These are the names that are automatically created by the 14304compiler to reference fields within a descriptor. They are only 14305valid at compile time and are not passed through to the AML 14306interpreter. 14307 14308Resource descriptor named fields are now typed as Integers and 14309subject to compile-time typechecking when used in expressions. 14310 14311 ------------------------------------------ 14312Summary of changes for this label: 05_18_01 14313 14314 ACPI CA Core Subsystem: 14315 14316Fixed a couple of problems in the Field support code where bits 14317from adjacent fields could be returned along with the proper field 14318bits. Restructured the field support code to improve performance, 14319readability and maintainability. 14320 14321New DEBUG_PRINTP macro automatically inserts the procedure name 14322into the output, saving hundreds of copies of procedure name 14323strings within the source, shrinking the memory footprint of the 14324debug version of the core subsystem. 14325 14326 Source Code Structure: 14327 14328The source code directory tree was restructured to reflect the 14329current organization of the component architecture. Some files 14330and directories have been moved and/or renamed. 14331 14332 Linux: 14333 14334Fixed leaking kacpidpc processes. 14335 14336Fixed queueing event data even when /proc/acpi/event is not 14337opened. 14338 14339 ASL Compiler, version X2020: 14340 14341Memory allocation performance enhancement - over 24X compile time 14342improvement on large ASL files. Parse nodes and namestring 14343buffers are now allocated from a large internal compiler buffer. 14344 14345The temporary .SRC file is deleted unless the "-s" option is 14346specified 14347 14348The "-d" debug output option now sends all output to the .DBG file 14349instead of the console. 14350 14351"External" second parameter is now optional 14352 14353"ElseIf" syntax now properly allows the predicate 14354 14355Last operand to "Load" now recognized as a Target operand 14356 14357Debug object can now be used anywhere as a normal object. 14358 14359ResourceTemplate now returns an object of type BUFFER 14360 14361EISAID now returns an object of type INTEGER 14362 14363"Index" now works with a STRING operand 14364 14365"LoadTable" now accepts optional parameters 14366 14367"ToString" length parameter is now optional 14368 14369"Interrupt (ResourceType," parse error fixed. 14370 14371"Register" with a user-defined region space parse error fixed 14372 14373Escaped backslash at the end of a string ("\\") scan/parse error 14374fixed 14375 14376"Revision" is now an object of type INTEGER. 14377 14378 14379 14380------------------------------------------ 14381Summary of changes for this label: 05_02_01 14382 14383Linux: 14384 14385/proc/acpi/event now blocks properly. 14386 14387Removed /proc/sys/acpi. You can still dump your DSDT from 14388/proc/acpi/dsdt. 14389 14390 ACPI CA Core Subsystem: 14391 14392Fixed a problem introduced in the previous label where some of the 14393"small" resource descriptor types were not recognized. 14394 14395Improved error messages for the case where an ASL Field is outside 14396the range of the parent operation region. 14397 14398 ASL Compiler, version X2018: 14399 14400 14401Added error detection for ASL Fields that extend beyond the length 14402of the parent operation region (only if the length of the region 14403is known at compile time.) This includes fields that have a 14404minimum access width that is smaller than the parent region, and 14405individual field units that are partially or entirely beyond the 14406extent of the parent. 14407 14408 14409 14410------------------------------------------ 14411Summary of changes for this label: 04_27_01 14412 14413 ACPI CA Core Subsystem: 14414 14415Fixed a problem where the namespace mutex could be released at the 14416wrong time during execution of AcpiRemoveAddressSpaceHandler. 14417 14418Added optional thread ID output for debug traces, to simplify 14419debugging of multiple threads. Added context switch notification 14420when the debug code realizes that a different thread is now 14421executing ACPI code. 14422 14423Some additional external data types have been prefixed with the 14424string "ACPI_" for consistency. This may effect existing code. 14425The data types affected are the external callback typedefs - e.g., 14426 14427WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 14428 14429 Linux: 14430 14431Fixed an issue with the OSL semaphore implementation where a 14432thread was waking up with an error from receiving a SIGCHLD 14433signal. 14434 14435Linux version of ACPI CA now uses the system C library for string 14436manipulation routines instead of a local implementation. 14437 14438Cleaned up comments and removed TBDs. 14439 14440 ASL Compiler, version X2017: 14441 14442Enhanced error detection and reporting for all file I/O 14443operations. 14444 14445 Documentation: 14446 14447Programmer Reference updated to version 1.06. 14448 14449 14450 14451------------------------------------------ 14452Summary of changes for this label: 04_13_01 14453 14454 ACPI CA Core Subsystem: 14455 14456Restructured support for BufferFields and RegionFields. 14457BankFields support is now fully operational. All known 32-bit 14458limitations on field sizes have been removed. Both BufferFields 14459and (Operation) RegionFields are now supported by the same field 14460management code. 14461 14462Resource support now supports QWORD address and IO resources. The 1446316/32/64 bit address structures and the Extended IRQ structure 14464have been changed to properly handle Source Resource strings. 14465 14466A ThreadId of -1 is now used to indicate a "mutex not acquired" 14467condition internally and must never be returned by AcpiOsThreadId. 14468This reserved value was changed from 0 since Unix systems allow a 14469thread ID of 0. 14470 14471Linux: 14472 14473Driver code reorganized to enhance portability 14474 14475Added a kernel configuration option to control ACPI_DEBUG 14476 14477Fixed the EC driver to honor _GLK. 14478 14479ASL Compiler, version X2016: 14480 14481Fixed support for the "FixedHw" keyword. Previously, the FixedHw 14482address space was set to 0, not 0x7f as it should be. 14483 14484 ------------------------------------------ 14485Summary of changes for this label: 03_13_01 14486 14487 ACPI CA Core Subsystem: 14488 14489During ACPI initialization, the _SB_._INI method is now run if 14490present. 14491 14492Notify handler fix - notifies are deferred until the parent method 14493completes execution. This fixes the "mutex already acquired" 14494issue seen occasionally. 14495 14496Part of the "implicit conversion" rules in ACPI 2.0 have been 14497found to cause compatibility problems with existing ASL/AML. The 14498convert "result-to-target-type" implementation has been removed 14499for stores to method Args and Locals. Source operand conversion 14500is still fully implemented. Possible changes to ACPI 2.0 14501specification pending. 14502 14503Fix to AcpiRsCalculatePciRoutingTableLength to return correct 14504length. 14505 14506Fix for compiler warnings for 64-bit compiles. 14507 14508 Linux: 14509 14510/proc output aligned for easier parsing. 14511 14512Release-version compile problem fixed. 14513 14514New kernel configuration options documented in Configure.help. 14515 14516IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 14517context" message. 14518 14519 OSPM: 14520 14521Power resource driver integrated with bus manager. 14522 14523Fixed kernel fault during active cooling for thermal zones. 14524 14525Source Code: 14526 14527The source code tree has been restructured. 14528 14529 14530 14531------------------------------------------ 14532Summary of changes for this label: 03_02_01 14533 14534 Linux OS Services Layer (OSL): 14535 14536Major revision of all Linux-specific code. 14537 14538Modularized all ACPI-specific drivers. 14539 14540Added new thermal zone and power resource drivers. 14541 14542Revamped /proc interface (new functionality is under /proc/acpi). 14543 14544New kernel configuration options. 14545 14546 Linux known issues: 14547 14548New kernel configuration options not documented in Configure.help 14549yet. 14550 14551 14552Module dependencies not currently implemented. If used, they 14553should be loaded in this order: busmgr, power, ec, system, 14554processor, battery, ac_adapter, button, thermal. 14555 14556Modules will not load if CONFIG_MODVERSION is set. 14557 14558IBM 600E - entering S5 may reboot instead of shutting down. 14559 14560IBM 600E - Sleep button may generate "Invalid <NULL> context" 14561message. 14562 14563Some systems may fail with "execution mutex already acquired" 14564message. 14565 14566 ACPI CA Core Subsystem: 14567 14568Added a new OSL Interface, AcpiOsGetThreadId. This was required 14569for the deadlock detection code. Defined to return a non-zero, 32- 14570bit thread ID for the currently executing thread. May be a non- 14571zero constant integer on single-thread systems. 14572 14573Implemented deadlock detection for internal subsystem mutexes. We 14574may add conditional compilation for this code (debug only) later. 14575 14576ASL/AML Mutex object semantics are now fully supported. This 14577includes multiple acquires/releases by owner and support for the 14578 14579Mutex SyncLevel parameter. 14580 14581A new "Force Release" mechanism automatically frees all ASL 14582Mutexes that have been acquired but not released when a thread 14583exits the interpreter. This forces conformance to the ACPI spec 14584("All mutexes must be released when an invocation exits") and 14585prevents deadlocked ASL threads. This mechanism can be expanded 14586(later) to monitor other resource acquisitions if OEM ASL code 14587continues to misbehave (which it will). 14588 14589Several new ACPI exception codes have been added for the Mutex 14590support. 14591 14592Recursive method calls are now allowed and supported (the ACPI 14593spec does in fact allow recursive method calls.) The number of 14594recursive calls is subject to the restrictions imposed by the 14595SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 14596parameter. 14597 14598Implemented support for the SyncLevel parameter for control 14599methods (ACPI 2.0 feature) 14600 14601Fixed a deadlock problem when multiple threads attempted to use 14602the interpreter. 14603 14604Fixed a problem where the string length of a String package 14605element was not always set in a package returned from 14606AcpiEvaluateObject. 14607 14608Fixed a problem where the length of a String package element was 14609not always included in the length of the overall package returned 14610from AcpiEvaluateObject. 14611 14612Added external interfaces (Acpi*) to the ACPI debug memory 14613manager. This manager keeps a list of all outstanding 14614allocations, and can therefore detect memory leaks and attempts to 14615free memory blocks more than once. Useful for code such as the 14616power manager, etc. May not be appropriate for device drivers. 14617Performance with the debug code enabled is slow. 14618 14619The ACPI Global Lock is now an optional hardware element. 14620 14621 ASL Compiler Version X2015: 14622 14623Integrated changes to allow the compiler to be generated on 14624multiple platforms. 14625 14626Linux makefile added to generate the compiler on Linux 14627 14628 Source Code: 14629 14630All platform-specific headers have been moved to their own 14631subdirectory, Include/Platform. 14632 14633New source file added, Interpreter/ammutex.c 14634 14635New header file, Include/acstruct.h 14636 14637 Documentation: 14638 14639The programmer reference has been updated for the following new 14640interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 14641 14642 ------------------------------------------ 14643Summary of changes for this label: 02_08_01 14644 14645Core ACPI CA Subsystem: Fixed a problem where an error was 14646incorrectly returned if the return resource buffer was larger than 14647the actual data (in the resource interfaces). 14648 14649References to named objects within packages are resolved to the 14650 14651full pathname string before packages are returned directly (via 14652the AcpiEvaluateObject interface) or indirectly via the resource 14653interfaces. 14654 14655Linux OS Services Layer (OSL): 14656 14657Improved /proc battery interface. 14658 14659 14660Added C-state debugging output and other miscellaneous fixes. 14661 14662ASL Compiler Version X2014: 14663 14664All defined method arguments can now be used as local variables, 14665including the ones that are not actually passed in as parameters. 14666The compiler tracks initialization of the arguments and issues an 14667exception if they are used without prior assignment (just like 14668locals). 14669 14670The -o option now specifies a filename prefix that is used for all 14671output files, including the AML output file. Otherwise, the 14672default behavior is as follows: 1) the AML goes to the file 14673specified in the DSDT. 2) all other output files use the input 14674source filename as the base. 14675 14676 ------------------------------------------ 14677Summary of changes for this label: 01_25_01 14678 14679Core ACPI CA Subsystem: Restructured the implementation of object 14680store support within the interpreter. This includes support for 14681the Store operator as well as any ASL operators that include a 14682target operand. 14683 14684Partially implemented support for Implicit Result-to-Target 14685conversion. This is when a result object is converted on the fly 14686to the type of an existing target object. Completion of this 14687support is pending further analysis of the ACPI specification 14688concerning this matter. 14689 14690CPU-specific code has been removed from the subsystem (hardware 14691directory). 14692 14693New Power Management Timer functions added 14694 14695Linux OS Services Layer (OSL): Moved system state transition code 14696to the core, fixed it, and modified Linux OSL accordingly. 14697 14698Fixed C2 and C3 latency calculations. 14699 14700 14701We no longer use the compilation date for the version message on 14702initialization, but retrieve the version from AcpiGetSystemInfo(). 14703 14704Incorporated for fix Sony VAIO machines. 14705 14706Documentation: The Programmer Reference has been updated and 14707reformatted. 14708 14709 14710ASL Compiler: Version X2013: Fixed a problem where the line 14711numbering and error reporting could get out of sync in the 14712presence of multiple include files. 14713 14714 ------------------------------------------ 14715Summary of changes for this label: 01_15_01 14716 14717Core ACPI CA Subsystem: 14718 14719Implemented support for type conversions in the execution of the 14720ASL Concatenate operator (The second operand is converted to 14721match the type of the first operand before concatenation.) 14722 14723Support for implicit source operand conversion is partially 14724implemented. The ASL source operand types Integer, Buffer, and 14725String are freely interchangeable for most ASL operators and are 14726converted by the interpreter on the fly as required. Implicit 14727Target operand conversion (where the result is converted to the 14728target type before storing) is not yet implemented. 14729 14730Support for 32-bit and 64-bit BCD integers is implemented. 14731 14732Problem fixed where a field read on an aligned field could cause a 14733read past the end of the field. 14734 14735New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 14736does not return a value, but the caller expects one. (The ASL 14737compiler flags this as a warning.) 14738 14739ASL Compiler: 14740 14741Version X2011: 147421. Static typechecking of all operands is implemented. This 14743prevents the use of invalid objects (such as using a Package where 14744an Integer is required) at compile time instead of at interpreter 14745run-time. 147462. The ASL source line is printed with ALL errors and warnings. 147473. Bug fix for source EOF without final linefeed. 147484. Debug option is split into a parse trace and a namespace trace. 147495. Namespace output option (-n) includes initial values for 14750integers and strings. 147516. Parse-only option added for quick syntax checking. 147527. Compiler checks for duplicate ACPI name declarations 14753 14754Version X2012: 147551. Relaxed typechecking to allow interchangeability between 14756strings, integers, and buffers. These types are now converted by 14757the interpreter at runtime. 147582. Compiler reports time taken by each internal subsystem in the 14759debug output file. 14760 14761 14762 ------------------------------------------ 14763Summary of changes for this label: 12_14_00 14764 14765ASL Compiler: 14766 14767This is the first official release of the compiler. Since the 14768compiler requires elements of the Core Subsystem, this label 14769synchronizes everything. 14770 14771------------------------------------------ 14772Summary of changes for this label: 12_08_00 14773 14774 14775Fixed a problem where named references within the ASL definition 14776of both OperationRegions and CreateXXXFields did not work 14777properly. The symptom was an AE_AML_OPERAND_TYPE during 14778initialization of the region/field. This is similar (but not 14779related internally) to the problem that was fixed in the last 14780label. 14781 14782Implemented both 32-bit and 64-bit support for the BCD ASL 14783functions ToBCD and FromBCD. 14784 14785Updated all legal headers to include "2000" in the copyright 14786years. 14787 14788 ------------------------------------------ 14789Summary of changes for this label: 12_01_00 14790 14791Fixed a problem where method invocations within the ASL definition 14792of both OperationRegions and CreateXXXFields did not work 14793properly. The symptom was an AE_AML_OPERAND_TYPE during 14794initialization of the region/field: 14795 14796 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 14797[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 14798(0x3005) 14799 14800Fixed a problem where operators with more than one nested 14801subexpression would fail. The symptoms were varied, by mostly 14802AE_AML_OPERAND_TYPE errors. This was actually a rather serious 14803problem that has gone unnoticed until now. 14804 14805 Subtract (Add (1,2), Multiply (3,4)) 14806 14807Fixed a problem where AcpiGetHandle didn't quite get fixed in the 14808previous build (The prefix part of a relative path was handled 14809incorrectly). 14810 14811Fixed a problem where Operation Region initialization failed if 14812the operation region name was a "namepath" instead of a simple 14813"nameseg". Symptom was an AE_NO_OPERAND error. 14814 14815Fixed a problem where an assignment to a local variable via the 14816indirect RefOf mechanism only worked for the first such 14817assignment. Subsequent assignments were ignored. 14818 14819 ------------------------------------------ 14820Summary of changes for this label: 11_15_00 14821 14822ACPI 2.0 table support with backwards support for ACPI 1.0 and the 148230.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 14824the AML interpreter does NOT have support for the new 2.0 ASL 14825grammar terms at this time. 14826 14827All ACPI hardware access is via the GAS structures in the ACPI 2.0 14828FADT. 14829 14830All physical memory addresses across all platforms are now 64 bits 14831wide. Logical address width remains dependent on the platform 14832(i.e., "void *"). 14833 14834AcpiOsMapMemory interface changed to a 64-bit physical address. 14835 14836The AML interpreter integer size is now 64 bits, as per the ACPI 148372.0 specification. 14838 14839For backwards compatibility with ACPI 1.0, ACPI tables with a 14840revision number less than 2 use 32-bit integers only. 14841 14842Fixed a problem where the evaluation of OpRegion operands did not 14843always resolve them to numbers properly. 14844 14845------------------------------------------ 14846Summary of changes for this label: 10_20_00 14847 14848Fix for CBN_._STA issue. This fix will allow correct access to 14849CBN_ OpRegions when the _STA returns 0x8. 14850 14851Support to convert ACPI constants (Ones, Zeros, One) to actual 14852values before a package object is returned 14853 14854Fix for method call as predicate to if/while construct causing 14855incorrect if/while behavior 14856 14857Fix for Else block package lengths sometimes calculated wrong (if 14858block > 63 bytes) 14859 14860Fix for Processor object length field, was always zero 14861 14862Table load abort if FACP sanity check fails 14863 14864Fix for problem with Scope(name) if name already exists 14865 14866Warning emitted if a named object referenced cannot be found 14867(resolved) during method execution. 14868 14869 14870 14871 14872 14873------------------------------------------ 14874Summary of changes for this label: 9_29_00 14875 14876New table initialization interfaces: AcpiInitializeSubsystem no 14877longer has any parameters AcpiFindRootPointer - Find the RSDP (if 14878necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 14879>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 14880AcpiLoadTables 14881 14882Note: These interface changes require changes to all existing OSDs 14883 14884The PCI_Config default address space handler is always installed 14885at the root namespace object. 14886 14887------------------------------------------- 14888Summary of changes for this label: 09_15_00 14889 14890The new initialization architecture is implemented. New 14891interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 14892AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 14893 14894(Namespace is automatically loaded when a table is loaded) 14895 14896The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1489752 bytes to 32 bytes. There is usually one of these for every 14898namespace object, so the memory savings is significant. 14899 14900Implemented just-in-time evaluation of the CreateField operators. 14901 14902Bug fixes for IA-64 support have been integrated. 14903 14904Additional code review comments have been implemented 14905 14906The so-called "third pass parse" has been replaced by a final walk 14907through the namespace to initialize all operation regions (address 14908spaces) and fields that have not yet been initialized during the 14909execution of the various _INI and REG methods. 14910 14911New file - namespace/nsinit.c 14912 14913------------------------------------------- 14914Summary of changes for this label: 09_01_00 14915 14916Namespace manager data structures have been reworked to change the 14917primary object from a table to a single object. This has 14918resulted in dynamic memory savings of 3X within the namespace and 149192X overall in the ACPI CA subsystem. 14920 14921Fixed problem where the call to AcpiEvFindPciRootBuses was 14922inadvertently left commented out. 14923 14924Reduced the warning count when generating the source with the GCC 14925compiler. 14926 14927Revision numbers added to each module header showing the 14928SourceSafe version of the file. Please refer to this version 14929number when giving us feedback or comments on individual modules. 14930 14931The main object types within the subsystem have been renamed to 14932clarify their purpose: 14933 14934ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 14935ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 14936ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 14937 14938NOTE: no changes to the initialization sequence are included in 14939this label. 14940 14941------------------------------------------- 14942Summary of changes for this label: 08_23_00 14943 14944Fixed problem where TerminateControlMethod was being called 14945multiple times per method 14946 14947Fixed debugger problem where single stepping caused a semaphore to 14948be oversignalled 14949 14950Improved performance through additional parse object caching - 14951added ACPI_EXTENDED_OP type 14952 14953------------------------------------------- 14954Summary of changes for this label: 08_10_00 14955 14956Parser/Interpreter integration: Eliminated the creation of 14957complete parse trees for ACPI tables and control methods. 14958Instead, parse subtrees are created and then deleted as soon as 14959they are processed (Either entered into the namespace or executed 14960by the interpreter). This reduces the use of dynamic kernel 14961memory significantly. (about 10X) 14962 14963Exception codes broken into classes and renumbered. Be sure to 14964recompile all code that includes acexcep.h. Hopefully we won't 14965have to renumber the codes again now that they are split into 14966classes (environment, programmer, AML code, ACPI table, and 14967internal). 14968 14969Fixed some additional alignment issues in the Resource Manager 14970subcomponent 14971 14972Implemented semaphore tracking in the AcpiExec utility, and fixed 14973several places where mutexes/semaphores were being unlocked 14974without a corresponding lock operation. There are no known 14975semaphore or mutex "leaks" at this time. 14976 14977Fixed the case where an ASL Return operator is used to return an 14978unnamed package. 14979 14980------------------------------------------- 14981Summary of changes for this label: 07_28_00 14982 14983Fixed a problem with the way addresses were calculated in 14984AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 14985manifested itself when a Field was created with WordAccess or 14986DwordAccess, but the field unit defined within the Field was less 14987 14988than a Word or Dword. 14989 14990Fixed a problem in AmlDumpOperands() module's loop to pull 14991operands off of the operand stack to display information. The 14992problem manifested itself as a TLB error on 64-bit systems when 14993accessing an operand stack with two or more operands. 14994 14995Fixed a problem with the PCI configuration space handlers where 14996context was getting confused between accesses. This required a 14997change to the generic address space handler and address space 14998setup definitions. Handlers now get both a global handler context 14999(this is the one passed in by the user when executing 15000AcpiInstallAddressSpaceHandler() and a specific region context 15001that is unique to each region (For example, the _ADR, _SEG and 15002_BBN values associated with a specific region). The generic 15003function definitions have changed to the following: 15004 15005typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 15006UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 15007*HandlerContext, // This used to be void *Context void 15008*RegionContext); // This is an additional parameter 15009 15010typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 15011RegionHandle, UINT32 Function, void *HandlerContext, void 15012**RegionContext); // This used to be **ReturnContext 15013 15014------------------------------------------- 15015Summary of changes for this label: 07_21_00 15016 15017Major file consolidation and rename. All files within the 15018interpreter have been renamed as well as most header files. This 15019was done to prevent collisions with existing files in the host 15020OSs -- filenames such as "config.h" and "global.h" seem to be 15021quite common. The VC project files have been updated. All 15022makefiles will require modification. 15023 15024The parser/interpreter integration continues in Phase 5 with the 15025implementation of a complete 2-pass parse (the AML is parsed 15026twice) for each table; This avoids the construction of a huge 15027parse tree and therefore reduces the amount of dynamic memory 15028required by the subsystem. Greater use of the parse object cache 15029means that performance is unaffected. 15030 15031Many comments from the two code reviews have been rolled in. 15032 15033The 64-bit alignment support is complete. 15034 15035------------------------------------------- 15036Summary of changes for this label: 06_30_00 15037 15038With a nod and a tip of the hat to the technology of yesteryear, 15039we've added support in the source code for 80 column output 15040devices. The code is now mostly constrained to 80 columns or 15041less to support environments and editors that 1) cannot display 15042or print more than 80 characters on a single line, and 2) cannot 15043disable line wrapping. 15044 15045A major restructuring of the namespace data structure has been 15046completed. The result is 1) cleaner and more 15047understandable/maintainable code, and 2) a significant reduction 15048in the dynamic memory requirement for each named ACPI object 15049(almost half). 15050 15051------------------------------------------- 15052Summary of changes for this label: 06_23_00 15053 15054Linux support has been added. In order to obtain approval to get 15055the ACPI CA subsystem into the Linux kernel, we've had to make 15056quite a few changes to the base subsystem that will affect all 15057users (all the changes are generic and OS- independent). The 15058effects of these global changes have been somewhat far reaching. 15059Files have been merged and/or renamed and interfaces have been 15060renamed. The major changes are described below. 15061 15062Osd* interfaces renamed to AcpiOs* to eliminate namespace 15063pollution/confusion within our target kernels. All OSD 15064interfaces must be modified to match the new naming convention. 15065 15066Files merged across the subsystem. A number of the smaller source 15067and header files have been merged to reduce the file count and 15068increase the density of the existing files. There are too many 15069to list here. In general, makefiles that call out individual 15070files will require rebuilding. 15071 15072Interpreter files renamed. All interpreter files now have the 15073prefix am* instead of ie* and is*. 15074 15075Header files renamed: The acapi.h file is now acpixf.h. The 15076acpiosd.h file is now acpiosxf.h. We are removing references to 15077the acronym "API" since it is somewhat windowsy. The new name is 15078"external interface" or xface or xf in the filenames.j 15079 15080 15081All manifest constants have been forced to upper case (some were 15082mixed case.) Also, the string "ACPI_" has been prepended to many 15083(not all) of the constants, typedefs, and structs. 15084 15085The globals "DebugLevel" and "DebugLayer" have been renamed 15086"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 15087 15088All other globals within the subsystem are now prefixed with 15089"AcpiGbl_" Internal procedures within the subsystem are now 15090prefixed with "Acpi" (with only a few exceptions). The original 15091two-letter abbreviation for the subcomponent remains after "Acpi" 15092- for example, CmCallocate became AcpiCmCallocate. 15093 15094Added a source code translation/conversion utility. Used to 15095generate the Linux source code, it can be modified to generate 15096other types of source as well. Can also be used to cleanup 15097existing source by removing extraneous spaces and blank lines. 15098Found in tools/acpisrc/* 15099 15100OsdUnMapMemory was renamed to OsdUnmapMemory and then 15101AcpiOsUnmapMemory. (UnMap became Unmap). 15102 15103A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 15104When set to one, this indicates that the caller wants to use the 15105 15106semaphore as a mutex, not a counting semaphore. ACPI CA uses 15107both types. However, implementers of this call may want to use 15108different OS primitives depending on the type of semaphore 15109requested. For example, some operating systems provide separate 15110 15111"mutex" and "semaphore" interfaces - where the mutex interface is 15112much faster because it doesn't have all the overhead of a full 15113semaphore implementation. 15114 15115Fixed a deadlock problem where a method that accesses the PCI 15116address space can block forever if it is the first access to the 15117space. 15118 15119------------------------------------------- 15120Summary of changes for this label: 06_02_00 15121 15122Support for environments that cannot handle unaligned data 15123accesses (e.g. firmware and OS environments devoid of alignment 15124handler technology namely SAL/EFI and the IA-64 Linux kernel) has 15125been added (via configurable macros) in these three areas: - 15126Transfer of data from the raw AML byte stream is done via byte 15127moves instead of word/dword/qword moves. - External objects are 15128aligned within the user buffer, including package elements (sub- 15129objects). - Conversion of name strings to UINT32 Acpi Names is now 15130done byte-wise. 15131 15132The Store operator was modified to mimic Microsoft's 15133implementation when storing to a Buffer Field. 15134 15135Added a check of the BM_STS bit before entering C3. 15136 15137The methods subdirectory has been obsoleted and removed. A new 15138file, cmeval.c subsumes the functionality. 15139 15140A 16-bit (DOS) version of AcpiExec has been developed. The 15141makefile is under the acpiexec directory. 15142