1---------------------------------------- 211 February 2011. Summary of changes for version 20110211: 3 4This release is available at www.acpica.org/downloads 5 61) ACPI CA Core Subsystem: 7 8Added a mechanism to defer _REG methods for some early-installed handlers. 9Most user handlers should be installed before call to AcpiEnableSubsystem. 10However, Event handlers and region handlers should be installed after 11AcpiInitializeObjects. Override handlers for the "default" regions should be 12installed early, however. This change executes all _REG methods for the 13default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 14chicken/egg issues between them. ACPICA BZ 848. 15 16Implemented an optimization for GPE detection. This optimization will simply 17ignore GPE registers that contain no enabled GPEs -- there is no need to 18read the register since this information is available internally. This 19becomes more important on machines with a large GPE space. ACPICA bugzilla 20884. Lin Ming. Suggestion from Joe Liu. 21 22Removed all use of the highly unreliable FADT revision field. The revision 23number in the FADT has been found to be completely unreliable and cannot be 24trusted. Only the actual table length can be used to infer the version. This 25change updates the ACPICA core and the disassembler so that both no longer 26even look at the FADT version and instead depend solely upon the FADT 27length. 28 29Fix an unresolved name issue for the no-debug and no-error-message source 30generation cases. The _AcpiModuleName was left undefined in these cases, but 31it is actually needed as a parameter to some interfaces. Define 32_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 33 34Split several large files (makefiles and project files updated) 35 utglobal.c -> utdecode.c 36 dbcomds.c -> dbmethod.c dbnames.c 37 dsopcode.c -> dsargs.c dscontrol.c 38 dsload.c -> dsload2.c 39 aslanalyze.c -> aslbtypes.c aslwalks.c 40 41Example Code and Data Size: These are the sizes for the OS-independent 42acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 43debug version of the code includes the debug output trace mechanism and has 44a much larger code and data size. 45 46 Previous Release (VC 9.0): 47 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 48 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 49 Current Release (VC 9.0): 50 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 51 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 52 532) iASL Compiler/Disassembler and Tools: 54 55iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 56These are useful C-style macros with the standard definitions. ACPICA 57bugzilla 898. 58 59iASL/DTC: Added support for integer expressions and labels. Support for full 60expressions for all integer fields in all ACPI tables. Support for labels in 61"generic" portions of tables such as UEFI. See the iASL reference manual. 62 63Debugger: Added a command to display the status of global handlers. The 64"handlers" command will display op region, fixed event, and miscellaneous 65global handlers. installation status -- and for op regions, whether default 66or user-installed handler will be used. 67 68iASL: Warn if reserved method incorrectly returns a value. Many predefined 69names are defined such that they do not return a value. If implemented as a 70method, issue a warning if such a name explicitly returns a value. ACPICA 71Bugzilla 855. 72 73iASL: Added detection of GPE method name conflicts. Detects a conflict where 74there are two GPE methods of the form _Lxy and _Exy in the same scope. (For 75example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 76 77iASL/DTC: Fixed a couple input scanner issues with comments and line 78numbers. Comment remover could get confused and miss a comment ending. Fixed 79a problem with line counter maintenance. 80 81iASL/DTC: Reduced the severity of some errors from fatal to error. There is 82no need to abort on simple errors within a field definition. 83 84Debugger: Simplified the output of the help command. All help output now in 85a single screen, instead of help subcommands. ACPICA Bugzilla 897. 86 87 88---------------------------------------- 8912 January 2011. Summary of changes for version 20110112: 90 911) ACPI CA Core Subsystem: 92 93Fixed a race condition between method execution and namespace walks that can 94possibly cause a fault. The problem was apparently introduced in version 9520100528 as a result of a performance optimization that reduces the number 96of 97namespace walks upon method exit by using the delete_namespace_subtree 98function instead of the delete_namespace_by_owner function used previously. 99Bug is a missing namespace lock in the delete_namespace_subtree function. 100dana.myers@oracle.com 101 102Fixed several issues and a possible fault with the automatic "serialized" 103method support. History: This support changes a method to "serialized" on 104the 105fly if the method generates an AE_ALREADY_EXISTS error, indicating the 106possibility that it cannot handle reentrancy. This fix repairs a couple of 107issues seen in the field, especially on machines with many cores: 108 109 1) Delete method children only upon the exit of the last thread, 110 so as to not delete objects out from under other running threads 111 (and possibly causing a fault.) 112 2) Set the "serialized" bit for the method only upon the exit of the 113 Last thread, so as to not cause deadlock when running threads 114 attempt to exit. 115 3) Cleanup the use of the AML "MethodFlags" and internal method flags 116 so that there is no longer any confusion between the two. 117 118 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 119 120Debugger: Now lock the namespace for duration of a namespace dump. Prevents 121issues if the namespace is changing dynamically underneath the debugger. 122Especially affects temporary namespace nodes, since the debugger displays 123these also. 124 125Updated the ordering of include files. The ACPICA headers should appear 126before any compiler-specific headers (stdio.h, etc.) so that acenv.h can set 127any necessary compiler-specific defines, etc. Affects the ACPI-related tools 128and utilities. 129 130Updated all ACPICA copyrights and signons to 2011. Added the 2011 copyright 131to all module headers and signons, including the Linux header. This affects 132virtually every file in the ACPICA core subsystem, iASL compiler, and all 133utilities. 134 135Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 136project files for VC++ 6.0 are now obsolete. New project files can be found 137under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 138details. 139 140Example Code and Data Size: These are the sizes for the OS-independent 141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 142debug version of the code includes the debug output trace mechanism and has 143a 144much larger code and data size. 145 146 Previous Release (VC 6.0): 147 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 148 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 149 Current Release (VC 9.0): 150 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 151 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 152 1532) iASL Compiler/Disassembler and Tools: 154 155iASL: Added generic data types to the Data Table compiler. Add "generic" 156data 157types such as UINT32, String, Unicode, etc., to simplify the generation of 158platform-defined tables such as UEFI. Lin Ming. 159 160iASL: Added listing support for the Data Table Compiler. Adds listing 161support 162(-l) to display actual binary output for each line of input code. 163 164---------------------------------------- 16509 December 2010. Summary of changes for version 20101209: 166 1671) ACPI CA Core Subsystem: 168 169Completed the major overhaul of the GPE support code that was begun in July 1702010. Major features include: removal of _PRW execution in ACPICA (host 171executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 172changes to existing interfaces, simplification of GPE handler operation, and 173a handful of new interfaces: 174 175 AcpiUpdateAllGpes 176 AcpiFinishGpe 177 AcpiSetupGpeForWake 178 AcpiSetGpeWakeMask 179 One new file, evxfgpe.c to consolidate all external GPE interfaces. 180 181See the ACPICA Programmer Reference for full details and programming 182information. See the new section 4.4 "General Purpose Event (GPE) Support" 183for a full overview, and section 8.7 "ACPI General Purpose Event Management" 184for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming, 185Bob Moore, Rafael Wysocki. 186 187Implemented a new GPE feature for Windows compatibility, the "Implicit Wake 188GPE Notify". This feature will automatically issue a Notify(2) on a device 189when a Wake GPE is received if there is no corresponding GPE method or 190handler. ACPICA BZ 870. 191 192Fixed a problem with the Scope() operator during table parse and load phase. 193During load phase (table load or method execution), the scope operator 194should 195not enter the target into the namespace. Instead, it should open a new scope 196at the target location. Linux BZ 19462, ACPICA BZ 882. 197 198Example Code and Data Size: These are the sizes for the OS-independent 199acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 200debug version of the code includes the debug output trace mechanism and has 201a 202much larger code and data size. 203 204 Previous Release: 205 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 206 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 207 Current Release: 208 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 209 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 210 2112) iASL Compiler/Disassembler and Tools: 212 213iASL: Relax the alphanumeric restriction on _CID strings. These strings are 214"bus-specific" per the ACPI specification, and therefore any characters are 215acceptable. The only checks that can be performed are for a null string and 216perhaps for a leading asterisk. ACPICA BZ 886. 217 218iASL: Fixed a problem where a syntax error that caused a premature EOF 219condition on the source file emitted a very confusing error message. The 220premature EOF is now detected correctly. ACPICA BZ 891. 221 222Disassembler: Decode the AccessSize within a Generic Address Structure (byte 223access, word access, etc.) Note, this field does not allow arbitrary bit 224access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 225 226New: AcpiNames utility - Example namespace dump utility. Shows an example of 227ACPICA configuration for a minimal namespace dump utility. Uses table and 228namespace managers, but no AML interpreter. Does not add any functionality 229over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 230partition and configure ACPICA. ACPICA BZ 883. 231 232AML Debugger: Increased the debugger buffer size for method return objects. 233Was 4K, increased to 16K. Also enhanced error messages for debugger method 234execution, including the buffer overflow case. 235 236---------------------------------------- 23713 October 2010. Summary of changes for version 20101013: 238 2391) ACPI CA Core Subsystem: 240 241Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, now 242clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 243HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 244 245Changed the type of the predefined namespace object _TZ from ThermalZone to 246Device. This was found to be confusing to the host software that processes 247the various thermal zones, since _TZ is not really a ThermalZone. However, a 248Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 249Zhang. 250 251Added Windows Vista SP2 to the list of supported _OSI strings. The actual 252string is "Windows 2006 SP2". 253 254Eliminated duplicate code in AcpiUtExecute* functions. Now that the nsrepair 255code automatically repairs _HID-related strings, this type of code is no 256longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878. 257 258Example Code and Data Size: These are the sizes for the OS-independent 259acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 260debug version of the code includes the debug output trace mechanism and has 261a 262much larger code and data size. 263 264 Previous Release: 265 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 266 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 267 Current Release: 268 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 269 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 270 2712) iASL Compiler/Disassembler and Tools: 272 273iASL: Implemented additional compile-time validation for _HID strings. The 274non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length 275of 276the string must be exactly seven or eight characters. For both _HID and _CID 277strings, all characters must be alphanumeric. ACPICA BZ 874. 278 279iASL: Allow certain "null" resource descriptors. Some BIOS code creates 280descriptors that are mostly or all zeros, with the expectation that they 281will 282be filled in at runtime. iASL now allows this as long as there is a 283"resource 284tag" (name) associated with the descriptor, which gives the ASL a handle 285needed to modify the descriptor. ACPICA BZ 873. 286 287Added single-thread support to the generic Unix application OSL. Primarily 288for iASL support, this change removes the use of semaphores in the single- 289threaded ACPICA tools/applications - increasing performance. The 290_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 291option. ACPICA BZ 879. 292 293AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 294support 295for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 296 297iASL: Moved all compiler messages to a new file, aslmessages.h. 298 299---------------------------------------- 30015 September 2010. Summary of changes for version 20100915: 301 3021) ACPI CA Core Subsystem: 303 304Removed the AcpiOsDerivePciId OSL interface. The various host 305implementations 306of this function were not OS-dependent and are now obsolete and can be 307removed from all host OSLs. This function has been replaced by 308AcpiHwDerivePciId, which is now part of the ACPICA core code. 309AcpiHwDerivePciId has been implemented without recursion. Adds one new 310module, hwpci.c. ACPICA BZ 857. 311 312Implemented a dynamic repair for _HID and _CID strings. The following 313problems are now repaired at runtime: 1) Remove a leading asterisk in the 314string, and 2) the entire string is uppercased. Both repairs are in 315accordance with the ACPI specification and will simplify host driver code. 316ACPICA BZ 871. 317 318The ACPI_THREAD_ID type is no longer configurable, internally it is now 319always UINT64. This simplifies the ACPICA code, especially any printf 320output. 321UINT64 is the only common data type for all thread_id types across all 322operating systems. It is now up to the host OSL to cast the native thread_id 323type to UINT64 before returning the value to ACPICA (via AcpiOsGetThreadId). 324Lin Ming, Bob Moore. 325 326Added the ACPI_INLINE type to enhance the ACPICA configuration. The "inline" 327keyword is not standard across compilers, and this type allows inline to be 328configured on a per-compiler basis. Lin Ming. 329 330Made the system global AcpiGbl_SystemAwakeAndRunning publically available. 331Added an extern for this boolean in acpixf.h. Some hosts utilize this value 332during suspend/restore operations. ACPICA BZ 869. 333 334All code that implements error/warning messages with the "ACPI:" prefix has 335been moved to a new module, utxferror.c. 336 337The UINT64_OVERLAY was moved to utmath.c, which is the only module where it 338is used. ACPICA BZ 829. Lin Ming, Bob Moore. 339 340Example Code and Data Size: These are the sizes for the OS-independent 341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 342debug version of the code includes the debug output trace mechanism and has 343a 344much larger code and data size. 345 346 Previous Release: 347 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 348 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 349 Current Release: 350 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 351 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 352 3532) iASL Compiler/Disassembler and Tools: 354 355iASL/Disassembler: Write ACPI errors to stderr instead of the output file. 356This keeps the output files free of random error messages that may originate 357from within the namespace/interpreter code. Used this opportunity to merge 358all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 359866. Lin Ming, Bob Moore. 360 361Tools: update some printfs for ansi warnings on size_t. Handle width change 362of size_t on 32-bit versus 64-bit generations. Lin Ming. 363 364---------------------------------------- 36506 August 2010. Summary of changes for version 20100806: 366 3671) ACPI CA Core Subsystem: 368 369Designed and implemented a new host interface to the _OSI support code. This 370will allow the host to dynamically add or remove multiple _OSI strings, as 371well as install an optional handler that is called for each _OSI invocation. 372Also added a new AML debugger command, 'osi' to display and modify the 373global 374_OSI string table, and test support in the AcpiExec utility. See the ACPICA 375reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 376New Functions: 377 AcpiInstallInterface - Add an _OSI string. 378 AcpiRemoveInterface - Delete an _OSI string. 379 AcpiInstallInterfaceHandler - Install optional _OSI handler. 380Obsolete Functions: 381 AcpiOsValidateInterface - no longer used. 382New Files: 383 source/components/utilities/utosi.c 384 385Re-introduced the support to enable multi-byte transfers for Embedded 386Controller (EC) operation regions. A reported problem was found to be a bug 387in the host OS, not in the multi-byte support. Previously, the maximum data 388size passed to the EC operation region handler was a single byte. There are 389often EC Fields larger than one byte that need to be transferred, and it is 390useful for the EC driver to lock these as a single transaction. This change 391enables single transfers larger than 8 bits. This effectively changes the 392access to the EC space from ByteAcc to AnyAcc, and will probably require 393changes to the host OS Embedded Controller driver to enable 16/32/64/256-bit 394transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 395 396Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 397prototype in acpiosxf.h had the output value pointer as a (void *). 398It should be a (UINT64 *). This may affect some host OSL code. 399 400Fixed a couple problems with the recently modified Linux makefiles for iASL 401and AcpiExec. These new makefiles place the generated object files in the 402local directory so that there can be no collisions between the files that 403are 404shared between them that are compiled with different options. 405 406Example Code and Data Size: These are the sizes for the OS-independent 407acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 408debug version of the code includes the debug output trace mechanism and has 409a 410much larger code and data size. 411 412 Previous Release: 413 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 414 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 415 Current Release: 416 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 417 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 418 4192) iASL Compiler/Disassembler and Tools: 420 421iASL/Disassembler: Added a new option (-da, "disassemble all") to load the 422namespace from and disassemble an entire group of AML files. Useful for 423loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) and 424disassembling with one simple command. ACPICA BZ 865. Lin Ming. 425 426iASL: Allow multiple invocations of -e option. This change allows multiple 427uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 834. 428Lin Ming. 429 430---------------------------------------- 43102 July 2010. Summary of changes for version 20100702: 432 4331) ACPI CA Core Subsystem: 434 435Implemented several updates to the recently added GPE reference count 436support. The model for "wake" GPEs is changing to give the host OS complete 437control of these GPEs. Eventually, the ACPICA core will not execute any _PRW 438methods, since the host already must execute them. Also, additional changes 439were made to help ensure that the reference counts are kept in proper 440synchronization with reality. Rafael J. Wysocki. 441 4421) Ensure that GPEs are not enabled twice during initialization. 4432) Ensure that GPE enable masks stay in sync with the reference count. 4443) Do not inadvertently enable GPEs when writing GPE registers. 4454) Remove the internal wake reference counter and add new AcpiGpeWakeup 446interface. This interface will set or clear individual GPEs for wakeup. 4475) Remove GpeType argument from AcpiEnable and AcpiDisable. These interfaces 448are now used for "runtime" GPEs only. 449 450Changed the behavior of the GPE install/remove handler interfaces. The GPE 451is 452no longer disabled during this process, as it was found to cause problems on 453some machines. Rafael J. Wysocki. 454 455Reverted a change introduced in version 20100528 to enable Embedded 456Controller multi-byte transfers. This change was found to cause problems 457with 458Index Fields and possibly Bank Fields. It will be reintroduced when these 459problems have been resolved. 460 461Fixed a problem with references to Alias objects within Package Objects. A 462reference to an Alias within the definition of a Package was not always 463resolved properly. Aliases to objects like Processors, Thermal zones, etc. 464were resolved to the actual object instead of a reference to the object as 465it 466should be. Package objects are only allowed to contain integer, string, 467buffer, package, and reference objects. Redhat bugzilla 608648. 468 469Example Code and Data Size: These are the sizes for the OS-independent 470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 471debug version of the code includes the debug output trace mechanism and has 472a 473much larger code and data size. 474 475 Previous Release: 476 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 477 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 478 Current Release: 479 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 480 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 481 4822) iASL Compiler/Disassembler and Tools: 483 484iASL: Implemented a new compiler subsystem to allow definition and 485compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. These 486are called "ACPI Data Tables", and the new compiler is the "Data Table 487Compiler". This compiler is intended to simplify the existing error-prone 488process of creating these tables for the BIOS, as well as allowing the 489disassembly, modification, recompilation, and override of existing ACPI data 490tables. See the iASL User Guide for detailed information. 491 492iASL: Implemented a new Template Generator option in support of the new Data 493Table Compiler. This option will create examples of all known ACPI tables 494that can be used as the basis for table development. See the iASL 495documentation and the -T option. 496 497Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 498Descriptor Table). 499 500Updated the Linux makefiles for iASL and AcpiExec to place the generated 501object files in the local directory so that there can be no collisions 502between the shared files between them that are generated with different 503options. 504 505Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use 506the #define __APPLE__ to enable this support. 507 508---------------------------------------- 50928 May 2010. Summary of changes for version 20100528: 510 511Note: The ACPI 4.0a specification was released on April 5, 2010 and is 512available at www.acpi.info. This is primarily an errata release. 513 5141) ACPI CA Core Subsystem: 515 516Undefined ACPI tables: We are looking for the definitions for the following 517ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 518 519Implemented support to enable multi-byte transfers for Embedded Controller 520(EC) operation regions. Previously, the maximum data size passed to the EC 521operation region handler was a single byte. There are often EC Fields larger 522than one byte that need to be transferred, and it is useful for the EC 523driver 524to lock these as a single transaction. This change enables single transfers 525larger than 8 bits. This effectively changes the access to the EC space from 526ByteAcc to AnyAcc, and will probably require changes to the host OS Embedded 527Controller driver to enable 16/32/64/256-bit transfers in addition to 8-bit 528transfers. Alexey Starikovskiy, Lin Ming 529 530Implemented a performance enhancement for namespace search and access. This 531change enhances the performance of namespace searches and walks by adding a 532backpointer to the parent in each namespace node. On large namespaces, this 533change can improve overall ACPI performance by up to 9X. Adding a pointer to 534each namespace node increases the overall size of the internal namespace by 535about 5%, since each namespace entry usually consists of both a namespace 536node and an ACPI operand object. However, this is the first growth of the 537namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 538 539Implemented a performance optimization that reduces the number of namespace 540walks. On control method exit, only walk the namespace if the method is 541known 542to have created namespace objects outside of its local scope. Previously, 543the 544entire namespace was traversed on each control method exit. This change can 545improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 546Moore. 547 548Added support to truncate I/O addresses to 16 bits for Windows 549compatibility. 550Some ASL code has been seen in the field that inadvertently has bits set 551above bit 15. This feature is optional and is enabled if the BIOS requests 552any Windows OSI strings. It can also be enabled by the host OS. Matthew 553Garrett, Bob Moore. 554 555Added support to limit the maximum time for the ASL Sleep() operator. To 556prevent accidental deep sleeps, limit the maximum time that Sleep() will 557actually sleep. Configurable, the default maximum is two seconds. ACPICA 558bugzilla 854. 559 560Added run-time validation support for the _WDG and_WED Microsoft predefined 561methods. These objects are defined by "Windows Instrumentation", and are not 562part of the ACPI spec. ACPICA BZ 860. 563 564Expanded all statistic counters used during namespace and device 565initialization from 16 to 32 bits in order to support very large namespaces. 566 567Replaced all instances of %d in printf format specifiers with %u since 568nearly 569all integers in ACPICA are unsigned. 570 571Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 572returned 573as AE_NO_HANDLER. 574 575Example Code and Data Size: These are the sizes for the OS-independent 576acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 577debug version of the code includes the debug output trace mechanism and has 578a 579much larger code and data size. 580 581 Previous Release: 582 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 583 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 584 Current Release: 585 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 586 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 587 5882) iASL Compiler/Disassembler and Tools: 589 590iASL: Added compiler support for the _WDG and_WED Microsoft predefined 591methods. These objects are defined by "Windows Instrumentation", and are not 592part of the ACPI spec. ACPICA BZ 860. 593 594AcpiExec: added option to disable the memory tracking mechanism. The -dt 595option will disable the tracking mechanism, which improves performance 596considerably. 597 598AcpiExec: Restructured the command line options into -d (disable) and -e 599(enable) options. 600 601---------------------------------------- 60228 April 2010. Summary of changes for version 20100428: 603 6041) ACPI CA Core Subsystem: 605 606Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 607including FADT-based and GPE Block Devices, execute any _PRW methods in the 608new table, and process any _Lxx/_Exx GPE methods in the new table. Any 609runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 610immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 611Devices. Provides compatibility with other ACPI implementations. Two new 612files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 613Moore. 614 615Fixed a regression introduced in version 20100331 within the table manager 616where initial table loading could fail. This was introduced in the fix for 617AcpiReallocateRootTable. Also, renamed some of fields in the table manager 618data structures to clarify their meaning and use. 619 620Fixed a possible allocation overrun during internal object copy in 621AcpiUtCopySimpleObject. The original code did not correctly handle the case 622where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 847. 623 624Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 625possible access beyond end-of-allocation. Also, now fully validate 626descriptor 627(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 628 629Example Code and Data Size: These are the sizes for the OS-independent 630acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 631debug version of the code includes the debug output trace mechanism and has 632a 633much larger code and data size. 634 635 Previous Release: 636 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 637 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 638 Current Release: 639 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 640 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 641 6422) iASL Compiler/Disassembler and Tools: 643 644iASL: Implemented Min/Max/Len/Gran validation for address resource 645descriptors. This change implements validation for the address fields that 646are common to all address-type resource descriptors. These checks are 647implemented: Checks for valid Min/Max, length within the Min/Max window, 648valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per 649table 6-40 in the ACPI 4.0a specification. Also split the large 650aslrestype1.c 651and aslrestype2.c files into five new files. ACPICA BZ 840. 652 653iASL: Added support for the _Wxx predefined names. This support was missing 654and these names were not recognized by the compiler as valid predefined 655names. ACPICA BZ 851. 656 657iASL: Added an error for all predefined names that are defined to return no 658value and thus must be implemented as Control Methods. These include all of 659the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 660names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 661 662iASL: Implemented the -ts option to emit hex AML data in ASL format, as an 663ASL Buffer. Allows ACPI tables to be easily included within ASL files, to be 664dynamically loaded via the Load() operator. Also cleaned up output for the - 665ta and -tc options. ACPICA BZ 853. 666 667Tests: Added a new file with examples of extended iASL error checking. 668Demonstrates the advanced error checking ability of the iASL compiler. 669Available at tests/misc/badcode.asl. 670 671---------------------------------------- 67231 March 2010. Summary of changes for version 20100331: 673 6741) ACPI CA Core Subsystem: 675 676Completed a major update for the GPE support in order to improve support for 677shared GPEs and to simplify both host OS and ACPICA code. Added a reference 678count mechanism to support shared GPEs that require multiple device drivers. 679Several external interfaces have changed. One external interface has been 680removed. One new external interface was added. Most of the GPE external 681interfaces now use the GPE spinlock instead of the events mutex (and the 682Flags parameter for many GPE interfaces has been removed.) See the updated 683ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, Rafael 684Wysocki. ACPICA BZ 831. 685 686Changed: 687 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 688Removed: 689 AcpiSetGpeType 690New: 691 AcpiSetGpe 692 693Implemented write support for DataTable operation regions. These regions are 694defined via the DataTableRegion() operator. Previously, only read support 695was 696implemented. The ACPI specification allows DataTableRegions to be 697read/write, 698however. 699 700Implemented a new subsystem option to force a copy of the DSDT to local 701memory. Optionally copy the entire DSDT to local memory (instead of simply 702mapping it.) There are some (albeit very rare) BIOSs that corrupt or replace 703the original DSDT, creating the need for this option. Default is FALSE, do 704not copy the DSDT. 705 706Implemented detection of a corrupted or replaced DSDT. This change adds 707support to detect a DSDT that has been corrupted and/or replaced from 708outside 709the OS (by firmware). This is typically catastrophic for the system, but has 710been seen on some machines. Once this problem has been detected, the DSDT 711copy option can be enabled via system configuration. Lin Ming, Bob Moore. 712 713Fixed two problems with AcpiReallocateRootTable during the root table copy. 714When copying the root table to the new allocation, the length used was 715incorrect. The new size was used instead of the current table size, meaning 716too much data was copied. Also, the count of available slots for ACPI tables 717was not set correctly. Alexey Starikovskiy, Bob Moore. 718 719Example Code and Data Size: These are the sizes for the OS-independent 720acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 721debug version of the code includes the debug output trace mechanism and has 722a 723much larger code and data size. 724 725 Previous Release: 726 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 727 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 728 Current Release: 729 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 730 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 731 7322) iASL Compiler/Disassembler and Tools: 733 734iASL: Implement limited typechecking for values returned from predefined 735control methods. The type of any returned static (unnamed) object is now 736validated. For example, Return(1). ACPICA BZ 786. 737 738iASL: Fixed a predefined name object verification regression. Fixes a 739problem 740introduced in version 20100304. An error is incorrectly generated if a 741predefined name is declared as a static named object with a value defined 742using the keywords "Zero", "One", or "Ones". Lin Ming. 743 744iASL: Added Windows 7 support for the -g option (get local ACPI tables) by 745reducing the requested registry access rights. ACPICA BZ 842. 746 747Disassembler: fixed a possible fault when generating External() statements. 748Introduced in commit ae7d6fd: Properly handle externals with parent-prefix 749(carat). Fixes a string length allocation calculation. Lin Ming. 750 751---------------------------------------- 75204 March 2010. Summary of changes for version 20100304: 753 7541) ACPI CA Core Subsystem: 755 756Fixed a possible problem with the AML Mutex handling function 757AcpiExReleaseMutex where the function could fault under the very rare 758condition when the interpreter has blocked, the interpreter lock is 759released, 760the interpreter is then reentered via the same thread, and attempts to 761acquire an AML mutex that was previously acquired. FreeBSD report 140979. 762Lin 763Ming. 764 765Implemented additional configuration support for the AML "Debug Object". 766Output from the debug object can now be enabled via a global variable, 767AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 768debugging. 769This debug output is now available in the release version of ACPICA instead 770of just the debug version. Also, the entire debug output module can now be 771configured out of the ACPICA build if desired. One new file added, 772executer/exdebug.c. Lin Ming, Bob Moore. 773 774Added header support for the ACPI MCHI table (Management Controller Host 775Interface Table). This table was added in ACPI 4.0, but the defining 776document 777has only recently become available. 778 779Standardized output of integer values for ACPICA warnings/errors. Always use 7800x prefix for hex output, always use %u for unsigned integer decimal output. 781Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400 782invocations.) These invocations were converted from the original 783ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 784 785Example Code and Data Size: These are the sizes for the OS-independent 786acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 787debug version of the code includes the debug output trace mechanism and has 788a 789much larger code and data size. 790 791 Previous Release: 792 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 793 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 794 Current Release: 795 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 796 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 797 7982) iASL Compiler/Disassembler and Tools: 799 800iASL: Implemented typechecking support for static (non-control method) 801predefined named objects that are declared with the Name() operator. For 802example, the type of this object is now validated to be of type Integer: 803Name(_BBN, 1). This change migrates the compiler to using the core 804predefined 805name table instead of maintaining a local version. Added a new file, 806aslpredef.c. ACPICA BZ 832. 807 808Disassembler: Added support for the ACPI 4.0 MCHI table. 809 810---------------------------------------- 81121 January 2010. Summary of changes for version 20100121: 812 8131) ACPI CA Core Subsystem: 814 815Added the 2010 copyright to all module headers and signons. This affects 816virtually every file in the ACPICA core subsystem, the iASL compiler, the 817tools/utilities, and the test suites. 818 819Implemented a change to the AcpiGetDevices interface to eliminate 820unnecessary 821invocations of the _STA method. In the case where a specific _HID is 822requested, do not run _STA until a _HID match is found. This eliminates 823potentially dozens of _STA calls during a search for a particular 824device/HID, 825which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 826 827Implemented an additional repair for predefined method return values. 828Attempt 829to repair unexpected NULL elements within returned Package objects. Create 830an 831Integer of value zero, a NULL String, or a zero-length Buffer as 832appropriate. 833ACPICA BZ 818. Lin Ming, Bob Moore. 834 835Removed the obsolete ACPI_INTEGER data type. This type was introduced as the 836code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 (with 83764-bit AML integers). It is now obsolete and this change removes it from the 838ACPICA code base, replaced by UINT64. The original typedef has been retained 839for now for compatibility with existing device driver code. ACPICA BZ 824. 840 841Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in 842the parse tree object. 843 844Added additional warning options for the gcc-4 generation. Updated the 845source 846accordingly. This includes some code restructuring to eliminate unreachable 847code, elimination of some gotos, elimination of unused return values, some 848additional casting, and removal of redundant declarations. 849 850Example Code and Data Size: These are the sizes for the OS-independent 851acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 852debug version of the code includes the debug output trace mechanism and has 853a 854much larger code and data size. 855 856 Previous Release: 857 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 858 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 859 Current Release: 860 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 861 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 862 8632) iASL Compiler/Disassembler and Tools: 864 865No functional changes for this release. 866 867---------------------------------------- 86814 December 2009. Summary of changes for version 20091214: 869 8701) ACPI CA Core Subsystem: 871 872Enhanced automatic data type conversions for predefined name repairs. This 873change expands the automatic repairs/conversions for predefined name return 874values to make Integers, Strings, and Buffers fully interchangeable. Also, a 875Buffer can be converted to a Package of Integers if necessary. The 876nsrepair.c 877module was completely restructured. Lin Ming, Bob Moore. 878 879Implemented automatic removal of null package elements during predefined 880name 881repairs. This change will automatically remove embedded and trailing NULL 882package elements from returned package objects that are defined to contain a 883variable number of sub-packages. The driver is then presented with a package 884with no null elements to deal with. ACPICA BZ 819. 885 886Implemented a repair for the predefined _FDE and _GTM names. The expected 887return value for both names is a Buffer of 5 DWORDs. This repair fixes two 888possible problems (both seen in the field), where a package of integers is 889returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 890Kim. 891 892Implemented additional module-level code support. This change will properly 893execute module-level code that is not at the root of the namespace (under a 894Device object, etc.). Now executes the code within the current scope instead 895of the root. ACPICA BZ 762. Lin Ming. 896 897Fixed possible mutex acquisition errors when running _REG methods. Fixes a 898problem where mutex errors can occur when running a _REG method that is in 899the same scope as a method-defined operation region or an operation region 900under a module-level IF block. This type of code is rare, so the problem has 901not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 902 903Fixed a possible memory leak during module-level code execution. An object 904could be leaked for each block of executed module-level code if the 905interpreter slack mode is enabled This change deletes any implicitly 906returned 907object from the module-level code block. Lin Ming. 908 909Removed messages for successful predefined repair(s). The repair mechanism 910was considered too wordy. Now, messages are only unconditionally emitted if 911the return object cannot be repaired. Existing messages for successful 912repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 827. 913 914Example Code and Data Size: These are the sizes for the OS-independent 915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 916debug version of the code includes the debug output trace mechanism and has 917a 918much larger code and data size. 919 920 Previous Release: 921 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 922 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 923 Current Release: 924 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 925 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 926 9272) iASL Compiler/Disassembler and Tools: 928 929iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 930files 931were no longer automatically removed at the termination of the compile. 932 933acpiexec: Implemented the -f option to specify default region fill value. 934This option specifies the value used to initialize buffers that simulate 935operation regions. Default value is zero. Useful for debugging problems that 936depend on a specific initial value for a region or field. 937 938---------------------------------------- 93912 November 2009. Summary of changes for version 20091112: 940 9411) ACPI CA Core Subsystem: 942 943Implemented a post-order callback to AcpiWalkNamespace. The existing 944interface only has a pre-order callback. This change adds an additional 945parameter for a post-order callback which will be more useful for bus scans. 946ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 947 948Modified the behavior of the operation region memory mapping cache for 949SystemMemory. Ensure that the memory mappings created for operation regions 950do not cross 4K page boundaries. Crossing a page boundary while mapping 951regions can cause kernel warnings on some hosts if the pages have different 952attributes. Such regions are probably BIOS bugs, and this is the workaround. 953Linux BZ 14445. Lin Ming. 954 955Implemented an automatic repair for predefined methods that must return 956sorted lists. This change will repair (by sorting) packages returned by 957_ALR, 958_PSS, and _TSS. Drivers can now assume that the packages are correctly 959sorted 960and do not contain NULL package elements. Adds one new file, 961namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 962 963Fixed a possible fault during predefined name validation if a return Package 964object contains NULL elements. Also adds a warning if a NULL element is 965followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 966may 967include repair or removal of all such NULL elements where possible. 968 969Implemented additional module-level executable AML code support. This change 970will execute module-level code that is not at the root of the namespace 971(under a Device object, etc.) at table load time. Module-level executable 972AML 973code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 974 975Implemented a new internal function to create Integer objects. This function 976simplifies miscellaneous object creation code. ACPICA BZ 823. 977 978Reduced the severity of predefined repair messages, Warning to Info. Since 979the object was successfully repaired, a warning is too severe. Reduced to an 980info message for now. These messages may eventually be changed to debug- 981only. 982ACPICA BZ 812. 983 984Example Code and Data Size: These are the sizes for the OS-independent 985acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 986debug version of the code includes the debug output trace mechanism and has 987a 988much larger code and data size. 989 990 Previous Release: 991 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 992 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 993 Current Release: 994 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 995 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 996 9972) iASL Compiler/Disassembler and Tools: 998 999iASL: Implemented Switch() with While(1) so that Break works correctly. This 1000change correctly implements the Switch operator with a surrounding While(1) 1001so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 1002 1003iASL: Added a message if a package initializer list is shorter than package 1004length. Adds a new remark for a Package() declaration if an initializer list 1005exists, but is shorter than the declared length of the package. Although 1006technically legal, this is probably a coding error and it is seen in the 1007field. ACPICA BZ 815. Lin Ming, Bob Moore. 1008 1009iASL: Fixed a problem where the compiler could fault after the maximum 1010number 1011of errors was reached (200). 1012 1013acpixtract: Fixed a possible warning for pointer cast if the compiler 1014warning 1015level set very high. 1016 1017---------------------------------------- 101813 October 2009. Summary of changes for version 20091013: 1019 10201) ACPI CA Core Subsystem: 1021 1022Fixed a problem where an Operation Region _REG method could be executed more 1023than once. If a custom address space handler is installed by the host before 1024the "initialize operation regions" phase of the ACPICA initialization, any 1025_REG methods for that address space could be executed twice. This change 1026fixes the problem. ACPICA BZ 427. Lin Ming. 1027 1028Fixed a possible memory leak for the Scope() ASL operator. When the exact 1029invocation of "Scope(\)" is executed (change scope to root), one internal 1030operand object was leaked. Lin Ming. 1031 1032Implemented a run-time repair for the _MAT predefined method. If the _MAT 1033return value is defined as a Field object in the AML, and the field 1034size is less than or equal to the default width of an integer (32 or 103564),_MAT 1036can incorrectly return an Integer instead of a Buffer. ACPICA now 1037automatically repairs this problem. ACPICA BZ 810. 1038 1039Implemented a run-time repair for the _BIF and _BIX predefined methods. The 1040"OEM Information" field is often incorrectly returned as an Integer with 1041value zero if the field is not supported by the platform. This is due to an 1042ambiguity in the ACPI specification. The field should always be a string. 1043ACPICA now automatically repairs this problem by returning a NULL string 1044within the returned Package. ACPICA BZ 807. 1045 1046Example Code and Data Size: These are the sizes for the OS-independent 1047acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1048debug version of the code includes the debug output trace mechanism and has 1049a 1050much larger code and data size. 1051 1052 Previous Release: 1053 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 1054 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 1055 Current Release: 1056 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 1057 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 1058 10592) iASL Compiler/Disassembler and Tools: 1060 1061Disassembler: Fixed a problem where references to external symbols that 1062contained one or more parent-prefixes (carats) were not handled correctly, 1063possibly causing a fault. ACPICA BZ 806. Lin Ming. 1064 1065Disassembler: Restructured the code so that all functions that handle 1066external symbols are in a single module. One new file is added, 1067common/dmextern.c. 1068 1069AML Debugger: Added a max count argument for the Batch command (which 1070executes multiple predefined methods within the namespace.) 1071 1072iASL: Updated the compiler documentation (User Reference.) Available at 1073http://www.acpica.org/documentation/. ACPICA BZ 750. 1074 1075AcpiXtract: Updated for Lint and other formatting changes. Close all open 1076files. 1077 1078---------------------------------------- 107903 September 2009. Summary of changes for version 20090903: 1080 10811) ACPI CA Core Subsystem: 1082 1083For Windows Vista compatibility, added the automatic execution of an _INI 1084method located at the namespace root (\_INI). This method is executed at 1085table load time. This support is in addition to the automatic execution of 1086\_SB._INI. Lin Ming. 1087 1088Fixed a possible memory leak in the interpreter for AML package objects if 1089the package initializer list is longer than the defined size of the package. 1090This apparently can only happen if the BIOS changes the package size on the 1091fly (seen in a _PSS object), as ASL compilers do not allow this. The 1092interpreter will truncate the package to the defined size (and issue an 1093error 1094message), but previously could leave the extra objects undeleted if they 1095were 1096pre-created during the argument processing (such is the case if the package 1097consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 1098 1099Fixed a problem seen when a Buffer or String is stored to itself via ASL. 1100This has been reported in the field. Previously, ACPICA would zero out the 1101buffer/string. Now, the operation is treated as a noop. Provides Windows 1102compatibility. ACPICA BZ 803. Lin Ming. 1103 1104Removed an extraneous error message for ASL constructs of the form 1105Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements 1106are seen in many BIOSs and are once again treated as NOOPs and no error is 1107emitted when they are encountered. ACPICA BZ 785. 1108 1109Fixed an extraneous warning message if a _DSM reserved method returns a 1110Package object. _DSM can return any type of object, so validation on the 1111return type cannot be performed. ACPICA BZ 802. 1112 1113Example Code and Data Size: These are the sizes for the OS-independent 1114acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1115debug version of the code includes the debug output trace mechanism and has 1116a 1117much larger code and data size. 1118 1119 Previous Release: 1120 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 1121 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 1122 Current Release: 1123 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 1124 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 1125 11262) iASL Compiler/Disassembler and Tools: 1127 1128iASL: Fixed a problem with the use of the Alias operator and Resource 1129Templates. The correct alias is now constructed and no error is emitted. 1130ACPICA BZ 738. 1131 1132iASL: Implemented the -I option to specify additional search directories for 1133include files. Allows multiple additional search paths for include files. 1134Directories are searched in the order specified on the command line (after 1135the local directory is searched.) ACPICA BZ 800. 1136 1137iASL: Fixed a problem where the full pathname for include files was not 1138emitted for warnings/errors. This caused the IDE support to not work 1139properly. ACPICA BZ 765. 1140 1141iASL: Implemented the -@ option to specify a Windows-style response file 1142containing additional command line options. ACPICA BZ 801. 1143 1144AcpiExec: Added support to load multiple AML files simultaneously (such as a 1145DSDT and multiple SSDTs). Also added support for wildcards within the AML 1146pathname. These features allow all machine tables to be easily loaded and 1147debugged together. ACPICA BZ 804. 1148 1149Disassembler: Added missing support for disassembly of HEST table Error Bank 1150subtables. 1151 1152---------------------------------------- 115330 July 2009. Summary of changes for version 20090730: 1154 1155The ACPI 4.0 implementation for ACPICA is complete with this release. 1156 11571) ACPI CA Core Subsystem: 1158 1159ACPI 4.0: Added header file support for all new and changed ACPI tables. 1160Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new 1161for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT, 1162EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There 1163have been some ACPI 4.0 changes to other existing tables. Split the large 1164actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 1165 1166ACPI 4.0: Implemented predefined name validation for all new names. There 1167are 116831 new names in ACPI 4.0. The predefined validation module was split into 1169two 1170files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 1171 1172Implemented support for so-called "module-level executable code". This is 1173executable AML code that exists outside of any control method and is 1174intended 1175to be executed at table load time. Although illegal since ACPI 2.0, this 1176type 1177of code still exists and is apparently still being created. Blocks of this 1178code are now detected and executed as intended. Currently, the code blocks 1179must exist under either an If, Else, or While construct; these are the 1180typical cases seen in the field. ACPICA BZ 762. Lin Ming. 1181 1182Implemented an automatic dynamic repair for predefined names that return 1183nested Package objects. This applies to predefined names that are defined to 1184return a variable-length Package of sub-packages. If the number of sub- 1185packages is one, BIOS code is occasionally seen that creates a simple single 1186package with no sub-packages. This code attempts to fix the problem by 1187wrapping a new package object around the existing package. These methods can 1188be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ 1189790. 1190 1191Fixed a regression introduced in 20090625 for the AcpiGetDevices interface. 1192The _HID/_CID matching was broken and no longer matched IDs correctly. 1193ACPICA 1194BZ 793. 1195 1196Fixed a problem with AcpiReset where the reset would silently fail if the 1197register was one of the protected I/O ports. AcpiReset now bypasses the port 1198validation mechanism. This may eventually be driven into the AcpiRead/Write 1199interfaces. 1200 1201Fixed a regression related to the recent update of the AcpiRead/Write 1202interfaces. A sleep/suspend could fail if the optional PM2 Control register 1203does not exist during an attempt to write the Bus Master Arbitration bit. 1204(However, some hosts already delete the code that writes this bit, and the 1205code may in fact be obsolete at this date.) ACPICA BZ 799. 1206 1207Fixed a problem where AcpiTerminate could fault if inadvertently called 1208twice 1209in succession. ACPICA BZ 795. 1210 1211Example Code and Data Size: These are the sizes for the OS-independent 1212acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1213debug version of the code includes the debug output trace mechanism and has 1214a 1215much larger code and data size. 1216 1217 Previous Release: 1218 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 1219 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 1220 Current Release: 1221 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 1222 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 1223 12242) iASL Compiler/Disassembler and Tools: 1225 1226ACPI 4.0: Implemented disassembler support for all new ACPI tables and 1227changes to existing tables. ACPICA BZ 775. 1228 1229---------------------------------------- 123025 June 2009. Summary of changes for version 20090625: 1231 1232The ACPI 4.0 Specification was released on June 16 and is available at 1233www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 1234continue for the next few releases. 1235 12361) ACPI CA Core Subsystem: 1237 1238ACPI 4.0: Implemented interpreter support for the IPMI operation region 1239address space. Includes support for bi-directional data buffers and an IPMI 1240address space handler (to be installed by an IPMI device driver.) ACPICA BZ 1241773. Lin Ming. 1242 1243ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes 1244support in both the header files and the disassembler. 1245 1246Completed a major update for the AcpiGetObjectInfo external interface. 1247Changes include: 1248 - Support for variable, unlimited length HID, UID, and CID strings. 1249 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.) 1250 - Call the _SxW power methods on behalf of a device object. 1251 - Determine if a device is a PCI root bridge. 1252 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 1253These changes will require an update to all callers of this interface. See 1254the updated ACPICA Programmer Reference for details. One new source file has 1255been added - utilities/utids.c. ACPICA BZ 368, 780. 1256 1257Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 1258transfers. The Value parameter has been extended from 32 bits to 64 bits in 1259order to support new ACPI 4.0 tables. These changes will require an update 1260to 1261all callers of these interfaces. See the ACPICA Programmer Reference for 1262details. ACPICA BZ 768. 1263 1264Fixed several problems with AcpiAttachData. The handler was not invoked when 1265the host node was deleted. The data sub-object was not automatically deleted 1266when the host node was deleted. The interface to the handler had an unused 1267parameter, this was removed. ACPICA BZ 778. 1268 1269Enhanced the function that dumps ACPI table headers. All non-printable 1270characters in the string fields are now replaced with '?' (Signature, OemId, 1271OemTableId, and CompilerId.) ACPI tables with non-printable characters in 1272these fields are occasionally seen in the field. ACPICA BZ 788. 1273 1274Fixed a problem with predefined method repair code where the code that 1275attempts to repair/convert an object of incorrect type is only executed on 1276the first time the predefined method is called. The mechanism that disables 1277warnings on subsequent calls was interfering with the repair mechanism. 1278ACPICA BZ 781. 1279 1280Fixed a possible memory leak in the predefined validation/repair code when a 1281buffer is automatically converted to an expected string object. 1282 1283Removed obsolete 16-bit files from the distribution and from the current git 1284tree head. ACPICA BZ 776. 1285 1286Example Code and Data Size: These are the sizes for the OS-independent 1287acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1288debug version of the code includes the debug output trace mechanism and has 1289a 1290much larger code and data size. 1291 1292 Previous Release: 1293 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 1294 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 1295 Current Release: 1296 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 1297 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 1298 12992) iASL Compiler/Disassembler and Tools: 1300 1301ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 1302operation region keyword. ACPICA BZ 771, 772. Lin Ming. 1303 1304ACPI 4.0: iASL - implemented compile-time validation support for all new 1305predefined names and control methods (31 total). ACPICA BZ 769. 1306 1307---------------------------------------- 130821 May 2009. Summary of changes for version 20090521: 1309 13101) ACPI CA Core Subsystem: 1311 1312Disabled the preservation of the SCI enable bit in the PM1 control register. 1313The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to 1314be 1315a "preserved" bit - "OSPM always preserves this bit position", section 13164.7.3.2.1. However, some machines fail if this bit is in fact preserved 1317because the bit needs to be explicitly set by the OS as a workaround. No 1318machines fail if the bit is not preserved. Therefore, ACPICA no longer 1319attempts to preserve this bit. 1320 1321Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 1322incorrectly formed _PRT package could cause a fault. Added validation to 1323ensure that each package element is actually a sub-package. 1324 1325Implemented a new interface to install or override a single control method, 1326AcpiInstallMethod. This interface is useful when debugging in order to 1327repair 1328an existing method or to install a missing method without having to override 1329the entire ACPI table. See the ACPICA Programmer Reference for use and 1330examples. Lin Ming, Bob Moore. 1331 1332Fixed several reference count issues with the DdbHandle object that is 1333created from a Load or LoadTable operator. Prevent premature deletion of the 1334object. Also, mark the object as invalid once the table has been unloaded. 1335This is needed because the handle itself may not be deleted after the table 1336unload, depending on whether it has been stored in a named object by the 1337caller. Lin Ming. 1338 1339Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 1340mutexes of the same sync level are acquired but then not released in strict 1341opposite order, the internally maintained Current Sync Level becomes 1342confused 1343and can cause subsequent execution errors. ACPICA BZ 471. 1344 1345Changed the allowable release order for ASL mutex objects. The ACPI 4.0 1346specification has been changed to make the SyncLevel for mutex objects more 1347useful. When releasing a mutex, the SyncLevel of the mutex must now be the 1348same as the current sync level. This makes more sense than the previous rule 1349(SyncLevel less than or equal). This change updates the code to match the 1350specification. 1351 1352Fixed a problem with the local version of the AcpiOsPurgeCache function. The 1353(local) cache must be locked during all cache object deletions. Andrew 1354Baumann. 1355 1356Updated the Load operator to use operation region interfaces. This replaces 1357direct memory mapping with region access calls. Now, all region accesses go 1358through the installed region handler as they should. 1359 1360Simplified and optimized the NsGetNextNode function. Reduced parameter count 1361and reduced code for this frequently used function. 1362 1363Example Code and Data Size: These are the sizes for the OS-independent 1364acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1365debug version of the code includes the debug output trace mechanism and has 1366a 1367much larger code and data size. 1368 1369 Previous Release: 1370 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 1371 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 1372 Current Release: 1373 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 1374 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 1375 13762) iASL Compiler/Disassembler and Tools: 1377 1378Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems 1379with sub-table disassembly and handling invalid sub-tables. Attempt recovery 1380after an invalid sub-table ID. 1381 1382---------------------------------------- 138322 April 2009. Summary of changes for version 20090422: 1384 13851) ACPI CA Core Subsystem: 1386 1387Fixed a compatibility issue with the recently released I/O port protection 1388mechanism. For windows compatibility, 1) On a port protection violation, 1389simply ignore the request and do not return an exception (allow the control 1390method to continue execution.) 2) If only part of the request overlaps a 1391protected port, read/write the individual ports that are not protected. 1392Linux 1393BZ 13036. Lin Ming 1394 1395Enhanced the execution of the ASL/AML BreakPoint operator so that it 1396actually 1397breaks into the AML debugger if the debugger is present. This matches the 1398ACPI-defined behavior. 1399 1400Fixed several possible warnings related to the use of the configurable 1401ACPI_THREAD_ID. This type can now be configured as either an integer or a 1402pointer with no warnings. Also fixes several warnings in printf-like 1403statements for the 64-bit build when the type is configured as a pointer. 1404ACPICA BZ 766, 767. 1405 1406Fixed a number of possible warnings when compiling with gcc 4+ (depending on 1407warning options.) Examples include printf formats, aliasing, unused globals, 1408missing prototypes, missing switch default statements, use of non-ANSI 1409library functions, use of non-ANSI constructs. See generate/unix/Makefile 1410for 1411a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 1412 1413Example Code and Data Size: These are the sizes for the OS-independent 1414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1415debug version of the code includes the debug output trace mechanism and has 1416a 1417much larger code and data size. 1418 1419 Previous Release: 1420 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 1421 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 1422 Current Release: 1423 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 1424 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 1425 14262) iASL Compiler/Disassembler and Tools: 1427 1428iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings 1429on 1430the 64-bit build. 1431 1432iASL: Fixed a problem where the Unix/Linux versions of the compiler could 1433not 1434correctly digest Windows/DOS formatted files (with CR/LF). 1435 1436iASL: Added a new option for "quiet mode" (-va) that produces only the 1437compilation summary, not individual errors and warnings. Useful for large 1438batch compilations. 1439 1440AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex 1441timeout that can be used to detect hang conditions during execution of AML 1442code (includes both internal semaphores and AML-defined mutexes and events.) 1443 1444Added new makefiles for the generation of acpica in a generic unix-like 1445environment. These makefiles are intended to generate the acpica tools and 1446utilities from the original acpica git source tree structure. 1447 1448Test Suites: Updated and cleaned up the documentation files. Updated the 1449copyrights to 2009, affecting all source files. Use the new version of iASL 1450with quiet mode. Increased the number of available semaphores in the Windows 1451OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added 1452an alternate implementation of the semaphore timeout to allow aslts to 1453execute fully on Cygwin. 1454 1455---------------------------------------- 145620 March 2009. Summary of changes for version 20090320: 1457 14581) ACPI CA Core Subsystem: 1459 1460Fixed a possible race condition between AcpiWalkNamespace and dynamic table 1461unloads. Added a reader/writer locking mechanism to allow multiple 1462concurrent 1463namespace walks (readers), but block a dynamic table unload until it can 1464gain 1465exclusive write access to the namespace. This fixes a problem where a table 1466unload could (possibly catastrophically) delete the portion of the namespace 1467that is currently being examined by a walk. Adds a new file, utlock.c, that 1468implements the reader/writer lock mechanism. ACPICA BZ 749. 1469 1470Fixed a regression introduced in version 20090220 where a change to the FADT 1471handling could cause the ACPICA subsystem to access non-existent I/O ports. 1472 1473Modified the handling of FADT register and table (FACS/DSDT) addresses. The 1474FADT can contain both 32-bit and 64-bit versions of these addresses. 1475Previously, the 64-bit versions were favored, meaning that if both 32 and 64 1476versions were valid, but not equal, the 64-bit version was used. This was 1477found to cause some machines to fail. Now, in this case, the 32-bit version 1478is used instead. This now matches the Windows behavior. 1479 1480Implemented a new mechanism to protect certain I/O ports. Provides Microsoft 1481compatibility and protects the standard PC I/O ports from access via AML 1482code. Adds a new file, hwvalid.c 1483 1484Fixed a possible extraneous warning message from the FADT support. The 1485message warns of a 32/64 length mismatch between the legacy and GAS 1486definitions for a register. 1487 1488Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is 1489made obsolete by the port protection mechanism above. It was previously used 1490to validate the entire address range of an operation region, which could be 1491incorrect if the range included illegal ports, but fields within the 1492operation region did not actually access those ports. Validation is now 1493performed on a per-field basis instead of the entire region. 1494 1495Modified the handling of the PM1 Status Register ignored bit (bit 11.) 1496Ignored bits must be "preserved" according to the ACPI spec. Usually, this 1497means a read/modify/write when writing to the register. However, for status 1498registers, writing a one means clear the event. Writing a zero means 1499preserve 1500the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, 1501and the ACPICA code now simply always writes a zero to the ignored bit. 1502 1503Modified the handling of ignored bits for the PM1 A/B Control Registers. As 1504per the ACPI specification, for the control registers, preserve 1505(read/modify/write) all bits that are defined as either reserved or ignored. 1506 1507Updated the handling of write-only bits in the PM1 A/B Control Registers. 1508When reading the register, zero the write-only bits as per the ACPI spec. 1509ACPICA BZ 443. Lin Ming. 1510 1511Removed "Linux" from the list of supported _OSI strings. Linux no longer 1512wants to reply true to this request. The Windows strings are the only paths 1513through the AML that are tested and known to work properly. 1514 1515 Previous Release: 1516 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 1517 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 1518 Current Release: 1519 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 1520 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 1521 15222) iASL Compiler/Disassembler and Tools: 1523 1524Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and 1525aetables.c 1526 1527---------------------------------------- 152820 February 2009. Summary of changes for version 20090220: 1529 15301) ACPI CA Core Subsystem: 1531 1532Optimized the ACPI register locking. Removed locking for reads from the ACPI 1533bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is 1534not required when reading the single-bit registers. The 1535AcpiGetRegisterUnlocked function is no longer needed and has been removed. 1536This will improve performance for reads on these registers. ACPICA BZ 760. 1537 1538Fixed the parameter validation for AcpiRead/Write. Now return 1539AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS 1540if 1541the register has an address of zero. Previously, these cases simply returned 1542AE_OK. For optional registers such as PM1B status/enable/control, the caller 1543should check for a valid register address before calling. ACPICA BZ 748. 1544 1545Renamed the external ACPI bit register access functions. Renamed 1546AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 1547functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. 1548Also, restructured the code for these functions by simplifying the code path 1549and condensing duplicate code to reduce code size. 1550 1551Added new functions to transparently handle the possibly split PM1 A/B 1552registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions 1553now handle the split registers for PM1 Status, Enable, and Control. ACPICA 1554BZ 1555746. 1556 1557Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. 1558This function writes both of the PM1 control registers (A/B). These 1559registers 1560are different than the PM1 A/B status and enable registers in that different 1561values can be written to the A/B registers. Most notably, the SLP_TYP bits 1562can be different, as per the values returned from the _Sx predefined 1563methods. 1564 1565Removed an extra register write within AcpiHwClearAcpiStatus. This function 1566was writing an optional PM1B status register twice. The existing call to the 1567low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B 1568register. ACPICA BZ 751. 1569 1570Split out the PM1 Status registers from the FADT. Added new globals for 1571these 1572registers (A/B), similar to the way the PM1 Enable registers are handled. 1573Instead of overloading the FADT Event Register blocks. This makes the code 1574clearer and less prone to error. 1575 1576Fixed the warning message for when the platform contains too many ACPI 1577tables 1578for the default size of the global root table data structure. The 1579calculation 1580for the truncation value was incorrect. 1581 1582Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 1583obsolete macro, since it is now a simple reference to ->common.type. There 1584were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 1585 1586Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 1587TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 1588simply SLEEP_TYPE. ACPICA BZ 754. 1589 1590Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 1591function is only needed on 64-bit host operating systems and is thus not 1592included for 32-bit hosts. 1593 1594Debug output: print the input and result for invocations of the _OSI 1595reserved 1596control method via the ACPI_LV_INFO debug level. Also, reduced some of the 1597verbosity of this debug level. Len Brown. 1598 1599Example Code and Data Size: These are the sizes for the OS-independent 1600acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1601debug version of the code includes the debug output trace mechanism and has 1602a 1603much larger code and data size. 1604 1605 Previous Release: 1606 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 1607 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 1608 Current Release: 1609 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 1610 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 1611 16122) iASL Compiler/Disassembler and Tools: 1613 1614Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 1615various legal performance profiles. 1616 1617---------------------------------------- 161823 January 2009. Summary of changes for version 20090123: 1619 16201) ACPI CA Core Subsystem: 1621 1622Added the 2009 copyright to all module headers and signons. This affects 1623virtually every file in the ACPICA core subsystem, the iASL compiler, and 1624the tools/utilities. 1625 1626Implemented a change to allow the host to override any ACPI table, including 1627dynamically loaded tables. Previously, only the DSDT could be replaced by 1628the 1629host. With this change, the AcpiOsTableOverride interface is called for each 1630table found in the RSDT/XSDT during ACPICA initialization, and also whenever 1631a table is dynamically loaded via the AML Load operator. 1632 1633Updated FADT flag definitions, especially the Boot Architecture flags. 1634 1635Debugger: For the Find command, automatically pad the input ACPI name with 1636underscores if the name is shorter than 4 characters. This enables a match 1637with the actual namespace entry which is itself padded with underscores. 1638 1639Example Code and Data Size: These are the sizes for the OS-independent 1640acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1641debug version of the code includes the debug output trace mechanism and has 1642a 1643much larger code and data size. 1644 1645 Previous Release: 1646 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 1647 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 1648 Current Release: 1649 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 1650 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 1651 16522) iASL Compiler/Disassembler and Tools: 1653 1654Fix build error under Bison-2.4. 1655 1656Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture 1657flags. Now decode all flags, regardless of the FADT version. Flag output 1658includes the FADT version which first defined each flag. 1659 1660The iASL -g option now dumps the RSDT to a file (in addition to the FADT and 1661DSDT). Windows only. 1662 1663---------------------------------------- 166404 December 2008. Summary of changes for version 20081204: 1665 16661) ACPI CA Core Subsystem: 1667 1668The ACPICA Programmer Reference has been completely updated and revamped for 1669this release. This includes updates to the external interfaces, OSL 1670interfaces, the overview sections, and the debugger reference. 1671 1672Several new ACPICA interfaces have been implemented and documented in the 1673programmer reference: 1674AcpiReset - Writes the reset value to the FADT-defined reset register. 1675AcpiDisableAllGpes - Disable all available GPEs. 1676AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 1677AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 1678AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 1679AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 1680AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 1681 1682Most of the public ACPI hardware-related interfaces have been moved to a new 1683file, components/hardware/hwxface.c 1684 1685Enhanced the FADT parsing and low-level ACPI register access: The ACPI 1686register lengths within the FADT are now used, and the low level ACPI 1687register access no longer hardcodes the ACPI register lengths. Given that 1688there may be some risk in actually trusting the FADT register lengths, a 1689run- 1690time option was added to fall back to the default hardcoded lengths if the 1691FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 1692option is set to true for now, and a warning is issued if a suspicious FADT 1693register length is overridden with the default value. 1694 1695Fixed a reference count issue in NsRepairObject. This problem was introduced 1696in version 20081031 as part of a fix to repair Buffer objects within 1697Packages. Lin Ming. 1698 1699Added semaphore support to the Linux/Unix application OS-services layer 1700(OSL). ACPICA BZ 448. Lin Ming. 1701 1702Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 1703will 1704be implemented in the OSL, or will binary semaphores be used instead. 1705 1706Example Code and Data Size: These are the sizes for the OS-independent 1707acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1708debug version of the code includes the debug output trace mechanism and has 1709a 1710much larger code and data size. 1711 1712 Previous Release: 1713 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 1714 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 1715 Current Release: 1716 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 1717 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 1718 17192) iASL Compiler/Disassembler and Tools: 1720 1721iASL: Completed the '-e' option to include additional ACPI tables in order 1722to 1723aid with disassembly and External statement generation. ACPICA BZ 742. Lin 1724Ming. 1725 1726iASL: Removed the "named object in while loop" error. The compiler cannot 1727determine how many times a loop will execute. ACPICA BZ 730. 1728 1729Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA 1730BZ 743. 1731 1732Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). 1733 1734---------------------------------------- 173531 October 2008. Summary of changes for version 20081031: 1736 17371) ACPI CA Core Subsystem: 1738 1739Restructured the ACPICA header files into public/private. acpi.h now 1740includes 1741only the "public" acpica headers. All other acpica headers are "private" and 1742should not be included by acpica users. One new file, accommon.h is used to 1743include the commonly used private headers for acpica code generation. Future 1744plans include moving all private headers to a new subdirectory. 1745 1746Implemented an automatic Buffer->String return value conversion for 1747predefined ACPI methods. For these methods (such as _BIF), added automatic 1748conversion for return objects that are required to be a String, but a Buffer 1749was found instead. This can happen when reading string battery data from an 1750operation region, because it used to be difficult to convert the data from 1751buffer to string from within the ASL. Ensures that the host OS is provided 1752with a valid null-terminated string. Linux BZ 11822. 1753 1754Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector 1755into two: one for the 32-bit vector, another for the 64-bit vector. This is 1756required because the host OS must setup the wake much differently for each 1757vector (real vs. protected mode, etc.) and the interface itself should not 1758be 1759deciding which vector to use. Also, eliminated the GetFirmwareWakingVector 1760interface, as it served no purpose (only the firmware reads the vector, OS 1761only writes the vector.) ACPICA BZ 731. 1762 1763Implemented a mechanism to escape infinite AML While() loops. Added a loop 1764counter to force exit from AML While loops if the count becomes too large. 1765This can occur in poorly written AML when the hardware does not respond 1766within a while loop and the loop does not implement a timeout. The maximum 1767loop count is configurable. A new exception code is returned when a loop is 1768broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 1769 1770Optimized the execution of AML While loops. Previously, a control state 1771object was allocated and freed for each execution of the loop. The 1772optimization is to simply reuse the control state for each iteration. This 1773speeds up the raw loop execution time by about 5%. 1774 1775Enhanced the implicit return mechanism. For Windows compatibility, return an 1776implicit integer of value zero for methods that contain no executable code. 1777Such methods are seen in the field as stubs (presumably), and can cause 1778drivers to fail if they expect a return value. Lin Ming. 1779 1780Allow multiple backslashes as root prefixes in namepaths. In a fully 1781qualified namepath, allow multiple backslash prefixes. This can happen (and 1782is seen in the field) because of the use of a double-backslash in strings 1783(since backslash is the escape character) causing confusion. ACPICA BZ 739 1784Lin Ming. 1785 1786Emit a warning if two different FACS or DSDT tables are discovered in the 1787FADT. Checks if there are two valid but different addresses for the FACS and 1788DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 1789 1790Consolidated the method argument count validation code. Merged the code that 1791validates control method argument counts into the predefined validation 1792module. Eliminates possible multiple warnings for incorrect argument counts. 1793 1794Implemented ACPICA example code. Includes code for ACPICA initialization, 1795handler installation, and calling a control method. Available at 1796source/tools/examples. 1797 1798Added a global pointer for FACS table to simplify internal FACS access. Use 1799the global pointer instead of using AcpiGetTableByIndex for each FACS 1800access. 1801This simplifies the code for the Global Lock and the Firmware Waking 1802Vector(s). 1803 1804Example Code and Data Size: These are the sizes for the OS-independent 1805acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1806debug version of the code includes the debug output trace mechanism and has 1807a 1808much larger code and data size. 1809 1810 Previous Release: 1811 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 1812 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 1813 Current Release: 1814 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 1815 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 1816 18172) iASL Compiler/Disassembler and Tools: 1818 1819iASL: Improved disassembly of external method calls. Added the -e option to 1820allow the inclusion of additional ACPI tables to help with the disassembly 1821of 1822method invocations and the generation of external declarations during the 1823disassembly. Certain external method invocations cannot be disassembled 1824properly without the actual declaration of the method. Use the -e option to 1825include the table where the external method(s) are actually declared. Most 1826useful for disassembling SSDTs that make method calls back to the master 1827DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl -d 1828-e dsdt.aml ssdt1.aml 1829 1830iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 1831problem where the use of an alias within a namepath would result in a not 1832found error or cause the compiler to fault. Also now allows forward 1833references from the Alias operator itself. ACPICA BZ 738. 1834 1835---------------------------------------- 183626 September 2008. Summary of changes for version 20080926: 1837 18381) ACPI CA Core Subsystem: 1839 1840Designed and implemented a mechanism to validate predefined ACPI methods and 1841objects. This code validates the predefined ACPI objects (objects whose 1842names 1843start with underscore) that appear in the namespace, at the time they are 1844evaluated. The argument count and the type of the returned object are 1845validated against the ACPI specification. The purpose of this validation is 1846to detect problems with the BIOS-implemented predefined ACPI objects before 1847the results are returned to the ACPI-related drivers. Future enhancements 1848may 1849include actual repair of incorrect return objects where possible. Two new 1850files are nspredef.c and acpredef.h. 1851 1852Fixed a fault in the AML parser if a memory allocation fails during the Op 1853completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 1854 1855Fixed an issue with implicit return compatibility. This change improves the 1856implicit return mechanism to be more compatible with the MS interpreter. Lin 1857Ming, ACPICA BZ 349. 1858 1859Implemented support for zero-length buffer-to-string conversions. Allow zero 1860length strings during interpreter buffer-to-string conversions. For example, 1861during the ToDecimalString and ToHexString operators, as well as implicit 1862conversions. Fiodor Suietov, ACPICA BZ 585. 1863 1864Fixed two possible memory leaks in the error exit paths of 1865AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are 1866similar in that they use a stack of state objects in order to eliminate 1867recursion. The stack must be fully unwound and deallocated if an error 1868occurs. Lin Ming. ACPICA BZ 383. 1869 1870Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 1871global 1872ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 1873Moore ACPICA BZ 442. 1874 1875Removed the obsolete version number in module headers. Removed the 1876"$Revision" number that appeared in each module header. This version number 1877was useful under SourceSafe and CVS, but has no meaning under git. It is not 1878only incorrect, it could also be misleading. 1879 1880Example Code and Data Size: These are the sizes for the OS-independent 1881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1882debug version of the code includes the debug output trace mechanism and has 1883a 1884much larger code and data size. 1885 1886 Previous Release: 1887 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 1888 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 1889 Current Release: 1890 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 1891 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 1892 1893---------------------------------------- 189429 August 2008. Summary of changes for version 20080829: 1895 18961) ACPI CA Core Subsystem: 1897 1898Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 1899Reference. Changes include the elimination of cheating on the Object field 1900for the DdbHandle subtype, addition of a reference class field to 1901differentiate the various reference types (instead of an AML opcode), and 1902the 1903cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 1904 1905Reduce an error to a warning for an incorrect method argument count. 1906Previously aborted with an error if too few arguments were passed to a 1907control method via the external ACPICA interface. Now issue a warning 1908instead 1909and continue. Handles the case where the method inadvertently declares too 1910many arguments, but does not actually use the extra ones. Applies mainly to 1911the predefined methods. Lin Ming. Linux BZ 11032. 1912 1913Disallow the evaluation of named object types with no intrinsic value. 1914Return 1915AE_TYPE for objects that have no value and therefore evaluation is 1916undefined: 1917Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of 1918these types were allowed, but an exception would be generated at some point 1919during the evaluation. Now, the error is generated up front. 1920 1921Fixed a possible memory leak in the AcpiNsGetExternalPathname function 1922(nsnames.c). Fixes a leak in the error exit path. 1923 1924Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 1925debug 1926levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 1927ACPI_EXCEPTION 1928interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 1929ACPI_LV_EVENTS. 1930 1931Removed obsolete and/or unused exception codes from the acexcep.h header. 1932There is the possibility that certain device drivers may be affected if they 1933use any of these exceptions. 1934 1935The ACPICA documentation has been added to the public git source tree, under 1936acpica/documents. Included are the ACPICA programmer reference, the iASL 1937compiler reference, and the changes.txt release logfile. 1938 1939Example Code and Data Size: These are the sizes for the OS-independent 1940acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1941debug version of the code includes the debug output trace mechanism and has 1942a 1943much larger code and data size. 1944 1945 Previous Release: 1946 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 1947 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 1948 Current Release: 1949 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 1950 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 1951 19522) iASL Compiler/Disassembler and Tools: 1953 1954Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 1955defines _SCP with 3 arguments. Previous versions defined it with only 1 1956argument. iASL now allows both definitions. 1957 1958iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- 1959length subtables when disassembling ACPI tables. Also fixed a couple of 1960errors where a full 16-bit table type field was not extracted from the input 1961properly. 1962 1963acpisrc: Improve comment counting mechanism for generating source code 1964statistics. Count first and last lines of multi-line comments as whitespace, 1965not comment lines. Handle Linux legal header in addition to standard acpica 1966header. 1967 1968---------------------------------------- 1969 197029 July 2008. Summary of changes for version 20080729: 1971 19721) ACPI CA Core Subsystem: 1973 1974Fix a possible deadlock in the GPE dispatch. Remove call to 1975AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 1976attempt 1977to acquire the GPE lock but can deadlock since the GPE lock is already held 1978at dispatch time. This code was introduced in version 20060831 as a response 1979to Linux BZ 6881 and has since been removed from Linux. 1980 1981Add a function to dereference returned reference objects. Examines the 1982return 1983object from a call to AcpiEvaluateObject. Any Index or RefOf references are 1984automatically dereferenced in an attempt to return something useful (these 1985reference types cannot be converted into an external ACPI_OBJECT.) Provides 1986MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 1987 1988x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 1989subtables for the MADT and one new subtable for the SRAT. Includes 1990disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC 1991Specification, June 2008. 1992 1993Additional error checking for pathname utilities. Add error check after all 1994calls to AcpiNsGetPathnameLength. Add status return from 1995AcpiNsBuildExternalPath and check after all calls. Add parameter validation 1996to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 1997 1998Return status from the global init function AcpiUtGlobalInitialize. This is 1999used by both the kernel subsystem and the utilities such as iASL compiler. 2000The function could possibly fail when the caches are initialized. Yang Yi. 2001 2002Add a function to decode reference object types to strings. Created for 2003improved error messages. 2004 2005Improve object conversion error messages. Better error messages during 2006object 2007conversion from internal to the external ACPI_OBJECT. Used for external 2008calls 2009to AcpiEvaluateObject. 2010 2011Example Code and Data Size: These are the sizes for the OS-independent 2012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2013debug version of the code includes the debug output trace mechanism and has 2014a 2015much larger code and data size. 2016 2017 Previous Release: 2018 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 2019 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 2020 Current Release: 2021 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 2022 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 2023 20242) iASL Compiler/Disassembler and Tools: 2025 2026Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 2027introduced in version 20080701. If the object being evaluated (via execute 2028command) is not a method, the debugger can hang while trying to obtain non- 2029existent parameters. 2030 2031iASL: relax error for using reserved "_T_x" identifiers. These names can 2032appear in a disassembled ASL file if they were emitted by the original 2033compiler. Instead of issuing an error or warning and forcing the user to 2034manually change these names, issue a remark instead. 2035 2036iASL: error if named object created in while loop. Emit an error if any 2037named 2038object is created within a While loop. If allowed, this code will generate a 2039run-time error on the second iteration of the loop when an attempt is made 2040to 2041create the same named object twice. ACPICA bugzilla 730. 2042 2043iASL: Support absolute pathnames for include files. Add support for absolute 2044pathnames within the Include operator. previously, only relative pathnames 2045were supported. 2046 2047iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 2048Descriptor. 2049The ACPI spec requires one interrupt minimum. BZ 423 2050 2051iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 2052Handles the case for the Interrupt Resource Descriptor where 2053the ResourceSource argument is omitted but ResourceSourceIndex 2054is present. Now leave room for the Index. BZ 426 2055 2056iASL: Prevent error message if CondRefOf target does not exist. Fixes cases 2057where an error message is emitted if the target does not exist. BZ 516 2058 2059iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 2060(get ACPI tables on Windows). This was apparently broken in version 206120070919. 2062 2063AcpiXtract: Handle EOF while extracting data. Correctly handle the case 2064where 2065the EOF happens immediately after the last table in the input file. Print 2066completion message. Previously, no message was displayed in this case. 2067 2068---------------------------------------- 206901 July 2008. Summary of changes for version 20080701: 2070 20710) Git source tree / acpica.org 2072 2073Fixed a problem where a git-clone from http would not transfer the entire 2074source tree. 2075 20761) ACPI CA Core Subsystem: 2077 2078Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 2079enable bit. Now performs a read-change-write of the enable register instead 2080of simply writing out the cached enable mask. This will prevent inadvertent 2081enabling of GPEs if a rogue GPE is received during initialization (before 2082GPE 2083handlers are installed.) 2084 2085Implemented a copy for dynamically loaded tables. Previously, dynamically 2086loaded tables were simply mapped - but on some machines this memory is 2087corrupted after suspend. Now copy the table to a local buffer. For the 2088OpRegion case, added checksum verify. Use the table length from the table 2089header, not the region length. For the Buffer case, use the table length 2090also. Dennis Noordsij, Bob Moore. BZ 10734 2091 2092Fixed a problem where the same ACPI table could not be dynamically loaded 2093and 2094unloaded more than once. Without this change, a table cannot be loaded again 2095once it has been loaded/unloaded one time. The current mechanism does not 2096unregister a table upon an unload. During a load, if the same table is 2097found, 2098this no longer returns an exception. BZ 722 2099 2100Fixed a problem where the wrong descriptor length was calculated for the 2101EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag 2102are calculated as 12 bytes long, but the actual length in the internal 2103descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported 2104by Linn Crosetto. BZ 728 2105 2106Fixed a possible memory leak in the Unload operator. The DdbHandle returned 2107by Load() did not have its reference count decremented during unload, 2108leading 2109to a memory leak. Lin Ming. BZ 727 2110 2111Fixed a possible memory leak when deleting thermal/processor objects. Any 2112associated notify handlers (and objects) were not being deleted. Fiodor 2113Suietov. BZ 506 2114 2115Fixed the ordering of the ASCII names in the global mutex table to match the 2116actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 2117only. 2118Vegard Nossum. BZ 726 2119 2120Enhanced the AcpiGetObjectInfo interface to return the number of required 2121arguments if the object is a control method. Added this call to the debugger 2122so the proper number of default arguments are passed to a method. This 2123prevents a warning when executing methods from AcpiExec. 2124 2125Added a check for an invalid handle in AcpiGetObjectInfo. Return 2126AE_BAD_PARAMETER if input handle is invalid. BZ 474 2127 2128Fixed an extraneous warning from exconfig.c on the 64-bit build. 2129 2130Example Code and Data Size: These are the sizes for the OS-independent 2131acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2132debug version of the code includes the debug output trace mechanism and has 2133a 2134much larger code and data size. 2135 2136 Previous Release: 2137 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 2138 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 2139 Current Release: 2140 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 2141 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 2142 21432) iASL Compiler/Disassembler and Tools: 2144 2145iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 2146resource descriptor names. 2147 2148iASL: Detect invalid ASCII characters in input (windows version). Removed 2149the 2150"-CF" flag from the flex compile, enables correct detection of non-ASCII 2151characters in the input. BZ 441 2152 2153iASL: Eliminate warning when result of LoadTable is not used. Eliminate the 2154"result of operation not used" warning when the DDB handle returned from 2155LoadTable is not used. The warning is not needed. BZ 590 2156 2157AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method 2158to 2159pass address of table to the AML. Added option to disable OpRegion 2160simulation 2161to allow creation of an OpRegion with a real address that was passed to 2162_CFG. 2163All of this allows testing of the Load and Unload operators from AcpiExec. 2164 2165Debugger: update tables command for unloaded tables. Handle unloaded tables 2166and use the standard table header output routine. 2167 2168---------------------------------------- 216909 June 2008. Summary of changes for version 20080609: 2170 21711) ACPI CA Core Subsystem: 2172 2173Implemented a workaround for reversed _PRT entries. A significant number of 2174BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 2175change dynamically detects and repairs this problem. Provides compatibility 2176with MS ACPI. BZ 6859 2177 2178Simplified the internal ACPI hardware interfaces to eliminate the locking 2179flag parameter from Register Read/Write. Added a new external interface, 2180AcpiGetRegisterUnlocked. 2181 2182Fixed a problem where the invocation of a GPE control method could hang. 2183This 2184was a regression introduced in 20080514. The new method argument count 2185validation mechanism can enter an infinite loop when a GPE method is 2186dispatched. Problem fixed by removing the obsolete code that passed GPE 2187block 2188information to the notify handler via the control method parameter pointer. 2189 2190Fixed a problem where the _SST execution status was incorrectly returned to 2191the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 219220080514. _SST is optional and a NOT_FOUND exception should never be 2193returned. BZ 716 2194 2195Fixed a problem where a deleted object could be accessed from within the AML 2196parser. This was a regression introduced in version 20080123 as a fix for 2197the 2198Unload operator. Lin Ming. BZ 10669 2199 2200Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands 2201and eliminated the use of a negative index in a loop. Operands are now 2202displayed in the correct order, not backwards. This also fixes a regression 2203introduced in 20080514 on 64-bit systems where the elimination of 2204ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715 2205 2206Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit 2207path did not delete a locally allocated structure. 2208 2209Updated definitions for the DMAR and SRAT tables to synchronize with the 2210current specifications. Includes disassembler support. 2211 2212Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 2213loop termination value was used. Loop terminated on iteration early, missing 2214one mutex. Linn Crosetto 2215 2216Example Code and Data Size: These are the sizes for the OS-independent 2217acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2218debug version of the code includes the debug output trace mechanism and has 2219a 2220much larger code and data size. 2221 2222 Previous Release: 2223 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 2224 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 2225 Current Release: 2226 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 2227 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 2228 22292) iASL Compiler/Disassembler and Tools: 2230 2231Disassembler: Implemented support for EisaId() within _CID objects. Now 2232disassemble integer _CID objects back to EisaId invocations, including 2233multiple integers within _CID packages. Includes single-step support for 2234debugger also. 2235 2236Disassembler: Added support for DMAR and SRAT table definition changes. 2237 2238---------------------------------------- 223914 May 2008. Summary of changes for version 20080514: 2240 22411) ACPI CA Core Subsystem: 2242 2243Fixed a problem where GPEs were enabled too early during the ACPICA 2244initialization. This could lead to "handler not installed" errors on some 2245machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This 2246ensures that all operation regions and devices throughout the namespace have 2247been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 2248 2249Implemented a change to the enter sleep code. Moved execution of the _GTS 2250method to just before setting sleep enable bit. The execution was moved from 2251AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 2252immediately before the SLP_EN bit is set, as per the ACPI specification. 2253Luming Yu, BZ 1653. 2254 2255Implemented a fix to disable unknown GPEs (2nd version). Now always disable 2256the GPE, even if ACPICA thinks that that it is already disabled. It is 2257possible that the AML or some other code has enabled the GPE unbeknownst to 2258the ACPICA code. 2259 2260Fixed a problem with the Field operator where zero-length fields would 2261return 2262an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 2263ASL 2264field declarations in Field(), BankField(), and IndexField(). BZ 10606. 2265 2266Implemented a fix for the Load operator, now load the table at the namespace 2267root. This reverts a change introduced in version 20071019. The table is now 2268loaded at the namespace root even though this goes against the ACPI 2269specification. This provides compatibility with other ACPI implementations. 2270The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 2271Ming. 2272 2273Fixed a problem where ACPICA would not Load() tables with unusual 2274signatures. 2275Now ignore ACPI table signature for Load() operator. Only "SSDT" is 2276acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 2277Therefore, signature validation is worthless. Apparently MS ACPI accepts 2278such 2279signatures, ACPICA must be compatible. BZ 10454. 2280 2281Fixed a possible negative array index in AcpiUtValidateException. Added NULL 2282fields to the exception string arrays to eliminate a -1 subtraction on the 2283SubStatus field. 2284 2285Updated the debug tracking macros to reduce overall code and data size. 2286Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 2287instead of pointers to static strings. Jan Beulich and Bob Moore. 2288 2289Implemented argument count checking in control method invocation via 2290AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 2291many. This applies only to extern programmatic control method execution, not 2292method-to-method calls within the AML. Lin Ming. 2293 2294Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no 2295longer needed, especially with the removal of 16-bit support. It was 2296replaced 2297mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit 2298on 229932/64-bit platforms is required. 2300 2301Added the C const qualifier for appropriate string constants -- mostly 2302MODULE_NAME and printf format strings. Jan Beulich. 2303 2304Example Code and Data Size: These are the sizes for the OS-independent 2305acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2306debug version of the code includes the debug output trace mechanism and has 2307a 2308much larger code and data size. 2309 2310 Previous Release: 2311 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 2312 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 2313 Current Release: 2314 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 2315 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 2316 23172) iASL Compiler/Disassembler and Tools: 2318 2319Implemented ACPI table revision ID validation in the disassembler. Zero is 2320always invalid. For DSDTs, the ID controls the interpreter integer width. 1 2321means 32-bit and this is unusual. 2 or greater is 64-bit. 2322 2323---------------------------------------- 232421 March 2008. Summary of changes for version 20080321: 2325 23261) ACPI CA Core Subsystem: 2327 2328Implemented an additional change to the GPE support in order to suppress 2329spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 2330disable incoming GPEs that are neither enabled nor disabled -- meaning that 2331the GPE is unknown to the system. This should prevent future interrupt 2332floods 2333from that GPE. BZ 6217 (Zhang Rui) 2334 2335Fixed a problem where NULL package elements were not returned to the 2336AcpiEvaluateObject interface correctly. The element was simply ignored 2337instead of returning a NULL ACPI_OBJECT package element, potentially causing 2338a buffer overflow and/or confusing the caller who expected a fixed number of 2339elements. BZ 10132 (Lin Ming, Bob Moore) 2340 2341Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 2342Dword, 2343Qword), Field, BankField, and IndexField operators when invoked from inside 2344an executing control method. In this case, these operators created namespace 2345nodes that were incorrectly left marked as permanent nodes instead of 2346temporary nodes. This could cause a problem if there is race condition 2347between an exiting control method and a running namespace walk. (Reported by 2348Linn Crosetto) 2349 2350Fixed a problem where the CreateField and CreateXXXField operators would 2351incorrectly allow duplicate names (the name of the field) with no exception 2352generated. 2353 2354Implemented several changes for Notify handling. Added support for new 2355Notify 2356values (ACPI 2.0+) and improved the Notify debug output. Notify on 2357PowerResource objects is no longer allowed, as per the ACPI specification. 2358(Bob Moore, Zhang Rui) 2359 2360All Reference Objects returned via the AcpiEvaluateObject interface are now 2361marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 2362for 2363NULL objects - either NULL package elements or unresolved named references. 2364 2365Fixed a problem where an extraneous debug message was produced for package 2366objects (when debugging enabled). The message "Package List length larger 2367than NumElements count" is now produced in the correct case, and is now an 2368error message rather than a debug message. Added a debug message for the 2369opposite case, where NumElements is larger than the Package List (the 2370package 2371will be padded out with NULL elements as per the ACPI spec.) 2372 2373Implemented several improvements for the output of the ASL "Debug" object to 2374clarify and keep all data for a given object on one output line. 2375 2376Fixed two size calculation issues with the variable-length Start Dependent 2377resource descriptor. 2378 2379Example Code and Data Size: These are the sizes for the OS-independent 2380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2381debug version of the code includes the debug output trace mechanism and has 2382a much larger code and data size. 2383 2384 Previous Release: 2385 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 2386 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 2387 Current Release: 2388 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 2389 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 2390 23912) iASL Compiler/Disassembler and Tools: 2392 2393Fixed a problem with the use of the Switch operator where execution of the 2394containing method by multiple concurrent threads could cause an 2395AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 2396actual Switch opcode, it must be simulated with local named temporary 2397variables and if/else pairs. The solution chosen was to mark any method that 2398uses Switch as Serialized, thus preventing multiple thread entries. BZ 469. 2399 2400---------------------------------------- 240113 February 2008. Summary of changes for version 20080213: 2402 24031) ACPI CA Core Subsystem: 2404 2405Implemented another MS compatibility design change for GPE/Notify handling. 2406GPEs are now cleared/enabled asynchronously to allow all pending notifies to 2407complete first. It is expected that the OSL will queue the enable request 2408behind all pending notify requests (may require changes to the local host 2409OSL 2410in AcpiOsExecute). Alexey Starikovskiy. 2411 2412Fixed a problem where buffer and package objects passed as arguments to a 2413control method via the external AcpiEvaluateObject interface could cause an 2414AE_AML_INTERNAL exception depending on the order and type of operators 2415executed by the target control method. 2416 2417Fixed a problem where resource descriptor size optimization could cause a 2418problem when a _CRS resource template is passed to a _SRS method. The _SRS 2419resource template must use the same descriptors (with the same size) as 2420returned from _CRS. This change affects the following resource descriptors: 2421IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487) 2422 2423Fixed a problem where a CopyObject to RegionField, BankField, and IndexField 2424objects did not perform an implicit conversion as it should. These types 2425must 2426retain their initial type permanently as per the ACPI specification. 2427However, 2428a CopyObject to all other object types should not perform an implicit 2429conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 2430 2431Fixed a problem with the AcpiGetDevices interface where the mechanism to 2432match device CIDs did not examine the entire list of available CIDs, but 2433instead aborted on the first non-matching CID. Andrew Patterson. 2434 2435Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 2436was 2437inadvertently changed to return a 16-bit value instead of a 32-bit value, 2438truncating the upper dword of a 64-bit value. This macro is only used to 2439display debug output, so no incorrect calculations were made. Also, 2440reimplemented the macro so that a 64-bit shift is not performed by 2441inefficient compilers. 2442 2443Added missing va_end statements that should correspond with each va_start 2444statement. 2445 2446Example Code and Data Size: These are the sizes for the OS-independent 2447acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2448debug version of the code includes the debug output trace mechanism and has 2449a much larger code and data size. 2450 2451 Previous Release: 2452 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 2453 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 2454 Current Release: 2455 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 2456 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 2457 24582) iASL Compiler/Disassembler and Tools: 2459 2460Implemented full disassembler support for the following new ACPI tables: 2461BERT, EINJ, and ERST. Implemented partial disassembler support for the 2462complicated HEST table. These tables support the Windows Hardware Error 2463Architecture (WHEA). 2464 2465---------------------------------------- 246623 January 2008. Summary of changes for version 20080123: 2467 24681) ACPI CA Core Subsystem: 2469 2470Added the 2008 copyright to all module headers and signons. This affects 2471virtually every file in the ACPICA core subsystem, the iASL compiler, and 2472the tools/utilities. 2473 2474Fixed a problem with the SizeOf operator when used with Package and Buffer 2475objects. These objects have deferred execution for some arguments, and the 2476execution is now completed before the SizeOf is executed. This problem 2477caused 2478unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ 24799558 2480 2481Implemented an enhancement to the interpreter "slack mode". In the absence 2482of 2483an explicit return or an implicitly returned object from the last executed 2484opcode, a control method will now implicitly return an integer of value 0 2485for 2486Microsoft compatibility. (Lin Ming) BZ 392 2487 2488Fixed a problem with the Load operator where an exception was not returned 2489in 2490the case where the table is already loaded. (Lin Ming) BZ 463 2491 2492Implemented support for the use of DDBHandles as an Indexed Reference, as 2493per 2494the ACPI spec. (Lin Ming) BZ 486 2495 2496Implemented support for UserTerm (Method invocation) for the Unload operator 2497as per the ACPI spec. (Lin Ming) BZ 580 2498 2499Fixed a problem with the LoadTable operator where the OemId and OemTableId 2500input strings could cause unexpected failures if they were shorter than the 2501maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 2502 2503Implemented support for UserTerm (Method invocation) for the Unload operator 2504as per the ACPI spec. (Lin Ming) BZ 580 2505 2506Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 2507HEST, 2508IBFT, UEFI, WDAT. Disassembler support is forthcoming. 2509 2510Example Code and Data Size: These are the sizes for the OS-independent 2511acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2512debug version of the code includes the debug output trace mechanism and has 2513a much larger code and data size. 2514 2515 Previous Release: 2516 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 2517 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 2518 Current Release: 2519 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 2520 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 2521 25222) iASL Compiler/Disassembler and Tools: 2523 2524Implemented support in the disassembler for checksum validation on incoming 2525binary DSDTs and SSDTs. If incorrect, a message is displayed within the 2526table 2527header dump at the start of the disassembly. 2528 2529Implemented additional debugging information in the namespace listing file 2530created during compilation. In addition to the namespace hierarchy, the full 2531pathname to each namespace object is displayed. 2532 2533Fixed a problem with the disassembler where invalid ACPI tables could cause 2534faults or infinite loops. 2535 2536Fixed an unexpected parse error when using the optional "parameter types" 2537list in a control method declaration. (Lin Ming) BZ 397 2538 2539Fixed a problem where two External declarations with the same name did not 2540cause an error (Lin Ming) BZ 509 2541 2542Implemented support for full TermArgs (adding Argx, Localx and method 2543invocation) for the ParameterData parameter to the LoadTable operator. (Lin 2544Ming) BZ 583,587 2545 2546---------------------------------------- 254719 December 2007. Summary of changes for version 20071219: 2548 25491) ACPI CA Core Subsystem: 2550 2551Implemented full support for deferred execution for the TermArg string 2552arguments for DataTableRegion. This enables forward references and full 2553operand resolution for the three string arguments. Similar to 2554OperationRegion 2555deferred argument execution.) Lin Ming. BZ 430 2556 2557Implemented full argument resolution support for the BankValue argument to 2558BankField. Previously, only constants were supported, now any TermArg may be 2559used. Lin Ming BZ 387, 393 2560 2561Fixed a problem with AcpiGetDevices where the search of a branch of the 2562device tree could be terminated prematurely. In accordance with the ACPI 2563specification, the search down the current branch is terminated if a device 2564is both not present and not functional (instead of just not present.) Yakui 2565Zhao. 2566 2567Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if 2568the underlying AML code changed the GPE enable registers. Now, any unknown 2569incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 2570disabled 2571instead of simply ignored. Rui Zhang. 2572 2573Fixed a problem with Index Fields where the Index register was incorrectly 2574limited to a maximum of 32 bits. Now any size may be used. 2575 2576Fixed a couple memory leaks associated with "implicit return" objects when 2577the AML Interpreter slack mode is enabled. Lin Ming BZ 349 2578 2579Example Code and Data Size: These are the sizes for the OS-independent 2580acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2581debug version of the code includes the debug output trace mechanism and has 2582a much larger code and data size. 2583 2584 Previous Release: 2585 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 2586 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 2587 Current Release: 2588 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 2589 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 2590 2591---------------------------------------- 259214 November 2007. Summary of changes for version 20071114: 2593 25941) ACPI CA Core Subsystem: 2595 2596Implemented event counters for each of the Fixed Events, the ACPI SCI 2597(interrupt) itself, and control methods executed. Named 2598AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These 2599should be useful for debugging and statistics. 2600 2601Implemented a new external interface, AcpiGetStatistics, to retrieve the 2602contents of the various event counters. Returns the current values for 2603AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 2604AcpiMethodCount. The interface can be expanded in the future if new counters 2605are added. Device drivers should use this interface rather than access the 2606counters directly. 2607 2608Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 2609the ShortDivide function worked incorrectly, causing problems with the BCD 2610functions with large input values. A truncation from 64-bit to 32-bit 2611inadvertently occurred. Internal BZ 435. Lin Ming 2612 2613Fixed a problem with Index references passed as method arguments. References 2614passed as arguments to control methods were dereferenced immediately (before 2615control was passed to the called method). The references are now correctly 2616passed directly to the called method. BZ 5389. Lin Ming 2617 2618Fixed a problem with CopyObject used in conjunction with the Index operator. 2619The reference was incorrectly dereferenced before the copy. The reference is 2620now correctly copied. BZ 5391. Lin Ming 2621 2622Fixed a problem with Control Method references within Package objects. These 2623references are now correctly generated. This completes the package 2624construction overhaul that began in version 20071019. 2625 2626Example Code and Data Size: These are the sizes for the OS-independent 2627acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2628debug version of the code includes the debug output trace mechanism and has 2629a much larger code and data size. 2630 2631 Previous Release: 2632 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 2633 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 2634 Current Release: 2635 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 2636 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 2637 2638 26392) iASL Compiler/Disassembler and Tools: 2640 2641The AcpiExec utility now installs handlers for all of the predefined 2642Operation Region types. New types supported are: PCI_Config, CMOS, and 2643PCIBARTarget. 2644 2645Fixed a problem with the 64-bit version of AcpiExec where the extended (64- 2646bit) address fields for the DSDT and FACS within the FADT were not being 2647used, causing truncation of the upper 32-bits of these addresses. Lin Ming 2648and Bob Moore 2649 2650---------------------------------------- 265119 October 2007. Summary of changes for version 20071019: 2652 26531) ACPI CA Core Subsystem: 2654 2655Fixed a problem with the Alias operator when the target of the alias is a 2656named ASL operator that opens a new scope -- Scope, Device, PowerResource, 2657Processor, and ThermalZone. In these cases, any children of the original 2658operator could not be accessed via the alias, potentially causing unexpected 2659AE_NOT_FOUND exceptions. (BZ 9067) 2660 2661Fixed a problem with the Package operator where all named references were 2662created as object references and left otherwise unresolved. According to the 2663ACPI specification, a Package can only contain Data Objects or references to 2664control methods. The implication is that named references to Data Objects 2665(Integer, Buffer, String, Package, BufferField, Field) should be resolved 2666immediately upon package creation. This is the approach taken with this 2667change. References to all other named objects (Methods, Devices, Scopes, 2668etc.) are all now properly created as reference objects. (BZ 5328) 2669 2670Reverted a change to Notify handling that was introduced in version 267120070508. This version changed the Notify handling from asynchronous to 2672fully synchronous (Device driver Notify handling with respect to the Notify 2673ASL operator). It was found that this change caused more problems than it 2674solved and was removed by most users. 2675 2676Fixed a problem with the Increment and Decrement operators where the type of 2677the target object could be unexpectedly and incorrectly changed. (BZ 353) 2678Lin Ming. 2679 2680Fixed a problem with the Load and LoadTable operators where the table 2681location within the namespace was ignored. Instead, the table was always 2682loaded into the root or current scope. Lin Ming. 2683 2684Fixed a problem with the Load operator when loading a table from a buffer 2685object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 2686 2687Fixed a problem with the Debug object where a store of a DdbHandle reference 2688object to the Debug object could cause a fault. 2689 2690Added a table checksum verification for the Load operator, in the case where 2691the load is from a buffer. (BZ 578). 2692 2693Implemented additional parameter validation for the LoadTable operator. The 2694length of the input strings SignatureString, OemIdString, and OemTableId are 2695now checked for maximum lengths. (BZ 582) Lin Ming. 2696 2697Example Code and Data Size: These are the sizes for the OS-independent 2698acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2699debug version of the code includes the debug output trace mechanism and has 2700a much larger code and data size. 2701 2702 Previous Release: 2703 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 2704 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 2705 Current Release: 2706 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 2707 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 2708 2709 27102) iASL Compiler/Disassembler: 2711 2712Fixed a problem where if a single file was specified and the file did not 2713exist, no error message was emitted. (Introduced with wildcard support in 2714version 20070917.) 2715 2716---------------------------------------- 271719 September 2007. Summary of changes for version 20070919: 2718 27191) ACPI CA Core Subsystem: 2720 2721Designed and implemented new external interfaces to install and remove 2722handlers for ACPI table-related events. Current events that are defined are 2723LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 2724they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 2725AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 2726 2727Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 2728(acpi_serialized option on Linux) could cause some systems to hang during 2729initialization. (Bob Moore) BZ 8171 2730 2731Fixed a problem where objects of certain types (Device, ThermalZone, 2732Processor, PowerResource) can be not found if they are declared and 2733referenced from within the same control method (Lin Ming) BZ 341 2734 2735Example Code and Data Size: These are the sizes for the OS-independent 2736acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2737debug version of the code includes the debug output trace mechanism and has 2738a much larger code and data size. 2739 2740 Previous Release: 2741 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 2742 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 2743 Current Release: 2744 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 2745 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 2746 2747 27482) iASL Compiler/Disassembler: 2749 2750Implemented support to allow multiple files to be compiled/disassembled in a 2751single invocation. This includes command line wildcard support for both the 2752Windows and Unix versions of the compiler. This feature simplifies the 2753disassembly and compilation of multiple ACPI tables in a single directory. 2754 2755---------------------------------------- 275608 May 2007. Summary of changes for version 20070508: 2757 27581) ACPI CA Core Subsystem: 2759 2760Implemented a Microsoft compatibility design change for the handling of the 2761Notify AML operator. Previously, notify handlers were dispatched and 2762executed completely asynchronously in a deferred thread. The new design 2763still executes the notify handlers in a different thread, but the original 2764thread that executed the Notify() now waits at a synchronization point for 2765the notify handler to complete. Some machines depend on a synchronous Notify 2766operator in order to operate correctly. 2767 2768Implemented support to allow Package objects to be passed as method 2769arguments to the external AcpiEvaluateObject interface. Previously, this 2770would return the AE_NOT_IMPLEMENTED exception. This feature had not been 2771implemented since there were no reserved control methods that required it 2772until recently. 2773 2774Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that 2775contained invalid non-zero values in reserved fields could cause later 2776failures because these fields have meaning in later revisions of the FADT. 2777For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields 2778are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 2779 2780Fixed a problem where the Global Lock handle was not properly updated if a 2781thread that acquired the Global Lock via executing AML code then attempted 2782to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe 2783Liu. 2784 2785Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 2786could be corrupted if the interrupt being removed was at the head of the 2787list. Reported by Linn Crosetto. 2788 2789Example Code and Data Size: These are the sizes for the OS-independent 2790acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2791debug version of the code includes the debug output trace mechanism and has 2792a much larger code and data size. 2793 2794 Previous Release: 2795 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 2796 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 2797 Current Release: 2798 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 2799 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 2800 2801---------------------------------------- 280220 March 2007. Summary of changes for version 20070320: 2803 28041) ACPI CA Core Subsystem: 2805 2806Implemented a change to the order of interpretation and evaluation of AML 2807operand objects within the AML interpreter. The interpreter now evaluates 2808operands in the order that they appear in the AML stream (and the 2809corresponding ASL code), instead of in the reverse order (after the entire 2810operand list has been parsed). The previous behavior caused several subtle 2811incompatibilities with the Microsoft AML interpreter as well as being 2812somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 2813 2814Implemented a change to the ACPI Global Lock support. All interfaces to the 2815global lock now allow the same thread to acquire the lock multiple times. 2816This affects the AcpiAcquireGlobalLock external interface to the global lock 2817as well as the internal use of the global lock to support AML fields -- a 2818control method that is holding the global lock can now simultaneously access 2819AML fields that require global lock protection. Previously, in both cases, 2820this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to 2821AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 2822Controller. There is no change to the behavior of the AML Acquire operator, 2823as this can already be used to acquire a mutex multiple times by the same 2824thread. BZ 8066. With assistance from Alexey Starikovskiy. 2825 2826Fixed a problem where invalid objects could be referenced in the AML 2827Interpreter after error conditions. During operand evaluation, ensure that 2828the internal "Return Object" field is cleared on error and only valid 2829pointers are stored there. Caused occasional access to deleted objects that 2830resulted in "large reference count" warning messages. Valery Podrezov. 2831 2832Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on 2833deeply nested control method invocations. BZ 7873, local BZ 487. Valery 2834Podrezov. 2835 2836Fixed an internal problem with the handling of result objects on the 2837interpreter result stack. BZ 7872. Valery Podrezov. 2838 2839Removed obsolete code that handled the case where AML_NAME_OP is the target 2840of a reference (Reference.Opcode). This code was no longer necessary. BZ 28417874. Valery Podrezov. 2842 2843Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a 2844remnant from the previously discontinued 16-bit support. 2845 2846Example Code and Data Size: These are the sizes for the OS-independent 2847acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2848debug version of the code includes the debug output trace mechanism and has 2849a much larger code and data size. 2850 2851 Previous Release: 2852 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 2853 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 2854 Current Release: 2855 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 2856 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 2857 2858---------------------------------------- 285926 January 2007. Summary of changes for version 20070126: 2860 28611) ACPI CA Core Subsystem: 2862 2863Added the 2007 copyright to all module headers and signons. This affects 2864virtually every file in the ACPICA core subsystem, the iASL compiler, and 2865the utilities. 2866 2867Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 2868during a table load. A bad pointer was passed in the case where the DSDT is 2869overridden, causing a fault in this case. 2870 2871Example Code and Data Size: These are the sizes for the OS-independent 2872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2873debug version of the code includes the debug output trace mechanism and has 2874a much larger code and data size. 2875 2876 Previous Release: 2877 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 2878 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 2879 Current Release: 2880 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 2881 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 2882 2883---------------------------------------- 288415 December 2006. Summary of changes for version 20061215: 2885 28861) ACPI CA Core Subsystem: 2887 2888Support for 16-bit ACPICA has been completely removed since it is no longer 2889necessary and it clutters the code. All 16-bit macros, types, and 2890conditional compiles have been removed, cleaning up and simplifying the code 2891across the entire subsystem. DOS support is no longer needed since the 2892bootable Linux firmware kit is now available. 2893 2894The handler for the Global Lock is now removed during AcpiTerminate to 2895enable a clean subsystem restart, via the implementation of the 2896AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 2897HP) 2898 2899Implemented enhancements to the multithreading support within the debugger 2900to enable improved multithreading debugging and evaluation of the subsystem. 2901(Valery Podrezov) 2902 2903Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) 2904memory used during the execution, as well as the maximum memory consumed by 2905each of the various object types. (Valery Podrezov) 2906 2907Example Code and Data Size: These are the sizes for the OS-independent 2908acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2909debug version of the code includes the debug output trace mechanism and has 2910a much larger code and data size. 2911 2912 Previous Release: 2913 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 2914 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 2915 Current Release: 2916 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 2917 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 2918 2919 29202) iASL Compiler/Disassembler and Tools: 2921 2922AcpiExec: Implemented a new option (-m) to display full memory use 2923statistics upon subsystem/program termination. (Valery Podrezov) 2924 2925---------------------------------------- 292609 November 2006. Summary of changes for version 20061109: 2927 29281) ACPI CA Core Subsystem: 2929 2930Optimized the Load ASL operator in the case where the source operand is an 2931operation region. Simply map the operation region memory, instead of 2932performing a bytewise read. (Region must be of type SystemMemory, see 2933below.) 2934 2935Fixed the Load ASL operator for the case where the source operand is a 2936region field. A buffer object is also allowed as the source operand. BZ 480 2937 2938Fixed a problem where the Load ASL operator allowed the source operand to be 2939an operation region of any type. It is now restricted to regions of type 2940SystemMemory, as per the ACPI specification. BZ 481 2941 2942Additional cleanup and optimizations for the new Table Manager code. 2943 2944AcpiEnable will now fail if all of the required ACPI tables are not loaded 2945(FADT, FACS, DSDT). BZ 477 2946 2947Added #pragma pack(8/4) to acobject.h to ensure that the structures in this 2948header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 2949manually optimized to be aligned and will not work if it is byte-packed. 2950 2951Example Code and Data Size: These are the sizes for the OS-independent 2952acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2953debug version of the code includes the debug output trace mechanism and has 2954a much larger code and data size. 2955 2956 Previous Release: 2957 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 2958 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 2959 Current Release: 2960 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 2961 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 2962 2963 29642) iASL Compiler/Disassembler and Tools: 2965 2966Fixed a problem where the presence of the _OSI predefined control method 2967within complex expressions could cause an internal compiler error. 2968 2969AcpiExec: Implemented full region support for multiple address spaces. 2970SpaceId is now part of the REGION object. BZ 429 2971 2972---------------------------------------- 297311 October 2006. Summary of changes for version 20061011: 2974 29751) ACPI CA Core Subsystem: 2976 2977Completed an AML interpreter performance enhancement for control method 2978execution. Previously a 2-pass parse/execution, control methods are now 2979completely parsed and executed in a single pass. This improves overall 2980interpreter performance by ~25%, reduces code size, and reduces CPU stack 2981use. (Valery Podrezov + interpreter changes in version 20051202 that 2982eliminated namespace loading during the pass one parse.) 2983 2984Implemented _CID support for PCI Root Bridge detection. If the _HID does not 2985match the predefined PCI Root Bridge IDs, the _CID list (if present) is now 2986obtained and also checked for an ID match. 2987 2988Implemented additional support for the PCI _ADR execution: upsearch until a 2989device scope is found before executing _ADR. This allows PCI_Config 2990operation regions to be declared locally within control methods underneath 2991PCI device objects. 2992 2993Fixed a problem with a possible race condition between threads executing 2994AcpiWalkNamespace and the AML interpreter. This condition was removed by 2995modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 2996entries created during any concurrent control method execution. An 2997additional namespace race condition is known to exist between 2998AcpiWalkNamespace and the Load/Unload ASL operators and is still under 2999investigation. 3000 3001Restructured the AML ParseLoop function, breaking it into several 3002subfunctions in order to reduce CPU stack use and improve maintainability. 3003(Mikhail Kouzmich) 3004 3005AcpiGetHandle: Fix for parameter validation to detect invalid combinations 3006of prefix handle and pathname. BZ 478 3007 3008Example Code and Data Size: These are the sizes for the OS-independent 3009acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3010debug version of the code includes the debug output trace mechanism and has 3011a much larger code and data size. 3012 3013 Previous Release: 3014 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 3015 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 3016 Current Release: 3017 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 3018 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 3019 30202) iASL Compiler/Disassembler and Tools: 3021 3022Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager 3023to restore original behavior. 3024 3025---------------------------------------- 302627 September 2006. Summary of changes for version 20060927: 3027 30281) ACPI CA Core Subsystem: 3029 3030Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 3031These functions now use a spinlock for mutual exclusion and the interrupt 3032level indication flag is not needed. 3033 3034Fixed a problem with the Global Lock where the lock could appear to be 3035obtained before it is actually obtained. The global lock semaphore was 3036inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 3037Suietov. 3038 3039Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during 3040a read from a buffer or region field. (BZ 458) Fiodor Suietov. 3041 3042Example Code and Data Size: These are the sizes for the OS-independent 3043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3044debug version of the code includes the debug output trace mechanism and has 3045a much larger code and data size. 3046 3047 Previous Release: 3048 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 3049 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 3050 Current Release: 3051 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 3052 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 3053 3054 30552) iASL Compiler/Disassembler and Tools: 3056 3057Fixed a compilation problem with the pre-defined Resource Descriptor field 3058names where an "object does not exist" error could be incorrectly generated 3059if the parent ResourceTemplate pathname places the template within a 3060different namespace scope than the current scope. (BZ 7212) 3061 3062Fixed a problem where the compiler could hang after syntax errors detected 3063in an ElseIf construct. (BZ 453) 3064 3065Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 3066operator. An incorrect output filename was produced when this parameter was 3067a null string (""). Now, the original input filename is used as the AML 3068output filename, with an ".aml" extension. 3069 3070Implemented a generic batch command mode for the AcpiExec utility (execute 3071any AML debugger command) (Valery Podrezov). 3072 3073---------------------------------------- 307412 September 2006. Summary of changes for version 20060912: 3075 30761) ACPI CA Core Subsystem: 3077 3078Enhanced the implementation of the "serialized mode" of the interpreter 3079(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 3080specified, instead of creating a serialization semaphore per control method, 3081the interpreter lock is simply no longer released before a blocking 3082operation during control method execution. This effectively makes the AML 3083Interpreter single-threaded. The overhead of a semaphore per-method is 3084eliminated. 3085 3086Fixed a regression where an error was no longer emitted if a control method 3087attempts to create 2 objects of the same name. This once again returns 3088AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that 3089will dynamically serialize the control method to possible prevent future 3090errors. (BZ 440) 3091 3092Integrated a fix for a problem with PCI Express HID detection in the PCI 3093Config Space setup procedure. (BZ 7145) 3094 3095Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 3096AcpiHwInitialize function - the FADT registers are now validated when the 3097table is loaded. 3098 3099Added two new warnings during FADT verification - 1) if the FADT is larger 3100than the largest known FADT version, and 2) if there is a mismatch between a 310132-bit block address and the 64-bit X counterpart (when both are non-zero.) 3102 3103Example Code and Data Size: These are the sizes for the OS-independent 3104acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3105debug version of the code includes the debug output trace mechanism and has 3106a much larger code and data size. 3107 3108 Previous Release: 3109 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 3110 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 3111 Current Release: 3112 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 3113 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 3114 3115 31162) iASL Compiler/Disassembler and Tools: 3117 3118Fixed a problem with the implementation of the Switch() operator where the 3119temporary variable was declared too close to the actual Switch, instead of 3120at method level. This could cause a problem if the Switch() operator is 3121within a while loop, causing an error on the second iteration. (BZ 460) 3122 3123Disassembler - fix for error emitted for unknown type for target of scope 3124operator. Now, ignore it and continue. 3125 3126Disassembly of an FADT now verifies the input FADT and reports any errors 3127found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 3128 3129Disassembly of raw data buffers with byte initialization data now prefixes 3130each output line with the current buffer offset. 3131 3132Disassembly of ASF! table now includes all variable-length data fields at 3133the end of some of the subtables. 3134 3135The disassembler now emits a comment if a buffer appears to be a 3136ResourceTemplate, but cannot be disassembled as such because the EndTag does 3137not appear at the very end of the buffer. 3138 3139AcpiExec - Added the "-t" command line option to enable the serialized mode 3140of the AML interpreter. 3141 3142---------------------------------------- 314331 August 2006. Summary of changes for version 20060831: 3144 31451) ACPI CA Core Subsystem: 3146 3147Miscellaneous fixes for the Table Manager: 3148- Correctly initialize internal common FADT for all 64-bit "X" fields 3149- Fixed a couple table mapping issues during table load 3150- Fixed a couple alignment issues for IA64 3151- Initialize input array to zero in AcpiInitializeTables 3152- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 3153AcpiGetTableByIndex 3154 3155Change for GPE support: when a "wake" GPE is received, all wake GPEs are now 3156immediately disabled to prevent the waking GPE from firing again and to 3157prevent other wake GPEs from interrupting the wake process. 3158 3159Added the AcpiGpeCount global that tracks the number of processed GPEs, to 3160be used for debugging systems with a large number of ACPI interrupts. 3161 3162Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 3163both the ACPICA headers and the disassembler. 3164 3165Example Code and Data Size: These are the sizes for the OS-independent 3166acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3167debug version of the code includes the debug output trace mechanism and has 3168a much larger code and data size. 3169 3170 Previous Release: 3171 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 3172 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 3173 Current Release: 3174 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 3175 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 3176 3177 31782) iASL Compiler/Disassembler and Tools: 3179 3180Disassembler support for the DMAR ACPI table. 3181 3182---------------------------------------- 318323 August 2006. Summary of changes for version 20060823: 3184 31851) ACPI CA Core Subsystem: 3186 3187The Table Manager component has been completely redesigned and 3188reimplemented. The new design is much simpler, and reduces the overall code 3189and data size of the kernel-resident ACPICA by approximately 5%. Also, it is 3190now possible to obtain the ACPI tables very early during kernel 3191initialization, even before dynamic memory management is initialized. 3192(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 3193 3194Obsolete ACPICA interfaces: 3195 3196- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init 3197time). 3198- AcpiLoadTable: Not needed. 3199- AcpiUnloadTable: Not needed. 3200 3201New ACPICA interfaces: 3202 3203- AcpiInitializeTables: Must be called before the table manager can be used. 3204- AcpiReallocateRootTable: Used to transfer the root table to dynamically 3205allocated memory after it becomes available. 3206- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 3207in the RSDT/XSDT. 3208 3209Other ACPICA changes: 3210 3211- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use 3212AcpiOsUnmapMemory to free this mapping. 3213- AcpiGetTable returns the actual mapped table. The mapping is managed 3214internally and must not be deleted by the caller. Use of this interface 3215causes no additional dynamic memory allocation. 3216- AcpiFindRootPointer: Support for physical addressing has been eliminated, 3217it appeared to be unused. 3218- The interface to AcpiOsMapMemory has changed to be consistent with the 3219other allocation interfaces. 3220- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary 3221parameters. 3222- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64- 3223bit platforms. Was previously 64 bits on all platforms. 3224- The interface to the ACPI Global Lock acquire/release macros have changed 3225slightly since ACPICA no longer keeps a local copy of the FACS with a 3226constructed pointer to the actual global lock. 3227 3228Porting to the new table manager: 3229 3230- AcpiInitializeTables: Must be called once, and can be called anytime 3231during the OS initialization process. It allows the host to specify an area 3232of memory to be used to store the internal version of the RSDT/XSDT (root 3233table). This allows the host to access ACPI tables before memory management 3234is initialized and running. 3235- AcpiReallocateRootTable: Can be called after memory management is running 3236to copy the root table to a dynamically allocated array, freeing up the 3237scratch memory specified in the call to AcpiInitializeTables. 3238- AcpiSubsystemInitialize: This existing interface is independent of the 3239Table Manager, and does not have to be called before the Table Manager can 3240be used, it only must be called before the rest of ACPICA can be used. 3241- ACPI Tables: Some changes have been made to the names and structure of the 3242actbl.h and actbl1.h header files and may require changes to existing code. 3243For example, bitfields have been completely removed because of their lack of 3244portability across C compilers. 3245- Update interfaces to the Global Lock acquire/release macros if local 3246versions are used. (see acwin.h) 3247 3248Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 3249 3250New files: tbfind.c 3251 3252Example Code and Data Size: These are the sizes for the OS-independent 3253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3254debug version of the code includes the debug output trace mechanism and has 3255a much larger code and data size. 3256 3257 Previous Release: 3258 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 3259 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 3260 Current Release: 3261 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 3262 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 3263 3264 32652) iASL Compiler/Disassembler and Tools: 3266 3267No changes for this release. 3268 3269---------------------------------------- 327021 July 2006. Summary of changes for version 20060721: 3271 32721) ACPI CA Core Subsystem: 3273 3274The full source code for the ASL test suite used to validate the iASL 3275compiler and the ACPICA core subsystem is being released with the ACPICA 3276source for the first time. The source is contained in a separate package and 3277consists of over 1100 files that exercise all ASL/AML operators. The package 3278should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 3279Suietov) 3280 3281Completed a new design and implementation for support of the ACPI Global 3282Lock. On the OS side, the global lock is now treated as a standard AML 3283mutex. Previously, multiple OS threads could "acquire" the global lock 3284simultaneously. However, this could cause the BIOS to be starved out of the 3285lock - especially in cases such as the Embedded Controller driver where 3286there is a tight coupling between the OS and the BIOS. 3287 3288Implemented an optimization for the ACPI Global Lock interrupt mechanism. 3289The Global Lock interrupt handler no longer queues the execution of a 3290separate thread to signal the global lock semaphore. Instead, the semaphore 3291is signaled directly from the interrupt handler. 3292 3293Implemented support within the AML interpreter for package objects that 3294contain a larger AML length (package list length) than the package element 3295count. In this case, the length of the package is truncated to match the 3296package element count. Some BIOS code apparently modifies the package length 3297on the fly, and this change supports this behavior. Provides compatibility 3298with the MS AML interpreter. (With assistance from Fiodor Suietov) 3299 3300Implemented a temporary fix for the BankValue parameter of a Bank Field to 3301support all constant values, now including the Zero and One opcodes. 3302Evaluation of this parameter must eventually be converted to a full TermArg 3303evaluation. A not-implemented error is now returned (temporarily) for non- 3304constant values for this parameter. 3305 3306Fixed problem reports (Fiodor Suietov) integrated: 3307- Fix for premature object deletion after CopyObject on Operation Region (BZ 3308350) 3309 3310Example Code and Data Size: These are the sizes for the OS-independent 3311acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3312debug version of the code includes the debug output trace mechanism and has 3313a much larger code and data size. 3314 3315 Previous Release: 3316 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 3317 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 3318 Current Release: 3319 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 3320 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 3321 3322 33232) iASL Compiler/Disassembler and Tools: 3324 3325No changes for this release. 3326 3327---------------------------------------- 332807 July 2006. Summary of changes for version 20060707: 3329 33301) ACPI CA Core Subsystem: 3331 3332Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 3333that do not allow the initialization of address pointers within packed 3334structures - even though the hardware itself may support misaligned 3335transfers. Some of the debug data structures are packed by default to 3336minimize size. 3337 3338Added an error message for the case where AcpiOsGetThreadId() returns zero. 3339A non-zero value is required by the core ACPICA code to ensure the proper 3340operation of AML mutexes and recursive control methods. 3341 3342The DSDT is now the only ACPI table that determines whether the AML 3343interpreter is in 32-bit or 64-bit mode. Not really a functional change, but 3344the hooks for per-table 32/64 switching have been removed from the code. A 3345clarification to the ACPI specification is forthcoming in ACPI 3.0B. 3346 3347Fixed a possible leak of an OwnerID in the error path of 3348AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 3349deletion to a single place in AcpiTbUninstallTable to correct possible leaks 3350when using the AcpiTbDeleteTablesByType interface (with assistance from 3351Lance Ortiz.) 3352 3353Fixed a problem with Serialized control methods where the semaphore 3354associated with the method could be over-signaled after multiple method 3355invocations. 3356 3357Fixed two issues with the locking of the internal namespace data structure. 3358Both the Unload() operator and AcpiUnloadTable interface now lock the 3359namespace during the namespace deletion associated with the table unload 3360(with assistance from Linn Crosetto.) 3361 3362Fixed problem reports (Valery Podrezov) integrated: 3363- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 3364 3365Fixed problem reports (Fiodor Suietov) integrated: 3366- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 3367- On Address Space handler deletion, needless deactivation call (BZ 374) 3368- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375) 3369- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone 3370(BZ 376) 3371- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 3372- Minimum Length of RSDT should be validated (BZ 379) 3373- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 3374Handler (BZ (380) 3375- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded 3376(BZ 381) 3377 3378Example Code and Data Size: These are the sizes for the OS-independent 3379acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3380debug version of the code includes the debug output trace mechanism and has 3381a much larger code and data size. 3382 3383 Previous Release: 3384 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 3385 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 3386 Current Release: 3387 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 3388 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 3389 3390 33912) iASL Compiler/Disassembler and Tools: 3392 3393Fixed problem reports: 3394Compiler segfault when ASL contains a long (>1024) String declaration (BZ 3395436) 3396 3397---------------------------------------- 339823 June 2006. Summary of changes for version 20060623: 3399 34001) ACPI CA Core Subsystem: 3401 3402Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 3403allows the type to be customized to the host OS for improved efficiency 3404(since a spinlock is usually a very small object.) 3405 3406Implemented support for "ignored" bits in the ACPI registers. According to 3407the ACPI specification, these bits should be preserved when writing the 3408registers via a read/modify/write cycle. There are 3 bits preserved in this 3409manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 3410 3411Implemented the initial deployment of new OSL mutex interfaces. Since some 3412host operating systems have separate mutex and semaphore objects, this 3413feature was requested. The base code now uses mutexes (and the new mutex 3414interfaces) wherever a binary semaphore was used previously. However, for 3415the current release, the mutex interfaces are defined as macros to map them 3416to the existing semaphore interfaces. Therefore, no OSL changes are required 3417at this time. (See acpiosxf.h) 3418 3419Fixed several problems with the support for the control method SyncLevel 3420parameter. The SyncLevel now works according to the ACPI specification and 3421in concert with the Mutex SyncLevel parameter, since the current SyncLevel 3422is a property of the executing thread. Mutual exclusion for control methods 3423is now implemented with a mutex instead of a semaphore. 3424 3425Fixed three instances of the use of the C shift operator in the bitfield 3426support code (exfldio.c) to avoid the use of a shift value larger than the 3427target data width. The behavior of C compilers is undefined in this case and 3428can cause unpredictable results, and therefore the case must be detected and 3429avoided. (Fiodor Suietov) 3430 3431Added an info message whenever an SSDT or OEM table is loaded dynamically 3432via the Load() or LoadTable() ASL operators. This should improve debugging 3433capability since it will show exactly what tables have been loaded (beyond 3434the tables present in the RSDT/XSDT.) 3435 3436Example Code and Data Size: These are the sizes for the OS-independent 3437acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3438debug version of the code includes the debug output trace mechanism and has 3439a much larger code and data size. 3440 3441 Previous Release: 3442 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 3443 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 3444 Current Release: 3445 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 3446 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 3447 3448 34492) iASL Compiler/Disassembler and Tools: 3450 3451No changes for this release. 3452 3453---------------------------------------- 345408 June 2006. Summary of changes for version 20060608: 3455 34561) ACPI CA Core Subsystem: 3457 3458Converted the locking mutex used for the ACPI hardware to a spinlock. This 3459change should eliminate all problems caused by attempting to acquire a 3460semaphore at interrupt level, and it means that all ACPICA external 3461interfaces that directly access the ACPI hardware can be safely called from 3462interrupt level. OSL code that implements the semaphore interfaces should be 3463able to eliminate any workarounds for being called at interrupt level. 3464 3465Fixed a regression introduced in 20060526 where the ACPI device 3466initialization could be prematurely aborted with an AE_NOT_FOUND if a device 3467did not have an optional _INI method. 3468 3469Fixed an IndexField issue where a write to the Data Register should be 3470limited in size to the AccessSize (width) of the IndexField itself. (BZ 433, 3471Fiodor Suietov) 3472 3473Fixed problem reports (Valery Podrezov) integrated: 3474- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 3475 3476Fixed problem reports (Fiodor Suietov) integrated: 3477- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 3478 3479Removed four global mutexes that were obsolete and were no longer being 3480used. 3481 3482Example Code and Data Size: These are the sizes for the OS-independent 3483acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3484debug version of the code includes the debug output trace mechanism and has 3485a much larger code and data size. 3486 3487 Previous Release: 3488 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 3489 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 3490 Current Release: 3491 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 3492 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 3493 3494 34952) iASL Compiler/Disassembler and Tools: 3496 3497Fixed a fault when using -g option (get tables from registry) on Windows 3498machines. 3499 3500Fixed problem reports integrated: 3501- Generate error if CreateField NumBits parameter is zero. (BZ 405) 3502- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 3503Suietov) 3504- Global table revision override (-r) is ignored (BZ 413) 3505 3506---------------------------------------- 350726 May 2006. Summary of changes for version 20060526: 3508 35091) ACPI CA Core Subsystem: 3510 3511Restructured, flattened, and simplified the internal interfaces for 3512namespace object evaluation - resulting in smaller code, less CPU stack use, 3513and fewer interfaces. (With assistance from Mikhail Kouzmich) 3514 3515Fixed a problem with the CopyObject operator where the first parameter was 3516not typed correctly for the parser, interpreter, compiler, and disassembler. 3517Caused various errors and unexpected behavior. 3518 3519Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 3520produced incorrect results with some C compilers. Since the behavior of C 3521compilers when the shift value is larger than the datatype width is 3522apparently not well defined, the interpreter now detects this condition and 3523simply returns zero as expected in all such cases. (BZ 395) 3524 3525Fixed problem reports (Valery Podrezov) integrated: 3526- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 3527- Allow interpreter to handle nested method declarations (BZ 5361) 3528 3529Fixed problem reports (Fiodor Suietov) integrated: 3530- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355) 3531- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356) 3532- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 3533- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 3534- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 3535- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 3536- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 3537- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 3538- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365) 3539- Status of the Global Initialization Handler call not used (BZ 366) 3540- Incorrect object parameter to Global Initialization Handler (BZ 367) 3541 3542Example Code and Data Size: These are the sizes for the OS-independent 3543acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3544debug version of the code includes the debug output trace mechanism and has 3545a much larger code and data size. 3546 3547 Previous Release: 3548 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 3549 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 3550 Current Release: 3551 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 3552 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 3553 3554 35552) iASL Compiler/Disassembler and Tools: 3556 3557Modified the parser to allow the names IO, DMA, and IRQ to be used as 3558namespace identifiers with no collision with existing resource descriptor 3559macro names. This provides compatibility with other ASL compilers and is 3560most useful for disassembly/recompilation of existing tables without parse 3561errors. (With assistance from Thomas Renninger) 3562 3563Disassembler: fixed an incorrect disassembly problem with the 3564DataTableRegion and CopyObject operators. Fixed a possible fault during 3565disassembly of some Alias operators. 3566 3567---------------------------------------- 356812 May 2006. Summary of changes for version 20060512: 3569 35701) ACPI CA Core Subsystem: 3571 3572Replaced the AcpiOsQueueForExecution interface with a new interface named 3573AcpiOsExecute. The major difference is that the new interface does not have 3574a Priority parameter, this appeared to be useless and has been replaced by a 3575Type parameter. The Type tells the host what type of execution is being 3576requested, such as global lock handler, notify handler, GPE handler, etc. 3577This allows the host to queue and execute the request as appropriate for the 3578request type, possibly using different work queues and different priorities 3579for the various request types. This enables fixes for multithreading 3580deadlock problems such as BZ #5534, and will require changes to all existing 3581OS interface layers. (Alexey Starikovskiy and Bob Moore) 3582 3583Fixed a possible memory leak associated with the support for the so-called 3584"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 3585Suietov) 3586 3587Fixed a problem with the Load() operator where a table load from an 3588operation region could overwrite an internal table buffer by up to 7 bytes 3589and cause alignment faults on IPF systems. (With assistance from Luming Yu) 3590 3591Example Code and Data Size: These are the sizes for the OS-independent 3592acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3593debug version of the code includes the debug output trace mechanism and has 3594a much larger code and data size. 3595 3596 Previous Release: 3597 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 3598 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 3599 Current Release: 3600 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 3601 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 3602 3603 3604 36052) iASL Compiler/Disassembler and Tools: 3606 3607Disassembler: Implemented support to cross reference the internal namespace 3608and automatically generate ASL External() statements for symbols not defined 3609within the current table being disassembled. This will simplify the 3610disassembly and recompilation of interdependent tables such as SSDTs since 3611these statements will no longer have to be added manually. 3612 3613Disassembler: Implemented experimental support to automatically detect 3614invocations of external control methods and generate appropriate External() 3615statements. This is problematic because the AML cannot be correctly parsed 3616until the number of arguments for each control method is known. Currently, 3617standalone method invocations and invocations as the source operand of a 3618Store() statement are supported. 3619 3620Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 3621LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 3622LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 3623more readable and likely closer to the original ASL source. 3624 3625---------------------------------------- 362621 April 2006. Summary of changes for version 20060421: 3627 36281) ACPI CA Core Subsystem: 3629 3630Removed a device initialization optimization introduced in 20051216 where 3631the _STA method was not run unless an _INI was also present for the same 3632device. This optimization could cause problems because it could allow _INI 3633methods to be run within a not-present device subtree. (If a not-present 3634device had no _INI, _STA would not be run, the not-present status would not 3635be discovered, and the children of the device would be incorrectly 3636traversed.) 3637 3638Implemented a new _STA optimization where namespace subtrees that do not 3639contain _INI are identified and ignored during device initialization. 3640Selectively running _STA can significantly improve boot time on large 3641machines (with assistance from Len Brown.) 3642 3643Implemented support for the device initialization case where the returned 3644_STA flags indicate a device not-present but functioning. In this case, _INI 3645is not run, but the device children are examined for presence, as per the 3646ACPI specification. 3647 3648Implemented an additional change to the IndexField support in order to 3649conform to MS behavior. The value written to the Index Register is not 3650simply a byte offset, it is a byte offset in units of the access width of 3651the parent Index Field. (Fiodor Suietov) 3652 3653Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 3654interface is called during the creation of all AML operation regions, and 3655allows the host OS to exert control over what addresses it will allow the 3656AML code to access. Operation Regions whose addresses are disallowed will 3657cause a runtime exception when they are actually accessed (will not affect 3658or abort table loading.) See oswinxf or osunixxf for an example 3659implementation. 3660 3661Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 3662interface allows the host OS to match the various "optional" 3663interface/behavior strings for the _OSI predefined control method as 3664appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 3665for an example implementation. 3666 3667Restructured and corrected various problems in the exception handling code 3668paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 3669(with assistance from Takayoshi Kochi.) 3670 3671Modified the Linux source converter to ignore quoted string literals while 3672converting identifiers from mixed to lower case. This will correct problems 3673with the disassembler and other areas where such strings must not be 3674modified. 3675 3676The ACPI_FUNCTION_* macros no longer require quotes around the function 3677name. This allows the Linux source converter to convert the names, now that 3678the converter ignores quoted strings. 3679 3680Example Code and Data Size: These are the sizes for the OS-independent 3681acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3682debug version of the code includes the debug output trace mechanism and has 3683a much larger code and data size. 3684 3685 Previous Release: 3686 3687 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 3688 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 3689 Current Release: 3690 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 3691 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 3692 3693 36942) iASL Compiler/Disassembler and Tools: 3695 3696Implemented 3 new warnings for iASL, and implemented multiple warning levels 3697(w2 flag). 3698 36991) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not 3700WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 3701check for the possible timeout, a warning is issued. 3702 37032) Useless operators: If an ASL operator does not specify an optional target 3704operand and it also does not use the function return value from the 3705operator, a warning is issued since the operator effectively does nothing. 3706 37073) Unreferenced objects: If a namespace object is created, but never 3708referenced, a warning is issued. This is a warning level 2 since there are 3709cases where this is ok, such as when a secondary table is loaded that uses 3710the unreferenced objects. Even so, care is taken to only flag objects that 3711don't look like they will ever be used. For example, the reserved methods 3712(starting with an underscore) are usually not referenced because it is 3713expected that the OS will invoke them. 3714 3715---------------------------------------- 371631 March 2006. Summary of changes for version 20060331: 3717 37181) ACPI CA Core Subsystem: 3719 3720Implemented header file support for the following additional ACPI tables: 3721ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support, 3722all current and known ACPI tables are now defined in the ACPICA headers and 3723are available for use by device drivers and other software. 3724 3725Implemented support to allow tables that contain ACPI names with invalid 3726characters to be loaded. Previously, this would cause the table load to 3727fail, but since there are several known cases of such tables on existing 3728machines, this change was made to enable ACPI support for them. Also, this 3729matches the behavior of the Microsoft ACPI implementation. 3730 3731Fixed a couple regressions introduced during the memory optimization in the 373220060317 release. The namespace node definition required additional 3733reorganization and an internal datatype that had been changed to 8-bit was 3734restored to 32-bit. (Valery Podrezov) 3735 3736Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 3737could be passed through to AcpiOsReleaseObject which is unexpected. Such 3738null pointers are now trapped and ignored, matching the behavior of the 3739previous implementation before the deployment of AcpiOsReleaseObject. 3740(Valery Podrezov, Fiodor Suietov) 3741 3742Fixed a memory mapping leak during the deletion of a SystemMemory operation 3743region where a cached memory mapping was not deleted. This became a 3744noticeable problem for operation regions that are defined within frequently 3745used control methods. (Dana Meyers) 3746 3747Reorganized the ACPI table header files into two main files: one for the 3748ACPI tables consumed by the ACPICA core, and another for the miscellaneous 3749ACPI tables that are consumed by the drivers and other software. The various 3750FADT definitions were merged into one common section and three different 3751tables (ACPI 1.0, 1.0+, and 2.0) 3752 3753Example Code and Data Size: These are the sizes for the OS-independent 3754acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 3755debug version of the code includes the debug output trace mechanism and has 3756a much larger code and data size. 3757 3758 Previous Release: 3759 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 3760 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 3761 Current Release: 3762 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 3763 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 3764 3765 37662) iASL Compiler/Disassembler and Tools: 3767 3768Disassembler: Implemented support to decode and format all non-AML ACPI 3769tables (tables other than DSDTs and SSDTs.) This includes the new tables 3770added to the ACPICA headers, therefore all current and known ACPI tables are 3771supported. 3772 3773Disassembler: The change to allow ACPI names with invalid characters also 3774enables the disassembly of such tables. Invalid characters within names are 3775changed to '*' to make the name printable; the iASL compiler will still 3776generate an error for such names, however, since this is an invalid ACPI 3777character. 3778 3779Implemented an option for AcpiXtract (-a) to extract all tables found in the 3780input file. The default invocation extracts only the DSDTs and SSDTs. 3781 3782Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 3783makefile for the AcpiXtract utility. 3784 3785---------------------------------------- 378617 March 2006. Summary of changes for version 20060317: 3787 37881) ACPI CA Core Subsystem: 3789 3790Implemented the use of a cache object for all internal namespace nodes. 3791Since there are about 1000 static nodes in a typical system, this will 3792decrease memory use for cache implementations that minimize per-allocation 3793overhead (such as a slab allocator.) 3794 3795Removed the reference count mechanism for internal namespace nodes, since it 3796was deemed unnecessary. This reduces the size of each namespace node by 3797about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 3798and 32 bytes for the 64-bit case. 3799 3800Optimized several internal data structures to reduce object size on 64-bit 3801platforms by packing data within the 64-bit alignment. This includes the 3802frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 3803instances corresponding to the namespace objects. 3804 3805Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 3806and "Windows 2006". 3807 3808Split the allocation tracking mechanism out to a separate file, from 3809utalloc.c to uttrack.c. This mechanism appears to be only useful for 3810application-level code. Kernels may wish to not include uttrack.c in 3811distributions. 3812 3813Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated 3814code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 3815macros.) 3816 3817Code and Data Size: These are the sizes for the acpica.lib produced by the 3818Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 3819driver or OSPM code. The debug version of the code includes the debug output 3820trace mechanism and has a much larger code and data size. Note that these 3821values will vary depending on the efficiency of the compiler and the 3822compiler options used during generation. 3823 3824 Previous Release: 3825 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 3826 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 3827 Current Release: 3828 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 3829 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 3830 3831 38322) iASL Compiler/Disassembler and Tools: 3833 3834Implemented an ANSI C version of the acpixtract utility. This version will 3835automatically extract the DSDT and all SSDTs from the input acpidump text 3836file and dump the binary output to separate files. It can also display a 3837summary of the input file including the headers for each table found and 3838will extract any single ACPI table, with any signature. (See 3839source/tools/acpixtract) 3840 3841---------------------------------------- 384210 March 2006. Summary of changes for version 20060310: 3843 38441) ACPI CA Core Subsystem: 3845 3846Tagged all external interfaces to the subsystem with the new 3847ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 3848kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 3849macro. The default definition is NULL. 3850 3851Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 3852This allows the host to define this as necessary to simplify kernel 3853integration. The default definition is ACPI_NATIVE_UINT. 3854 3855Fixed two interpreter problems related to error processing, the deletion of 3856objects, and placing invalid pointers onto the internal operator result 3857stack. BZ 6028, 6151 (Valery Podrezov) 3858 3859Increased the reference count threshold where a warning is emitted for large 3860reference counts in order to eliminate unnecessary warnings on systems with 3861large namespaces (especially 64-bit.) Increased the value from 0x400 to 38620x800. 3863 3864Due to universal disagreement as to the meaning of the 'c' in the calloc() 3865function, the ACPI_MEM_CALLOCATE macro has been renamed to 3866ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 3867ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 3868ACPI_FREE. 3869 3870Code and Data Size: These are the sizes for the acpica.lib produced by the 3871Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 3872driver or OSPM code. The debug version of the code includes the debug output 3873trace mechanism and has a much larger code and data size. Note that these 3874values will vary depending on the efficiency of the compiler and the 3875compiler options used during generation. 3876 3877 Previous Release: 3878 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 3879 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 3880 Current Release: 3881 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 3882 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 3883 3884 38852) iASL Compiler/Disassembler: 3886 3887Disassembler: implemented support for symbolic resource descriptor 3888references. If a CreateXxxxField operator references a fixed offset within a 3889resource descriptor, a name is assigned to the descriptor and the offset is 3890translated to the appropriate resource tag and pathname. The addition of 3891this support brings the disassembled code very close to the original ASL 3892source code and helps eliminate run-time errors when the disassembled code 3893is modified (and recompiled) in such a way as to invalidate the original 3894fixed offsets. 3895 3896Implemented support for a Descriptor Name as the last parameter to the ASL 3897Register() macro. This parameter was inadvertently left out of the ACPI 3898specification, and will be added for ACPI 3.0b. 3899 3900Fixed a problem where the use of the "_OSI" string (versus the full path 3901"\_OSI") caused an internal compiler error. ("No back ptr to op") 3902 3903Fixed a problem with the error message that occurs when an invalid string is 3904used for a _HID object (such as one with an embedded asterisk: "*PNP010A".) 3905The correct message is now displayed. 3906 3907---------------------------------------- 390817 February 2006. Summary of changes for version 20060217: 3909 39101) ACPI CA Core Subsystem: 3911 3912Implemented a change to the IndexField support to match the behavior of the 3913Microsoft AML interpreter. The value written to the Index register is now a 3914byte offset, no longer an index based upon the width of the Data register. 3915This should fix IndexField problems seen on some machines where the Data 3916register is not exactly one byte wide. The ACPI specification will be 3917clarified on this point. 3918 3919Fixed a problem where several resource descriptor types could overrun the 3920internal descriptor buffer due to size miscalculation: VendorShort, 3921VendorLong, and Interrupt. This was noticed on IA64 machines, but could 3922affect all platforms. 3923 3924Fixed a problem where individual resource descriptors were misaligned within 3925the internal buffer, causing alignment faults on IA64 platforms. 3926 3927Code and Data Size: These are the sizes for the acpica.lib produced by the 3928Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 3929driver or OSPM code. The debug version of the code includes the debug output 3930trace mechanism and has a much larger code and data size. Note that these 3931values will vary depending on the efficiency of the compiler and the 3932compiler options used during generation. 3933 3934 Previous Release: 3935 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 3936 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 3937 Current Release: 3938 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 3939 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 3940 3941 39422) iASL Compiler/Disassembler: 3943 3944Implemented support for new reserved names: _WDG and _WED are Microsoft 3945extensions for Windows Instrumentation Management, _TDL is a new ACPI- 3946defined method (Throttling Depth Limit.) 3947 3948Fixed a problem where a zero-length VendorShort or VendorLong resource 3949descriptor was incorrectly emitted as a descriptor of length one. 3950 3951---------------------------------------- 395210 February 2006. Summary of changes for version 20060210: 3953 39541) ACPI CA Core Subsystem: 3955 3956Removed a couple of extraneous ACPI_ERROR messages that appeared during 3957normal execution. These became apparent after the conversion from 3958ACPI_DEBUG_PRINT. 3959 3960Fixed a problem where the CreateField operator could hang if the BitIndex or 3961NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 3962 3963Fixed a problem where a DeRefOf operation on a buffer object incorrectly 3964failed with an exception. This also fixes a couple of related RefOf and 3965DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 3966 3967Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of 3968AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ 39695480) 3970 3971Implemented a memory cleanup at the end of the execution of each iteration 3972of an AML While() loop, preventing the accumulation of outstanding objects. 3973(Valery Podrezov, BZ 5427) 3974 3975Eliminated a chunk of duplicate code in the object resolution code. (Valery 3976Podrezov, BZ 5336) 3977 3978Fixed several warnings during the 64-bit code generation. 3979 3980The AcpiSrc source code conversion tool now inserts one line of whitespace 3981after an if() statement that is followed immediately by a comment, improving 3982readability of the Linux code. 3983 3984Code and Data Size: The current and previous library sizes for the core 3985subsystem are shown below. These are the code and data sizes for the 3986acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3987values do not include any ACPI driver or OSPM code. The debug version of the 3988code includes the debug output trace mechanism and has a much larger code 3989and data size. Note that these values will vary depending on the efficiency 3990of the compiler and the compiler options used during generation. 3991 3992 Previous Release: 3993 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 3994 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 3995 Current Release: 3996 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 3997 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 3998 3999 40002) iASL Compiler/Disassembler: 4001 4002Fixed a problem with the disassembly of a BankField operator with a complex 4003expression for the BankValue parameter. 4004 4005---------------------------------------- 400627 January 2006. Summary of changes for version 20060127: 4007 40081) ACPI CA Core Subsystem: 4009 4010Implemented support in the Resource Manager to allow unresolved namestring 4011references within resource package objects for the _PRT method. This support 4012is in addition to the previously implemented unresolved reference support 4013within the AML parser. If the interpreter slack mode is enabled, these 4014unresolved references will be passed through to the caller as a NULL package 4015entry. 4016 4017Implemented and deployed new macros and functions for error and warning 4018messages across the subsystem. These macros are simpler and generate less 4019code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 4020ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 4021macros remain defined to allow ACPI drivers time to migrate to the new 4022macros. 4023 4024Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 4025Acquire/Release Lock OSL interfaces. 4026 4027Fixed a problem where Alias ASL operators are sometimes not correctly 4028resolved, in both the interpreter and the iASL compiler. 4029 4030Fixed several problems with the implementation of the ConcatenateResTemplate 4031ASL operator. As per the ACPI specification, zero length buffers are now 4032treated as a single EndTag. One-length buffers always cause a fatal 4033exception. Non-zero length buffers that do not end with a full 2-byte EndTag 4034cause a fatal exception. 4035 4036Fixed a possible structure overwrite in the AcpiGetObjectInfo external 4037interface. (With assistance from Thomas Renninger) 4038 4039Code and Data Size: The current and previous library sizes for the core 4040subsystem are shown below. These are the code and data sizes for the 4041acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4042values do not include any ACPI driver or OSPM code. The debug version of the 4043code includes the debug output trace mechanism and has a much larger code 4044and data size. Note that these values will vary depending on the efficiency 4045of the compiler and the compiler options used during generation. 4046 4047 Previous Release: 4048 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 4049 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 4050 Current Release: 4051 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 4052 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 4053 4054 40552) iASL Compiler/Disassembler: 4056 4057Fixed an internal error that was generated for any forward references to ASL 4058Alias objects. 4059 4060---------------------------------------- 406113 January 2006. Summary of changes for version 20060113: 4062 40631) ACPI CA Core Subsystem: 4064 4065Added 2006 copyright to all module headers and signons. This affects 4066virtually every file in the ACPICA core subsystem, iASL compiler, and the 4067utilities. 4068 4069Enhanced the ACPICA error reporting in order to simplify user migration to 4070the non-debug version of ACPICA. Replaced all instances of the 4071ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 4072levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 4073respectively. This preserves all error and warning messages in the non-debug 4074version of the ACPICA code (this has been referred to as the "debug lite" 4075option.) Over 200 cases were converted to create a total of over 380 4076error/warning messages across the ACPICA code. This increases the code and 4077data size of the default non-debug version of the code somewhat (about 13K), 4078but all error/warning reporting may be disabled if desired (and code 4079eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 4080configuration option. The size of the debug version of ACPICA remains about 4081the same. 4082 4083Fixed a memory leak within the AML Debugger "Set" command. One object was 4084not properly deleted for every successful invocation of the command. 4085 4086Code and Data Size: The current and previous library sizes for the core 4087subsystem are shown below. These are the code and data sizes for the 4088acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4089values do not include any ACPI driver or OSPM code. The debug version of the 4090code includes the debug output trace mechanism and has a much larger code 4091and data size. Note that these values will vary depending on the efficiency 4092of the compiler and the compiler options used during generation. 4093 4094 Previous Release: 4095 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 4096 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 4097 Current Release: 4098 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 4099 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 4100 4101 41022) iASL Compiler/Disassembler: 4103 4104The compiler now officially supports the ACPI 3.0a specification that was 4105released on December 30, 2005. (Specification is available at www.acpi.info) 4106 4107---------------------------------------- 410816 December 2005. Summary of changes for version 20051216: 4109 41101) ACPI CA Core Subsystem: 4111 4112Implemented optional support to allow unresolved names within ASL Package 4113objects. A null object is inserted in the package when a named reference 4114cannot be located in the current namespace. Enabled via the interpreter 4115slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 4116that contain such code. 4117 4118Implemented an optimization to the initialization sequence that can improve 4119boot time. During ACPI device initialization, the _STA method is now run if 4120and only if the _INI method exists. The _STA method is used to determine if 4121the device is present; An _INI can only be run if _STA returns present, but 4122it is a waste of time to run the _STA method if the _INI does not exist. 4123(Prototype and assistance from Dong Wei) 4124 4125Implemented use of the C99 uintptr_t for the pointer casting macros if it is 4126available in the current compiler. Otherwise, the default (void *) cast is 4127used as before. 4128 4129Fixed some possible memory leaks found within the execution path of the 4130Break, Continue, If, and CreateField operators. (Valery Podrezov) 4131 4132Fixed a problem introduced in the 20051202 release where an exception is 4133generated during method execution if a control method attempts to declare 4134another method. 4135 4136Moved resource descriptor string constants that are used by both the AML 4137disassembler and AML debugger to the common utilities directory so that 4138these components are independent. 4139 4140Implemented support in the AcpiExec utility (-e switch) to globally ignore 4141exceptions during control method execution (method is not aborted.) 4142 4143Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 4144generation. 4145 4146Code and Data Size: The current and previous library sizes for the core 4147subsystem are shown below. These are the code and data sizes for the 4148acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4149values do not include any ACPI driver or OSPM code. The debug version of the 4150code includes the debug output trace mechanism and has a much larger code 4151and data size. Note that these values will vary depending on the efficiency 4152of the compiler and the compiler options used during generation. 4153 4154 Previous Release: 4155 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 4156 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 4157 Current Release: 4158 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 4159 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 4160 4161 41622) iASL Compiler/Disassembler: 4163 4164Fixed a problem where a CPU stack overflow fault could occur if a recursive 4165method call was made from within a Return statement. 4166 4167---------------------------------------- 416802 December 2005. Summary of changes for version 20051202: 4169 41701) ACPI CA Core Subsystem: 4171 4172Modified the parsing of control methods to no longer create namespace 4173objects during the first pass of the parse. Objects are now created only 4174during the execute phase, at the moment the namespace creation operator is 4175encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 4176should eliminate ALREADY_EXISTS exceptions seen on some machines where 4177reentrant control methods are protected by an AML mutex. The mutex will now 4178correctly block multiple threads from attempting to create the same object 4179more than once. 4180 4181Increased the number of available Owner Ids for namespace object tracking 4182from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on 4183some machines with a large number of ACPI tables (either static or dynamic). 4184 4185Fixed a problem with the AcpiExec utility where a fault could occur when the 4186-b switch (batch mode) is used. 4187 4188Enhanced the namespace dump routine to output the owner ID for each 4189namespace object. 4190 4191Code and Data Size: The current and previous library sizes for the core 4192subsystem are shown below. These are the code and data sizes for the 4193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4194values do not include any ACPI driver or OSPM code. The debug version of the 4195code includes the debug output trace mechanism and has a much larger code 4196and data size. Note that these values will vary depending on the efficiency 4197of the compiler and the compiler options used during generation. 4198 4199 Previous Release: 4200 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 4201 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 4202 Current Release: 4203 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 4204 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 4205 4206 42072) iASL Compiler/Disassembler: 4208 4209Fixed a parse error during compilation of certain Switch/Case constructs. To 4210simplify the parse, the grammar now allows for multiple Default statements 4211and this error is now detected and flagged during the analysis phase. 4212 4213Disassembler: The disassembly now includes the contents of the original 4214table header within a comment at the start of the file. This includes the 4215name and version of the original ASL compiler. 4216 4217---------------------------------------- 421817 November 2005. Summary of changes for version 20051117: 4219 42201) ACPI CA Core Subsystem: 4221 4222Fixed a problem in the AML parser where the method thread count could be 4223decremented below zero if any errors occurred during the method parse phase. 4224This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines. 4225This also fixed a related regression with the mechanism that detects and 4226corrects methods that cannot properly handle reentrancy (related to the 4227deployment of the new OwnerId mechanism.) 4228 4229Eliminated the pre-parsing of control methods (to detect errors) during 4230table load. Related to the problem above, this was causing unwind issues if 4231any errors occurred during the parse, and it seemed to be overkill. A table 4232load should not be aborted if there are problems with any single control 4233method, thus rendering this feature rather pointless. 4234 4235Fixed a problem with the new table-driven resource manager where an internal 4236buffer overflow could occur for small resource templates. 4237 4238Implemented a new external interface, AcpiGetVendorResource. This interface 4239will find and return a vendor-defined resource descriptor within a _CRS or 4240_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas. 4241 4242Removed the length limit (200) on string objects as per the upcoming ACPI 42433.0A specification. This affects the following areas of the interpreter: 1) 4244any implicit conversion of a Buffer to a String, 2) a String object result 4245of the ASL Concatentate operator, 3) the String object result of the ASL 4246ToString operator. 4247 4248Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER 4249on a semaphore object would incorrectly timeout. This allows the 4250multithreading features of the AcpiExec utility to work properly under 4251Windows. 4252 4253Updated the Linux makefiles for the iASL compiler and AcpiExec to include 4254the recently added file named "utresrc.c". 4255 4256Code and Data Size: The current and previous library sizes for the core 4257subsystem are shown below. These are the code and data sizes for the 4258acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4259values do not include any ACPI driver or OSPM code. The debug version of the 4260code includes the debug output trace mechanism and has a much larger code 4261and data size. Note that these values will vary depending on the efficiency 4262of the compiler and the compiler options used during generation. 4263 4264 Previous Release: 4265 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 4266 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 4267 Current Release: 4268 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 4269 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 4270 4271 42722) iASL Compiler/Disassembler: 4273 4274Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 4275specification. For the iASL compiler, this means that string literals within 4276the source ASL can be of any length. 4277 4278Enhanced the listing output to dump the AML code for resource descriptors 4279immediately after the ASL code for each descriptor, instead of in a block at 4280the end of the entire resource template. 4281 4282Enhanced the compiler debug output to dump the entire original parse tree 4283constructed during the parse phase, before any transforms are applied to the 4284tree. The transformed tree is dumped also. 4285 4286---------------------------------------- 428702 November 2005. Summary of changes for version 20051102: 4288 42891) ACPI CA Core Subsystem: 4290 4291Modified the subsystem initialization sequence to improve GPE support. The 4292GPE initialization has been split into two parts in order to defer execution 4293of the _PRW methods (Power Resources for Wake) until after the hardware is 4294fully initialized and the SCI handler is installed. This allows the _PRW 4295methods to access fields protected by the Global Lock. This will fix systems 4296where a NO_GLOBAL_LOCK exception has been seen during initialization. 4297 4298Converted the ACPI internal object disassemble and display code within the 4299AML debugger to fully table-driven operation, reducing code size and 4300increasing maintainability. 4301 4302Fixed a regression with the ConcatenateResTemplate() ASL operator introduced 4303in the 20051021 release. 4304 4305Implemented support for "local" internal ACPI object types within the 4306debugger "Object" command and the AcpiWalkNamespace external interfaces. 4307These local types include RegionFields, BankFields, IndexFields, Alias, and 4308reference objects. 4309 4310Moved common AML resource handling code into a new file, "utresrc.c". This 4311code is shared by both the Resource Manager and the AML Debugger. 4312 4313Code and Data Size: The current and previous library sizes for the core 4314subsystem are shown below. These are the code and data sizes for the 4315acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4316values do not include any ACPI driver or OSPM code. The debug version of the 4317code includes the debug output trace mechanism and has a much larger code 4318and data size. Note that these values will vary depending on the efficiency 4319of the compiler and the compiler options used during generation. 4320 4321 Previous Release: 4322 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 4323 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 4324 Current Release: 4325 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 4326 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 4327 4328 43292) iASL Compiler/Disassembler: 4330 4331Fixed a problem with very large initializer lists (more than 4000 elements) 4332for both Buffer and Package objects where the parse stack could overflow. 4333 4334Enhanced the pre-compile source code scan for non-ASCII characters to ignore 4335characters within comment fields. The scan is now always performed and is no 4336longer optional, detecting invalid characters within a source file 4337immediately rather than during the parse phase or later. 4338 4339Enhanced the ASL grammar definition to force early reductions on all list- 4340style grammar elements so that the overall parse stack usage is greatly 4341reduced. This should improve performance and reduce the possibility of parse 4342stack overflow. 4343 4344Eliminated all reduce/reduce conflicts in the iASL parser generation. Also, 4345with the addition of a %expected statement, the compiler generates from 4346source with no warnings. 4347 4348Fixed a possible segment fault in the disassembler if the input filename 4349does not contain a "dot" extension (Thomas Renninger). 4350 4351---------------------------------------- 435221 October 2005. Summary of changes for version 20051021: 4353 43541) ACPI CA Core Subsystem: 4355 4356Implemented support for the EM64T and other x86-64 processors. This 4357essentially entails recognizing that these processors support non-aligned 4358memory transfers. Previously, all 64-bit processors were assumed to lack 4359hardware support for non-aligned transfers. 4360 4361Completed conversion of the Resource Manager to nearly full table-driven 4362operation. Specifically, the resource conversion code (convert AML to 4363internal format and the reverse) and the debug code to dump internal 4364resource descriptors are fully table-driven, reducing code and data size and 4365improving maintainability. 4366 4367The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 4368on 64-bit processors instead of a fixed 32-bit word. (With assistance from 4369Alexey Starikovskiy) 4370 4371Implemented support within the resource conversion code for the Type- 4372Specific byte within the various ACPI 3.0 *WordSpace macros. 4373 4374Fixed some issues within the resource conversion code for the type-specific 4375flags for both Memory and I/O address resource descriptors. For Memory, 4376implemented support for the MTP and TTP flags. For I/O, split the TRS and 4377TTP flags into two separate fields. 4378 4379Code and Data Size: The current and previous library sizes for the core 4380subsystem are shown below. These are the code and data sizes for the 4381acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4382values do not include any ACPI driver or OSPM code. The debug version of the 4383code includes the debug output trace mechanism and has a much larger code 4384and data size. Note that these values will vary depending on the efficiency 4385of the compiler and the compiler options used during generation. 4386 4387 Previous Release: 4388 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 4389 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 4390 Current Release: 4391 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 4392 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 4393 4394 4395 43962) iASL Compiler/Disassembler: 4397 4398Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 4399corresponding ResourceSource string was not also present in a resource 4400descriptor declaration. This restriction caused problems with existing 4401AML/ASL code that includes the Index byte without the string. When such AML 4402was disassembled, it could not be compiled without modification. Further, 4403the modified code created a resource template with a different size than the 4404original, breaking code that used fixed offsets into the resource template 4405buffer. 4406 4407Removed a recent feature of the disassembler to ignore a lone ResourceIndex 4408byte. This byte is now emitted if present so that the exact AML can be 4409reproduced when the disassembled code is recompiled. 4410 4411Improved comments and text alignment for the resource descriptor code 4412emitted by the disassembler. 4413 4414Implemented disassembler support for the ACPI 3.0 AccessSize field within a 4415Register() resource descriptor. 4416 4417---------------------------------------- 441830 September 2005. Summary of changes for version 20050930: 4419 44201) ACPI CA Core Subsystem: 4421 4422Completed a major overhaul of the Resource Manager code - specifically, 4423optimizations in the area of the AML/internal resource conversion code. The 4424code has been optimized to simplify and eliminate duplicated code, CPU stack 4425use has been decreased by optimizing function parameters and local 4426variables, and naming conventions across the manager have been standardized 4427for clarity and ease of maintenance (this includes function, parameter, 4428variable, and struct/typedef names.) The update may force changes in some 4429driver code, depending on how resources are handled by the host OS. 4430 4431All Resource Manager dispatch and information tables have been moved to a 4432single location for clarity and ease of maintenance. One new file was 4433created, named "rsinfo.c". 4434 4435The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 4436guarantee that the argument is not evaluated twice, making them less prone 4437to macro side-effects. However, since there exists the possibility of 4438additional stack use if a particular compiler cannot optimize them (such as 4439in the debug generation case), the original macros are optionally available. 4440Note that some invocations of the return_VALUE macro may now cause size 4441mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to 4442eliminate these. (From Randy Dunlap) 4443 4444Implemented a new mechanism to enable debug tracing for individual control 4445methods. A new external interface, AcpiDebugTrace, is provided to enable 4446this mechanism. The intent is to allow the host OS to easily enable and 4447disable tracing for problematic control methods. This interface can be 4448easily exposed to a user or debugger interface if desired. See the file 4449psxface.c for details. 4450 4451AcpiUtCallocate will now return a valid pointer if a length of zero is 4452specified - a length of one is used and a warning is issued. This matches 4453the behavior of AcpiUtAllocate. 4454 4455Code and Data Size: The current and previous library sizes for the core 4456subsystem are shown below. These are the code and data sizes for the 4457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4458values do not include any ACPI driver or OSPM code. The debug version of the 4459code includes the debug output trace mechanism and has a much larger code 4460and data size. Note that these values will vary depending on the efficiency 4461of the compiler and the compiler options used during generation. 4462 4463 Previous Release: 4464 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 4465 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 4466 Current Release: 4467 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 4468 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 4469 4470 44712) iASL Compiler/Disassembler: 4472 4473A remark is issued if the effective compile-time length of a package or 4474buffer is zero. Previously, this was a warning. 4475 4476---------------------------------------- 447716 September 2005. Summary of changes for version 20050916: 4478 44791) ACPI CA Core Subsystem: 4480 4481Fixed a problem within the Resource Manager where support for the Generic 4482Register descriptor was not fully implemented. This descriptor is now fully 4483recognized, parsed, disassembled, and displayed. 4484 4485Completely restructured the Resource Manager code to utilize table-driven 4486dispatch and lookup, eliminating many of the large switch() statements. This 4487reduces overall subsystem code size and code complexity. Affects the 4488resource parsing and construction, disassembly, and debug dump output. 4489 4490Cleaned up and restructured the debug dump output for all resource 4491descriptors. Improved readability of the output and reduced code size. 4492 4493Fixed a problem where changes to internal data structures caused the 4494optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 4495 4496Code and Data Size: The current and previous library sizes for the core 4497subsystem are shown below. These are the code and data sizes for the 4498acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 4499values do not include any ACPI driver or OSPM code. The debug version of the 4500code includes the debug output trace mechanism and has a much larger code 4501and data size. Note that these values will vary depending on the efficiency 4502of the compiler and the compiler options used during generation. 4503 4504 Previous Release: 4505 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 4506 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 4507 Current Release: 4508 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 4509 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 4510 4511 45122) iASL Compiler/Disassembler: 4513 4514Updated the disassembler to automatically insert an EndDependentFn() macro 4515into the ASL stream if this macro is missing in the original AML code, 4516simplifying compilation of the resulting ASL module. 4517 4518Fixed a problem in the disassembler where a disassembled ResourceSource 4519string (within a large resource descriptor) was not surrounded by quotes and 4520not followed by a comma, causing errors when the resulting ASL module was 4521compiled. Also, escape sequences within a ResourceSource string are now 4522handled correctly (especially "\\") 4523 4524---------------------------------------- 452502 September 2005. Summary of changes for version 20050902: 4526 45271) ACPI CA Core Subsystem: 4528 4529Fixed a problem with the internal Owner ID allocation and deallocation 4530mechanisms for control method execution and recursive method invocation. 4531This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 4532messages seen on some systems. Recursive method invocation depth is 4533currently limited to 255. (Alexey Starikovskiy) 4534 4535Completely eliminated all vestiges of support for the "module-level 4536executable code" until this support is fully implemented and debugged. This 4537should eliminate the NO_RETURN_VALUE exceptions seen during table load on 4538some systems that invoke this support. 4539 4540Fixed a problem within the resource manager code where the transaction flags 4541for a 64-bit address descriptor were handled incorrectly in the type- 4542specific flag byte. 4543 4544Consolidated duplicate code within the address descriptor resource manager 4545code, reducing overall subsystem code size. 4546 4547Fixed a fault when using the AML debugger "disassemble" command to 4548disassemble individual control methods. 4549 4550Removed references to the "release_current" directory within the Unix 4551release package. 4552 4553Code and Data Size: The current and previous core subsystem library sizes 4554are shown below. These are the code and data sizes for the acpica.lib 4555produced by the Microsoft Visual C++ 6.0 compiler. These values do not 4556include any ACPI driver or OSPM code. The debug version of the code includes 4557the debug output trace mechanism and has a much larger code and data size. 4558Note that these values will vary depending on the efficiency of the compiler 4559and the compiler options used during generation. 4560 4561 Previous Release: 4562 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 4563 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 4564 Current Release: 4565 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 4566 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 4567 4568 45692) iASL Compiler/Disassembler: 4570 4571Implemented an error check for illegal duplicate values in the interrupt and 4572dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 4573Interrupt(). 4574 4575Implemented error checking for the Irq() and IrqNoFlags() macros to detect 4576too many values in the interrupt list (16 max) and invalid values in the 4577list (range 0 - 15) 4578 4579The maximum length string literal within an ASL file is now restricted to 4580200 characters as per the ACPI specification. 4581 4582Fixed a fault when using the -ln option (generate namespace listing). 4583 4584Implemented an error check to determine if a DescriptorName within a 4585resource descriptor has already been used within the current scope. 4586 4587---------------------------------------- 458815 August 2005. Summary of changes for version 20050815: 4589 45901) ACPI CA Core Subsystem: 4591 4592Implemented a full bytewise compare to determine if a table load request is 4593attempting to load a duplicate table. The compare is performed if the table 4594signatures and table lengths match. This will allow different tables with 4595the same OEM Table ID and revision to be loaded - probably against the ACPI 4596specification, but discovered in the field nonetheless. 4597 4598Added the changes.txt logfile to each of the zipped release packages. 4599 4600Code and Data Size: Current and previous core subsystem library sizes are 4601shown below. These are the code and data sizes for the acpica.lib produced 4602by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4603any ACPI driver or OSPM code. The debug version of the code includes the 4604debug output trace mechanism and has a much larger code and data size. Note 4605that these values will vary depending on the efficiency of the compiler and 4606the compiler options used during generation. 4607 4608 Previous Release: 4609 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 4610 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 4611 Current Release: 4612 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 4613 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 4614 4615 46162) iASL Compiler/Disassembler: 4617 4618Fixed a problem where incorrect AML code could be generated for Package 4619objects if optimization is disabled (via the -oa switch). 4620 4621Fixed a problem with where incorrect AML code is generated for variable- 4622length packages when the package length is not specified and the number of 4623initializer values is greater than 255. 4624 4625 4626---------------------------------------- 462729 July 2005. Summary of changes for version 20050729: 4628 46291) ACPI CA Core Subsystem: 4630 4631Implemented support to ignore an attempt to install/load a particular ACPI 4632table more than once. Apparently there exists BIOS code that repeatedly 4633attempts to load the same SSDT upon certain events. With assistance from 4634Venkatesh Pallipadi. 4635 4636Restructured the main interface to the AML parser in order to correctly 4637handle all exceptional conditions. This will prevent leakage of the OwnerId 4638resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some 4639machines. With assistance from Alexey Starikovskiy. 4640 4641Support for "module level code" has been disabled in this version due to a 4642number of issues that have appeared on various machines. The support can be 4643enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 4644compilation. When the issues are fully resolved, the code will be enabled by 4645default again. 4646 4647Modified the internal functions for debug print support to define the 4648FunctionName parameter as a (const char *) for compatibility with compiler 4649built-in macros such as __FUNCTION__, etc. 4650 4651Linted the entire ACPICA source tree for both 32-bit and 64-bit. 4652 4653Implemented support to display an object count summary for the AML Debugger 4654commands Object and Methods. 4655 4656Code and Data Size: Current and previous core subsystem library sizes are 4657shown below. These are the code and data sizes for the acpica.lib produced 4658by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4659any ACPI driver or OSPM code. The debug version of the code includes the 4660debug output trace mechanism and has a much larger code and data size. Note 4661that these values will vary depending on the efficiency of the compiler and 4662the compiler options used during generation. 4663 4664 Previous Release: 4665 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 4666 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 4667 Current Release: 4668 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 4669 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 4670 4671 46722) iASL Compiler/Disassembler: 4673 4674Fixed a regression that appeared in the 20050708 version of the compiler 4675where an error message was inadvertently emitted for invocations of the _OSI 4676reserved control method. 4677 4678---------------------------------------- 467908 July 2005. Summary of changes for version 20050708: 4680 46811) ACPI CA Core Subsystem: 4682 4683The use of the CPU stack in the debug version of the subsystem has been 4684considerably reduced. Previously, a debug structure was declared in every 4685function that used the debug macros. This structure has been removed in 4686favor of declaring the individual elements as parameters to the debug 4687functions. This reduces the cumulative stack use during nested execution of 4688ACPI function calls at the cost of a small increase in the code size of the 4689debug version of the subsystem. With assistance from Alexey Starikovskiy and 4690Len Brown. 4691 4692Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 4693headers to define a macro that will return the current function name at 4694runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by 4695the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 4696compiler-dependent header, the function name is saved on the CPU stack (one 4697pointer per function.) This mechanism is used because apparently there 4698exists no standard ANSI-C defined macro that that returns the function name. 4699 4700Redesigned and reimplemented the "Owner ID" mechanism used to track 4701namespace objects created/deleted by ACPI tables and control method 4702execution. A bitmap is now used to allocate and free the IDs, thus solving 4703the wraparound problem present in the previous implementation. The size of 4704the namespace node descriptor was reduced by 2 bytes as a result (Alexey 4705Starikovskiy). 4706 4707Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield 4708flag definitions within the headers for the predefined ACPI tables. These 4709have been replaced by UINT8_BIT in order to increase the code portability of 4710the subsystem. If the use of UINT8 remains a problem, we may be forced to 4711eliminate bitfields entirely because of a lack of portability. 4712 4713Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This 4714is a frequently used function and this improvement increases the performance 4715of the entire subsystem (Alexey Starikovskiy). 4716 4717Fixed several possible memory leaks and the inverse - premature object 4718deletion (Alexey Starikovskiy). 4719 4720Code and Data Size: Current and previous core subsystem library sizes are 4721shown below. These are the code and data sizes for the acpica.lib produced 4722by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4723any ACPI driver or OSPM code. The debug version of the code includes the 4724debug output trace mechanism and has a much larger code and data size. Note 4725that these values will vary depending on the efficiency of the compiler and 4726the compiler options used during generation. 4727 4728 Previous Release: 4729 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 4730 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 4731 Current Release: 4732 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 4733 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 4734 4735---------------------------------------- 473624 June 2005. Summary of changes for version 20050624: 4737 47381) ACPI CA Core Subsystem: 4739 4740Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 4741the host-defined cache object. This allows the OSL implementation to define 4742and type this object in any manner desired, simplifying the OSL 4743implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 4744Linux, and should be defined in the OS-specific header file for other 4745operating systems as required. 4746 4747Changed the interface to AcpiOsAcquireObject to directly return the 4748requested object as the function return (instead of ACPI_STATUS.) This 4749change was made for performance reasons, since this is the purpose of the 4750interface in the first place. AcpiOsAcquireObject is now similar to the 4751AcpiOsAllocate interface. 4752 4753Implemented a new AML debugger command named Businfo. This command displays 4754information about all devices that have an associate _PRT object. The _ADR, 4755_HID, _UID, and _CID are displayed for these devices. 4756 4757Modified the initialization sequence in AcpiInitializeSubsystem to call the 4758OSL interface AcpiOslInitialize first, before any local initialization. This 4759change was required because the global initialization now calls OSL 4760interfaces. 4761 4762Enhanced the Dump command to display the entire contents of Package objects 4763(including all sub-objects and their values.) 4764 4765Restructured the code base to split some files because of size and/or 4766because the code logically belonged in a separate file. New files are listed 4767below. All makefiles and project files included in the ACPI CA release have 4768been updated. 4769 utilities/utcache.c /* Local cache interfaces */ 4770 utilities/utmutex.c /* Local mutex support */ 4771 utilities/utstate.c /* State object support */ 4772 interpreter/parser/psloop.c /* Main AML parse loop */ 4773 4774Code and Data Size: Current and previous core subsystem library sizes are 4775shown below. These are the code and data sizes for the acpica.lib produced 4776by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4777any ACPI driver or OSPM code. The debug version of the code includes the 4778debug output trace mechanism and has a much larger code and data size. Note 4779that these values will vary depending on the efficiency of the compiler and 4780the compiler options used during generation. 4781 4782 Previous Release: 4783 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 4784 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 4785 Current Release: 4786 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 4787 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 4788 4789 47902) iASL Compiler/Disassembler: 4791 4792Fixed a regression introduced in version 20050513 where the use of a Package 4793object within a Case() statement caused a compile time exception. The 4794original behavior has been restored (a Match() operator is emitted.) 4795 4796---------------------------------------- 479717 June 2005. Summary of changes for version 20050617: 4798 47991) ACPI CA Core Subsystem: 4800 4801Moved the object cache operations into the OS interface layer (OSL) to allow 4802the host OS to handle these operations if desired (for example, the Linux 4803OSL will invoke the slab allocator). This support is optional; the compile 4804time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 4805code in the ACPI CA core. The new OSL interfaces are shown below. See 4806utalloc.c for an example implementation, and acpiosxf.h for the exact 4807interface definitions. With assistance from Alexey Starikovskiy. 4808 AcpiOsCreateCache 4809 AcpiOsDeleteCache 4810 AcpiOsPurgeCache 4811 AcpiOsAcquireObject 4812 AcpiOsReleaseObject 4813 4814Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return 4815and restore a flags parameter. This fits better with many OS lock models. 4816Note: the current execution state (interrupt handler or not) is no longer 4817passed to these interfaces. If necessary, the OSL must determine this state 4818by itself, a simple and fast operation. With assistance from Alexey 4819Starikovskiy. 4820 4821Fixed a problem in the ACPI table handling where a valid XSDT was assumed 4822present if the revision of the RSDP was 2 or greater. According to the ACPI 4823specification, the XSDT is optional in all cases, and the table manager 4824therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 4825Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 4826only the RSDT. 4827 4828Fixed an interpreter problem with the Mid() operator in the case of an input 4829string where the resulting output string is of zero length. It now correctly 4830returns a valid, null terminated string object instead of a string object 4831with a null pointer. 4832 4833Fixed a problem with the control method argument handling to allow a store 4834to an Arg object that already contains an object of type Device. The Device 4835object is now correctly overwritten. Previously, an error was returned. 4836 4837 4838Enhanced the debugger Find command to emit object values in addition to the 4839found object pathnames. The output format is the same as the dump namespace 4840command. 4841 4842Enhanced the debugger Set command. It now has the ability to set the value 4843of any Named integer object in the namespace (Previously, only method locals 4844and args could be set.) 4845 4846Code and Data Size: Current and previous core subsystem library sizes are 4847shown below. These are the code and data sizes for the acpica.lib produced 4848by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4849any ACPI driver or OSPM code. The debug version of the code includes the 4850debug output trace mechanism and has a much larger code and data size. Note 4851that these values will vary depending on the efficiency of the compiler and 4852the compiler options used during generation. 4853 4854 Previous Release: 4855 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 4856 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 4857 Current Release: 4858 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 4859 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 4860 4861 48622) iASL Compiler/Disassembler: 4863 4864Fixed a regression in the disassembler where if/else/while constructs were 4865output incorrectly. This problem was introduced in the previous release 4866(20050526). This problem also affected the single-step disassembly in the 4867debugger. 4868 4869Fixed a problem where compiling the reserved _OSI method would randomly (but 4870rarely) produce compile errors. 4871 4872Enhanced the disassembler to emit compilable code in the face of incorrect 4873AML resource descriptors. If the optional ResourceSourceIndex is present, 4874but the ResourceSource is not, do not emit the ResourceSourceIndex in the 4875disassembly. Otherwise, the resulting code cannot be compiled without 4876errors. 4877 4878---------------------------------------- 487926 May 2005. Summary of changes for version 20050526: 4880 48811) ACPI CA Core Subsystem: 4882 4883Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 4884the module level (not within a control method.) These opcodes are executed 4885exactly once at the time the table is loaded. This type of code was legal up 4886until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in 4887order to provide backwards compatibility with earlier BIOS implementations. 4888This eliminates the "Encountered executable code at module level" warning 4889that was previously generated upon detection of such code. 4890 4891Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 4892inadvertently be generated during the lookup of namespace objects in the 4893second pass parse of ACPI tables and control methods. It appears that this 4894problem could occur during the resolution of forward references to namespace 4895objects. 4896 4897Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 4898corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 4899allows the deadlock detection debug code to be compiled out in the normal 4900case, improving mutex performance (and overall subsystem performance) 4901considerably. 4902 4903Implemented a handful of miscellaneous fixes for possible memory leaks on 4904error conditions and error handling control paths. These fixes were 4905suggested by FreeBSD and the Coverity Prevent source code analysis tool. 4906 4907Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 4908to prevent a fault in this error case. 4909 4910Code and Data Size: Current and previous core subsystem library sizes are 4911shown below. These are the code and data sizes for the acpica.lib produced 4912by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4913any ACPI driver or OSPM code. The debug version of the code includes the 4914debug output trace mechanism and has a much larger code and data size. Note 4915that these values will vary depending on the efficiency of the compiler and 4916the compiler options used during generation. 4917 4918 Previous Release: 4919 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 4920 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 4921 Current Release: 4922 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 4923 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 4924 4925 49262) iASL Compiler/Disassembler: 4927 4928Implemented support to allow Type 1 and Type 2 ASL operators to appear at 4929the module level (not within a control method.) These operators will be 4930executed once at the time the table is loaded. This type of code was legal 4931up until the release of ACPI 2.0B (2002) and is now supported by the iASL 4932compiler in order to provide backwards compatibility with earlier BIOS ASL 4933code. 4934 4935The ACPI integer width (specified via the table revision ID or the -r 4936override, 32 or 64 bits) is now used internally during compile-time constant 4937folding to ensure that constants are truncated to 32 bits if necessary. 4938Previously, the revision ID value was only emitted in the AML table header. 4939 4940An error message is now generated for the Mutex and Method operators if the 4941SyncLevel parameter is outside the legal range of 0 through 15. 4942 4943Fixed a problem with the Method operator ParameterTypes list handling (ACPI 49443.0). Previously, more than 2 types or 2 arguments generated a syntax error. 4945The actual underlying implementation of method argument typechecking is 4946still under development, however. 4947 4948---------------------------------------- 494913 May 2005. Summary of changes for version 20050513: 4950 49511) ACPI CA Core Subsystem: 4952 4953Implemented support for PCI Express root bridges -- added support for device 4954PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 4955 4956The interpreter now automatically truncates incoming 64-bit constants to 32 4957bits if currently executing out of a 32-bit ACPI table (Revision < 2). This 4958also affects the iASL compiler constant folding. (Note: as per below, the 4959iASL compiler no longer allows 64-bit constants within 32-bit tables.) 4960 4961Fixed a problem where string and buffer objects with "static" pointers 4962(pointers to initialization data within an ACPI table) were not handled 4963consistently. The internal object copy operation now always copies the data 4964to a newly allocated buffer, regardless of whether the source object is 4965static or not. 4966 4967Fixed a problem with the FromBCD operator where an implicit result 4968conversion was improperly performed while storing the result to the target 4969operand. Since this is an "explicit conversion" operator, the implicit 4970conversion should never be performed on the output. 4971 4972Fixed a problem with the CopyObject operator where a copy to an existing 4973named object did not always completely overwrite the existing object stored 4974at name. Specifically, a buffer-to-buffer copy did not delete the existing 4975buffer. 4976 4977Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 4978structs for consistency. 4979 4980Code and Data Size: Current and previous core subsystem library sizes are 4981shown below. These are the code and data sizes for the acpica.lib produced 4982by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4983any ACPI driver or OSPM code. The debug version of the code includes the 4984debug output trace mechanism and has a much larger code and data size. Note 4985that these values will vary depending on the efficiency of the compiler and 4986the compiler options used during generation. 4987 4988 Previous Release: 4989 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 4990 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 4991 Current Release: (Same sizes) 4992 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 4993 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 4994 4995 49962) iASL Compiler/Disassembler: 4997 4998The compiler now emits a warning if an attempt is made to generate a 64-bit 4999integer constant from within a 32-bit ACPI table (Revision < 2). The integer 5000is truncated to 32 bits. 5001 5002Fixed a problem with large package objects: if the static length of the 5003package is greater than 255, the "variable length package" opcode is 5004emitted. Previously, this caused an error. This requires an update to the 5005ACPI spec, since it currently (incorrectly) states that packages larger than 5006255 elements are not allowed. 5007 5008The disassembler now correctly handles variable length packages and packages 5009larger than 255 elements. 5010 5011---------------------------------------- 501208 April 2005. Summary of changes for version 20050408: 5013 50141) ACPI CA Core Subsystem: 5015 5016Fixed three cases in the interpreter where an "index" argument to an ASL 5017function was still (internally) 32 bits instead of the required 64 bits. 5018This was the Index argument to the Index, Mid, and Match operators. 5019 5020The "strupr" function is now permanently local (AcpiUtStrupr), since this is 5021not a POSIX-defined function and not present in most kernel-level C 5022libraries. All references to the C library strupr function have been removed 5023from the headers. 5024 5025Completed the deployment of static functions/prototypes. All prototypes with 5026the static attribute have been moved from the headers to the owning C file. 5027 5028Implemented an extract option (-e) for the AcpiBin utility (AML binary 5029utility). This option allows the utility to extract individual ACPI tables 5030from the output of AcpiDmp. It provides the same functionality of the 5031acpixtract.pl perl script without the worry of setting the correct perl 5032options. AcpiBin runs on Windows and has not yet been generated/validated in 5033the Linux/Unix environment (but should be soon). 5034 5035Updated and fixed the table dump option for AcpiBin (-d). This option 5036converts a single ACPI table to a hex/ascii file, similar to the output of 5037AcpiDmp. 5038 5039Code and Data Size: Current and previous core subsystem library sizes are 5040shown below. These are the code and data sizes for the acpica.lib produced 5041by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5042any ACPI driver or OSPM code. The debug version of the code includes the 5043debug output trace mechanism and has a much larger code and data size. Note 5044that these values will vary depending on the efficiency of the compiler and 5045the compiler options used during generation. 5046 5047 Previous Release: 5048 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 5049 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 5050 Current Release: 5051 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 5052 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 5053 5054 50552) iASL Compiler/Disassembler: 5056 5057Disassembler fix: Added a check to ensure that the table length found in the 5058ACPI table header within the input file is not longer than the actual input 5059file size. This indicates some kind of file or table corruption. 5060 5061---------------------------------------- 506229 March 2005. Summary of changes for version 20050329: 5063 50641) ACPI CA Core Subsystem: 5065 5066An error is now generated if an attempt is made to create a Buffer Field of 5067length zero (A CreateField with a length operand of zero.) 5068 5069The interpreter now issues a warning whenever executable code at the module 5070level is detected during ACPI table load. This will give some idea of the 5071prevalence of this type of code. 5072 5073Implemented support for references to named objects (other than control 5074methods) within package objects. 5075 5076Enhanced package object output for the debug object. Package objects are now 5077completely dumped, showing all elements. 5078 5079Enhanced miscellaneous object output for the debug object. Any object can 5080now be written to the debug object (for example, a device object can be 5081written, and the type of the object will be displayed.) 5082 5083The "static" qualifier has been added to all local functions across both the 5084core subsystem and the iASL compiler. 5085 5086The number of "long" lines (> 80 chars) within the source has been 5087significantly reduced, by about 1/3. 5088 5089Cleaned up all header files to ensure that all CA/iASL functions are 5090prototyped (even static functions) and the formatting is consistent. 5091 5092Two new header files have been added, acopcode.h and acnames.h. 5093 5094Removed several obsolete functions that were no longer used. 5095 5096Code and Data Size: Current and previous core subsystem library sizes are 5097shown below. These are the code and data sizes for the acpica.lib produced 5098by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5099any ACPI driver or OSPM code. The debug version of the code includes the 5100debug output trace mechanism and has a much larger code and data size. Note 5101that these values will vary depending on the efficiency of the compiler and 5102the compiler options used during generation. 5103 5104 Previous Release: 5105 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5106 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 5107 Current Release: 5108 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 5109 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 5110 5111 5112 51132) iASL Compiler/Disassembler: 5114 5115Fixed a problem with the resource descriptor generation/support. For the 5116ResourceSourceIndex and the ResourceSource fields, both must be present, or 5117both must be not present - can't have one without the other. 5118 5119The compiler now returns non-zero from the main procedure if any errors have 5120occurred during the compilation. 5121 5122 5123---------------------------------------- 512409 March 2005. Summary of changes for version 20050309: 5125 51261) ACPI CA Core Subsystem: 5127 5128The string-to-buffer implicit conversion code has been modified again after 5129a change to the ACPI specification. In order to match the behavior of the 5130other major ACPI implementation, the target buffer is no longer truncated if 5131the source string is smaller than an existing target buffer. This change 5132requires an update to the ACPI spec, and should eliminate the recent 5133AE_AML_BUFFER_LIMIT issues. 5134 5135The "implicit return" support was rewritten to a new algorithm that solves 5136the general case. Rather than attempt to determine when a method is about to 5137exit, the result of every ASL operator is saved momentarily until the very 5138next ASL operator is executed. Therefore, no matter how the method exits, 5139there will always be a saved implicit return value. This feature is only 5140enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 5141AE_AML_NO_RETURN_VALUE errors when enabled. 5142 5143Implemented implicit conversion support for the predicate (operand) of the 5144If, Else, and While operators. String and Buffer arguments are automatically 5145converted to Integers. 5146 5147Changed the string-to-integer conversion behavior to match the new ACPI 5148errata: "If no integer object exists, a new integer is created. The ASCII 5149string is interpreted as a hexadecimal constant. Each string character is 5150interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 5151with the first character as the most significant digit, and ending with the 5152first non-hexadecimal character or end-of-string." This means that the first 5153non-hex character terminates the conversion and this is the code that was 5154changed. 5155 5156Fixed a problem where the ObjectType operator would fail (fault) when used 5157on an Index of a Package which pointed to a null package element. The 5158operator now properly returns zero (Uninitialized) in this case. 5159 5160Fixed a problem where the While operator used excessive memory by not 5161properly popping the result stack during execution. There was no memory leak 5162after execution, however. (Code provided by Valery Podrezov.) 5163 5164Fixed a problem where references to control methods within Package objects 5165caused the method to be invoked, instead of producing a reference object 5166pointing to the method. 5167 5168Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 5169improve performance and reduce code size. (Code provided by Alexey 5170Starikovskiy.) 5171 5172Code and Data Size: Current and previous core subsystem library sizes are 5173shown below. These are the code and data sizes for the acpica.lib produced 5174by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5175any ACPI driver or OSPM code. The debug version of the code includes the 5176debug output trace mechanism and has a much larger code and data size. Note 5177that these values will vary depending on the efficiency of the compiler and 5178the compiler options used during generation. 5179 5180 Previous Release: 5181 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5182 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 5183 Current Release: 5184 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5185 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 5186 5187 51882) iASL Compiler/Disassembler: 5189 5190Fixed a problem with the Return operator with no arguments. Since the AML 5191grammar for the byte encoding requires an operand for the Return opcode, the 5192compiler now emits a Return(Zero) for this case. An ACPI specification 5193update has been written for this case. 5194 5195For tables other than the DSDT, namepath optimization is automatically 5196disabled. This is because SSDTs can be loaded anywhere in the namespace, the 5197compiler has no knowledge of where, and thus cannot optimize namepaths. 5198 5199Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 5200inadvertently omitted from the ACPI specification, and will require an 5201update to the spec. 5202 5203The source file scan for ASCII characters is now optional (-a). This change 5204was made because some vendors place non-ascii characters within comments. 5205However, the scan is simply a brute-force byte compare to ensure all 5206characters in the file are in the range 0x00 to 0x7F. 5207 5208Fixed a problem with the CondRefOf operator where the compiler was 5209inappropriately checking for the existence of the target. Since the point of 5210the operator is to check for the existence of the target at run-time, the 5211compiler no longer checks for the target existence. 5212 5213Fixed a problem where errors generated from the internal AML interpreter 5214during constant folding were not handled properly, causing a fault. 5215 5216Fixed a problem with overly aggressive range checking for the Stall 5217operator. The valid range (max 255) is now only checked if the operand is of 5218type Integer. All other operand types cannot be statically checked. 5219 5220Fixed a problem where control method references within the RefOf, DeRefOf, 5221and ObjectType operators were not treated properly. They are now treated as 5222actual references, not method invocations. 5223 5224Fixed and enhanced the "list namespace" option (-ln). This option was broken 5225a number of releases ago. 5226 5227Improved error handling for the Field, IndexField, and BankField operators. 5228The compiler now cleanly reports and recovers from errors in the field 5229component (FieldUnit) list. 5230 5231Fixed a disassembler problem where the optional ResourceDescriptor fields 5232TRS and TTP were not always handled correctly. 5233 5234Disassembler - Comments in output now use "//" instead of "/*" 5235 5236---------------------------------------- 523728 February 2005. Summary of changes for version 20050228: 5238 52391) ACPI CA Core Subsystem: 5240 5241Fixed a problem where the result of an Index() operator (an object 5242reference) must increment the reference count on the target object for the 5243life of the object reference. 5244 5245Implemented AML Interpreter and Debugger support for the new ACPI 3.0 5246Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace 5247resource descriptors. 5248 5249Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 5250Space Descriptor" string, indicating interpreter support for the descriptors 5251above. 5252 5253Implemented header support for the new ACPI 3.0 FADT flag bits. 5254 5255Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1 5256status/enable registers. 5257 5258Updated header support for the MADT processor local Apic struct and MADT 5259platform interrupt source struct for new ACPI 3.0 fields. 5260 5261Implemented header support for the SRAT and SLIT ACPI tables. 5262 5263Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag 5264at runtime. 5265 5266Code and Data Size: Current and previous core subsystem library sizes are 5267shown below. These are the code and data sizes for the acpica.lib produced 5268by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5269any ACPI driver or OSPM code. The debug version of the code includes the 5270debug output trace mechanism and has a much larger code and data size. Note 5271that these values will vary depending on the efficiency of the compiler and 5272the compiler options used during generation. 5273 5274 Previous Release: 5275 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 5276 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 5277 Current Release: 5278 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5279 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 5280 5281 52822) iASL Compiler/Disassembler: 5283 5284Fixed a problem with the internal 64-bit String-to-integer conversion with 5285strings less than two characters long. 5286 5287Fixed a problem with constant folding where the result of the Index() 5288operator can not be considered a constant. This means that Index() cannot be 5289a type3 opcode and this will require an update to the ACPI specification. 5290 5291Disassembler: Implemented support for the TTP, MTP, and TRS resource 5292descriptor fields. These fields were inadvertently ignored and not output in 5293the disassembly of the resource descriptor. 5294 5295 5296 ---------------------------------------- 529711 February 2005. Summary of changes for version 20050211: 5298 52991) ACPI CA Core Subsystem: 5300 5301Implemented ACPI 3.0 support for implicit conversion within the Match() 5302operator. MatchObjects can now be of type integer, buffer, or string instead 5303of just type integer. Package elements are implicitly converted to the type 5304of the MatchObject. This change aligns the behavior of Match() with the 5305behavior of the other logical operators (LLess(), etc.) It also requires an 5306errata change to the ACPI specification as this support was intended for 5307ACPI 3.0, but was inadvertently omitted. 5308 5309Fixed a problem with the internal implicit "to buffer" conversion. Strings 5310that are converted to buffers will cause buffer truncation if the string is 5311smaller than the target buffer. Integers that are converted to buffers will 5312not cause buffer truncation, only zero extension (both as per the ACPI 5313spec.) The problem was introduced when code was added to truncate the 5314buffer, but this should not be performed in all cases, only the string case. 5315 5316Fixed a problem with the Buffer and Package operators where the interpreter 5317would get confused if two such operators were used as operands to an ASL 5318operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 5319stack was not being popped after the execution of these operators, resulting 5320in an AE_NO_RETURN_VALUE exception. 5321 5322Fixed a problem with constructs of the form Store(Index(...),...). The 5323reference object returned from Index was inadvertently resolved to an actual 5324value. This problem was introduced in version 20050114 when the behavior of 5325Store() was modified to restrict the object types that can be used as the 5326source operand (to match the ACPI specification.) 5327 5328Reduced excessive stack use within the AcpiGetObjectInfo procedure. 5329 5330Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 5331 5332Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 5333 5334Code and Data Size: Current and previous core subsystem library sizes are 5335shown below. These are the code and data sizes for the acpica.lib produced 5336by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5337any ACPI driver or OSPM code. The debug version of the code includes the 5338debug output trace mechanism and has a much larger code and data size. Note 5339that these values will vary depending on the efficiency of the compiler and 5340the compiler options used during generation. 5341 5342 Previous Release: 5343 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 5344 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 5345 Current Release: 5346 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 5347 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 5348 5349 53502) iASL Compiler/Disassembler: 5351 5352Fixed a code generation problem in the constant folding optimization code 5353where incorrect code was generated if a constant was reduced to a buffer 5354object (i.e., a reduced type 5 opcode.) 5355 5356Fixed a typechecking problem for the ToBuffer operator. Caused by an 5357incorrect return type in the internal opcode information table. 5358 5359---------------------------------------- 536025 January 2005. Summary of changes for version 20050125: 5361 53621) ACPI CA Core Subsystem: 5363 5364Fixed a recently introduced problem with the Global Lock where the 5365underlying semaphore was not created. This problem was introduced in 5366version 20050114, and caused an AE_AML_NO_OPERAND exception during an 5367Acquire() operation on _GL. 5368 5369The local object cache is now optional, and is disabled by default. Both 5370AcpiExec and the iASL compiler enable the cache because they run in user 5371mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 5372to enable the local cache. 5373 5374Fixed an issue in the internal function AcpiUtEvaluateObject concerning the 5375optional "implicit return" support where an error was returned if no return 5376object was expected, but one was implicitly returned. AE_OK is now returned 5377in this case and the implicitly returned object is deleted. 5378AcpiUtEvaluateObject is only occasionally used, and only to execute reserved 5379methods such as _STA and _INI where the return type is known up front. 5380 5381Fixed a few issues with the internal convert-to-integer code. It now returns 5382an error if an attempt is made to convert a null string, a string of only 5383blanks/tabs, or a zero-length buffer. This affects both implicit conversion 5384and explicit conversion via the ToInteger() operator. 5385 5386The internal debug code in AcpiUtAcquireMutex has been commented out. It is 5387not needed for normal operation and should increase the performance of the 5388entire subsystem. The code remains in case it is needed for debug purposes 5389again. 5390 5391The AcpiExec source and makefile are included in the Unix/Linux package for 5392the first time. 5393 5394Code and Data Size: Current and previous core subsystem library sizes are 5395shown below. These are the code and data sizes for the acpica.lib produced 5396by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5397any ACPI driver or OSPM code. The debug version of the code includes the 5398debug output trace mechanism and has a much larger code and data size. Note 5399that these values will vary depending on the efficiency of the compiler and 5400the compiler options used during generation. 5401 5402 Previous Release: 5403 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 5404 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 5405 Current Release: 5406 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 5407 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 5408 54092) iASL Compiler/Disassembler: 5410 5411Switch/Case support: A warning is now issued if the type of the Switch value 5412cannot be determined at compile time. For example, Switch(Arg0) will 5413generate the warning, and the type is assumed to be an integer. As per the 5414ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the 5415warning. 5416 5417Switch/Case support: Implemented support for buffer and string objects as 5418the switch value. This is an ACPI 3.0 feature, now that LEqual supports 5419buffers and strings. 5420 5421Switch/Case support: The emitted code for the LEqual() comparisons now uses 5422the switch value as the first operand, not the second. The case value is now 5423the second operand, and this allows the case value to be implicitly 5424converted to the type of the switch value, not the other way around. 5425 5426Switch/Case support: Temporary variables are now emitted immediately within 5427the control method, not at the global level. This means that there are now 542836 temps available per-method, not 36 temps per-module as was the case with 5429the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 5430 5431---------------------------------------- 543214 January 2005. Summary of changes for version 20050114: 5433 5434Added 2005 copyright to all module headers. This affects every module in 5435the core subsystem, iASL compiler, and the utilities. 5436 54371) ACPI CA Core Subsystem: 5438 5439Fixed an issue with the String-to-Buffer conversion code where the string 5440null terminator was not included in the buffer after conversion, but there 5441is existing ASL that assumes the string null terminator is included. This is 5442the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 5443introduced in the previous version when the code was updated to correctly 5444set the converted buffer size as per the ACPI specification. The ACPI spec 5445is ambiguous and will be updated to specify that the null terminator must be 5446included in the converted buffer. This also affects the ToBuffer() ASL 5447operator. 5448 5449Fixed a problem with the Mid() ASL/AML operator where it did not work 5450correctly on Buffer objects. Newly created sub-buffers were not being marked 5451as initialized. 5452 5453 5454Fixed a problem in AcpiTbFindTable where incorrect string compares were 5455performed on the OemId and OemTableId table header fields. These fields are 5456not null terminated, so strncmp is now used instead of strcmp. 5457 5458Implemented a restriction on the Store() ASL/AML operator to align the 5459behavior with the ACPI specification. Previously, any object could be used 5460as the source operand. Now, the only objects that may be used are Integers, 5461Buffers, Strings, Packages, Object References, and DDB Handles. If 5462necessary, the original behavior can be restored by enabling the 5463EnableInterpreterSlack flag. 5464 5465Enhanced the optional "implicit return" support to allow an implicit return 5466value from methods that are invoked externally via the AcpiEvaluateObject 5467interface. This enables implicit returns from the _STA and _INI methods, 5468for example. 5469 5470Changed the Revision() ASL/AML operator to return the current version of the 5471AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned 5472the supported ACPI version (This is the function of the _REV method). 5473 5474Updated the _REV predefined method to return the currently supported version 5475of ACPI, now 3. 5476 5477Implemented batch mode option for the AcpiExec utility (-b). 5478 5479Code and Data Size: Current and previous core subsystem library sizes are 5480shown below. These are the code and data sizes for the acpica.lib produced 5481by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5482any ACPI driver or OSPM code. The debug version of the code includes the 5483debug output trace mechanism and has a much larger code and data size. Note 5484that these values will vary depending on the efficiency of the compiler and 5485the compiler options used during generation. 5486 5487 Previous Release: 5488 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5489 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 5490 Current Release: 5491 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 5492 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 5493 5494---------------------------------------- 549510 December 2004. Summary of changes for version 20041210: 5496 5497ACPI 3.0 support is nearing completion in both the iASL compiler and the 5498ACPI CA core subsystem. 5499 55001) ACPI CA Core Subsystem: 5501 5502Fixed a problem in the ToDecimalString operator where the resulting string 5503length was incorrectly calculated. The length is now calculated exactly, 5504eliminating incorrect AE_STRING_LIMIT exceptions. 5505 5506Fixed a problem in the ToHexString operator to allow a maximum 200 character 5507string to be produced. 5508 5509Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 5510routine where the length of the resulting buffer was not truncated to the 5511new size (if the target buffer already existed). 5512 5513Code and Data Size: Current and previous core subsystem library sizes are 5514shown below. These are the code and data sizes for the acpica.lib produced 5515by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5516any ACPI driver or OSPM code. The debug version of the code includes the 5517debug output trace mechanism and has a much larger code and data size. Note 5518that these values will vary depending on the efficiency of the compiler and 5519the compiler options used during generation. 5520 5521 Previous Release: 5522 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5523 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 5524 Current Release: 5525 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5526 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 5527 5528 55292) iASL Compiler/Disassembler: 5530 5531Implemented the new ACPI 3.0 resource template macros - DWordSpace, 5532ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 5533Includes support in the disassembler. 5534 5535Implemented support for the new (ACPI 3.0) parameter to the Register macro, 5536AccessSize. 5537 5538Fixed a problem where the _HE resource name for the Interrupt macro was 5539referencing bit 0 instead of bit 1. 5540 5541Implemented check for maximum 255 interrupts in the Interrupt macro. 5542 5543Fixed a problem with the predefined resource descriptor names where 5544incorrect AML code was generated if the offset within the resource buffer 5545was 0 or 1. The optimizer shortened the AML code to a single byte opcode 5546but did not update the surrounding package lengths. 5547 5548Changes to the Dma macro: All channels within the channel list must be in 5549the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 5550optional (default is BusMaster). 5551 5552Implemented check for maximum 7 data bytes for the VendorShort macro. 5553 5554The ReadWrite parameter is now optional for the Memory32 and similar macros. 5555 5556---------------------------------------- 555703 December 2004. Summary of changes for version 20041203: 5558 55591) ACPI CA Core Subsystem: 5560 5561The low-level field insertion/extraction code (exfldio) has been completely 5562rewritten to eliminate unnecessary complexity, bugs, and boundary 5563conditions. 5564 5565Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString 5566operators where the input operand could be inadvertently deleted if no 5567conversion was necessary (e.g., if the input to ToInteger was an Integer 5568object.) 5569 5570Fixed a problem with the ToDecimalString and ToHexString where an incorrect 5571exception code was returned if the resulting string would be > 200 chars. 5572AE_STRING_LIMIT is now returned. 5573 5574Fixed a problem with the Concatenate operator where AE_OK was always 5575returned, even if the operation failed. 5576 5577Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 5578semaphores to be allocated. 5579 5580Code and Data Size: Current and previous core subsystem library sizes are 5581shown below. These are the code and data sizes for the acpica.lib produced 5582by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5583any ACPI driver or OSPM code. The debug version of the code includes the 5584debug output trace mechanism and has a much larger code and data size. Note 5585that these values will vary depending on the efficiency of the compiler and 5586the compiler options used during generation. 5587 5588 Previous Release: 5589 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 5590 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 5591 Current Release: 5592 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 5593 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 5594 5595 55962) iASL Compiler/Disassembler: 5597 5598Fixed typechecking for the ObjectType and SizeOf operators. Problem was 5599recently introduced in 20041119. 5600 5601Fixed a problem with the ToUUID macro where the upper nybble of each buffer 5602byte was inadvertently set to zero. 5603 5604---------------------------------------- 560519 November 2004. Summary of changes for version 20041119: 5606 56071) ACPI CA Core Subsystem: 5608 5609Fixed a problem in the internal ConvertToInteger routine where new integers 5610were not truncated to 32 bits for 32-bit ACPI tables. This routine converts 5611buffers and strings to integers. 5612 5613Implemented support to store a value to an Index() on a String object. This 5614is an ACPI 2.0 feature that had not yet been implemented. 5615 5616Implemented new behavior for storing objects to individual package elements 5617(via the Index() operator). The previous behavior was to invoke the implicit 5618conversion rules if an object was already present at the index. The new 5619behavior is to simply delete any existing object and directly store the new 5620object. Although the ACPI specification seems unclear on this subject, other 5621ACPI implementations behave in this manner. (This is the root of the 5622AE_BAD_HEX_CONSTANT issue.) 5623 5624Modified the RSDP memory scan mechanism to support the extended checksum for 5625ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 5626RSDP signature is found with a valid checksum. 5627 5628Code and Data Size: Current and previous core subsystem library sizes are 5629shown below. These are the code and data sizes for the acpica.lib produced 5630by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5631any ACPI driver or OSPM code. The debug version of the code includes the 5632debug output trace mechanism and has a much larger code and data size. Note 5633that these values will vary depending on the efficiency of the compiler and 5634the compiler options used during generation. 5635 5636 Previous Release: 5637 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 5638 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 5639 Current Release: 5640 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 5641 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 5642 5643 56442) iASL Compiler/Disassembler: 5645 5646Fixed a missing semicolon in the aslcompiler.y file. 5647 5648---------------------------------------- 564905 November 2004. Summary of changes for version 20041105: 5650 56511) ACPI CA Core Subsystem: 5652 5653Implemented support for FADT revision 2. This was an interim table (between 5654ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 5655 5656Implemented optional support to allow uninitialized LocalX and ArgX 5657variables in a control method. The variables are initialized to an Integer 5658object with a value of zero. This support is enabled by setting the 5659AcpiGbl_EnableInterpreterSlack flag to TRUE. 5660 5661Implemented support for Integer objects for the SizeOf operator. Either 4 5662or 8 is returned, depending on the current integer size (32-bit or 64-bit, 5663depending on the parent table revision). 5664 5665Fixed a problem in the implementation of the SizeOf and ObjectType operators 5666where the operand was resolved to a value too early, causing incorrect 5667return values for some objects. 5668 5669Fixed some possible memory leaks during exceptional conditions. 5670 5671Code and Data Size: Current and previous core subsystem library sizes are 5672shown below. These are the code and data sizes for the acpica.lib produced 5673by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5674any ACPI driver or OSPM code. The debug version of the code includes the 5675debug output trace mechanism and has a much larger code and data size. Note 5676that these values will vary depending on the efficiency of the compiler and 5677the compiler options used during generation. 5678 5679 Previous Release: 5680 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 5681 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 5682 Current Release: 5683 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 5684 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 5685 5686 56872) iASL Compiler/Disassembler: 5688 5689Implemented support for all ACPI 3.0 reserved names and methods. 5690 5691Implemented all ACPI 3.0 grammar elements in the front-end, including 5692support for semicolons. 5693 5694Implemented the ACPI 3.0 Function() and ToUUID() macros 5695 5696Fixed a problem in the disassembler where a Scope() operator would not be 5697emitted properly if the target of the scope was in another table. 5698 5699---------------------------------------- 570015 October 2004. Summary of changes for version 20041015: 5701 5702Note: ACPI CA is currently undergoing an in-depth and complete formal 5703evaluation to test/verify the following areas. Other suggestions are 5704welcome. This will result in an increase in the frequency of releases and 5705the number of bug fixes in the next few months. 5706 - Functional tests for all ASL/AML operators 5707 - All implicit/explicit type conversions 5708 - Bit fields and operation regions 5709 - 64-bit math support and 32-bit-only "truncated" math support 5710 - Exceptional conditions, both compiler and interpreter 5711 - Dynamic object deletion and memory leaks 5712 - ACPI 3.0 support when implemented 5713 - External interfaces to the ACPI subsystem 5714 5715 57161) ACPI CA Core Subsystem: 5717 5718Fixed two alignment issues on 64-bit platforms - within debug statements in 5719AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address 5720field within the non-aligned ACPI generic address structure. 5721 5722Fixed a problem in the Increment and Decrement operators where incorrect 5723operand resolution could result in the inadvertent modification of the 5724original integer when the integer is passed into another method as an 5725argument and the arg is then incremented/decremented. 5726 5727Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit 5728BCD number were truncated during conversion. 5729 5730Fixed a problem in the ToDecimal operator where the length of the resulting 5731string could be set incorrectly too long if the input operand was a Buffer 5732object. 5733 5734Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0) 5735within a buffer would prematurely terminate a compare between buffer 5736objects. 5737 5738Added a check for string overflow (>200 characters as per the ACPI 5739specification) during the Concatenate operator with two string operands. 5740 5741Code and Data Size: Current and previous core subsystem library sizes are 5742shown below. These are the code and data sizes for the acpica.lib produced 5743by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5744any ACPI driver or OSPM code. The debug version of the code includes the 5745debug output trace mechanism and has a much larger code and data size. Note 5746that these values will vary depending on the efficiency of the compiler and 5747the compiler options used during generation. 5748 5749 Previous Release: 5750 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 5751 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 5752 Current Release: 5753 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 5754 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 5755 5756 5757 57582) iASL Compiler/Disassembler: 5759 5760Allow the use of the ObjectType operator on uninitialized Locals and Args 5761(returns 0 as per the ACPI specification). 5762 5763Fixed a problem where the compiler would fault if there was a syntax error 5764in the FieldName of all of the various CreateXXXField operators. 5765 5766Disallow the use of lower case letters within the EISAID macro, as per the 5767ACPI specification. All EISAID strings must be of the form "UUUNNNN" Where 5768U is an uppercase letter and N is a hex digit. 5769 5770 5771---------------------------------------- 577206 October 2004. Summary of changes for version 20041006: 5773 57741) ACPI CA Core Subsystem: 5775 5776Implemented support for the ACPI 3.0 Timer operator. This ASL function 5777implements a 64-bit timer with 100 nanosecond granularity. 5778 5779Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 5780implement the ACPI 3.0 Timer operator. This allows the host OS to implement 5781the timer with the best clock available. Also, it keeps the core subsystem 5782out of the clock handling business, since the host OS (usually) performs 5783this function. 5784 5785Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 5786functions use a 64-bit address which is part of the packed ACPI Generic 5787Address Structure. Since the structure is non-aligned, the alignment macros 5788are now used to extract the address to a local variable before use. 5789 5790Fixed a problem where the ToInteger operator assumed all input strings were 5791hexadecimal. The operator now handles both decimal strings and hex strings 5792(prefixed with "0x"). 5793 5794Fixed a problem where the string length in the string object created as a 5795result of the internal ConvertToString procedure could be incorrect. This 5796potentially affected all implicit conversions and also the ToDecimalString 5797and ToHexString operators. 5798 5799Fixed two problems in the ToString operator. If the length parameter was 5800zero, an incorrect string object was created and the value of the input 5801length parameter was inadvertently changed from zero to Ones. 5802 5803Fixed a problem where the optional ResourceSource string in the ExtendedIRQ 5804resource macro was ignored. 5805 5806Simplified the interfaces to the internal division functions, reducing code 5807size and complexity. 5808 5809Code and Data Size: Current and previous core subsystem library sizes are 5810shown below. These are the code and data sizes for the acpica.lib produced 5811by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5812any ACPI driver or OSPM code. The debug version of the code includes the 5813debug output trace mechanism and has a much larger code and data size. Note 5814that these values will vary depending on the efficiency of the compiler and 5815the compiler options used during generation. 5816 5817 Previous Release: 5818 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 5819 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 5820 Current Release: 5821 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 5822 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 5823 5824 58252) iASL Compiler/Disassembler: 5826 5827Implemented support for the ACPI 3.0 Timer operator. 5828 5829Fixed a problem where the Default() operator was inadvertently ignored in a 5830Switch/Case block. This was a problem in the translation of the Switch 5831statement to If...Else pairs. 5832 5833Added support to allow a standalone Return operator, with no parentheses (or 5834operands). 5835 5836Fixed a problem with code generation for the ElseIf operator where the 5837translated Else...If parse tree was improperly constructed leading to the 5838loss of some code. 5839 5840---------------------------------------- 584122 September 2004. Summary of changes for version 20040922: 5842 58431) ACPI CA Core Subsystem: 5844 5845Fixed a problem with the implementation of the LNot() operator where "Ones" 5846was not returned for the TRUE case. Changed the code to return Ones instead 5847of (!Arg) which was usually 1. This change affects iASL constant folding for 5848this operator also. 5849 5850Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 5851initialized properly -- Now zero the entire buffer in this case where the 5852buffer already exists. 5853 5854Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 5855Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 5856related code considerably. This will require changes/updates to all OS 5857interface layers (OSLs.) 5858 5859Implemented a new external interface, AcpiInstallExceptionHandler, to allow 5860a system exception handler to be installed. This handler is invoked upon any 5861run-time exception that occurs during control method execution. 5862 5863Added support for the DSDT in AcpiTbFindTable. This allows the 5864DataTableRegion() operator to access the local copy of the DSDT. 5865 5866Code and Data Size: Current and previous core subsystem library sizes are 5867shown below. These are the code and data sizes for the acpica.lib produced 5868by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5869any ACPI driver or OSPM code. The debug version of the code includes the 5870debug output trace mechanism and has a much larger code and data size. Note 5871that these values will vary depending on the efficiency of the compiler and 5872the compiler options used during generation. 5873 5874 Previous Release: 5875 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 5876 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 5877 Current Release: 5878 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 5879 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 5880 5881 58822) iASL Compiler/Disassembler: 5883 5884Fixed a problem with constant folding and the LNot operator. LNot was 5885returning 1 in the TRUE case, not Ones as per the ACPI specification. This 5886could result in the generation of an incorrect folded/reduced constant. 5887 5888End-Of-File is now allowed within a "//"-style comment. A parse error no 5889longer occurs if such a comment is at the very end of the input ASL source 5890file. 5891 5892Implemented the "-r" option to override the Revision in the table header. 5893The initial use of this option will be to simplify the evaluation of the AML 5894interpreter by allowing a single ASL source module to be compiled for either 589532-bit or 64-bit integers. 5896 5897 5898---------------------------------------- 589927 August 2004. Summary of changes for version 20040827: 5900 59011) ACPI CA Core Subsystem: 5902 5903- Implemented support for implicit object conversion in the non-numeric 5904logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 5905LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 5906the second operand is implicitly converted on the fly to match the type of 5907the first operand. For example: 5908 5909 LEqual (Source1, Source2) 5910 5911Source1 and Source2 must each evaluate to an integer, a string, or a buffer. 5912The data type of Source1 dictates the required type of Source2. Source2 is 5913implicitly converted if necessary to match the type of Source1. 5914 5915- Updated and corrected the behavior of the string conversion support. The 5916rules concerning conversion of buffers to strings (according to the ACPI 5917specification) are as follows: 5918 5919ToDecimalString - explicit byte-wise conversion of buffer to string of 5920decimal values (0-255) separated by commas. ToHexString - explicit byte-wise 5921conversion of buffer to string of hex values (0-FF) separated by commas. 5922ToString - explicit byte-wise conversion of buffer to string. Byte-by-byte 5923copy with no transform except NULL terminated. Any other implicit buffer-to- 5924string conversion - byte-wise conversion of buffer to string of hex values 5925(0-FF) separated by spaces. 5926 5927- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 5928 5929- Fixed a problem in AcpiNsGetPathnameLength where the returned length was 5930one byte too short in the case of a node in the root scope. This could 5931cause a fault during debug output. 5932 5933- Code and Data Size: Current and previous core subsystem library sizes are 5934shown below. These are the code and data sizes for the acpica.lib produced 5935by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5936any ACPI driver or OSPM code. The debug version of the code includes the 5937debug output trace mechanism and has a much larger code and data size. Note 5938that these values will vary depending on the efficiency of the compiler and 5939the compiler options used during generation. 5940 5941 Previous Release: 5942 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 5943 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 5944 Current Release: 5945 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 5946 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 5947 5948 59492) iASL Compiler/Disassembler: 5950 5951- Fixed a Linux generation error. 5952 5953 5954---------------------------------------- 595516 August 2004. Summary of changes for version 20040816: 5956 59571) ACPI CA Core Subsystem: 5958 5959Designed and implemented support within the AML interpreter for the so- 5960called "implicit return". This support returns the result of the last ASL 5961operation within a control method, in the absence of an explicit Return() 5962operator. A few machines depend on this behavior, even though it is not 5963explicitly supported by the ASL language. It is optional support that can 5964be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 5965 5966Removed support for the PCI_Config address space from the internal low level 5967hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 5968support was not used internally, and would not work correctly anyway because 5969the PCI bus number and segment number were not supported. There are 5970separate interfaces for PCI configuration space access because of the unique 5971interface. 5972 5973Code and Data Size: Current and previous core subsystem library sizes are 5974shown below. These are the code and data sizes for the acpica.lib produced 5975by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5976any ACPI driver or OSPM code. The debug version of the code includes the 5977debug output trace mechanism and has a much larger code and data size. Note 5978that these values will vary depending on the efficiency of the compiler and 5979the compiler options used during generation. 5980 5981 Previous Release: 5982 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 5983 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 5984 Current Release: 5985 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 5986 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 5987 5988 59892) iASL Compiler/Disassembler: 5990 5991Fixed a problem where constants in ASL expressions at the root level (not 5992within a control method) could be inadvertently truncated during code 5993generation. This problem was introduced in the 20040715 release. 5994 5995 5996---------------------------------------- 599715 July 2004. Summary of changes for version 20040715: 5998 59991) ACPI CA Core Subsystem: 6000 6001Restructured the internal HW GPE interfaces to pass/track the current state 6002of interrupts (enabled/disabled) in order to avoid possible deadlock and 6003increase flexibility of the interfaces. 6004 6005Implemented a "lexicographical compare" for String and Buffer objects within 6006the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 6007as per further clarification to the ACPI specification. Behavior is similar 6008to C library "strcmp". 6009 6010Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 6011external function. In the 32-bit non-debug case, the stack use has been 6012reduced from 168 bytes to 32 bytes. 6013 6014Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack, 6015whose purpose is to allow the AML interpreter to forgive certain bad AML 6016constructs. Default setting is FALSE. 6017 6018Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO 6019support code. If enabled, it allows field access to go beyond the end of a 6020region definition if the field is within the region length rounded up to the 6021next access width boundary (a common coding error.) 6022 6023Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 6024ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, these 6025symbols are lowercased by the latest version of the AcpiSrc tool. 6026 6027The prototypes for the PCI interfaces in acpiosxf.h have been updated to 6028rename "Register" to simply "Reg" to prevent certain compilers from 6029complaining. 6030 6031Code and Data Size: Current and previous core subsystem library sizes are 6032shown below. These are the code and data sizes for the acpica.lib produced 6033by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6034any ACPI driver or OSPM code. The debug version of the code includes the 6035debug output trace mechanism and has a much larger code and data size. Note 6036that these values will vary depending on the efficiency of the compiler and 6037the compiler options used during generation. 6038 6039 Previous Release: 6040 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 6041 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 6042 Current Release: 6043 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 6044 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 6045 6046 60472) iASL Compiler/Disassembler: 6048 6049Implemented full support for Package objects within the Case() operator. 6050Note: The Break() operator is currently not supported within Case blocks 6051(TermLists) as there is some question about backward compatibility with ACPI 60521.0 interpreters. 6053 6054 6055Fixed a problem where complex terms were not supported properly within the 6056Switch() operator. 6057 6058Eliminated extraneous warning for compiler-emitted reserved names of the 6059form "_T_x". (Used in Switch/Case operators.) 6060 6061Eliminated optimization messages for "_T_x" objects and small constants 6062within the DefinitionBlock operator. 6063 6064 6065---------------------------------------- 606615 June 2004. Summary of changes for version 20040615: 6067 60681) ACPI CA Core Subsystem: 6069 6070Implemented support for Buffer and String objects (as per ACPI 2.0) for the 6071following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 6072LLessEqual. 6073 6074All directory names in the entire source package are lower case, as they 6075were in earlier releases. 6076 6077Implemented "Disassemble" command in the AML debugger that will disassemble 6078a single control method. 6079 6080Code and Data Size: Current and previous core subsystem library sizes are 6081shown below. These are the code and data sizes for the acpica.lib produced 6082by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6083any ACPI driver or OSPM code. The debug version of the code includes the 6084debug output trace mechanism and has a much larger code and data size. Note 6085that these values will vary depending on the efficiency of the compiler and 6086the compiler options used during generation. 6087 6088 Previous Release: 6089 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 6090 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 6091 6092 Current Release: 6093 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 6094 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 6095 6096 60972) iASL Compiler/Disassembler: 6098 6099Implemented support for Buffer and String objects (as per ACPI 2.0) for the 6100following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 6101LLessEqual. 6102 6103All directory names in the entire source package are lower case, as they 6104were in earlier releases. 6105 6106Fixed a fault when using the -g or -d<nofilename> options if the FADT was 6107not found. 6108 6109Fixed an issue with the Windows version of the compiler where later versions 6110of Windows place the FADT in the registry under the name "FADT" and not 6111"FACP" as earlier versions did. This applies when using the -g or - 6112d<nofilename> options. The compiler now looks for both strings as 6113necessary. 6114 6115Fixed a problem with compiler namepath optimization where a namepath within 6116the Scope() operator could not be optimized if the namepath was a subpath of 6117the current scope path. 6118 6119---------------------------------------- 612027 May 2004. Summary of changes for version 20040527: 6121 61221) ACPI CA Core Subsystem: 6123 6124Completed a new design and implementation for EBDA (Extended BIOS Data Area) 6125support in the RSDP scan code. The original code improperly scanned for the 6126EBDA by simply scanning from memory location 0 to 0x400. The correct method 6127is to first obtain the EBDA pointer from within the BIOS data area, then 6128scan 1K of memory starting at the EBDA pointer. There appear to be few if 6129any machines that place the RSDP in the EBDA, however. 6130 6131Integrated a fix for a possible fault during evaluation of BufferField 6132arguments. Obsolete code that was causing the problem was removed. 6133 6134Found and fixed a problem in the Field Support Code where data could be 6135corrupted on a bit field read that starts on an aligned boundary but does 6136not end on an aligned boundary. Merged the read/write "datum length" 6137calculation code into a common procedure. 6138 6139Rolled in a couple of changes to the FreeBSD-specific header. 6140 6141 6142Code and Data Size: Current and previous core subsystem library sizes are 6143shown below. These are the code and data sizes for the acpica.lib produced 6144by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6145any ACPI driver or OSPM code. The debug version of the code includes the 6146debug output trace mechanism and has a much larger code and data size. Note 6147that these values will vary depending on the efficiency of the compiler and 6148the compiler options used during generation. 6149 6150 Previous Release: 6151 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 6152 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 6153 Current Release: 6154 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 6155 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 6156 6157 61582) iASL Compiler/Disassembler: 6159 6160Fixed a generation warning produced by some overly-verbose compilers for a 616164-bit constant. 6162 6163---------------------------------------- 616414 May 2004. Summary of changes for version 20040514: 6165 61661) ACPI CA Core Subsystem: 6167 6168Fixed a problem where hardware GPE enable bits sometimes not set properly 6169during and after GPE method execution. Result of 04/27 changes. 6170 6171Removed extra "clear all GPEs" when sleeping/waking. 6172 6173Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 6174AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to 6175the new AcpiEv* calls as appropriate. 6176 6177ACPI_OS_NAME was removed from the OS-specific headers. The default name is 6178now "Microsoft Windows NT" for maximum compatibility. However this can be 6179changed by modifying the acconfig.h file. 6180 6181Allow a single invocation of AcpiInstallNotifyHandler for a handler that 6182traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 6183 6184Run _INI methods on ThermalZone objects. This is against the ACPI 6185specification, but there is apparently ASL code in the field that has these 6186_INI methods, and apparently "other" AML interpreters execute them. 6187 6188Performed a full 16/32/64 bit lint that resulted in some small changes. 6189 6190Added a sleep simulation command to the AML debugger to test sleep code. 6191 6192Code and Data Size: Current and previous core subsystem library sizes are 6193shown below. These are the code and data sizes for the acpica.lib produced 6194by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6195any ACPI driver or OSPM code. The debug version of the code includes the 6196debug output trace mechanism and has a much larger code and data size. Note 6197that these values will vary depending on the efficiency of the compiler and 6198the compiler options used during generation. 6199 6200 Previous Release: 6201 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 6202 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 6203 Current Release: 6204 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 6205 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 6206 6207---------------------------------------- 620827 April 2004. Summary of changes for version 20040427: 6209 62101) ACPI CA Core Subsystem: 6211 6212Completed a major overhaul of the GPE handling within ACPI CA. There are 6213now three types of GPEs: wake-only, runtime-only, and combination wake/run. 6214The only GPEs allowed to be combination wake/run are for button-style 6215devices such as a control-method power button, control-method sleep button, 6216or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are not 6217referenced by any _PRW methods are marked for "runtime" and hardware 6218enabled. Any GPE that is referenced by a _PRW method is marked for "wake" 6219(and disabled at runtime). However, at sleep time, only those GPEs that 6220have been specifically enabled for wake via the AcpiEnableGpe interface will 6221actually be hardware enabled. 6222 6223A new external interface has been added, AcpiSetGpeType(), that is meant to 6224be used by device drivers to force a GPE to a particular type. It will be 6225especially useful for the drivers for the button devices mentioned above. 6226 6227Completed restructuring of the ACPI CA initialization sequence so that 6228default operation region handlers are installed before GPEs are initialized 6229and the _PRW methods are executed. This will prevent errors when the _PRW 6230methods attempt to access system memory or I/O space. 6231 6232GPE enable/disable no longer reads the GPE enable register. We now keep the 6233enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 6234thus no longer depend on the hardware to maintain these bits. 6235 6236Always clear the wake status and fixed/GPE status bits before sleep, even 6237for state S5. 6238 6239Improved the AML debugger output for displaying the GPE blocks and their 6240current status. 6241 6242Added new strings for the _OSI method, of the form "Windows 2001 SPx" where 6243x = 0,1,2,3,4. 6244 6245Fixed a problem where the physical address was incorrectly calculated when 6246the Load() operator was used to directly load from an Operation Region (vs. 6247loading from a Field object.) Also added check for minimum table length for 6248this case. 6249 6250Fix for multiple mutex acquisition. Restore original thread SyncLevel on 6251mutex release. 6252 6253Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 6254consistency with the other fields returned. 6255 6256Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 6257structure for each GPE in the system, so the size of this structure is 6258important. 6259 6260CPU stack requirement reduction: Cleaned up the method execution and object 6261evaluation paths so that now a parameter structure is passed, instead of 6262copying the various method parameters over and over again. 6263 6264In evregion.c: Correctly exit and reenter the interpreter region if and 6265only if dispatching an operation region request to a user-installed handler. 6266Do not exit/reenter when dispatching to a default handler (e.g., default 6267system memory or I/O handlers) 6268 6269 6270Notes for updating drivers for the new GPE support. The following changes 6271must be made to ACPI-related device drivers that are attached to one or more 6272GPEs: (This information will be added to the ACPI CA Programmer Reference.) 6273 62741) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 6275explicitly call AcpiEnableGpe. 62762) There is a new interface called AcpiSetGpeType. This should be called 6277before enabling the GPE. Also, this interface will automatically disable 6278the GPE if it is currently enabled. 62793) AcpiEnableGpe no longer supports a GPE type flag. 6280 6281Specific drivers that must be changed: 62821) EC driver: 6283 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 6284AeGpeHandler, NULL); 6285 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 6286 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 6287 62882) Button Drivers (Power, Lid, Sleep): 6289Run _PRW method under parent device 6290If _PRW exists: /* This is a control-method button */ 6291 Extract GPE number and possibly GpeDevice 6292 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 6293 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 6294 6295For all other devices that have _PRWs, we automatically set the GPE type to 6296ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. This 6297must be done on a selective basis, usually requiring some kind of user app 6298to allow the user to pick the wake devices. 6299 6300 6301Code and Data Size: Current and previous core subsystem library sizes are 6302shown below. These are the code and data sizes for the acpica.lib produced 6303by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6304any ACPI driver or OSPM code. The debug version of the code includes the 6305debug output trace mechanism and has a much larger code and data size. Note 6306that these values will vary depending on the efficiency of the compiler and 6307the compiler options used during generation. 6308 6309 Previous Release: 6310 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 6311 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 6312 Current Release: 6313 6314 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 6315 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 6316 6317 6318 6319---------------------------------------- 632002 April 2004. Summary of changes for version 20040402: 6321 63221) ACPI CA Core Subsystem: 6323 6324Fixed an interpreter problem where an indirect store through an ArgX 6325parameter was incorrectly applying the "implicit conversion rules" during 6326the store. From the ACPI specification: "If the target is a method local or 6327argument (LocalX or ArgX), no conversion is performed and the result is 6328stored directly to the target". The new behavior is to disable implicit 6329conversion during ALL stores to an ArgX. 6330 6331Changed the behavior of the _PRW method scan to ignore any and all errors 6332returned by a given _PRW. This prevents the scan from aborting from the 6333failure of any single _PRW. 6334 6335Moved the runtime configuration parameters from the global init procedure to 6336static variables in acglobal.h. This will allow the host to override the 6337default values easily. 6338 6339Code and Data Size: Current and previous core subsystem library sizes are 6340shown below. These are the code and data sizes for the acpica.lib produced 6341by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6342any ACPI driver or OSPM code. The debug version of the code includes the 6343debug output trace mechanism and has a much larger code and data size. Note 6344that these values will vary depending on the efficiency of the compiler and 6345the compiler options used during generation. 6346 6347 Previous Release: 6348 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 6349 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 6350 Current Release: 6351 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 6352 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 6353 6354 63552) iASL Compiler/Disassembler: 6356 6357iASL now fully disassembles SSDTs. However, External() statements are not 6358generated automatically for unresolved symbols at this time. This is a 6359planned feature for future implementation. 6360 6361Fixed a scoping problem in the disassembler that occurs when the type of the 6362target of a Scope() operator is overridden. This problem caused an 6363incorrectly nested internal namespace to be constructed. 6364 6365Any warnings or errors that are emitted during disassembly are now commented 6366out automatically so that the resulting file can be recompiled without any 6367hand editing. 6368 6369---------------------------------------- 637026 March 2004. Summary of changes for version 20040326: 6371 63721) ACPI CA Core Subsystem: 6373 6374Implemented support for "wake" GPEs via interaction between GPEs and the 6375_PRW methods. Every GPE that is pointed to by one or more _PRWs is 6376identified as a WAKE GPE and by default will no longer be enabled at 6377runtime. Previously, we were blindly enabling all GPEs with a corresponding 6378_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. We 6379believe this has been the cause of thousands of "spurious" GPEs on some 6380systems. 6381 6382This new GPE behavior is can be reverted to the original behavior (enable 6383ALL GPEs at runtime) via a runtime flag. 6384 6385Fixed a problem where aliased control methods could not access objects 6386properly. The proper scope within the namespace was not initialized 6387(transferred to the target of the aliased method) before executing the 6388target method. 6389 6390Fixed a potential race condition on internal object deletion on the return 6391object in AcpiEvaluateObject. 6392 6393Integrated a fix for resource descriptors where both _MEM and _MTP were 6394being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 6395wide, 0x0F instead of 0x03.) 6396 6397Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a 6398fault in some cases. 6399 6400Updated Notify() values for debug statements in evmisc.c 6401 6402Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 6403 6404Code and Data Size: Current and previous core subsystem library sizes are 6405shown below. These are the code and data sizes for the acpica.lib produced 6406by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6407any ACPI driver or OSPM code. The debug version of the code includes the 6408debug output trace mechanism and has a much larger code and data size. Note 6409that these values will vary depending on the efficiency of the compiler and 6410the compiler options used during generation. 6411 6412 Previous Release: 6413 6414 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 6415 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 6416 Current Release: 6417 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 6418 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 6419 6420---------------------------------------- 642111 March 2004. Summary of changes for version 20040311: 6422 64231) ACPI CA Core Subsystem: 6424 6425Fixed a problem where errors occurring during the parse phase of control 6426method execution did not abort cleanly. For example, objects created and 6427installed in the namespace were not deleted. This caused all subsequent 6428invocations of the method to return the AE_ALREADY_EXISTS exception. 6429 6430Implemented a mechanism to force a control method to "Serialized" execution 6431if the method attempts to create namespace objects. (The root of the 6432AE_ALREADY_EXISTS problem.) 6433 6434Implemented support for the predefined _OSI "internal" control method. 6435Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 6436"Windows 2001.1", and can be easily upgraded for new strings as necessary. 6437This feature will allow "other" operating systems to execute the fully 6438tested, "Windows" code path through the ASL code 6439 6440Global Lock Support: Now allows multiple acquires and releases with any 6441internal thread. Removed concept of "owning thread" for this special mutex. 6442 6443Fixed two functions that were inappropriately declaring large objects on the 6444CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage during 6445method execution considerably. 6446 6447Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 6448S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 6449 6450Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 6451defined on the machine. 6452 6453Implemented two runtime options: One to force all control method execution 6454to "Serialized" to mimic Windows behavior, another to disable _OSI support 6455if it causes problems on a given machine. 6456 6457Code and Data Size: Current and previous core subsystem library sizes are 6458shown below. These are the code and data sizes for the acpica.lib produced 6459by the Microsoft Visual C++ 6.0 compiler, and these values do not include 6460any ACPI driver or OSPM code. The debug version of the code includes the 6461debug output trace mechanism and has a much larger code and data size. Note 6462that these values will vary depending on the efficiency of the compiler and 6463the compiler options used during generation. 6464 6465 Previous Release: 6466 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 6467 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 6468 Current Release: 6469 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 6470 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 6471 64722) iASL Compiler/Disassembler: 6473 6474Fixed an array size problem for FreeBSD that would cause the compiler to 6475fault. 6476 6477---------------------------------------- 647820 February 2004. Summary of changes for version 20040220: 6479 6480 64811) ACPI CA Core Subsystem: 6482 6483Implemented execution of _SxD methods for Device objects in the 6484GetObjectInfo interface. 6485 6486Fixed calls to _SST method to pass the correct arguments. 6487 6488Added a call to _SST on wake to restore to "working" state. 6489 6490Check for End-Of-Buffer failure case in the WalkResources interface. 6491 6492Integrated fix for 64-bit alignment issue in acglobal.h by moving two 6493structures to the beginning of the file. 6494 6495After wake, clear GPE status register(s) before enabling GPEs. 6496 6497After wake, clear/enable power button. (Perhaps we should clear/enable all 6498fixed events upon wake.) 6499 6500Fixed a couple of possible memory leaks in the Namespace manager. 6501 6502Integrated latest acnetbsd.h file. 6503 6504---------------------------------------- 650511 February 2004. Summary of changes for version 20040211: 6506 6507 65081) ACPI CA Core Subsystem: 6509 6510Completed investigation and implementation of the call-by-reference 6511mechanism for control method arguments. 6512 6513Fixed a problem where a store of an object into an indexed package could 6514fail if the store occurs within a different method than the method that 6515created the package. 6516 6517Fixed a problem where the ToDecimal operator could return incorrect results. 6518 6519Fixed a problem where the CopyObject operator could fail on some of the more 6520obscure objects (e.g., Reference objects.) 6521 6522Improved the output of the Debug object to display buffer, package, and 6523index objects. 6524 6525Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 6526the expected result. 6527 6528Added permanent ACPI_REPORT_ERROR macros for all instances of the 6529ACPI_AML_INTERNAL exception. 6530 6531Integrated latest version of acfreebsd.h 6532 6533---------------------------------------- 653416 January 2004. Summary of changes for version 20040116: 6535 6536The purpose of this release is primarily to update the copyright years in 6537each module, thus causing a huge number of diffs. There are a few small 6538functional changes, however. 6539 65401) ACPI CA Core Subsystem: 6541 6542Improved error messages when there is a problem finding one or more of the 6543required base ACPI tables 6544 6545Reintroduced the definition of APIC_HEADER in actbl.h 6546 6547Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 6548 6549Removed extraneous reference to NewObj in dsmthdat.c 6550 65512) iASL compiler 6552 6553Fixed a problem introduced in December that disabled the correct disassembly 6554of Resource Templates 6555 6556 6557---------------------------------------- 655803 December 2003. Summary of changes for version 20031203: 6559 65601) ACPI CA Core Subsystem: 6561 6562Changed the initialization of Operation Regions during subsystem 6563init to perform two entire walks of the ACPI namespace; The first 6564to initialize the regions themselves, the second to execute the 6565_REG methods. This fixed some interdependencies across _REG 6566methods found on some machines. 6567 6568Fixed a problem where a Store(Local0, Local1) could simply update 6569the object reference count, and not create a new copy of the 6570object if the Local1 is uninitialized. 6571 6572Implemented support for the _SST reserved method during sleep 6573transitions. 6574 6575Implemented support to clear the SLP_TYP and SLP_EN bits when 6576waking up, this is apparently required by some machines. 6577 6578When sleeping, clear the wake status only if SleepState is not S5. 6579 6580Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 6581pointer arithmetic advanced a string pointer too far. 6582 6583Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 6584could be returned if the requested table has not been loaded. 6585 6586Within the support for IRQ resources, restructured the handling of 6587the active and edge/level bits. 6588 6589Fixed a few problems in AcpiPsxExecute() where memory could be 6590leaked under certain error conditions. 6591 6592Improved error messages for the cases where the ACPI mode could 6593not be entered. 6594 6595Code and Data Size: Current and previous core subsystem library 6596sizes are shown below. These are the code and data sizes for the 6597acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 6598these values do not include any ACPI driver or OSPM code. The 6599debug version of the code includes the debug output trace 6600mechanism and has a much larger code and data size. Note that 6601these values will vary depending on the efficiency of the compiler 6602and the compiler options used during generation. 6603 6604 Previous Release (20031029): 6605 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 6606 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 6607 Current Release: 6608 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 6609 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 6610 66112) iASL Compiler/Disassembler: 6612 6613Implemented a fix for the iASL disassembler where a bad index was 6614generated. This was most noticeable on 64-bit platforms 6615 6616 6617---------------------------------------- 661829 October 2003. Summary of changes for version 20031029: 6619 66201) ACPI CA Core Subsystem: 6621 6622 6623Fixed a problem where a level-triggered GPE with an associated 6624_Lxx control method was incorrectly cleared twice. 6625 6626Fixed a problem with the Field support code where an access can 6627occur beyond the end-of-region if the field is non-aligned but 6628extends to the very end of the parent region (resulted in an 6629AE_AML_REGION_LIMIT exception.) 6630 6631Fixed a problem with ACPI Fixed Events where an RT Clock handler 6632would not get invoked on an RTC event. The RTC event bitmasks for 6633the PM1 registers were not being initialized properly. 6634 6635Implemented support for executing _STA and _INI methods for 6636Processor objects. Although this is currently not part of the 6637ACPI specification, there is existing ASL code that depends on the 6638init-time execution of these methods. 6639 6640Implemented and deployed a GetDescriptorName function to decode 6641the various types of internal descriptors. Guards against null 6642descriptors during debug output also. 6643 6644Implemented and deployed a GetNodeName function to extract the 4- 6645character namespace node name. This function simplifies the debug 6646and error output, as well as guarding against null pointers during 6647output. 6648 6649Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 6650simplify the debug and error output of 64-bit integers. This 6651macro replaces the HIDWORD and LODWORD macros for dumping these 6652integers. 6653 6654Updated the implementation of the Stall() operator to only call 6655AcpiOsStall(), and also return an error if the operand is larger 6656than 255. This preserves the required behavior of not 6657relinquishing the processor, as would happen if AcpiOsSleep() was 6658called for "long stalls". 6659 6660Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 6661initialized are now treated as NOOPs. 6662 6663Cleaned up a handful of warnings during 64-bit generation. 6664 6665Fixed a reported error where and incorrect GPE number was passed 6666to the GPE dispatch handler. This value is only used for error 6667output, however. Used this opportunity to clean up and streamline 6668the GPE dispatch code. 6669 6670Code and Data Size: Current and previous core subsystem library 6671sizes are shown below. These are the code and data sizes for the 6672acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 6673these values do not include any ACPI driver or OSPM code. The 6674 6675debug version of the code includes the debug output trace 6676mechanism and has a much larger code and data size. Note that 6677these values will vary depending on the efficiency of the compiler 6678and the compiler options used during generation. 6679 6680 Previous Release (20031002): 6681 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 6682 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 6683 Current Release: 6684 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 6685 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 6686 6687 66882) iASL Compiler/Disassembler: 6689 6690Updated the iASL compiler to return an error if the operand to the 6691Stall() operator is larger than 255. 6692 6693 6694---------------------------------------- 669502 October 2003. Summary of changes for version 20031002: 6696 6697 66981) ACPI CA Core Subsystem: 6699 6700Fixed a problem with Index Fields where the index was not 6701incremented for fields that require multiple writes to the 6702index/data registers (Fields that are wider than the data 6703register.) 6704 6705Fixed a problem with all Field objects where a write could go 6706beyond the end-of-field if the field was larger than the access 6707granularity and therefore required multiple writes to complete the 6708request. An extra write beyond the end of the field could happen 6709inadvertently. 6710 6711Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 6712would incorrectly be returned if the width of the Data Register 6713was larger than the specified field access width. 6714 6715Completed fixes for LoadTable() and Unload() and verified their 6716operation. Implemented full support for the "DdbHandle" object 6717throughout the ACPI CA subsystem. 6718 6719Implemented full support for the MADT and ECDT tables in the ACPI 6720CA header files. Even though these tables are not directly 6721consumed by ACPI CA, the header definitions are useful for ACPI 6722device drivers. 6723 6724Integrated resource descriptor fixes posted to the Linux ACPI 6725list. This included checks for minimum descriptor length, and 6726support for trailing NULL strings within descriptors that have 6727optional string elements. 6728 6729Code and Data Size: Current and previous core subsystem library 6730sizes are shown below. These are the code and data sizes for the 6731acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 6732these values do not include any ACPI driver or OSPM code. The 6733debug version of the code includes the debug output trace 6734mechanism and has a much larger code and data size. Note that 6735these values will vary depending on the efficiency of the compiler 6736and the compiler options used during generation. 6737 6738 Previous Release (20030918): 6739 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 6740 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 6741 Current Release: 6742 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 6743 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 6744 6745 67462) iASL Compiler: 6747 6748Implemented detection of non-ASCII characters within the input 6749source ASL file. This catches attempts to compile binary (AML) 6750files early in the compile, with an informative error message. 6751 6752Fixed a problem where the disassembler would fault if the output 6753filename could not be generated or if the output file could not be 6754opened. 6755 6756---------------------------------------- 675718 September 2003. Summary of changes for version 20030918: 6758 6759 67601) ACPI CA Core Subsystem: 6761 6762Found and fixed a longstanding problem with the late execution of 6763the various deferred AML opcodes (such as Operation Regions, 6764Buffer Fields, Buffers, and Packages). If the name string 6765specified for the name of the new object placed the object in a 6766scope other than the current scope, the initialization/execution 6767of the opcode failed. The solution to this problem was to 6768implement a mechanism where the late execution of such opcodes 6769does not attempt to lookup/create the name a second time in an 6770incorrect scope. This fixes the "region size computed 6771incorrectly" problem. 6772 6773Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 6774Global Lock AE_BAD_PARAMETER error. 6775 6776Fixed several 64-bit issues with prototypes, casting and data 6777types. 6778 6779Removed duplicate prototype from acdisasm.h 6780 6781Fixed an issue involving EC Operation Region Detach (Shaohua Li) 6782 6783Code and Data Size: Current and previous core subsystem library 6784sizes are shown below. These are the code and data sizes for the 6785acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 6786these values do not include any ACPI driver or OSPM code. The 6787debug version of the code includes the debug output trace 6788mechanism and has a much larger code and data size. Note that 6789these values will vary depending on the efficiency of the compiler 6790and the compiler options used during generation. 6791 6792 Previous Release: 6793 6794 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 6795 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 6796 Current Release: 6797 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 6798 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 6799 6800 68012) Linux: 6802 6803Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 6804correct sleep time in seconds. 6805 6806---------------------------------------- 680714 July 2003. Summary of changes for version 20030619: 6808 68091) ACPI CA Core Subsystem: 6810 6811Parse SSDTs in order discovered, as opposed to reverse order 6812(Hrvoje Habjanic) 6813 6814Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 6815Klausner, 6816 Nate Lawson) 6817 6818 68192) Linux: 6820 6821Dynamically allocate SDT list (suggested by Andi Kleen) 6822 6823proc function return value cleanups (Andi Kleen) 6824 6825Correctly handle NMI watchdog during long stalls (Andrew Morton) 6826 6827Make it so acpismp=force works (reported by Andrew Morton) 6828 6829 6830---------------------------------------- 683119 June 2003. Summary of changes for version 20030619: 6832 68331) ACPI CA Core Subsystem: 6834 6835Fix To/FromBCD, eliminating the need for an arch-specific #define. 6836 6837Do not acquire a semaphore in the S5 shutdown path. 6838 6839Fix ex_digits_needed for 0. (Takayoshi Kochi) 6840 6841Fix sleep/stall code reversal. (Andi Kleen) 6842 6843Revert a change having to do with control method calling 6844semantics. 6845 68462) Linux: 6847 6848acpiphp update (Takayoshi Kochi) 6849 6850Export acpi_disabled for sonypi (Stelian Pop) 6851 6852Mention acpismp=force in config help 6853 6854Re-add acpitable.c and acpismp=force. This improves backwards 6855 6856compatibility and also cleans up the code to a significant degree. 6857 6858Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 6859 6860---------------------------------------- 686122 May 2003. Summary of changes for version 20030522: 6862 68631) ACPI CA Core Subsystem: 6864 6865Found and fixed a reported problem where an AE_NOT_FOUND error 6866occurred occasionally during _BST evaluation. This turned out to 6867be an Owner ID allocation issue where a called method did not get 6868a new ID assigned to it. Eventually, (after 64k calls), the Owner 6869ID UINT16 would wraparound so that the ID would be the same as the 6870caller's and the called method would delete the caller's 6871namespace. 6872 6873Implemented extended error reporting for control methods that are 6874aborted due to a run-time exception. Output includes the exact 6875AML instruction that caused the method abort, a dump of the method 6876locals and arguments at the time of the abort, and a trace of all 6877nested control method calls. 6878 6879Modified the interpreter to allow the creation of buffers of zero 6880length from the AML code. Implemented new code to ensure that no 6881attempt is made to actually allocate a memory buffer (of length 6882zero) - instead, a simple buffer object with a NULL buffer pointer 6883and length zero is created. A warning is no longer issued when 6884the AML attempts to create a zero-length buffer. 6885 6886Implemented a workaround for the "leading asterisk issue" in 6887_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 6888asterisk is automatically removed if present in any HID, UID, or 6889CID strings. The iASL compiler will still flag this asterisk as 6890an error, however. 6891 6892Implemented full support for _CID methods that return a package of 6893multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 6894now additionally returns a device _CID list if present. This 6895required a change to the external interface in order to pass an 6896ACPI_BUFFER object as a parameter since the _CID list is of 6897variable length. 6898 6899Fixed a problem with the new AE_SAME_HANDLER exception where 6900handler initialization code did not know about this exception. 6901 6902Code and Data Size: Current and previous core subsystem library 6903sizes are shown below. These are the code and data sizes for the 6904acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 6905these values do not include any ACPI driver or OSPM code. The 6906debug version of the code includes the debug output trace 6907mechanism and has a much larger code and data size. Note that 6908these values will vary depending on the efficiency of the compiler 6909and the compiler options used during generation. 6910 6911 Previous Release (20030509): 6912 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 6913 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 6914 Current Release: 6915 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 6916 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 6917 6918 69192) Linux: 6920 6921Fixed a bug in which we would reinitialize the ACPI interrupt 6922after it was already working, thus disabling all ACPI and the IRQs 6923for any other device sharing the interrupt. (Thanks to Stian 6924Jordet) 6925 6926Toshiba driver update (John Belmonte) 6927 6928Return only 0 or 1 for our interrupt handler status (Andrew 6929Morton) 6930 6931 69323) iASL Compiler: 6933 6934Fixed a reported problem where multiple (nested) ElseIf() 6935statements were not handled correctly by the compiler, resulting 6936in incorrect warnings and incorrect AML code. This was a problem 6937in both the ASL parser and the code generator. 6938 6939 69404) Documentation: 6941 6942Added changes to existing interfaces, new exception codes, and new 6943text concerning reference count object management versus garbage 6944collection. 6945 6946---------------------------------------- 694709 May 2003. Summary of changes for version 20030509. 6948 6949 69501) ACPI CA Core Subsystem: 6951 6952Changed the subsystem initialization sequence to hold off 6953installation of address space handlers until the hardware has been 6954initialized and the system has entered ACPI mode. This is because 6955the installation of space handlers can cause _REG methods to be 6956run. Previously, the _REG methods could potentially be run before 6957ACPI mode was enabled. 6958 6959Fixed some memory leak issues related to address space handler and 6960notify handler installation. There were some problems with the 6961reference count mechanism caused by the fact that the handler 6962objects are shared across several namespace objects. 6963 6964Fixed a reported problem where reference counts within the 6965namespace were not properly updated when named objects created by 6966method execution were deleted. 6967 6968Fixed a reported problem where multiple SSDTs caused a deletion 6969issue during subsystem termination. Restructured the table data 6970structures to simplify the linked lists and the related code. 6971 6972Fixed a problem where the table ID associated with secondary 6973tables (SSDTs) was not being propagated into the namespace objects 6974created by those tables. This would only present a problem for 6975tables that are unloaded at run-time, however. 6976 6977Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 6978type as the length parameter (instead of UINT32). 6979 6980Solved a long-standing problem where an ALREADY_EXISTS error 6981appears on various systems. This problem could happen when there 6982are multiple PCI_Config operation regions under a single PCI root 6983bus. This doesn't happen very frequently, but there are some 6984systems that do this in the ASL. 6985 6986Fixed a reported problem where the internal DeleteNode function 6987was incorrectly handling the case where a namespace node was the 6988first in the parent's child list, and had additional peers (not 6989the only child, but first in the list of children.) 6990 6991Code and Data Size: Current core subsystem library sizes are shown 6992below. These are the code and data sizes for the acpica.lib 6993produced by the Microsoft Visual C++ 6.0 compiler, and these 6994values do not include any ACPI driver or OSPM code. The debug 6995version of the code includes the debug output trace mechanism and 6996has a much larger code and data size. Note that these values will 6997vary depending on the efficiency of the compiler and the compiler 6998options used during generation. 6999 7000 Previous Release 7001 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 7002 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 7003 Current Release: 7004 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 7005 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 7006 7007 70082) Linux: 7009 7010Allow ":" in OS override string (Ducrot Bruno) 7011 7012Kobject fix (Greg KH) 7013 7014 70153 iASL Compiler/Disassembler: 7016 7017Fixed a problem in the generation of the C source code files (AML 7018is emitted in C source statements for BIOS inclusion) where the 7019Ascii dump that appears within a C comment at the end of each line 7020could cause a compile time error if the AML sequence happens to 7021have an open comment or close comment sequence embedded. 7022 7023 7024---------------------------------------- 702524 April 2003. Summary of changes for version 20030424. 7026 7027 70281) ACPI CA Core Subsystem: 7029 7030Support for big-endian systems has been implemented. Most of the 7031support has been invisibly added behind big-endian versions of the 7032ACPI_MOVE_* macros. 7033 7034Fixed a problem in AcpiHwDisableGpeBlock() and 7035AcpiHwClearGpeBlock() where an incorrect offset was passed to the 7036low level hardware write routine. The offset parameter was 7037actually eliminated from the low level read/write routines because 7038they had become obsolete. 7039 7040Fixed a problem where a handler object was deleted twice during 7041the removal of a fixed event handler. 7042 7043 70442) Linux: 7045 7046A fix for SMP systems with link devices was contributed by 7047 7048Compaq's Dan Zink. 7049 7050(2.5) Return whether we handled the interrupt in our IRQ handler. 7051(Linux ISRs no longer return void, so we can propagate the handler 7052return value from the ACPI CA core back to the OS.) 7053 7054 7055 70563) Documentation: 7057 7058The ACPI CA Programmer Reference has been updated to reflect new 7059interfaces and changes to existing interfaces. 7060 7061---------------------------------------- 706228 March 2003. Summary of changes for version 20030328. 7063 70641) ACPI CA Core Subsystem: 7065 7066The GPE Block Device support has been completed. New interfaces 7067are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 7068interfaces (enable, disable, clear, getstatus) have been split 7069into separate interfaces for Fixed Events and General Purpose 7070Events (GPEs) in order to support GPE Block Devices properly. 7071 7072Fixed a problem where the error message "Failed to acquire 7073semaphore" would appear during operations on the embedded 7074controller (EC). 7075 7076Code and Data Size: Current core subsystem library sizes are shown 7077below. These are the code and data sizes for the acpica.lib 7078produced by the Microsoft Visual C++ 6.0 compiler, and these 7079values do not include any ACPI driver or OSPM code. The debug 7080version of the code includes the debug output trace mechanism and 7081has a much larger code and data size. Note that these values will 7082vary depending on the efficiency of the compiler and the compiler 7083options used during generation. 7084 7085 Previous Release 7086 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 7087 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 7088 Current Release: 7089 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 7090 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 7091 7092 7093---------------------------------------- 709428 February 2003. Summary of changes for version 20030228. 7095 7096 70971) ACPI CA Core Subsystem: 7098 7099The GPE handling and dispatch code has been completely overhauled 7100in preparation for support of GPE Block Devices (ID ACPI0006). 7101This affects internal data structures and code only; there should 7102be no differences visible externally. One new file has been 7103added, evgpeblk.c 7104 7105The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 7106fields that are used to determine the GPE block lengths. The 7107REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 7108structures are ignored. This is per the ACPI specification but it 7109isn't very clear. The full 256 Block 0/1 GPEs are now supported 7110(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 7111 7112In the SCI interrupt handler, removed the read of the PM1_CONTROL 7113register to look at the SCI_EN bit. On some machines, this read 7114causes an SMI event and greatly slows down SCI events. (This may 7115in fact be the cause of slow battery status response on some 7116systems.) 7117 7118Fixed a problem where a store of a NULL string to a package object 7119could cause the premature deletion of the object. This was seen 7120during execution of the battery _BIF method on some systems, 7121resulting in no battery data being returned. 7122 7123Added AcpiWalkResources interface to simplify parsing of resource 7124lists. 7125 7126Code and Data Size: Current core subsystem library sizes are shown 7127below. These are the code and data sizes for the acpica.lib 7128produced by the Microsoft Visual C++ 6.0 compiler, and these 7129values do not include any ACPI driver or OSPM code. The debug 7130version of the code includes the debug output trace mechanism and 7131has a much larger code and data size. Note that these values will 7132vary depending on the efficiency of the compiler and the compiler 7133options used during generation. 7134 7135 Previous Release 7136 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 7137 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 7138 Current Release: 7139 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 7140 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 7141 7142 71432) Linux 7144 7145S3 fixes (Ole Rohne) 7146 7147Update ACPI PHP driver with to use new acpi_walk_resource API 7148(Bjorn Helgaas) 7149 7150Add S4BIOS support (Pavel Machek) 7151 7152Map in entire table before performing checksum (John Stultz) 7153 7154Expand the mem= cmdline to allow the specification of reserved and 7155ACPI DATA blocks (Pavel Machek) 7156 7157Never use ACPI on VISWS 7158 7159Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 7160 7161Revert a change that allowed P_BLK lengths to be 4 or 5. This is 7162causing us to think that some systems support C2 when they really 7163don't. 7164 7165Do not count processor objects for non-present CPUs (Thanks to 7166Dominik Brodowski) 7167 7168 71693) iASL Compiler: 7170 7171Fixed a problem where ASL include files could not be found and 7172opened. 7173 7174Added support for the _PDC reserved name. 7175 7176 7177---------------------------------------- 717822 January 2003. Summary of changes for version 20030122. 7179 7180 71811) ACPI CA Core Subsystem: 7182 7183Added a check for constructs of the form: Store (Local0, Local0) 7184where Local0 is not initialized. Apparently, some BIOS 7185programmers believe that this is a NOOP. Since this store doesn't 7186do anything anyway, the new prototype behavior will ignore this 7187error. This is a case where we can relax the strict checking in 7188the interpreter in the name of compatibility. 7189 7190 71912) Linux 7192 7193The AcpiSrc Source Conversion Utility has been released with the 7194Linux package for the first time. This is the utility that is 7195used to convert the ACPI CA base source code to the Linux version. 7196 7197(Both) Handle P_BLK lengths shorter than 6 more gracefully 7198 7199(Both) Move more headers to include/acpi, and delete an unused 7200header. 7201 7202(Both) Move drivers/acpi/include directory to include/acpi 7203 7204(Both) Boot functions don't use cmdline, so don't pass it around 7205 7206(Both) Remove include of unused header (Adrian Bunk) 7207 7208(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 7209the 7210former now also includes the latter, acpiphp.h only needs the one, 7211now. 7212 7213(2.5) Make it possible to select method of bios restoring after S3 7214resume. [=> no more ugly ifdefs] (Pavel Machek) 7215 7216(2.5) Make proc write interfaces work (Pavel Machek) 7217 7218(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 7219 7220(2.5) Break out ACPI Perf code into its own module, under cpufreq 7221(Dominik Brodowski) 7222 7223(2.4) S4BIOS support (Ducrot Bruno) 7224 7225(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 7226Visinoni) 7227 7228 72293) iASL Compiler: 7230 7231Added support to disassemble SSDT and PSDTs. 7232 7233Implemented support to obtain SSDTs from the Windows registry if 7234available. 7235 7236 7237---------------------------------------- 723809 January 2003. Summary of changes for version 20030109. 7239 72401) ACPI CA Core Subsystem: 7241 7242Changed the behavior of the internal Buffer-to-String conversion 7243function. The current ACPI specification states that the contents 7244of the buffer are "converted to a string of two-character 7245hexadecimal numbers, each separated by a space". Unfortunately, 7246this definition is not backwards compatible with existing ACPI 1.0 7247implementations (although the behavior was not defined in the ACPI 72481.0 specification). The new behavior simply copies data from the 7249buffer to the string until a null character is found or the end of 7250the buffer is reached. The new String object is always null 7251terminated. This problem was seen during the generation of _BIF 7252battery data where incorrect strings were returned for battery 7253type, etc. This will also require an errata to the ACPI 7254specification. 7255 7256Renamed all instances of NATIVE_UINT and NATIVE_INT to 7257ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 7258 7259Copyright in all module headers (both Linux and non-Linux) has be 7260updated to 2003. 7261 7262Code and Data Size: Current core subsystem library sizes are shown 7263below. These are the code and data sizes for the acpica.lib 7264produced by the Microsoft Visual C++ 6.0 compiler, and these 7265values do not include any ACPI driver or OSPM code. The debug 7266version of the code includes the debug output trace mechanism and 7267has a much larger code and data size. Note that these values will 7268vary depending on the efficiency of the compiler and the compiler 7269options used during generation. 7270 7271 Previous Release 7272 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 7273 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 7274 Current Release: 7275 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 7276 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 7277 7278 72792) Linux 7280 7281Fixed an oops on module insertion/removal (Matthew Tippett) 7282 7283(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 7284 7285(2.5) Replace pr_debug (Randy Dunlap) 7286 7287(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 7288 7289(Both) Eliminate spawning of thread from timer callback, in favor 7290of schedule_work() 7291 7292(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 7293 7294(Both) Added define for Fixed Function HW region (Matthew Wilcox) 7295 7296(Both) Add missing statics to button.c (Pavel Machek) 7297 7298Several changes have been made to the source code translation 7299utility that generates the Linux Code in order to make the code 7300more "Linux-like": 7301 7302All typedefs on structs and unions have been removed in keeping 7303with the Linux coding style. 7304 7305Removed the non-Linux SourceSafe module revision number from each 7306module header. 7307 7308Completed major overhaul of symbols to be lowercased for linux. 7309Doubled the number of symbols that are lowercased. 7310 7311Fixed a problem where identifiers within procedure headers and 7312within quotes were not fully lower cased (they were left with a 7313starting capital.) 7314 7315Some C macros whose only purpose is to allow the generation of 16- 7316bit code are now completely removed in the Linux code, increasing 7317readability and maintainability. 7318 7319---------------------------------------- 7320 732112 December 2002. Summary of changes for version 20021212. 7322 7323 73241) ACPI CA Core Subsystem: 7325 7326Fixed a problem where the creation of a zero-length AML Buffer 7327would cause a fault. 7328 7329Fixed a problem where a Buffer object that pointed to a static AML 7330buffer (in an ACPI table) could inadvertently be deleted, causing 7331memory corruption. 7332 7333Fixed a problem where a user buffer (passed in to the external 7334ACPI CA interfaces) could be overwritten if the buffer was too 7335small to complete the operation, causing memory corruption. 7336 7337Fixed a problem in the Buffer-to-String conversion code where a 7338string of length one was always returned, regardless of the size 7339of the input Buffer object. 7340 7341Removed the NATIVE_CHAR data type across the entire source due to 7342lack of need and lack of consistent use. 7343 7344Code and Data Size: Current core subsystem library sizes are shown 7345below. These are the code and data sizes for the acpica.lib 7346produced by the Microsoft Visual C++ 6.0 compiler, and these 7347values do not include any ACPI driver or OSPM code. The debug 7348version of the code includes the debug output trace mechanism and 7349has a much larger code and data size. Note that these values will 7350vary depending on the efficiency of the compiler and the compiler 7351options used during generation. 7352 7353 Previous Release 7354 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 7355 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 7356 Current Release: 7357 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 7358 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 7359 7360 7361---------------------------------------- 736205 December 2002. Summary of changes for version 20021205. 7363 73641) ACPI CA Core Subsystem: 7365 7366Fixed a problem where a store to a String or Buffer object could 7367cause corruption of the DSDT if the object type being stored was 7368the same as the target object type and the length of the object 7369being stored was equal to or smaller than the original (existing) 7370target object. This was seen to cause corruption of battery _BIF 7371buffers if the _BIF method modified the buffer on the fly. 7372 7373Fixed a problem where an internal error was generated if a control 7374method invocation was used in an OperationRegion, Buffer, or 7375Package declaration. This was caused by the deferred parsing of 7376the control method and thus the deferred creation of the internal 7377method object. The solution to this problem was to create the 7378internal method object at the moment the method is encountered in 7379the first pass - so that subsequent references to the method will 7380able to obtain the required parameter count and thus properly 7381parse the method invocation. This problem presented itself as an 7382AE_AML_INTERNAL during the pass 1 parse phase during table load. 7383 7384Fixed a problem where the internal String object copy routine did 7385not always allocate sufficient memory for the target String object 7386and caused memory corruption. This problem was seen to cause 7387"Allocation already present in list!" errors as memory allocation 7388became corrupted. 7389 7390Implemented a new function for the evaluation of namespace objects 7391that allows the specification of the allowable return object 7392types. This simplifies a lot of code that checks for a return 7393object of one or more specific objects returned from the 7394evaluation (such as _STA, etc.) This may become and external 7395function if it would be useful to ACPI-related drivers. 7396 7397Completed another round of prefixing #defines with "ACPI_" for 7398clarity. 7399 7400Completed additional code restructuring to allow more modular 7401linking for iASL compiler and AcpiExec. Several files were split 7402creating new files. New files: nsparse.c dsinit.c evgpe.c 7403 7404Implemented an abort mechanism to terminate an executing control 7405method via the AML debugger. This feature is useful for debugging 7406control methods that depend (wait) for specific hardware 7407responses. 7408 7409Code and Data Size: Current core subsystem library sizes are shown 7410below. These are the code and data sizes for the acpica.lib 7411produced by the Microsoft Visual C++ 6.0 compiler, and these 7412values do not include any ACPI driver or OSPM code. The debug 7413version of the code includes the debug output trace mechanism and 7414has a much larger code and data size. Note that these values will 7415vary depending on the efficiency of the compiler and the compiler 7416options used during generation. 7417 7418 Previous Release 7419 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 7420 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 7421 Current Release: 7422 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 7423 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 7424 7425 74262) iASL Compiler/Disassembler 7427 7428Fixed a compiler code generation problem for "Interrupt" Resource 7429Descriptors. If specified in the ASL, the optional "Resource 7430Source Index" and "Resource Source" fields were not inserted into 7431the correct location within the AML resource descriptor, creating 7432an invalid descriptor. 7433 7434Fixed a disassembler problem for "Interrupt" resource descriptors. 7435The optional "Resource Source Index" and "Resource Source" fields 7436were ignored. 7437 7438 7439---------------------------------------- 744022 November 2002. Summary of changes for version 20021122. 7441 7442 74431) ACPI CA Core Subsystem: 7444 7445Fixed a reported problem where an object stored to a Method Local 7446or Arg was not copied to a new object during the store - the 7447object pointer was simply copied to the Local/Arg. This caused 7448all subsequent operations on the Local/Arg to also affect the 7449original source of the store operation. 7450 7451Fixed a problem where a store operation to a Method Local or Arg 7452was not completed properly if the Local/Arg contained a reference 7453(from RefOf) to a named field. The general-purpose store-to- 7454namespace-node code is now used so that this case is handled 7455automatically. 7456 7457Fixed a problem where the internal object copy routine would cause 7458a protection fault if the object being copied was a Package and 7459contained either 1) a NULL package element or 2) a nested sub- 7460package. 7461 7462Fixed a problem with the GPE initialization that resulted from an 7463ambiguity in the ACPI specification. One section of the 7464specification states that both the address and length of the GPE 7465block must be zero if the block is not supported. Another section 7466implies that only the address need be zero if the block is not 7467supported. The code has been changed so that both the address and 7468the length must be non-zero to indicate a valid GPE block (i.e., 7469if either the address or the length is zero, the GPE block is 7470invalid.) 7471 7472Code and Data Size: Current core subsystem library sizes are shown 7473below. These are the code and data sizes for the acpica.lib 7474produced by the Microsoft Visual C++ 6.0 compiler, and these 7475values do not include any ACPI driver or OSPM code. The debug 7476version of the code includes the debug output trace mechanism and 7477has a much larger code and data size. Note that these values will 7478vary depending on the efficiency of the compiler and the compiler 7479options used during generation. 7480 7481 Previous Release 7482 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 7483 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 7484 Current Release: 7485 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 7486 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 7487 7488 74892) Linux 7490 7491Cleaned up EC driver. Exported an external EC read/write 7492interface. By going through this, other drivers (most notably 7493sonypi) will be able to serialize access to the EC. 7494 7495 74963) iASL Compiler/Disassembler 7497 7498Implemented support to optionally generate include files for both 7499ASM and C (the -i switch). This simplifies BIOS development by 7500automatically creating include files that contain external 7501declarations for the symbols that are created within the 7502 7503(optionally generated) ASM and C AML source files. 7504 7505 7506---------------------------------------- 750715 November 2002. Summary of changes for version 20021115. 7508 75091) ACPI CA Core Subsystem: 7510 7511Fixed a memory leak problem where an error during resolution of 7512 7513method arguments during a method invocation from another method 7514failed to cleanup properly by deleting all successfully resolved 7515argument objects. 7516 7517Fixed a problem where the target of the Index() operator was not 7518correctly constructed if the source object was a package. This 7519problem has not been detected because the use of a target operand 7520with Index() is very rare. 7521 7522Fixed a problem with the Index() operator where an attempt was 7523made to delete the operand objects twice. 7524 7525Fixed a problem where an attempt was made to delete an operand 7526twice during execution of the CondRefOf() operator if the target 7527did not exist. 7528 7529Implemented the first of perhaps several internal create object 7530functions that create and initialize a specific object type. This 7531consolidates duplicated code wherever the object is created, thus 7532shrinking the size of the subsystem. 7533 7534Implemented improved debug/error messages for errors that occur 7535during nested method invocations. All executing method pathnames 7536are displayed (with the error) as the call stack is unwound - thus 7537simplifying debug. 7538 7539Fixed a problem introduced in the 10/02 release that caused 7540premature deletion of a buffer object if a buffer was used as an 7541ASL operand where an integer operand is required (Thus causing an 7542implicit object conversion from Buffer to Integer.) The change in 7543the 10/02 release was attempting to fix a memory leak (albeit 7544incorrectly.) 7545 7546Code and Data Size: Current core subsystem library sizes are shown 7547below. These are the code and data sizes for the acpica.lib 7548produced by the Microsoft Visual C++ 6.0 compiler, and these 7549values do not include any ACPI driver or OSPM code. The debug 7550version of the code includes the debug output trace mechanism and 7551has a much larger code and data size. Note that these values will 7552vary depending on the efficiency of the compiler and the compiler 7553options used during generation. 7554 7555 Previous Release 7556 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 7557 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 7558 Current Release: 7559 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 7560 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 7561 7562 75632) Linux 7564 7565Changed the implementation of the ACPI semaphores to use down() 7566instead of down_interruptable(). It is important that the 7567execution of ACPI control methods not be interrupted by signals. 7568Methods must run to completion, or the system may be left in an 7569unknown/unstable state. 7570 7571Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 7572(Shawn Starr) 7573 7574 75753) iASL Compiler/Disassembler 7576 7577 7578Changed the default location of output files. All output files 7579are now placed in the current directory by default instead of in 7580the directory of the source file. This change may affect some 7581existing makefiles, but it brings the behavior of the compiler in 7582line with other similar tools. The location of the output files 7583can be overridden with the -p command line switch. 7584 7585 7586---------------------------------------- 758711 November 2002. Summary of changes for version 20021111. 7588 7589 75900) ACPI Specification 2.0B is released and is now available at: 7591http://www.acpi.info/index.html 7592 7593 75941) ACPI CA Core Subsystem: 7595 7596Implemented support for the ACPI 2.0 SMBus Operation Regions. 7597This includes the early detection and handoff of the request to 7598the SMBus region handler (avoiding all of the complex field 7599support code), and support for the bidirectional return packet 7600from an SMBus write operation. This paves the way for the 7601development of SMBus drivers in each host operating system. 7602 7603Fixed a problem where the semaphore WAIT_FOREVER constant was 7604defined as 32 bits, but must be 16 bits according to the ACPI 7605specification. This had the side effect of causing ASL 7606Mutex/Event timeouts even though the ASL code requested a wait 7607forever. Changed all internal references to the ACPI timeout 7608parameter to 16 bits to prevent future problems. Changed the name 7609of WAIT_FOREVER to ACPI_WAIT_FOREVER. 7610 7611Code and Data Size: Current core subsystem library sizes are shown 7612below. These are the code and data sizes for the acpica.lib 7613produced by the Microsoft Visual C++ 6.0 compiler, and these 7614values do not include any ACPI driver or OSPM code. The debug 7615version of the code includes the debug output trace mechanism and 7616has a much larger code and data size. Note that these values will 7617vary depending on the efficiency of the compiler and the compiler 7618options used during generation. 7619 7620 Previous Release 7621 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 7622 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 7623 Current Release: 7624 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 7625 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 7626 7627 76282) Linux 7629 7630Module loading/unloading fixes (John Cagle) 7631 7632 76333) iASL Compiler/Disassembler 7634 7635Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 7636 7637Implemented support for the disassembly of all SMBus protocol 7638keywords (SMBQuick, SMBWord, etc.) 7639 7640---------------------------------------- 764101 November 2002. Summary of changes for version 20021101. 7642 7643 76441) ACPI CA Core Subsystem: 7645 7646Fixed a problem where platforms that have a GPE1 block but no GPE0 7647block were not handled correctly. This resulted in a "GPE 7648overlap" error message. GPE0 is no longer required. 7649 7650Removed code added in the previous release that inserted nodes 7651into the namespace in alphabetical order. This caused some side- 7652effects on various machines. The root cause of the problem is 7653still under investigation since in theory, the internal ordering 7654of the namespace nodes should not matter. 7655 7656 7657Enhanced error reporting for the case where a named object is not 7658found during control method execution. The full ACPI namepath 7659(name reference) of the object that was not found is displayed in 7660this case. 7661 7662Note: as a result of the overhaul of the namespace object types in 7663the previous release, the namespace nodes for the predefined 7664scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 7665instead of ACPI_TYPE_ANY. This simplifies the namespace 7666management code but may affect code that walks the namespace tree 7667looking for specific object types. 7668 7669Code and Data Size: Current core subsystem library sizes are shown 7670below. These are the code and data sizes for the acpica.lib 7671produced by the Microsoft Visual C++ 6.0 compiler, and these 7672values do not include any ACPI driver or OSPM code. The debug 7673version of the code includes the debug output trace mechanism and 7674has a much larger code and data size. Note that these values will 7675vary depending on the efficiency of the compiler and the compiler 7676options used during generation. 7677 7678 Previous Release 7679 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 7680 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 7681 Current Release: 7682 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 7683 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 7684 7685 76862) Linux 7687 7688Fixed a problem introduced in the previous release where the 7689Processor and Thermal objects were not recognized and installed in 7690/proc. This was related to the scope type change described above. 7691 7692 76933) iASL Compiler/Disassembler 7694 7695Implemented the -g option to get all of the required ACPI tables 7696from the registry and save them to files (Windows version of the 7697compiler only.) The required tables are the FADT, FACS, and DSDT. 7698 7699Added ACPI table checksum validation during table disassembly in 7700order to catch corrupted tables. 7701 7702 7703---------------------------------------- 770422 October 2002. Summary of changes for version 20021022. 7705 77061) ACPI CA Core Subsystem: 7707 7708Implemented a restriction on the Scope operator that the target 7709must already exist in the namespace at the time the operator is 7710encountered (during table load or method execution). In other 7711words, forward references are not allowed and Scope() cannot 7712create a new object. This changes the previous behavior where the 7713interpreter would create the name if not found. This new behavior 7714correctly enables the search-to-root algorithm during namespace 7715lookup of the target name. Because of this upsearch, this fixes 7716the known Compaq _SB_.OKEC problem and makes both the AML 7717interpreter and iASL compiler compatible with other ACPI 7718implementations. 7719 7720Completed a major overhaul of the internal ACPI object types for 7721the ACPI Namespace and the associated operand objects. Many of 7722these types had become obsolete with the introduction of the two- 7723pass namespace load. This cleanup simplifies the code and makes 7724the entire namespace load mechanism much clearer and easier to 7725understand. 7726 7727Improved debug output for tracking scope opening/closing to help 7728diagnose scoping issues. The old scope name as well as the new 7729scope name are displayed. Also improved error messages for 7730problems with ASL Mutex objects and error messages for GPE 7731problems. 7732 7733Cleaned up the namespace dump code, removed obsolete code. 7734 7735All string output (for all namespace/object dumps) now uses the 7736common ACPI string output procedure which handles escapes properly 7737and does not emit non-printable characters. 7738 7739Fixed some issues with constants in the 64-bit version of the 7740local C library (utclib.c) 7741 7742 77432) Linux 7744 7745EC Driver: No longer attempts to acquire the Global Lock at 7746interrupt level. 7747 7748 77493) iASL Compiler/Disassembler 7750 7751Implemented ACPI 2.0B grammar change that disallows all Type 1 and 77522 opcodes outside of a control method. This means that the 7753"executable" operators (versus the "namespace" operators) cannot 7754be used at the table level; they can only be used within a control 7755method. 7756 7757Implemented the restriction on the Scope() operator where the 7758target must already exist in the namespace at the time the 7759operator is encountered (during ASL compilation). In other words, 7760forward references are not allowed and Scope() cannot create a new 7761object. This makes the iASL compiler compatible with other ACPI 7762implementations and makes the Scope() implementation adhere to the 7763ACPI specification. 7764 7765Fixed a problem where namepath optimization for the Alias operator 7766was optimizing the wrong path (of the two namepaths.) This caused 7767a "Missing alias link" error message. 7768 7769Fixed a problem where an "unknown reserved name" warning could be 7770incorrectly generated for names like "_SB" when the trailing 7771underscore is not used in the original ASL. 7772 7773Fixed a problem where the reserved name check did not handle 7774NamePaths with multiple NameSegs correctly. The first nameseg of 7775the NamePath was examined instead of the last NameSeg. 7776 7777 7778---------------------------------------- 7779 778002 October 2002. Summary of changes for this release. 7781 7782 77831) ACPI CA Core Subsystem version 20021002: 7784 7785Fixed a problem where a store/copy of a string to an existing 7786string did not always set the string length properly in the String 7787object. 7788 7789Fixed a reported problem with the ToString operator where the 7790behavior was identical to the ToHexString operator instead of just 7791simply converting a raw buffer to a string data type. 7792 7793Fixed a problem where CopyObject and the other "explicit" 7794conversion operators were not updating the internal namespace node 7795type as part of the store operation. 7796 7797Fixed a memory leak during implicit source operand conversion 7798where the original object was not deleted if it was converted to a 7799new object of a different type. 7800 7801Enhanced error messages for all problems associated with namespace 7802lookups. Common procedure generates and prints the lookup name as 7803well as the formatted status. 7804 7805Completed implementation of a new design for the Alias support 7806within the namespace. The existing design did not handle the case 7807where a new object was assigned to one of the two names due to the 7808use of an explicit conversion operator, resulting in the two names 7809pointing to two different objects. The new design simply points 7810the Alias name to the original name node - not to the object. 7811This results in a level of indirection that must be handled in the 7812name resolution mechanism. 7813 7814Code and Data Size: Current core subsystem library sizes are shown 7815below. These are the code and data sizes for the acpica.lib 7816produced by the Microsoft Visual C++ 6.0 compiler, and these 7817values do not include any ACPI driver or OSPM code. The debug 7818version of the code includes the debug output trace mechanism and 7819has a larger code and data size. Note that these values will vary 7820depending on the efficiency of the compiler and the compiler 7821options used during generation. 7822 7823 Previous Release 7824 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 7825 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 7826 Current Release: 7827 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 7828 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 7829 7830 78312) Linux 7832 7833Initialize thermal driver's timer before it is used. (Knut 7834Neumann) 7835 7836Allow handling negative celsius values. (Kochi Takayoshi) 7837 7838Fix thermal management and make trip points. R/W (Pavel Machek) 7839 7840Fix /proc/acpi/sleep. (P. Christeas) 7841 7842IA64 fixes. (David Mosberger) 7843 7844Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 7845 7846Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 7847Brodowski) 7848 7849 78503) iASL Compiler/Disassembler 7851 7852Clarified some warning/error messages. 7853 7854 7855---------------------------------------- 785618 September 2002. Summary of changes for this release. 7857 7858 78591) ACPI CA Core Subsystem version 20020918: 7860 7861Fixed a reported problem with reference chaining (via the Index() 7862and RefOf() operators) in the ObjectType() and SizeOf() operators. 7863The definition of these operators includes the dereferencing of 7864all chained references to return information on the base object. 7865 7866Fixed a problem with stores to indexed package elements - the 7867existing code would not complete the store if an "implicit 7868conversion" was not performed. In other words, if the existing 7869object (package element) was to be replaced completely, the code 7870didn't handle this case. 7871 7872Relaxed typechecking on the ASL "Scope" operator to allow the 7873target name to refer to an object of type Integer, String, or 7874Buffer, in addition to the scoping object types (Device, 7875predefined Scopes, Processor, PowerResource, and ThermalZone.) 7876This allows existing AML code that has workarounds for a bug in 7877Windows to function properly. A warning is issued, however. This 7878affects both the AML interpreter and the iASL compiler. Below is 7879an example of this type of ASL code: 7880 7881 Name(DEB,0x00) 7882 Scope(DEB) 7883 { 7884 7885Fixed some reported problems with 64-bit integer support in the 7886local implementation of C library functions (clib.c) 7887 7888 78892) Linux 7890 7891Use ACPI fix map region instead of IOAPIC region, since it is 7892undefined in non-SMP. 7893 7894Ensure that the SCI has the proper polarity and trigger, even on 7895systems that do not have an interrupt override entry in the MADT. 7896 78972.5 big driver reorganization (Pat Mochel) 7898 7899Use early table mapping code from acpitable.c (Andi Kleen) 7900 7901New blacklist entries (Andi Kleen) 7902 7903Blacklist improvements. Split blacklist code out into a separate 7904file. Move checking the blacklist to very early. Previously, we 7905would use ACPI tables, and then halfway through init, check the 7906blacklist -- too late. Now, it's early enough to completely fall- 7907back to non-ACPI. 7908 7909 79103) iASL Compiler/Disassembler version 20020918: 7911 7912Fixed a problem where the typechecking code didn't know that an 7913alias could point to a method. In other words, aliases were not 7914being dereferenced during typechecking. 7915 7916 7917---------------------------------------- 791829 August 2002. Summary of changes for this release. 7919 79201) ACPI CA Core Subsystem Version 20020829: 7921 7922If the target of a Scope() operator already exists, it must be an 7923object type that actually opens a scope -- such as a Device, 7924Method, Scope, etc. This is a fatal runtime error. Similar error 7925check has been added to the iASL compiler also. 7926 7927Tightened up the namespace load to disallow multiple names in the 7928same scope. This previously was allowed if both objects were of 7929the same type. (i.e., a lookup was the same as entering a new 7930name). 7931 7932 79332) Linux 7934 7935Ensure that the ACPI interrupt has the proper trigger and 7936polarity. 7937 7938local_irq_disable is extraneous. (Matthew Wilcox) 7939 7940Make "acpi=off" actually do what it says, and not use the ACPI 7941interpreter *or* the tables. 7942 7943Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 7944Takayoshi) 7945 7946 79473) iASL Compiler/Disassembler Version 20020829: 7948 7949Implemented namepath optimization for name declarations. For 7950example, a declaration like "Method (\_SB_.ABCD)" would get 7951optimized to "Method (ABCD)" if the declaration is within the 7952\_SB_ scope. This optimization is in addition to the named 7953reference path optimization first released in the previous 7954version. This would seem to complete all possible optimizations 7955for namepaths within the ASL/AML. 7956 7957If the target of a Scope() operator already exists, it must be an 7958object type that actually opens a scope -- such as a Device, 7959Method, Scope, etc. 7960 7961Implemented a check and warning for unreachable code in the same 7962block below a Return() statement. 7963 7964Fixed a problem where the listing file was not generated if the 7965compiler aborted if the maximum error count was exceeded (200). 7966 7967Fixed a problem where the typechecking of method return values was 7968broken. This includes the check for a return value when the 7969method is invoked as a TermArg (a return value is expected.) 7970 7971Fixed a reported problem where EOF conditions during a quoted 7972string or comment caused a fault. 7973 7974 7975---------------------------------------- 797615 August 2002. Summary of changes for this release. 7977 79781) ACPI CA Core Subsystem Version 20020815: 7979 7980Fixed a reported problem where a Store to a method argument that 7981contains a reference did not perform the indirect store correctly. 7982This problem was created during the conversion to the new 7983reference object model - the indirect store to a method argument 7984code was not updated to reflect the new model. 7985 7986Reworked the ACPI mode change code to better conform to ACPI 2.0, 7987handle corner cases, and improve code legibility (Kochi Takayoshi) 7988 7989Fixed a problem with the pathname parsing for the carat (^) 7990prefix. The heavy use of the carat operator by the new namepath 7991optimization in the iASL compiler uncovered a problem with the AML 7992interpreter handling of this prefix. In the case where one or 7993more carats precede a single nameseg, the nameseg was treated as 7994standalone and the search rule (to root) was inadvertently 7995applied. This could cause both the iASL compiler and the 7996interpreter to find the wrong object or to miss the error that 7997should occur if the object does not exist at that exact pathname. 7998 7999Found and fixed the problem where the HP Pavilion DSDT would not 8000load. This was a relatively minor tweak to the table loading code 8001(a problem caused by the unexpected encounter with a method 8002invocation not within a control method), but it does not solve the 8003overall issue of the execution of AML code at the table level. 8004This investigation is still ongoing. 8005 8006Code and Data Size: Current core subsystem library sizes are shown 8007below. These are the code and data sizes for the acpica.lib 8008produced by the Microsoft Visual C++ 6.0 compiler, and these 8009values do not include any ACPI driver or OSPM code. The debug 8010version of the code includes the debug output trace mechanism and 8011has a larger code and data size. Note that these values will vary 8012depending on the efficiency of the compiler and the compiler 8013options used during generation. 8014 8015 Previous Release 8016 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 8017 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 8018 Current Release: 8019 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 8020 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 8021 8022 80232) Linux 8024 8025Remove redundant slab.h include (Brad Hards) 8026 8027Fix several bugs in thermal.c (Herbert Nachtnebel) 8028 8029Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 8030 8031Change acpi_system_suspend to use updated irq functions (Pavel 8032Machek) 8033 8034Export acpi_get_firmware_table (Matthew Wilcox) 8035 8036Use proper root proc entry for ACPI (Kochi Takayoshi) 8037 8038Fix early-boot table parsing (Bjorn Helgaas) 8039 8040 80413) iASL Compiler/Disassembler 8042 8043Reworked the compiler options to make them more consistent and to 8044use two-letter options where appropriate. We were running out of 8045sensible letters. This may break some makefiles, so check the 8046current options list by invoking the compiler with no parameters. 8047 8048Completed the design and implementation of the ASL namepath 8049optimization option for the compiler. This option optimizes all 8050references to named objects to the shortest possible path. The 8051first attempt tries to utilize a single nameseg (4 characters) and 8052the "search-to-root" algorithm used by the interpreter. If that 8053cannot be used (because either the name is not in the search path 8054or there is a conflict with another object with the same name), 8055the pathname is optimized using the carat prefix (usually a 8056shorter string than specifying the entire path from the root.) 8057 8058Implemented support to obtain the DSDT from the Windows registry 8059(when the disassembly option is specified with no input file). 8060Added this code as the implementation for AcpiOsTableOverride in 8061the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 8062utility) to scan memory for the DSDT to the AcpiOsTableOverride 8063function in the DOS OSL to make the disassembler truly OS 8064independent. 8065 8066Implemented a new option to disassemble and compile in one step. 8067When used without an input filename, this option will grab the 8068DSDT from the local machine, disassemble it, and compile it in one 8069step. 8070 8071Added a warning message for invalid escapes (a backslash followed 8072by any character other than the allowable escapes). This catches 8073the quoted string error "\_SB_" (which should be "\\_SB_" ). 8074 8075Also, there are numerous instances in the ACPI specification where 8076this error occurs. 8077 8078Added a compiler option to disable all optimizations. This is 8079basically the "compatibility mode" because by using this option, 8080the AML code will come out exactly the same as other ASL 8081compilers. 8082 8083Added error messages for incorrectly ordered dependent resource 8084functions. This includes: missing EndDependentFn macro at end of 8085dependent resource list, nested dependent function macros (both 8086start and end), and missing StartDependentFn macro. These are 8087common errors that should be caught at compile time. 8088 8089Implemented _OSI support for the disassembler and compiler. _OSI 8090must be included in the namespace for proper disassembly (because 8091the disassembler must know the number of arguments.) 8092 8093Added an "optimization" message type that is optional (off by 8094default). This message is used for all optimizations - including 8095constant folding, integer optimization, and namepath optimization. 8096 8097---------------------------------------- 809825 July 2002. Summary of changes for this release. 8099 8100 81011) ACPI CA Core Subsystem Version 20020725: 8102 8103The AML Disassembler has been enhanced to produce compilable ASL 8104code and has been integrated into the iASL compiler (see below) as 8105well as the single-step disassembly for the AML debugger and the 8106disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 8107resource templates and macros are fully supported. The 8108disassembler has been tested on over 30 different AML files, 8109producing identical AML when the resulting disassembled ASL file 8110is recompiled with the same ASL compiler. 8111 8112Modified the Resource Manager to allow zero interrupts and zero 8113dma channels during the GetCurrentResources call. This was 8114causing problems on some platforms. 8115 8116Added the AcpiOsRedirectOutput interface to the OSL to simplify 8117output redirection for the AcpiOsPrintf and AcpiOsVprintf 8118interfaces. 8119 8120Code and Data Size: Current core subsystem library sizes are shown 8121below. These are the code and data sizes for the acpica.lib 8122produced by the Microsoft Visual C++ 6.0 compiler, and these 8123values do not include any ACPI driver or OSPM code. The debug 8124version of the code includes the debug output trace mechanism and 8125has a larger code and data size. Note that these values will vary 8126depending on the efficiency of the compiler and the compiler 8127options used during generation. 8128 8129 Previous Release 8130 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 8131 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 8132 Current Release: 8133 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 8134 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 8135 8136 81372) Linux 8138 8139Fixed a panic in the EC driver (Dominik Brodowski) 8140 8141Implemented checksum of the R/XSDT itself during Linux table scan 8142(Richard Schaal) 8143 8144 81453) iASL compiler 8146 8147The AML disassembler is integrated into the compiler. The "-d" 8148option invokes the disassembler to completely disassemble an 8149input AML file, producing as output a text ASL file with the 8150extension ".dsl" (to avoid name collisions with existing .asl 8151source files.) A future enhancement will allow the disassembler 8152to obtain the BIOS DSDT from the registry under Windows. 8153 8154Fixed a problem with the VendorShort and VendorLong resource 8155descriptors where an invalid AML sequence was created. 8156 8157Implemented a fix for BufferData term in the ASL parser. It was 8158inadvertently defined twice, allowing invalid syntax to pass and 8159causing reduction conflicts. 8160 8161Fixed a problem where the Ones opcode could get converted to a 8162value of zero if "Ones" was used where a byte, word or dword value 8163was expected. The 64-bit value is now truncated to the correct 8164size with the correct value. 8165 8166 8167 8168---------------------------------------- 816902 July 2002. Summary of changes for this release. 8170 8171 81721) ACPI CA Core Subsystem Version 20020702: 8173 8174The Table Manager code has been restructured to add several new 8175features. Tables that are not required by the core subsystem 8176(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 8177validated in any way and are returned from AcpiGetFirmwareTable if 8178requested. The AcpiOsTableOverride interface is now called for 8179each table that is loaded by the subsystem in order to allow the 8180host to override any table it chooses. Previously, only the DSDT 8181could be overridden. Added one new files, tbrsdt.c and 8182tbgetall.c. 8183 8184Fixed a problem with the conversion of internal package objects to 8185external objects (when a package is returned from a control 8186method.) The return buffer length was set to zero instead of the 8187proper length of the package object. 8188 8189Fixed a reported problem with the use of the RefOf and DeRefOf 8190operators when passing reference arguments to control methods. A 8191new type of Reference object is used internally for references 8192produced by the RefOf operator. 8193 8194Added additional error messages in the Resource Manager to explain 8195AE_BAD_DATA errors when they occur during resource parsing. 8196 8197Split the AcpiEnableSubsystem into two primitives to enable a 8198finer granularity initialization sequence. These two calls should 8199be called in this order: AcpiEnableSubsystem (flags), 8200AcpiInitializeObjects (flags). The flags parameter remains the 8201same. 8202 8203 82042) Linux 8205 8206Updated the ACPI utilities module to understand the new style of 8207fully resolved package objects that are now returned from the core 8208subsystem. This eliminates errors of the form: 8209 8210 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 8211 acpi_utils-0430 [145] acpi_evaluate_reference: 8212 Invalid element in package (not a device reference) 8213 8214The method evaluation utility uses the new buffer allocation 8215scheme instead of calling AcpiEvaluate Object twice. 8216 8217Added support for ECDT. This allows the use of the Embedded 8218 8219Controller before the namespace has been fully initialized, which 8220is necessary for ACPI 2.0 support, and for some laptops to 8221initialize properly. (Laptops using ECDT are still rare, so only 8222limited testing was performed of the added functionality.) 8223 8224Fixed memory leaks in the EC driver. 8225 8226Eliminated a brittle code structure in acpi_bus_init(). 8227 8228Eliminated the acpi_evaluate() helper function in utils.c. It is 8229no longer needed since acpi_evaluate_object can optionally 8230allocate memory for the return object. 8231 8232Implemented fix for keyboard hang when getting battery readings on 8233some systems (Stephen White) 8234 8235PCI IRQ routing update (Dominik Brodowski) 8236 8237Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 8238support 8239 8240---------------------------------------- 824111 June 2002. Summary of changes for this release. 8242 8243 82441) ACPI CA Core Subsystem Version 20020611: 8245 8246Fixed a reported problem where constants such as Zero and One 8247appearing within _PRT packages were not handled correctly within 8248the resource manager code. Originally reported against the ASL 8249compiler because the code generator now optimizes integers to 8250their minimal AML representation (i.e. AML constants if possible.) 8251The _PRT code now handles all AML constant opcodes correctly 8252(Zero, One, Ones, Revision). 8253 8254Fixed a problem with the Concatenate operator in the AML 8255interpreter where a buffer result object was incorrectly marked as 8256not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 8257 8258All package sub-objects are now fully resolved before they are 8259returned from the external ACPI interfaces. This means that name 8260strings are resolved to object handles, and constant operators 8261(Zero, One, Ones, Revision) are resolved to Integers. 8262 8263Implemented immediate resolution of the AML Constant opcodes 8264(Zero, One, Ones, Revision) to Integer objects upon detection 8265within the AML stream. This has simplified and reduced the 8266generated code size of the subsystem by eliminating about 10 8267switch statements for these constants (which previously were 8268contained in Reference objects.) The complicating issues are that 8269the Zero opcode is used as a "placeholder" for unspecified 8270optional target operands and stores to constants are defined to be 8271no-ops. 8272 8273Code and Data Size: Current core subsystem library sizes are shown 8274below. These are the code and data sizes for the acpica.lib 8275produced by the Microsoft Visual C++ 6.0 compiler, and these 8276values do not include any ACPI driver or OSPM code. The debug 8277version of the code includes the debug output trace mechanism and 8278has a larger code and data size. Note that these values will vary 8279depending on the efficiency of the compiler and the compiler 8280options used during generation. 8281 8282 Previous Release 8283 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 8284 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 8285 Current Release: 8286 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 8287 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 8288 8289 82902) Linux 8291 8292 8293Added preliminary support for obtaining _TRA data for PCI root 8294bridges (Bjorn Helgaas). 8295 8296 82973) iASL Compiler Version X2046: 8298 8299Fixed a problem where the "_DDN" reserved name was defined to be a 8300control method with one argument. There are no arguments, and 8301_DDN does not have to be a control method. 8302 8303Fixed a problem with the Linux version of the compiler where the 8304source lines printed with error messages were the wrong lines. 8305This turned out to be the "LF versus CR/LF" difference between 8306Windows and Unix. This appears to be the longstanding issue 8307concerning listing output and error messages. 8308 8309Fixed a problem with the Linux version of compiler where opcode 8310names within error messages were wrong. This was caused by a 8311slight difference in the output of the Flex tool on Linux versus 8312Windows. 8313 8314Fixed a problem with the Linux compiler where the hex output files 8315contained some garbage data caused by an internal buffer overrun. 8316 8317 8318---------------------------------------- 831917 May 2002. Summary of changes for this release. 8320 8321 83221) ACPI CA Core Subsystem Version 20020517: 8323 8324Implemented a workaround to an BIOS bug discovered on the HP 8325OmniBook where the FADT revision number and the table size are 8326inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 8327behavior is to fallback to using only the ACPI 1.0 fields of the 8328FADT if the table is too small to be a ACPI 2.0 table as claimed 8329by the revision number. Although this is a BIOS bug, this is a 8330case where the workaround is simple enough and with no side 8331effects, so it seemed prudent to add it. A warning message is 8332issued, however. 8333 8334Implemented minimum size checks for the fixed-length ACPI tables - 8335- the FADT and FACS, as well as consistency checks between the 8336revision number and the table size. 8337 8338Fixed a reported problem in the table override support where the 8339new table pointer was incorrectly treated as a physical address 8340instead of a logical address. 8341 8342Eliminated the use of the AE_AML_ERROR exception and replaced it 8343with more descriptive codes. 8344 8345Fixed a problem where an exception would occur if an ASL Field was 8346defined with no named Field Units underneath it (used by some 8347index fields). 8348 8349Code and Data Size: Current core subsystem library sizes are shown 8350below. These are the code and data sizes for the acpica.lib 8351produced by the Microsoft Visual C++ 6.0 compiler, and these 8352values do not include any ACPI driver or OSPM code. The debug 8353version of the code includes the debug output trace mechanism and 8354has a larger code and data size. Note that these values will vary 8355depending on the efficiency of the compiler and the compiler 8356options used during generation. 8357 8358 Previous Release 8359 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 8360 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 8361 Current Release: 8362 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 8363 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 8364 8365 8366 83672) Linux 8368 8369Much work done on ACPI init (MADT and PCI IRQ routing support). 8370(Paul D. and Dominik Brodowski) 8371 8372Fix PCI IRQ-related panic on boot (Sam Revitch) 8373 8374Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 8375 8376Fix "MHz" typo (Dominik Brodowski) 8377 8378Fix RTC year 2000 issue (Dominik Brodowski) 8379 8380Preclude multiple button proc entries (Eric Brunet) 8381 8382Moved arch-specific code out of include/platform/aclinux.h 8383 83843) iASL Compiler Version X2044: 8385 8386Implemented error checking for the string used in the EISAID macro 8387(Usually used in the definition of the _HID object.) The code now 8388strictly enforces the PnP format - exactly 7 characters, 3 8389uppercase letters and 4 hex digits. 8390 8391If a raw string is used in the definition of the _HID object 8392(instead of the EISAID macro), the string must contain all 8393alphanumeric characters (e.g., "*PNP0011" is not allowed because 8394of the asterisk.) 8395 8396Implemented checking for invalid use of ACPI reserved names for 8397most of the name creation operators (Name, Device, Event, Mutex, 8398OperationRegion, PowerResource, Processor, and ThermalZone.) 8399Previously, this check was only performed for control methods. 8400 8401Implemented an additional check on the Name operator to emit an 8402error if a reserved name that must be implemented in ASL as a 8403control method is used. We know that a reserved name must be a 8404method if it is defined with input arguments. 8405 8406The warning emitted when a namespace object reference is not found 8407during the cross reference phase has been changed into an error. 8408The "External" directive should be used for names defined in other 8409modules. 8410 8411 84124) Tools and Utilities 8413 8414The 16-bit tools (adump16 and aexec16) have been regenerated and 8415tested. 8416 8417Fixed a problem with the output of both acpidump and adump16 where 8418the indentation of closing parentheses and brackets was not 8419 8420aligned properly with the parent block. 8421 8422 8423---------------------------------------- 842403 May 2002. Summary of changes for this release. 8425 8426 84271) ACPI CA Core Subsystem Version 20020503: 8428 8429Added support a new OSL interface that allows the host operating 8430 8431system software to override the DSDT found in the firmware - 8432AcpiOsTableOverride. With this interface, the OSL can examine the 8433version of the firmware DSDT and replace it with a different one 8434if desired. 8435 8436Added new external interfaces for accessing ACPI registers from 8437device drivers and other system software - AcpiGetRegister and 8438AcpiSetRegister. This was simply an externalization of the 8439existing AcpiHwBitRegister interfaces. 8440 8441Fixed a regression introduced in the previous build where the 8442ASL/AML CreateField operator always returned an error, 8443"destination must be a NS Node". 8444 8445Extended the maximum time (before failure) to successfully enable 8446ACPI mode to 3 seconds. 8447 8448Code and Data Size: Current core subsystem library sizes are shown 8449below. These are the code and data sizes for the acpica.lib 8450produced by the Microsoft Visual C++ 6.0 compiler, and these 8451values do not include any ACPI driver or OSPM code. The debug 8452version of the code includes the debug output trace mechanism and 8453has a larger code and data size. Note that these values will vary 8454depending on the efficiency of the compiler and the compiler 8455options used during generation. 8456 8457 Previous Release 8458 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 8459 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 8460 Current Release: 8461 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 8462 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 8463 8464 84652) Linux 8466 8467Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 8468free. While 3 out of 4 of our in-house systems work fine, the last 8469one still hangs when testing the LAPIC timer. 8470 8471Renamed many files in 2.5 kernel release to omit "acpi_" from the 8472name. 8473 8474Added warning on boot for Presario 711FR. 8475 8476Sleep improvements (Pavel Machek) 8477 8478ACPI can now be built without CONFIG_PCI enabled. 8479 8480IA64: Fixed memory map functions (JI Lee) 8481 8482 84833) iASL Compiler Version X2043: 8484 8485Added support to allow the compiler to be integrated into the MS 8486VC++ development environment for one-button compilation of single 8487files or entire projects -- with error-to-source-line mapping. 8488 8489Implemented support for compile-time constant folding for the 8490Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 8491specification. This allows the ASL writer to use expressions 8492instead of Integer/Buffer/String constants in terms that must 8493evaluate to constants at compile time and will also simplify the 8494emitted AML in any such sub-expressions that can be folded 8495(evaluated at compile-time.) This increases the size of the 8496compiler significantly because a portion of the ACPI CA AML 8497interpreter is included within the compiler in order to pre- 8498evaluate constant expressions. 8499 8500 8501Fixed a problem with the "Unicode" ASL macro that caused the 8502compiler to fault. (This macro is used in conjunction with the 8503_STR reserved name.) 8504 8505Implemented an AML opcode optimization to use the Zero, One, and 8506Ones opcodes where possible to further reduce the size of integer 8507constants and thus reduce the overall size of the generated AML 8508code. 8509 8510Implemented error checking for new reserved terms for ACPI version 85112.0A. 8512 8513Implemented the -qr option to display the current list of ACPI 8514reserved names known to the compiler. 8515 8516Implemented the -qc option to display the current list of ASL 8517operators that are allowed within constant expressions and can 8518therefore be folded at compile time if the operands are constants. 8519 8520 85214) Documentation 8522 8523Updated the Programmer's Reference for new interfaces, data types, 8524and memory allocation model options. 8525 8526Updated the iASL Compiler User Reference to apply new format and 8527add information about new features and options. 8528 8529---------------------------------------- 853019 April 2002. Summary of changes for this release. 8531 85321) ACPI CA Core Subsystem Version 20020419: 8533 8534The source code base for the Core Subsystem has been completely 8535cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 8536versions. The Lint option files used are included in the 8537/acpi/generate/lint directory. 8538 8539Implemented enhanced status/error checking across the entire 8540Hardware manager subsystem. Any hardware errors (reported from 8541the OSL) are now bubbled up and will abort a running control 8542method. 8543 8544 8545Fixed a problem where the per-ACPI-table integer width (32 or 64) 8546was stored only with control method nodes, causing a fault when 8547non-control method code was executed during table loading. The 8548solution implemented uses a global variable to indicate table 8549width across the entire ACPI subsystem. Therefore, ACPI CA does 8550not support mixed integer widths across different ACPI tables 8551(DSDT, SSDT). 8552 8553Fixed a problem where NULL extended fields (X fields) in an ACPI 85542.0 ACPI FADT caused the table load to fail. Although the 8555existing ACPI specification is a bit fuzzy on this topic, the new 8556behavior is to fall back on a ACPI 1.0 field if the corresponding 8557ACPI 2.0 X field is zero (even though the table revision indicates 8558a full ACPI 2.0 table.) The ACPI specification will be updated to 8559clarify this issue. 8560 8561Fixed a problem with the SystemMemory operation region handler 8562where memory was always accessed byte-wise even if the AML- 8563specified access width was larger than a byte. This caused 8564problems on systems with memory-mapped I/O. Memory is now 8565accessed with the width specified. On systems that do not support 8566non-aligned transfers, a check is made to guarantee proper address 8567alignment before proceeding in order to avoid an AML-caused 8568alignment fault within the kernel. 8569 8570 8571Fixed a problem with the ExtendedIrq resource where only one byte 8572of the 4-byte Irq field was extracted. 8573 8574Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 8575function was out of date and required a rewrite. 8576 8577Code and Data Size: Current core subsystem library sizes are shown 8578below. These are the code and data sizes for the acpica.lib 8579produced by the Microsoft Visual C++ 6.0 compiler, and these 8580values do not include any ACPI driver or OSPM code. The debug 8581version of the code includes the debug output trace mechanism and 8582has a larger code and data size. Note that these values will vary 8583depending on the efficiency of the compiler and the compiler 8584options used during generation. 8585 8586 Previous Release 8587 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 8588 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 8589 Current Release: 8590 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 8591 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 8592 8593 85942) Linux 8595 8596PCI IRQ routing fixes (Dominik Brodowski) 8597 8598 85993) iASL Compiler Version X2042: 8600 8601Implemented an additional compile-time error check for a field 8602unit whose size + minimum access width would cause a run-time 8603access beyond the end-of-region. Previously, only the field size 8604itself was checked. 8605 8606The Core subsystem and iASL compiler now share a common parse 8607object in preparation for compile-time evaluation of the type 86083/4/5 ASL operators. 8609 8610 8611---------------------------------------- 8612Summary of changes for this release: 03_29_02 8613 86141) ACPI CA Core Subsystem Version 20020329: 8615 8616Implemented support for late evaluation of TermArg operands to 8617Buffer and Package objects. This allows complex expressions to be 8618used in the declarations of these object types. 8619 8620Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 86211.0, if the field was larger than 32 bits, it was returned as a 8622buffer - otherwise it was returned as an integer. In ACPI 2.0, 8623the field is returned as a buffer only if the field is larger than 862464 bits. The TableRevision is now considered when making this 8625conversion to avoid incompatibility with existing ASL code. 8626 8627Implemented logical addressing for AcpiOsGetRootPointer. This 8628allows an RSDP with either a logical or physical address. With 8629this support, the host OS can now override all ACPI tables with 8630one logical RSDP. Includes implementation of "typed" pointer 8631support to allow a common data type for both physical and logical 8632pointers internally. This required a change to the 8633AcpiOsGetRootPointer interface. 8634 8635Implemented the use of ACPI 2.0 Generic Address Structures for all 8636GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 8637mapped I/O for these ACPI features. 8638 8639Initialization now ignores not only non-required tables (All 8640tables other than the FADT, FACS, DSDT, and SSDTs), but also does 8641not validate the table headers of unrecognized tables. 8642 8643Fixed a problem where a notify handler could only be 8644installed/removed on an object of type Device. All "notify" 8645 8646objects are now supported -- Devices, Processor, Power, and 8647Thermal. 8648 8649Removed most verbosity from the ACPI_DB_INFO debug level. Only 8650critical information is returned when this debug level is enabled. 8651 8652Code and Data Size: Current core subsystem library sizes are shown 8653below. These are the code and data sizes for the acpica.lib 8654produced by the Microsoft Visual C++ 6.0 compiler, and these 8655values do not include any ACPI driver or OSPM code. The debug 8656version of the code includes the debug output trace mechanism and 8657has a larger code and data size. Note that these values will vary 8658depending on the efficiency of the compiler and the compiler 8659options used during generation. 8660 8661 Previous Release 8662 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 8663 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 8664 Current Release: 8665 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 8666 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 8667 8668 86692) Linux: 8670 8671The processor driver (acpi_processor.c) now fully supports ACPI 86722.0-based processor performance control (e.g. Intel(R) 8673SpeedStep(TM) technology) Note that older laptops that only have 8674the Intel "applet" interface are not supported through this. The 8675'limit' and 'performance' interface (/proc) are fully functional. 8676[Note that basic policy for controlling performance state 8677transitions will be included in the next version of ospmd.] The 8678idle handler was modified to more aggressively use C2, and PIIX4 8679errata handling underwent a complete overhaul (big thanks to 8680Dominik Brodowski). 8681 8682Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 8683based devices in the ACPI namespace are now dynamically bound 8684(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 8685This allows, among other things, ACPI to resolve bus numbers for 8686subordinate PCI bridges. 8687 8688Enhanced PCI IRQ routing to get the proper bus number for _PRT 8689entries defined underneath PCI bridges. 8690 8691Added IBM 600E to bad bios list due to invalid _ADR value for 8692PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 8693 8694In the process of adding full MADT support (e.g. IOAPIC) for IA32 8695(acpi.c, mpparse.c) -- stay tuned. 8696 8697Added back visual differentiation between fixed-feature and 8698control-method buttons in dmesg. Buttons are also subtyped (e.g. 8699button/power/PWRF) to simplify button identification. 8700 8701We no longer use -Wno-unused when compiling debug. Please ignore 8702any "_THIS_MODULE defined but not used" messages. 8703 8704Can now shut down the system using "magic sysrq" key. 8705 8706 87073) iASL Compiler version 2041: 8708 8709Fixed a problem where conversion errors for hex/octal/decimal 8710constants were not reported. 8711 8712Implemented a fix for the General Register template Address field. 8713This field was 8 bits when it should be 64. 8714 8715Fixed a problem where errors/warnings were no longer being emitted 8716within the listing output file. 8717 8718Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 8719exactly 4 characters, alphanumeric only. 8720 8721 8722 8723 8724---------------------------------------- 8725Summary of changes for this release: 03_08_02 8726 8727 87281) ACPI CA Core Subsystem Version 20020308: 8729 8730Fixed a problem with AML Fields where the use of the "AccessAny" 8731keyword could cause an interpreter error due to attempting to read 8732or write beyond the end of the parent Operation Region. 8733 8734Fixed a problem in the SystemMemory Operation Region handler where 8735an attempt was made to map memory beyond the end of the region. 8736This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 8737errors on some Linux systems. 8738 8739Fixed a problem where the interpreter/namespace "search to root" 8740algorithm was not functioning for some object types. Relaxed the 8741internal restriction on the search to allow upsearches for all 8742external object types as well as most internal types. 8743 8744 87452) Linux: 8746 8747We now use safe_halt() macro versus individual calls to sti | hlt. 8748 8749Writing to the processor limit interface should now work. "echo 1" 8750will increase the limit, 2 will decrease, and 0 will reset to the 8751 8752default. 8753 8754 87553) ASL compiler: 8756 8757Fixed segfault on Linux version. 8758 8759 8760---------------------------------------- 8761Summary of changes for this release: 02_25_02 8762 87631) ACPI CA Core Subsystem: 8764 8765 8766Fixed a problem where the GPE bit masks were not initialized 8767properly, causing erratic GPE behavior. 8768 8769Implemented limited support for multiple calling conventions. The 8770code can be generated with either the VPL (variable parameter 8771list, or "C") convention, or the FPL (fixed parameter list, or 8772"Pascal") convention. The core subsystem is about 3.4% smaller 8773when generated with FPL. 8774 8775 87762) Linux 8777 8778Re-add some /proc/acpi/event functionality that was lost during 8779the rewrite 8780 8781Resolved issue with /proc events for fixed-feature buttons showing 8782up as the system device. 8783 8784Fixed checks on C2/C3 latencies to be inclusive of maximum values. 8785 8786Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 8787 8788Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 8789 8790Fixed limit interface & usage to fix bugs with passive cooling 8791hysterisis. 8792 8793Restructured PRT support. 8794 8795 8796---------------------------------------- 8797Summary of changes for this label: 02_14_02 8798 8799 88001) ACPI CA Core Subsystem: 8801 8802Implemented support in AcpiLoadTable to allow loading of FACS and 8803FADT tables. 8804 8805Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 8806been removed. All 64-bit platforms should be migrated to the ACPI 88072.0 tables. The actbl71.h header has been removed from the source 8808tree. 8809 8810All C macros defined within the subsystem have been prefixed with 8811"ACPI_" to avoid collision with other system include files. 8812 8813Removed the return value for the two AcpiOsPrint interfaces, since 8814it is never used and causes lint warnings for ignoring the return 8815value. 8816 8817Added error checking to all internal mutex acquire and release 8818calls. Although a failure from one of these interfaces is 8819probably a fatal system error, these checks will cause the 8820immediate abort of the currently executing method or interface. 8821 8822Fixed a problem where the AcpiSetCurrentResources interface could 8823fault. This was a side effect of the deployment of the new memory 8824allocation model. 8825 8826Fixed a couple of problems with the Global Lock support introduced 8827in the last major build. The "common" (1.0/2.0) internal FACS was 8828being overwritten with the FACS signature and clobbering the 8829Global Lock pointer. Also, the actual firmware FACS was being 8830unmapped after construction of the "common" FACS, preventing 8831access to the actual Global Lock field within it. The "common" 8832internal FACS is no longer installed as an actual ACPI table; it 8833is used simply as a global. 8834 8835Code and Data Size: Current core subsystem library sizes are shown 8836below. These are the code and data sizes for the acpica.lib 8837produced by the Microsoft Visual C++ 6.0 compiler, and these 8838values do not include any ACPI driver or OSPM code. The debug 8839version of the code includes the debug output trace mechanism and 8840has a larger code and data size. Note that these values will vary 8841depending on the efficiency of the compiler and the compiler 8842options used during generation. 8843 8844 Previous Release (02_07_01) 8845 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 8846 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 8847 Current Release: 8848 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 8849 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 8850 8851 88522) Linux 8853 8854Updated Linux-specific code for core macro and OSL interface 8855changes described above. 8856 8857Improved /proc/acpi/event. It now can be opened only once and has 8858proper poll functionality. 8859 8860Fixed and restructured power management (acpi_bus). 8861 8862Only create /proc "view by type" when devices of that class exist. 8863 8864Fixed "charging/discharging" bug (and others) in acpi_battery. 8865 8866Improved thermal zone code. 8867 8868 88693) ASL Compiler, version X2039: 8870 8871 8872Implemented the new compiler restriction on ASL String hex/octal 8873escapes to non-null, ASCII values. An error results if an invalid 8874value is used. (This will require an ACPI 2.0 specification 8875change.) 8876 8877AML object labels that are output to the optional C and ASM source 8878are now prefixed with both the ACPI table signature and table ID 8879to help guarantee uniqueness within a large BIOS project. 8880 8881 8882---------------------------------------- 8883Summary of changes for this label: 02_01_02 8884 88851) ACPI CA Core Subsystem: 8886 8887ACPI 2.0 support is complete in the entire Core Subsystem and the 8888ASL compiler. All new ACPI 2.0 operators are implemented and all 8889other changes for ACPI 2.0 support are complete. With 8890simultaneous code and data optimizations throughout the subsystem, 8891ACPI 2.0 support has been implemented with almost no additional 8892cost in terms of code and data size. 8893 8894Implemented a new mechanism for allocation of return buffers. If 8895the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 8896be allocated on behalf of the caller. Consolidated all return 8897buffer validation and allocation to a common procedure. Return 8898buffers will be allocated via the primary OSL allocation interface 8899since it appears that a separate pool is not needed by most users. 8900If a separate pool is required for these buffers, the caller can 8901still use the original mechanism and pre-allocate the buffer(s). 8902 8903Implemented support for string operands within the DerefOf 8904operator. 8905 8906Restructured the Hardware and Event managers to be table driven, 8907simplifying the source code and reducing the amount of generated 8908code. 8909 8910Split the common read/write low-level ACPI register bitfield 8911procedure into a separate read and write, simplifying the code 8912considerably. 8913 8914Obsoleted the AcpiOsCallocate OSL interface. This interface was 8915used only a handful of times and didn't have enough critical mass 8916for a separate interface. Replaced with a common calloc procedure 8917in the core. 8918 8919Fixed a reported problem with the GPE number mapping mechanism 8920that allows GPE1 numbers to be non-contiguous with GPE0. 8921Reorganized the GPE information and shrunk a large array that was 8922originally large enough to hold info for all possible GPEs (256) 8923to simply large enough to hold all GPEs up to the largest GPE 8924number on the machine. 8925 8926Fixed a reported problem with resource structure alignment on 64- 8927bit platforms. 8928 8929Changed the AcpiEnableEvent and AcpiDisableEvent external 8930interfaces to not require any flags for the common case of 8931enabling/disabling a GPE. 8932 8933Implemented support to allow a "Notify" on a Processor object. 8934 8935Most TBDs in comments within the source code have been resolved 8936and eliminated. 8937 8938 8939Fixed a problem in the interpreter where a standalone parent 8940prefix (^) was not handled correctly in the interpreter and 8941debugger. 8942 8943Removed obsolete and unnecessary GPE save/restore code. 8944 8945Implemented Field support in the ASL Load operator. This allows a 8946table to be loaded from a named field, in addition to loading a 8947table directly from an Operation Region. 8948 8949Implemented timeout and handle support in the external Global Lock 8950interfaces. 8951 8952Fixed a problem in the AcpiDump utility where pathnames were no 8953longer being generated correctly during the dump of named objects. 8954 8955Modified the AML debugger to give a full display of if/while 8956predicates instead of just one AML opcode at a time. (The 8957predicate can have several nested ASL statements.) The old method 8958was confusing during single stepping. 8959 8960Code and Data Size: Current core subsystem library sizes are shown 8961below. These are the code and data sizes for the acpica.lib 8962produced by the Microsoft Visual C++ 6.0 compiler, and these 8963values do not include any ACPI driver or OSPM code. The debug 8964version of the code includes the debug output trace mechanism and 8965has a larger code and data size. Note that these values will vary 8966depending on the efficiency of the compiler and the compiler 8967options used during generation. 8968 8969 Previous Release (12_18_01) 8970 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 8971 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 8972 Current Release: 8973 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 8974 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 8975 89762) Linux 8977 8978 Implemented fix for PIIX reverse throttling errata (Processor 8979driver) 8980 8981Added new Limit interface (Processor and Thermal drivers) 8982 8983New thermal policy (Thermal driver) 8984 8985Many updates to /proc 8986 8987Battery "low" event support (Battery driver) 8988 8989Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 8990 8991IA32 - IA64 initialization unification, no longer experimental 8992 8993Menuconfig options redesigned 8994 89953) ASL Compiler, version X2037: 8996 8997Implemented several new output features to simplify integration of 8998AML code into firmware: 1) Output the AML in C source code with 8999labels for each named ASL object. The original ASL source code 9000is interleaved as C comments. 2) Output the AML in ASM source code 9001with labels and interleaved ASL source. 3) Output the AML in 9002raw hex table form, in either C or ASM. 9003 9004Implemented support for optional string parameters to the 9005LoadTable operator. 9006 9007Completed support for embedded escape sequences within string 9008literals. The compiler now supports all single character escapes 9009as well as the Octal and Hex escapes. Note: the insertion of a 9010null byte into a string literal (via the hex/octal escape) causes 9011the string to be immediately terminated. A warning is issued. 9012 9013Fixed a problem where incorrect AML was generated for the case 9014where an ASL namepath consists of a single parent prefix ( 9015 9016) with no trailing name segments. 9017 9018The compiler has been successfully generated with a 64-bit C 9019compiler. 9020 9021 9022 9023 9024---------------------------------------- 9025Summary of changes for this label: 12_18_01 9026 90271) Linux 9028 9029Enhanced blacklist with reason and severity fields. Any table's 9030signature may now be used to identify a blacklisted system. 9031 9032Call _PIC control method to inform the firmware which interrupt 9033model the OS is using. Turn on any disabled link devices. 9034 9035Cleaned up busmgr /proc error handling (Andreas Dilger) 9036 9037 2) ACPI CA Core Subsystem: 9038 9039Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 9040while loop) 9041 9042Completed implementation of the ACPI 2.0 "Continue", 9043"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 9044operators. All new ACPI 2.0 operators are now implemented in both 9045the ASL compiler and the AML interpreter. The only remaining ACPI 90462.0 task is support for the String data type in the DerefOf 9047operator. Fixed a problem with AcquireMutex where the status code 9048was lost if the caller had to actually wait for the mutex. 9049 9050Increased the maximum ASL Field size from 64K bits to 4G bits. 9051 9052Completed implementation of the external Global Lock interfaces -- 9053AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 9054Handler parameters were added. 9055 9056Completed another pass at removing warnings and issues when 9057compiling with 64-bit compilers. The code now compiles cleanly 9058with the Intel 64-bit C/C++ compiler. Most notably, the pointer 9059add and subtract (diff) macros have changed considerably. 9060 9061 9062Created and deployed a new ACPI_SIZE type that is 64-bits wide on 906364-bit platforms, 32-bits on all others. This type is used 9064wherever memory allocation and/or the C sizeof() operator is used, 9065and affects the OSL memory allocation interfaces AcpiOsAllocate 9066and AcpiOsCallocate. 9067 9068Implemented sticky user breakpoints in the AML debugger. 9069 9070Code and Data Size: Current core subsystem library sizes are shown 9071below. These are the code and data sizes for the acpica.lib 9072produced by the Microsoft Visual C++ 6.0 compiler, and these 9073values do not include any ACPI driver or OSPM code. The debug 9074version of the code includes the debug output trace mechanism and 9075has a larger code and data size. Note that these values will vary 9076depending on the efficiency of the compiler and the compiler 9077options used during generation. 9078 9079 Previous Release (12_05_01) 9080 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 9081 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 9082 Current Release: 9083 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 9084 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 9085 9086 3) ASL Compiler, version X2034: 9087 9088Now checks for (and generates an error if detected) the use of a 9089Break or Continue statement without an enclosing While statement. 9090 9091 9092Successfully generated the compiler with the Intel 64-bit C 9093compiler. 9094 9095 ---------------------------------------- 9096Summary of changes for this label: 12_05_01 9097 9098 1) ACPI CA Core Subsystem: 9099 9100The ACPI 2.0 CopyObject operator is fully implemented. This 9101operator creates a new copy of an object (and is also used to 9102bypass the "implicit conversion" mechanism of the Store operator.) 9103 9104The ACPI 2.0 semantics for the SizeOf operator are fully 9105implemented. The change is that performing a SizeOf on a 9106reference object causes an automatic dereference of the object to 9107tha actual value before the size is evaluated. This behavior was 9108undefined in ACPI 1.0. 9109 9110The ACPI 2.0 semantics for the Extended IRQ resource descriptor 9111have been implemented. The interrupt polarity and mode are now 9112independently set. 9113 9114Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 9115appearing in Package objects were not properly converted to 9116integers when the internal Package was converted to an external 9117object (via the AcpiEvaluateObject interface.) 9118 9119Fixed a problem with the namespace object deletion mechanism for 9120objects created by control methods. There were two parts to this 9121problem: 1) Objects created during the initialization phase method 9122parse were not being deleted, and 2) The object owner ID mechanism 9123to track objects was broken. 9124 9125Fixed a problem where the use of the ASL Scope operator within a 9126control method would result in an invalid opcode exception. 9127 9128Fixed a problem introduced in the previous label where the buffer 9129length required for the _PRT structure was not being returned 9130correctly. 9131 9132Code and Data Size: Current core subsystem library sizes are shown 9133below. These are the code and data sizes for the acpica.lib 9134produced by the Microsoft Visual C++ 6.0 compiler, and these 9135values do not include any ACPI driver or OSPM code. The debug 9136version of the code includes the debug output trace mechanism and 9137has a larger code and data size. Note that these values will vary 9138depending on the efficiency of the compiler and the compiler 9139options used during generation. 9140 9141 Previous Release (11_20_01) 9142 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 9143 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 9144 9145 Current Release: 9146 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 9147 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 9148 9149 2) Linux: 9150 9151Updated all files to apply cleanly against 2.4.16. 9152 9153Added basic PCI Interrupt Routing Table (PRT) support for IA32 9154(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 9155version supports both static and dyanmic PRT entries, but dynamic 9156entries are treated as if they were static (not yet 9157reconfigurable). Architecture- specific code to use this data is 9158absent on IA32 but should be available shortly. 9159 9160Changed the initialization sequence to start the ACPI interpreter 9161(acpi_init) prior to initialization of the PCI driver (pci_init) 9162in init/main.c. This ordering is required to support PRT and 9163facilitate other (future) enhancement. A side effect is that the 9164ACPI bus driver and certain device drivers can no longer be loaded 9165as modules. 9166 9167Modified the 'make menuconfig' options to allow PCI Interrupt 9168Routing support to be included without the ACPI Bus and other 9169device drivers. 9170 9171 3) ASL Compiler, version X2033: 9172 9173Fixed some issues with the use of the new CopyObject and 9174DataTableRegion operators. Both are fully functional. 9175 9176 ---------------------------------------- 9177Summary of changes for this label: 11_20_01 9178 9179 20 November 2001. Summary of changes for this release. 9180 9181 1) ACPI CA Core Subsystem: 9182 9183Updated Index support to match ACPI 2.0 semantics. Storing a 9184Integer, String, or Buffer to an Index of a Buffer will store only 9185the least-significant byte of the source to the Indexed buffer 9186byte. Multiple writes are not performed. 9187 9188Fixed a problem where the access type used in an AccessAs ASL 9189operator was not recorded correctly into the field object. 9190 9191Fixed a problem where ASL Event objects were created in a 9192signalled state. Events are now created in an unsignalled state. 9193 9194The internal object cache is now purged after table loading and 9195initialization to reduce the use of dynamic kernel memory -- on 9196the assumption that object use is greatest during the parse phase 9197of the entire table (versus the run-time use of individual control 9198methods.) 9199 9200ACPI 2.0 variable-length packages are now fully operational. 9201 9202Code and Data Size: Code and Data optimizations have permitted new 9203feature development with an actual reduction in the library size. 9204Current core subsystem library sizes are shown below. These are 9205the code and data sizes for the acpica.lib produced by the 9206Microsoft Visual C++ 6.0 compiler, and these values do not include 9207any ACPI driver or OSPM code. The debug version of the code 9208includes the debug output trace mechanism and has a larger code 9209and data size. Note that these values will vary depending on the 9210efficiency of the compiler and the compiler options used during 9211generation. 9212 9213 Previous Release (11_09_01): 9214 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 9215 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 9216 9217 Current Release: 9218 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 9219 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 9220 9221 2) Linux: 9222 9223Enhanced the ACPI boot-time initialization code to allow the use 9224of Local APIC tables for processor enumeration on IA-32, and to 9225pave the way for a fully MPS-free boot (on SMP systems) in the 9226near future. This functionality replaces 9227arch/i386/kernel/acpitables.c, which was introduced in an earlier 92282.4.15-preX release. To enable this feature you must add 9229"acpi_boot=on" to the kernel command line -- see the help entry 9230for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 9231the works... 9232 9233Restructured the configuration options to allow boot-time table 9234parsing support without inclusion of the ACPI Interpreter (and 9235other) code. 9236 9237NOTE: This release does not include fixes for the reported events, 9238power-down, and thermal passive cooling issues (coming soon). 9239 9240 3) ASL Compiler: 9241 9242Added additional typechecking for Fields within restricted access 9243Operation Regions. All fields within EC and CMOS regions must be 9244declared with ByteAcc. All fields withing SMBus regions must be 9245declared with the BufferAcc access type. 9246 9247Fixed a problem where the listing file output of control methods 9248no longer interleaved the actual AML code with the ASL source 9249code. 9250 9251 9252 9253 9254---------------------------------------- 9255Summary of changes for this label: 11_09_01 9256 92571) ACPI CA Core Subsystem: 9258 9259Implemented ACPI 2.0-defined support for writes to fields with a 9260Buffer, String, or Integer source operand that is smaller than the 9261target field. In these cases, the source operand is zero-extended 9262to fill the target field. 9263 9264Fixed a problem where a Field starting bit offset (within the 9265parent operation region) was calculated incorrectly if the 9266 9267alignment of the field differed from the access width. This 9268affected CreateWordField, CreateDwordField, CreateQwordField, and 9269possibly other fields that use the "AccessAny" keyword. 9270 9271Fixed a problem introduced in the 11_02_01 release where indirect 9272stores through method arguments did not operate correctly. 9273 92742) Linux: 9275 9276Implemented boot-time ACPI table parsing support 9277(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 9278facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 9279legacy BIOS interfaces (e.g. MPS) for the configuration of system 9280processors, memory, and interrupts during setup_arch(). Note that 9281this patch does not include the required architecture-specific 9282changes required to apply this information -- subsequent patches 9283will be posted for both IA32 and IA64 to achieve this. 9284 9285Added low-level sleep support for IA32 platforms, courtesy of Pat 9286Mochel. This allows IA32 systems to transition to/from various 9287sleeping states (e.g. S1, S3), although the lack of a centralized 9288driver model and power-manageable drivers will prevent its 9289(successful) use on most systems. 9290 9291Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 9292submenu, unified IA32 and IA64 options, added new "Boot using ACPI 9293tables" option, etc. 9294 9295Increased the default timeout for the EC driver from 1ms to 10ms 9296(1000 cycles of 10us) to try to address AE_TIME errors during EC 9297transactions. 9298 9299 ---------------------------------------- 9300Summary of changes for this label: 11_02_01 9301 93021) ACPI CA Core Subsystem: 9303 9304ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 9305(QWordAcc keyword). All ACPI 2.0 64-bit support is now 9306implemented. 9307 9308OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 9309changes to support ACPI 2.0 Qword field access. Read/Write 9310PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 9311accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 9312the value parameter for the address space handler interface is now 9313an ACPI_INTEGER. OSL implementations of these interfaces must now 9314handle the case where the Width parameter is 64. 9315 9316Index Fields: Fixed a problem where unaligned bit assembly and 9317disassembly for IndexFields was not supported correctly. 9318 9319Index and Bank Fields: Nested Index and Bank Fields are now 9320supported. During field access, a check is performed to ensure 9321that the value written to an Index or Bank register is not out of 9322the range of the register. The Index (or Bank) register is 9323written before each access to the field data. Future support will 9324include allowing individual IndexFields to be wider than the 9325DataRegister width. 9326 9327Fields: Fixed a problem where the AML interpreter was incorrectly 9328attempting to write beyond the end of a Field/OpRegion. This was 9329a boundary case that occurred when a DWORD field was written to a 9330BYTE access OpRegion, forcing multiple writes and causing the 9331interpreter to write one datum too many. 9332 9333Fields: Fixed a problem with Field/OpRegion access where the 9334starting bit address of a field was incorrectly calculated if the 9335current access type was wider than a byte (WordAcc, DwordAcc, or 9336QwordAcc). 9337 9338Fields: Fixed a problem where forward references to individual 9339FieldUnits (individual Field names within a Field definition) were 9340not resolved during the AML table load. 9341 9342Fields: Fixed a problem where forward references from a Field 9343definition to the parent Operation Region definition were not 9344resolved during the AML table load. 9345 9346Fields: Duplicate FieldUnit names within a scope are now detected 9347during AML table load. 9348 9349Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 9350returned an incorrect name for the root node. 9351 9352Code and Data Size: Code and Data optimizations have permitted new 9353feature development with an actual reduction in the library size. 9354Current core subsystem library sizes are shown below. These are 9355the code and data sizes for the acpica.lib produced by the 9356Microsoft Visual C++ 6.0 compiler, and these values do not include 9357any ACPI driver or OSPM code. The debug version of the code 9358includes the debug output trace mechanism and has a larger code 9359and data size. Note that these values will vary depending on the 9360efficiency of the compiler and the compiler options used during 9361generation. 9362 9363 Previous Release (10_18_01): 9364 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 9365 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 9366 9367 Current Release: 9368 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 9369 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 9370 9371 2) Linux: 9372 9373Improved /proc processor output (Pavel Machek) Re-added 9374MODULE_LICENSE("GPL") to all modules. 9375 9376 3) ASL Compiler version X2030: 9377 9378Duplicate FieldUnit names within a scope are now detected and 9379flagged as errors. 9380 9381 4) Documentation: 9382 9383Programmer Reference updated to reflect OSL and address space 9384handler interface changes described above. 9385 9386---------------------------------------- 9387Summary of changes for this label: 10_18_01 9388 9389ACPI CA Core Subsystem: 9390 9391Fixed a problem with the internal object reference count mechanism 9392that occasionally caused premature object deletion. This resolves 9393all of the outstanding problem reports where an object is deleted 9394in the middle of an interpreter evaluation. Although this problem 9395only showed up in rather obscure cases, the solution to the 9396problem involved an adjustment of all reference counts involving 9397objects attached to namespace nodes. 9398 9399Fixed a problem with Field support in the interpreter where 9400writing to an aligned field whose length is an exact multiple (2 9401or greater) of the field access granularity would cause an attempt 9402to write beyond the end of the field. 9403 9404The top level AML opcode execution functions within the 9405interpreter have been renamed with a more meaningful and 9406consistent naming convention. The modules exmonad.c and 9407exdyadic.c were eliminated. New modules are exoparg1.c, 9408exoparg2.c, exoparg3.c, and exoparg6.c. 9409 9410Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 9411 9412Fixed a problem where the AML debugger was causing some internal 9413objects to not be deleted during subsystem termination. 9414 9415Fixed a problem with the external AcpiEvaluateObject interface 9416where the subsystem would fault if the named object to be 9417evaluated refered to a constant such as Zero, Ones, etc. 9418 9419Fixed a problem with IndexFields and BankFields where the 9420subsystem would fault if the index, data, or bank registers were 9421not defined in the same scope as the field itself. 9422 9423Added printf format string checking for compilers that support 9424this feature. Corrected more than 50 instances of issues with 9425format specifiers within invocations of ACPI_DEBUG_PRINT 9426throughout the core subsystem code. 9427 9428The ASL "Revision" operator now returns the ACPI support level 9429implemented in the core - the value "2" since the ACPI 2.0 support 9430is more than 50% implemented. 9431 9432Enhanced the output of the AML debugger "dump namespace" command 9433to output in a more human-readable form. 9434 9435Current core subsystem library code sizes are shown below. These 9436 9437are the code and data sizes for the acpica.lib produced by the 9438Microsoft Visual C++ 6.0 compiler, and these values do not include 9439any ACPI driver or OSPM code. The debug version of the code 9440includes the full debug trace mechanism -- leading to a much 9441 9442larger code and data size. Note that these values will vary 9443depending on the efficiency of the compiler and the compiler 9444options used during generation. 9445 9446 Previous Label (09_20_01): 9447 Non-Debug Version: 65K Code, 5K Data, 70K Total 9448 Debug Version: 138K Code, 58K Data, 196K Total 9449 9450 This Label: 9451 9452 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 9453 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 9454 9455Linux: 9456 9457Implemented a "Bad BIOS Blacklist" to track machines that have 9458known ASL/AML problems. 9459 9460Enhanced the /proc interface for the thermal zone driver and added 9461support for _HOT (the critical suspend trip point). The 'info' 9462file now includes threshold/policy information, and allows setting 9463of _SCP (cooling preference) and _TZP (polling frequency) values 9464to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 9465frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 9466preference to the passive/quiet mode (if supported by the ASL). 9467 9468Implemented a workaround for a gcc bug that resuted in an OOPs 9469when loading the control method battery driver. 9470 9471 ---------------------------------------- 9472Summary of changes for this label: 09_20_01 9473 9474 ACPI CA Core Subsystem: 9475 9476The AcpiEnableEvent and AcpiDisableEvent interfaces have been 9477modified to allow individual GPE levels to be flagged as wake- 9478enabled (i.e., these GPEs are to remain enabled when the platform 9479sleeps.) 9480 9481The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 9482support wake-enabled GPEs. This means that upon entering the 9483sleep state, all GPEs that are not wake-enabled are disabled. 9484When leaving the sleep state, these GPEs are reenabled. 9485 9486A local double-precision divide/modulo module has been added to 9487enhance portability to OS kernels where a 64-bit math library is 9488not available. The new module is "utmath.c". 9489 9490Several optimizations have been made to reduce the use of CPU 9491stack. Originally over 2K, the maximum stack usage is now below 94922K at 1860 bytes (1.82k) 9493 9494Fixed a problem with the AcpiGetFirmwareTable interface where the 9495root table pointer was not mapped into a logical address properly. 9496 9497Fixed a problem where a NULL pointer was being dereferenced in the 9498interpreter code for the ASL Notify operator. 9499 9500Fixed a problem where the use of the ASL Revision operator 9501returned an error. This operator now returns the current version 9502of the ACPI CA core subsystem. 9503 9504Fixed a problem where objects passed as control method parameters 9505to AcpiEvaluateObject were always deleted at method termination. 9506However, these objects may end up being stored into the namespace 9507by the called method. The object reference count mechanism was 9508applied to these objects instead of a force delete. 9509 9510Fixed a problem where static strings or buffers (contained in the 9511AML code) that are declared as package elements within the ASL 9512code could cause a fault because the interpreter would attempt to 9513delete them. These objects are now marked with the "static 9514object" flag to prevent any attempt to delete them. 9515 9516Implemented an interpreter optimization to use operands directly 9517from the state object instead of extracting the operands to local 9518variables. This reduces stack use and code size, and improves 9519performance. 9520 9521The module exxface.c was eliminated as it was an unnecessary extra 9522layer of code. 9523 9524Current core subsystem library code sizes are shown below. These 9525are the code and data sizes for the acpica.lib produced by the 9526Microsoft Visual C++ 6.0 compiler, and these values do not include 9527any ACPI driver or OSPM code. The debug version of the code 9528includes the full debug trace mechanism -- leading to a much 9529larger code and data size. Note that these values will vary 9530depending on the efficiency of the compiler and the compiler 9531options used during generation. 9532 9533 Non-Debug Version: 65K Code, 5K Data, 70K Total 9534(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 9535Total (Previously 195K) 9536 9537Linux: 9538 9539Support for ACPI 2.0 64-bit integers has been added. All ACPI 9540Integer objects are now 64 bits wide 9541 9542All Acpi data types and structures are now in lower case. Only 9543Acpi macros are upper case for differentiation. 9544 9545 Documentation: 9546 9547Changes to the external interfaces as described above. 9548 9549 ---------------------------------------- 9550Summary of changes for this label: 08_31_01 9551 9552 ACPI CA Core Subsystem: 9553 9554A bug with interpreter implementation of the ASL Divide operator 9555was found and fixed. The implicit function return value (not the 9556explicit store operands) was returning the remainder instead of 9557the quotient. This was a longstanding bug and it fixes several 9558known outstanding issues on various platforms. 9559 9560The ACPI_DEBUG_PRINT and function trace entry/exit macros have 9561been further optimized for size. There are 700 invocations of the 9562DEBUG_PRINT macro alone, so each optimization reduces the size of 9563the debug version of the subsystem significantly. 9564 9565A stack trace mechanism has been implemented. The maximum stack 9566usage is about 2K on 32-bit platforms. The debugger command "stat 9567stack" will display the current maximum stack usage. 9568 9569All public symbols and global variables within the subsystem are 9570now prefixed with the string "Acpi". This keeps all of the 9571symbols grouped together in a kernel map, and avoids conflicts 9572with other kernel subsystems. 9573 9574Most of the internal fixed lookup tables have been moved into the 9575code segment via the const operator. 9576 9577Several enhancements have been made to the interpreter to both 9578reduce the code size and improve performance. 9579 9580Current core subsystem library code sizes are shown below. These 9581are the code and data sizes for the acpica.lib produced by the 9582Microsoft Visual C++ 6.0 compiler, and these values do not include 9583any ACPI driver or OSPM code. The debug version of the code 9584includes the full debug trace mechanism which contains over 700 9585invocations of the DEBUG_PRINT macro, 500 function entry macro 9586invocations, and over 900 function exit macro invocations -- 9587leading to a much larger code and data size. Note that these 9588values will vary depending on the efficiency of the compiler and 9589the compiler options used during generation. 9590 9591 Non-Debug Version: 64K Code, 5K Data, 69K Total 9592Debug Version: 137K Code, 58K Data, 195K Total 9593 9594 Linux: 9595 9596Implemented wbinvd() macro, pending a kernel-wide definition. 9597 9598Fixed /proc/acpi/event to handle poll() and short reads. 9599 9600 ASL Compiler, version X2026: 9601 9602Fixed a problem introduced in the previous label where the AML 9603 9604code emitted for package objects produced packages with zero 9605length. 9606 9607 ---------------------------------------- 9608Summary of changes for this label: 08_16_01 9609 9610ACPI CA Core Subsystem: 9611 9612The following ACPI 2.0 ASL operators have been implemented in the 9613AML interpreter (These are already supported by the Intel ASL 9614compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 9615ToBuffer. Support for 64-bit AML constants is implemented in the 9616AML parser, debugger, and disassembler. 9617 9618The internal memory tracking mechanism (leak detection code) has 9619been upgraded to reduce the memory overhead (a separate tracking 9620block is no longer allocated for each memory allocation), and now 9621supports all of the internal object caches. 9622 9623The data structures and code for the internal object caches have 9624been coelesced and optimized so that there is a single cache and 9625memory list data structure and a single group of functions that 9626implement generic cache management. This has reduced the code 9627size in both the debug and release versions of the subsystem. 9628 9629The DEBUG_PRINT macro(s) have been optimized for size and replaced 9630by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 9631different, because it generates a single call to an internal 9632function. This results in a savings of about 90 bytes per 9633invocation, resulting in an overall code and data savings of about 963416% in the debug version of the subsystem. 9635 9636 Linux: 9637 9638Fixed C3 disk corruption problems and re-enabled C3 on supporting 9639machines. 9640 9641Integrated low-level sleep code by Patrick Mochel. 9642 9643Further tweaked source code Linuxization. 9644 9645Other minor fixes. 9646 9647 ASL Compiler: 9648 9649Support for ACPI 2.0 variable length packages is fixed/completed. 9650 9651Fixed a problem where the optional length parameter for the ACPI 96522.0 ToString operator. 9653 9654Fixed multiple extraneous error messages when a syntax error is 9655detected within the declaration line of a control method. 9656 9657 ---------------------------------------- 9658Summary of changes for this label: 07_17_01 9659 9660ACPI CA Core Subsystem: 9661 9662Added a new interface named AcpiGetFirmwareTable to obtain any 9663ACPI table via the ACPI signature. The interface can be called at 9664any time during kernel initialization, even before the kernel 9665virtual memory manager is initialized and paging is enabled. This 9666allows kernel subsystems to obtain ACPI tables very early, even 9667before the ACPI CA subsystem is initialized. 9668 9669Fixed a problem where Fields defined with the AnyAcc attribute 9670could be resolved to the incorrect address under the following 9671conditions: 1) the field width is larger than 8 bits and 2) the 9672parent operation region is not defined on a DWORD boundary. 9673 9674Fixed a problem where the interpreter is not being locked during 9675namespace initialization (during execution of the _INI control 9676methods), causing an error when an attempt is made to release it 9677later. 9678 9679ACPI 2.0 support in the AML Interpreter has begun and will be 9680ongoing throughout the rest of this year. In this label, The Mod 9681operator is implemented. 9682 9683Added a new data type to contain full PCI addresses named 9684ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 9685and Function values. 9686 9687 Linux: 9688 9689Enhanced the Linux version of the source code to change most 9690capitalized ACPI type names to lowercase. For example, all 9691instances of ACPI_STATUS are changed to acpi_status. This will 9692result in a large diff, but the change is strictly cosmetic and 9693aligns the CA code closer to the Linux coding standard. 9694 9695OSL Interfaces: 9696 9697The interfaces to the PCI configuration space have been changed to 9698add the PCI Segment number and to split the single 32-bit combined 9699DeviceFunction field into two 16-bit fields. This was 9700accomplished by moving the four values that define an address in 9701PCI configuration space (segment, bus, device, and function) to 9702the new ACPI_PCI_ID structure. 9703 9704The changes to the PCI configuration space interfaces led to a 9705reexamination of the complete set of address space access 9706interfaces for PCI, I/O, and Memory. The previously existing 18 9707interfaces have proven difficult to maintain (any small change 9708must be propagated across at least 6 interfaces) and do not easily 9709allow for future expansion to 64 bits if necessary. Also, on some 9710systems, it would not be appropriate to demultiplex the access 9711width (8, 16, 32,or 64) before calling the OSL if the 9712corresponding native OS interfaces contain a similar access width 9713parameter. For these reasons, the 18 address space interfaces 9714have been replaced by these 6 new ones: 9715 9716AcpiOsReadPciConfiguration 9717AcpiOsWritePciConfiguration 9718AcpiOsReadMemory 9719AcpiOsWriteMemory 9720AcpiOsReadPort 9721AcpiOsWritePort 9722 9723Added a new interface named AcpiOsGetRootPointer to allow the OSL 9724to perform the platform and/or OS-specific actions necessary to 9725obtain the ACPI RSDP table pointer. On IA-32 platforms, this 9726interface will simply call down to the CA core to perform the low- 9727memory search for the table. On IA-64, the RSDP is obtained from 9728EFI. Migrating this interface to the OSL allows the CA core to 9729 9730remain OS and platform independent. 9731 9732Added a new interface named AcpiOsSignal to provide a generic 9733"function code and pointer" interface for various miscellaneous 9734signals and notifications that must be made to the host OS. The 9735first such signals are intended to support the ASL Fatal and 9736Breakpoint operators. In the latter case, the AcpiOsBreakpoint 9737interface has been obsoleted. 9738 9739The definition of the AcpiFormatException interface has been 9740changed to simplify its use. The caller no longer must supply a 9741buffer to the call; A pointer to a const string is now returned 9742directly. This allows the call to be easily used in printf 9743statements, etc. since the caller does not have to manage a local 9744buffer. 9745 9746 9747 ASL Compiler, Version X2025: 9748 9749The ACPI 2.0 Switch/Case/Default operators have been implemented 9750and are fully functional. They will work with all ACPI 1.0 9751interpreters, since the operators are simply translated to If/Else 9752pairs. 9753 9754The ACPI 2.0 ElseIf operator is implemented and will also work 9755with 1.0 interpreters, for the same reason. 9756 9757Implemented support for ACPI 2.0 variable-length packages. These 9758packages have a separate opcode, and their size is determined by 9759the interpreter at run-time. 9760 9761Documentation The ACPI CA Programmer Reference has been updated to 9762reflect the new interfaces and changes to existing interfaces. 9763 9764 ------------------------------------------ 9765Summary of changes for this label: 06_15_01 9766 9767 ACPI CA Core Subsystem: 9768 9769Fixed a problem where a DWORD-accessed field within a Buffer 9770object would get its byte address inadvertently rounded down to 9771the nearest DWORD. Buffers are always Byte-accessible. 9772 9773 ASL Compiler, version X2024: 9774 9775Fixed a problem where the Switch() operator would either fault or 9776hang the compiler. Note however, that the AML code for this ACPI 97772.0 operator is not yet implemented. 9778 9779Compiler uses the new AcpiOsGetTimer interface to obtain compile 9780timings. 9781 9782Implementation of the CreateField operator automatically converts 9783a reference to a named field within a resource descriptor from a 9784byte offset to a bit offset if required. 9785 9786Added some missing named fields from the resource descriptor 9787support. These are the names that are automatically created by the 9788compiler to reference fields within a descriptor. They are only 9789valid at compile time and are not passed through to the AML 9790interpreter. 9791 9792Resource descriptor named fields are now typed as Integers and 9793subject to compile-time typechecking when used in expressions. 9794 9795 ------------------------------------------ 9796Summary of changes for this label: 05_18_01 9797 9798 ACPI CA Core Subsystem: 9799 9800Fixed a couple of problems in the Field support code where bits 9801from adjacent fields could be returned along with the proper field 9802bits. Restructured the field support code to improve performance, 9803readability and maintainability. 9804 9805New DEBUG_PRINTP macro automatically inserts the procedure name 9806into the output, saving hundreds of copies of procedure name 9807strings within the source, shrinking the memory footprint of the 9808debug version of the core subsystem. 9809 9810 Source Code Structure: 9811 9812The source code directory tree was restructured to reflect the 9813current organization of the component architecture. Some files 9814and directories have been moved and/or renamed. 9815 9816 Linux: 9817 9818Fixed leaking kacpidpc processes. 9819 9820Fixed queueing event data even when /proc/acpi/event is not 9821opened. 9822 9823 ASL Compiler, version X2020: 9824 9825Memory allocation performance enhancement - over 24X compile time 9826improvement on large ASL files. Parse nodes and namestring 9827buffers are now allocated from a large internal compiler buffer. 9828 9829The temporary .SRC file is deleted unless the "-s" option is 9830specified 9831 9832The "-d" debug output option now sends all output to the .DBG file 9833instead of the console. 9834 9835"External" second parameter is now optional 9836 9837"ElseIf" syntax now properly allows the predicate 9838 9839Last operand to "Load" now recognized as a Target operand 9840 9841Debug object can now be used anywhere as a normal object. 9842 9843ResourceTemplate now returns an object of type BUFFER 9844 9845EISAID now returns an object of type INTEGER 9846 9847"Index" now works with a STRING operand 9848 9849"LoadTable" now accepts optional parameters 9850 9851"ToString" length parameter is now optional 9852 9853"Interrupt (ResourceType," parse error fixed. 9854 9855"Register" with a user-defined region space parse error fixed 9856 9857Escaped backslash at the end of a string ("\\") scan/parse error 9858fixed 9859 9860"Revision" is now an object of type INTEGER. 9861 9862 9863 9864------------------------------------------ 9865Summary of changes for this label: 05_02_01 9866 9867Linux: 9868 9869/proc/acpi/event now blocks properly. 9870 9871Removed /proc/sys/acpi. You can still dump your DSDT from 9872/proc/acpi/dsdt. 9873 9874 ACPI CA Core Subsystem: 9875 9876Fixed a problem introduced in the previous label where some of the 9877"small" resource descriptor types were not recognized. 9878 9879Improved error messages for the case where an ASL Field is outside 9880the range of the parent operation region. 9881 9882 ASL Compiler, version X2018: 9883 9884 9885Added error detection for ASL Fields that extend beyond the length 9886of the parent operation region (only if the length of the region 9887is known at compile time.) This includes fields that have a 9888minimum access width that is smaller than the parent region, and 9889individual field units that are partially or entirely beyond the 9890extent of the parent. 9891 9892 9893 9894------------------------------------------ 9895Summary of changes for this label: 04_27_01 9896 9897 ACPI CA Core Subsystem: 9898 9899Fixed a problem where the namespace mutex could be released at the 9900wrong time during execution of AcpiRemoveAddressSpaceHandler. 9901 9902Added optional thread ID output for debug traces, to simplify 9903debugging of multiple threads. Added context switch notification 9904when the debug code realizes that a different thread is now 9905executing ACPI code. 9906 9907Some additional external data types have been prefixed with the 9908string "ACPI_" for consistency. This may effect existing code. 9909The data types affected are the external callback typedefs - e.g., 9910 9911WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 9912 9913 Linux: 9914 9915Fixed an issue with the OSL semaphore implementation where a 9916thread was waking up with an error from receiving a SIGCHLD 9917signal. 9918 9919Linux version of ACPI CA now uses the system C library for string 9920manipulation routines instead of a local implementation. 9921 9922Cleaned up comments and removed TBDs. 9923 9924 ASL Compiler, version X2017: 9925 9926Enhanced error detection and reporting for all file I/O 9927operations. 9928 9929 Documentation: 9930 9931Programmer Reference updated to version 1.06. 9932 9933 9934 9935------------------------------------------ 9936Summary of changes for this label: 04_13_01 9937 9938 ACPI CA Core Subsystem: 9939 9940Restructured support for BufferFields and RegionFields. 9941BankFields support is now fully operational. All known 32-bit 9942limitations on field sizes have been removed. Both BufferFields 9943and (Operation) RegionFields are now supported by the same field 9944management code. 9945 9946Resource support now supports QWORD address and IO resources. The 994716/32/64 bit address structures and the Extended IRQ structure 9948have been changed to properly handle Source Resource strings. 9949 9950A ThreadId of -1 is now used to indicate a "mutex not acquired" 9951condition internally and must never be returned by AcpiOsThreadId. 9952This reserved value was changed from 0 since Unix systems allow a 9953thread ID of 0. 9954 9955Linux: 9956 9957Driver code reorganized to enhance portability 9958 9959Added a kernel configuration option to control ACPI_DEBUG 9960 9961Fixed the EC driver to honor _GLK. 9962 9963ASL Compiler, version X2016: 9964 9965Fixed support for the "FixedHw" keyword. Previously, the FixedHw 9966address space was set to 0, not 0x7f as it should be. 9967 9968 ------------------------------------------ 9969Summary of changes for this label: 03_13_01 9970 9971 ACPI CA Core Subsystem: 9972 9973During ACPI initialization, the _SB_._INI method is now run if 9974present. 9975 9976Notify handler fix - notifies are deferred until the parent method 9977completes execution. This fixes the "mutex already acquired" 9978issue seen occasionally. 9979 9980Part of the "implicit conversion" rules in ACPI 2.0 have been 9981found to cause compatibility problems with existing ASL/AML. The 9982convert "result-to-target-type" implementation has been removed 9983for stores to method Args and Locals. Source operand conversion 9984is still fully implemented. Possible changes to ACPI 2.0 9985specification pending. 9986 9987Fix to AcpiRsCalculatePciRoutingTableLength to return correct 9988length. 9989 9990Fix for compiler warnings for 64-bit compiles. 9991 9992 Linux: 9993 9994/proc output aligned for easier parsing. 9995 9996Release-version compile problem fixed. 9997 9998New kernel configuration options documented in Configure.help. 9999 10000IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 10001context" message. 10002 10003 OSPM: 10004 10005Power resource driver integrated with bus manager. 10006 10007Fixed kernel fault during active cooling for thermal zones. 10008 10009Source Code: 10010 10011The source code tree has been restructured. 10012 10013 10014 10015------------------------------------------ 10016Summary of changes for this label: 03_02_01 10017 10018 Linux OS Services Layer (OSL): 10019 10020Major revision of all Linux-specific code. 10021 10022Modularized all ACPI-specific drivers. 10023 10024Added new thermal zone and power resource drivers. 10025 10026Revamped /proc interface (new functionality is under /proc/acpi). 10027 10028New kernel configuration options. 10029 10030 Linux known issues: 10031 10032New kernel configuration options not documented in Configure.help 10033yet. 10034 10035 10036Module dependencies not currently implemented. If used, they 10037should be loaded in this order: busmgr, power, ec, system, 10038processor, battery, ac_adapter, button, thermal. 10039 10040Modules will not load if CONFIG_MODVERSION is set. 10041 10042IBM 600E - entering S5 may reboot instead of shutting down. 10043 10044IBM 600E - Sleep button may generate "Invalid <NULL> context" 10045message. 10046 10047Some systems may fail with "execution mutex already acquired" 10048message. 10049 10050 ACPI CA Core Subsystem: 10051 10052Added a new OSL Interface, AcpiOsGetThreadId. This was required 10053for the deadlock detection code. Defined to return a non-zero, 32- 10054bit thread ID for the currently executing thread. May be a non- 10055zero constant integer on single-thread systems. 10056 10057Implemented deadlock detection for internal subsystem mutexes. We 10058may add conditional compilation for this code (debug only) later. 10059 10060ASL/AML Mutex object semantics are now fully supported. This 10061includes multiple acquires/releases by owner and support for the 10062 10063Mutex SyncLevel parameter. 10064 10065A new "Force Release" mechanism automatically frees all ASL 10066Mutexes that have been acquired but not released when a thread 10067exits the interpreter. This forces conformance to the ACPI spec 10068("All mutexes must be released when an invocation exits") and 10069prevents deadlocked ASL threads. This mechanism can be expanded 10070(later) to monitor other resource acquisitions if OEM ASL code 10071continues to misbehave (which it will). 10072 10073Several new ACPI exception codes have been added for the Mutex 10074support. 10075 10076Recursive method calls are now allowed and supported (the ACPI 10077spec does in fact allow recursive method calls.) The number of 10078recursive calls is subject to the restrictions imposed by the 10079SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 10080parameter. 10081 10082Implemented support for the SyncLevel parameter for control 10083methods (ACPI 2.0 feature) 10084 10085Fixed a deadlock problem when multiple threads attempted to use 10086the interpreter. 10087 10088Fixed a problem where the string length of a String package 10089element was not always set in a package returned from 10090AcpiEvaluateObject. 10091 10092Fixed a problem where the length of a String package element was 10093not always included in the length of the overall package returned 10094from AcpiEvaluateObject. 10095 10096Added external interfaces (Acpi*) to the ACPI debug memory 10097manager. This manager keeps a list of all outstanding 10098allocations, and can therefore detect memory leaks and attempts to 10099free memory blocks more than once. Useful for code such as the 10100power manager, etc. May not be appropriate for device drivers. 10101Performance with the debug code enabled is slow. 10102 10103The ACPI Global Lock is now an optional hardware element. 10104 10105 ASL Compiler Version X2015: 10106 10107Integrated changes to allow the compiler to be generated on 10108multiple platforms. 10109 10110Linux makefile added to generate the compiler on Linux 10111 10112 Source Code: 10113 10114All platform-specific headers have been moved to their own 10115subdirectory, Include/Platform. 10116 10117New source file added, Interpreter/ammutex.c 10118 10119New header file, Include/acstruct.h 10120 10121 Documentation: 10122 10123The programmer reference has been updated for the following new 10124interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 10125 10126 ------------------------------------------ 10127Summary of changes for this label: 02_08_01 10128 10129Core ACPI CA Subsystem: Fixed a problem where an error was 10130incorrectly returned if the return resource buffer was larger than 10131the actual data (in the resource interfaces). 10132 10133References to named objects within packages are resolved to the 10134 10135full pathname string before packages are returned directly (via 10136the AcpiEvaluateObject interface) or indirectly via the resource 10137interfaces. 10138 10139Linux OS Services Layer (OSL): 10140 10141Improved /proc battery interface. 10142 10143 10144Added C-state debugging output and other miscellaneous fixes. 10145 10146ASL Compiler Version X2014: 10147 10148All defined method arguments can now be used as local variables, 10149including the ones that are not actually passed in as parameters. 10150The compiler tracks initialization of the arguments and issues an 10151exception if they are used without prior assignment (just like 10152locals). 10153 10154The -o option now specifies a filename prefix that is used for all 10155output files, including the AML output file. Otherwise, the 10156default behavior is as follows: 1) the AML goes to the file 10157specified in the DSDT. 2) all other output files use the input 10158source filename as the base. 10159 10160 ------------------------------------------ 10161Summary of changes for this label: 01_25_01 10162 10163Core ACPI CA Subsystem: Restructured the implementation of object 10164store support within the interpreter. This includes support for 10165the Store operator as well as any ASL operators that include a 10166target operand. 10167 10168Partially implemented support for Implicit Result-to-Target 10169conversion. This is when a result object is converted on the fly 10170to the type of an existing target object. Completion of this 10171support is pending further analysis of the ACPI specification 10172concerning this matter. 10173 10174CPU-specific code has been removed from the subsystem (hardware 10175directory). 10176 10177New Power Management Timer functions added 10178 10179Linux OS Services Layer (OSL): Moved system state transition code 10180to the core, fixed it, and modified Linux OSL accordingly. 10181 10182Fixed C2 and C3 latency calculations. 10183 10184 10185We no longer use the compilation date for the version message on 10186initialization, but retrieve the version from AcpiGetSystemInfo(). 10187 10188Incorporated for fix Sony VAIO machines. 10189 10190Documentation: The Programmer Reference has been updated and 10191reformatted. 10192 10193 10194ASL Compiler: Version X2013: Fixed a problem where the line 10195numbering and error reporting could get out of sync in the 10196presence of multiple include files. 10197 10198 ------------------------------------------ 10199Summary of changes for this label: 01_15_01 10200 10201Core ACPI CA Subsystem: 10202 10203Implemented support for type conversions in the execution of the 10204ASL Concatenate operator (The second operand is converted to 10205match the type of the first operand before concatenation.) 10206 10207Support for implicit source operand conversion is partially 10208implemented. The ASL source operand types Integer, Buffer, and 10209String are freely interchangeable for most ASL operators and are 10210converted by the interpreter on the fly as required. Implicit 10211Target operand conversion (where the result is converted to the 10212target type before storing) is not yet implemented. 10213 10214Support for 32-bit and 64-bit BCD integers is implemented. 10215 10216Problem fixed where a field read on an aligned field could cause a 10217read past the end of the field. 10218 10219New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 10220does not return a value, but the caller expects one. (The ASL 10221compiler flags this as a warning.) 10222 10223ASL Compiler: 10224 10225Version X2011: 102261. Static typechecking of all operands is implemented. This 10227prevents the use of invalid objects (such as using a Package where 10228an Integer is required) at compile time instead of at interpreter 10229run-time. 102302. The ASL source line is printed with ALL errors and warnings. 102313. Bug fix for source EOF without final linefeed. 102324. Debug option is split into a parse trace and a namespace trace. 102335. Namespace output option (-n) includes initial values for 10234integers and strings. 102356. Parse-only option added for quick syntax checking. 102367. Compiler checks for duplicate ACPI name declarations 10237 10238Version X2012: 102391. Relaxed typechecking to allow interchangeability between 10240strings, integers, and buffers. These types are now converted by 10241the interpreter at runtime. 102422. Compiler reports time taken by each internal subsystem in the 10243debug output file. 10244 10245 10246 ------------------------------------------ 10247Summary of changes for this label: 12_14_00 10248 10249ASL Compiler: 10250 10251This is the first official release of the compiler. Since the 10252compiler requires elements of the Core Subsystem, this label 10253synchronizes everything. 10254 10255------------------------------------------ 10256Summary of changes for this label: 12_08_00 10257 10258 10259Fixed a problem where named references within the ASL definition 10260of both OperationRegions and CreateXXXFields did not work 10261properly. The symptom was an AE_AML_OPERAND_TYPE during 10262initialization of the region/field. This is similar (but not 10263related internally) to the problem that was fixed in the last 10264label. 10265 10266Implemented both 32-bit and 64-bit support for the BCD ASL 10267functions ToBCD and FromBCD. 10268 10269Updated all legal headers to include "2000" in the copyright 10270years. 10271 10272 ------------------------------------------ 10273Summary of changes for this label: 12_01_00 10274 10275Fixed a problem where method invocations within the ASL definition 10276of both OperationRegions and CreateXXXFields did not work 10277properly. The symptom was an AE_AML_OPERAND_TYPE during 10278initialization of the region/field: 10279 10280 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 10281[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 10282(0x3005) 10283 10284Fixed a problem where operators with more than one nested 10285subexpression would fail. The symptoms were varied, by mostly 10286AE_AML_OPERAND_TYPE errors. This was actually a rather serious 10287problem that has gone unnoticed until now. 10288 10289 Subtract (Add (1,2), Multiply (3,4)) 10290 10291Fixed a problem where AcpiGetHandle didn't quite get fixed in the 10292previous build (The prefix part of a relative path was handled 10293incorrectly). 10294 10295Fixed a problem where Operation Region initialization failed if 10296the operation region name was a "namepath" instead of a simple 10297"nameseg". Symptom was an AE_NO_OPERAND error. 10298 10299Fixed a problem where an assignment to a local variable via the 10300indirect RefOf mechanism only worked for the first such 10301assignment. Subsequent assignments were ignored. 10302 10303 ------------------------------------------ 10304Summary of changes for this label: 11_15_00 10305 10306ACPI 2.0 table support with backwards support for ACPI 1.0 and the 103070.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 10308the AML interpreter does NOT have support for the new 2.0 ASL 10309grammar terms at this time. 10310 10311All ACPI hardware access is via the GAS structures in the ACPI 2.0 10312FADT. 10313 10314All physical memory addresses across all platforms are now 64 bits 10315wide. Logical address width remains dependent on the platform 10316(i.e., "void *"). 10317 10318AcpiOsMapMemory interface changed to a 64-bit physical address. 10319 10320The AML interpreter integer size is now 64 bits, as per the ACPI 103212.0 specification. 10322 10323For backwards compatibility with ACPI 1.0, ACPI tables with a 10324revision number less than 2 use 32-bit integers only. 10325 10326Fixed a problem where the evaluation of OpRegion operands did not 10327always resolve them to numbers properly. 10328 10329------------------------------------------ 10330Summary of changes for this label: 10_20_00 10331 10332Fix for CBN_._STA issue. This fix will allow correct access to 10333CBN_ OpRegions when the _STA returns 0x8. 10334 10335Support to convert ACPI constants (Ones, Zeros, One) to actual 10336values before a package object is returned 10337 10338Fix for method call as predicate to if/while construct causing 10339incorrect if/while behavior 10340 10341Fix for Else block package lengths sometimes calculated wrong (if 10342block > 63 bytes) 10343 10344Fix for Processor object length field, was always zero 10345 10346Table load abort if FACP sanity check fails 10347 10348Fix for problem with Scope(name) if name already exists 10349 10350Warning emitted if a named object referenced cannot be found 10351(resolved) during method execution. 10352 10353 10354 10355 10356 10357------------------------------------------ 10358Summary of changes for this label: 9_29_00 10359 10360New table initialization interfaces: AcpiInitializeSubsystem no 10361longer has any parameters AcpiFindRootPointer - Find the RSDP (if 10362necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 10363>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 10364AcpiLoadTables 10365 10366Note: These interface changes require changes to all existing OSDs 10367 10368The PCI_Config default address space handler is always installed 10369at the root namespace object. 10370 10371------------------------------------------- 10372Summary of changes for this label: 09_15_00 10373 10374The new initialization architecture is implemented. New 10375interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 10376AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 10377 10378(Namespace is automatically loaded when a table is loaded) 10379 10380The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1038152 bytes to 32 bytes. There is usually one of these for every 10382namespace object, so the memory savings is significant. 10383 10384Implemented just-in-time evaluation of the CreateField operators. 10385 10386Bug fixes for IA-64 support have been integrated. 10387 10388Additional code review comments have been implemented 10389 10390The so-called "third pass parse" has been replaced by a final walk 10391through the namespace to initialize all operation regions (address 10392spaces) and fields that have not yet been initialized during the 10393execution of the various _INI and REG methods. 10394 10395New file - namespace/nsinit.c 10396 10397------------------------------------------- 10398Summary of changes for this label: 09_01_00 10399 10400Namespace manager data structures have been reworked to change the 10401primary object from a table to a single object. This has 10402resulted in dynamic memory savings of 3X within the namespace and 104032X overall in the ACPI CA subsystem. 10404 10405Fixed problem where the call to AcpiEvFindPciRootBuses was 10406inadvertently left commented out. 10407 10408Reduced the warning count when generating the source with the GCC 10409compiler. 10410 10411Revision numbers added to each module header showing the 10412SourceSafe version of the file. Please refer to this version 10413number when giving us feedback or comments on individual modules. 10414 10415The main object types within the subsystem have been renamed to 10416clarify their purpose: 10417 10418ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 10419ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 10420ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 10421 10422NOTE: no changes to the initialization sequence are included in 10423this label. 10424 10425------------------------------------------- 10426Summary of changes for this label: 08_23_00 10427 10428Fixed problem where TerminateControlMethod was being called 10429multiple times per method 10430 10431Fixed debugger problem where single stepping caused a semaphore to 10432be oversignalled 10433 10434Improved performance through additional parse object caching - 10435added ACPI_EXTENDED_OP type 10436 10437------------------------------------------- 10438Summary of changes for this label: 08_10_00 10439 10440Parser/Interpreter integration: Eliminated the creation of 10441complete parse trees for ACPI tables and control methods. 10442Instead, parse subtrees are created and then deleted as soon as 10443they are processed (Either entered into the namespace or executed 10444by the interpreter). This reduces the use of dynamic kernel 10445memory significantly. (about 10X) 10446 10447Exception codes broken into classes and renumbered. Be sure to 10448recompile all code that includes acexcep.h. Hopefully we won't 10449have to renumber the codes again now that they are split into 10450classes (environment, programmer, AML code, ACPI table, and 10451internal). 10452 10453Fixed some additional alignment issues in the Resource Manager 10454subcomponent 10455 10456Implemented semaphore tracking in the AcpiExec utility, and fixed 10457several places where mutexes/semaphores were being unlocked 10458without a corresponding lock operation. There are no known 10459semaphore or mutex "leaks" at this time. 10460 10461Fixed the case where an ASL Return operator is used to return an 10462unnamed package. 10463 10464------------------------------------------- 10465Summary of changes for this label: 07_28_00 10466 10467Fixed a problem with the way addresses were calculated in 10468AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 10469manifested itself when a Field was created with WordAccess or 10470DwordAccess, but the field unit defined within the Field was less 10471 10472than a Word or Dword. 10473 10474Fixed a problem in AmlDumpOperands() module's loop to pull 10475operands off of the operand stack to display information. The 10476problem manifested itself as a TLB error on 64-bit systems when 10477accessing an operand stack with two or more operands. 10478 10479Fixed a problem with the PCI configuration space handlers where 10480context was getting confused between accesses. This required a 10481change to the generic address space handler and address space 10482setup definitions. Handlers now get both a global handler context 10483(this is the one passed in by the user when executing 10484AcpiInstallAddressSpaceHandler() and a specific region context 10485that is unique to each region (For example, the _ADR, _SEG and 10486_BBN values associated with a specific region). The generic 10487function definitions have changed to the following: 10488 10489typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 10490UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 10491*HandlerContext, // This used to be void *Context void 10492*RegionContext); // This is an additional parameter 10493 10494typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 10495RegionHandle, UINT32 Function, void *HandlerContext, void 10496**RegionContext); // This used to be **ReturnContext 10497 10498------------------------------------------- 10499Summary of changes for this label: 07_21_00 10500 10501Major file consolidation and rename. All files within the 10502interpreter have been renamed as well as most header files. This 10503was done to prevent collisions with existing files in the host 10504OSs -- filenames such as "config.h" and "global.h" seem to be 10505quite common. The VC project files have been updated. All 10506makefiles will require modification. 10507 10508The parser/interpreter integration continues in Phase 5 with the 10509implementation of a complete 2-pass parse (the AML is parsed 10510twice) for each table; This avoids the construction of a huge 10511parse tree and therefore reduces the amount of dynamic memory 10512required by the subsystem. Greater use of the parse object cache 10513means that performance is unaffected. 10514 10515Many comments from the two code reviews have been rolled in. 10516 10517The 64-bit alignment support is complete. 10518 10519------------------------------------------- 10520Summary of changes for this label: 06_30_00 10521 10522With a nod and a tip of the hat to the technology of yesteryear, 10523we've added support in the source code for 80 column output 10524devices. The code is now mostly constrained to 80 columns or 10525less to support environments and editors that 1) cannot display 10526or print more than 80 characters on a single line, and 2) cannot 10527disable line wrapping. 10528 10529A major restructuring of the namespace data structure has been 10530completed. The result is 1) cleaner and more 10531understandable/maintainable code, and 2) a significant reduction 10532in the dynamic memory requirement for each named ACPI object 10533(almost half). 10534 10535------------------------------------------- 10536Summary of changes for this label: 06_23_00 10537 10538Linux support has been added. In order to obtain approval to get 10539the ACPI CA subsystem into the Linux kernel, we've had to make 10540quite a few changes to the base subsystem that will affect all 10541users (all the changes are generic and OS- independent). The 10542effects of these global changes have been somewhat far reaching. 10543Files have been merged and/or renamed and interfaces have been 10544renamed. The major changes are described below. 10545 10546Osd* interfaces renamed to AcpiOs* to eliminate namespace 10547pollution/confusion within our target kernels. All OSD 10548interfaces must be modified to match the new naming convention. 10549 10550Files merged across the subsystem. A number of the smaller source 10551and header files have been merged to reduce the file count and 10552increase the density of the existing files. There are too many 10553to list here. In general, makefiles that call out individual 10554files will require rebuilding. 10555 10556Interpreter files renamed. All interpreter files now have the 10557prefix am* instead of ie* and is*. 10558 10559Header files renamed: The acapi.h file is now acpixf.h. The 10560acpiosd.h file is now acpiosxf.h. We are removing references to 10561the acronym "API" since it is somewhat windowsy. The new name is 10562"external interface" or xface or xf in the filenames.j 10563 10564 10565All manifest constants have been forced to upper case (some were 10566mixed case.) Also, the string "ACPI_" has been prepended to many 10567(not all) of the constants, typedefs, and structs. 10568 10569The globals "DebugLevel" and "DebugLayer" have been renamed 10570"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 10571 10572All other globals within the subsystem are now prefixed with 10573"AcpiGbl_" Internal procedures within the subsystem are now 10574prefixed with "Acpi" (with only a few exceptions). The original 10575two-letter abbreviation for the subcomponent remains after "Acpi" 10576- for example, CmCallocate became AcpiCmCallocate. 10577 10578Added a source code translation/conversion utility. Used to 10579generate the Linux source code, it can be modified to generate 10580other types of source as well. Can also be used to cleanup 10581existing source by removing extraneous spaces and blank lines. 10582Found in tools/acpisrc/* 10583 10584OsdUnMapMemory was renamed to OsdUnmapMemory and then 10585AcpiOsUnmapMemory. (UnMap became Unmap). 10586 10587A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 10588When set to one, this indicates that the caller wants to use the 10589 10590semaphore as a mutex, not a counting semaphore. ACPI CA uses 10591both types. However, implementers of this call may want to use 10592different OS primitives depending on the type of semaphore 10593requested. For example, some operating systems provide separate 10594 10595"mutex" and "semaphore" interfaces - where the mutex interface is 10596much faster because it doesn't have all the overhead of a full 10597semaphore implementation. 10598 10599Fixed a deadlock problem where a method that accesses the PCI 10600address space can block forever if it is the first access to the 10601space. 10602 10603------------------------------------------- 10604Summary of changes for this label: 06_02_00 10605 10606Support for environments that cannot handle unaligned data 10607accesses (e.g. firmware and OS environments devoid of alignment 10608handler technology namely SAL/EFI and the IA-64 Linux kernel) has 10609been added (via configurable macros) in these three areas: - 10610Transfer of data from the raw AML byte stream is done via byte 10611moves instead of word/dword/qword moves. - External objects are 10612aligned within the user buffer, including package elements (sub- 10613objects). - Conversion of name strings to UINT32 Acpi Names is now 10614done byte-wise. 10615 10616The Store operator was modified to mimic Microsoft's 10617implementation when storing to a Buffer Field. 10618 10619Added a check of the BM_STS bit before entering C3. 10620 10621The methods subdirectory has been obsoleted and removed. A new 10622file, cmeval.c subsumes the functionality. 10623 10624A 16-bit (DOS) version of AcpiExec has been developed. The 10625makefile is under the acpiexec directory. 10626