changes.txt revision 199337
1107549Srwatson---------------------------------------- 2107549Srwatson12 November 2009. Summary of changes for version 20091112: 3107549Srwatson 4107549SrwatsonThis release is available at www.acpica.org/downloads 5107549Srwatson 6107549Srwatson1) ACPI CA Core Subsystem: 7107549Srwatson 8107549SrwatsonImplemented a post-order callback to AcpiWalkNamespace. The existing 9107549Srwatsoninterface only has a pre-order callback. This change adds an additional 10107549Srwatsonparameter for a post-order callback which will be more useful for bus scans. 11107549SrwatsonACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 12107549Srwatson 13107549SrwatsonModified the behavior of the operation region memory mapping cache for 14107549SrwatsonSystemMemory. Ensure that the memory mappings created for operation regions 15107549Srwatsondo not cross 4K page boundaries. Crossing a page boundary while mapping 16107549Srwatsonregions can cause kernel warnings on some hosts if the pages have different 17107549Srwatsonattributes. Such regions are probably BIOS bugs, and this is the workaround. 18107549SrwatsonLinux BZ 14445. Lin Ming. 19107549Srwatson 20107549SrwatsonImplemented an automatic repair for predefined methods that must return 21107549Srwatsonsorted lists. This change will repair (by sorting) packages returned by _ALR, 22107549Srwatson_PSS, and _TSS. Drivers can now assume that the packages are correctly sorted 23107549Srwatsonand do not contain NULL package elements. Adds one new file, 24107549Srwatsonnamespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 25107549Srwatson 26107549SrwatsonFixed a possible fault during predefined name validation if a return Package 27107549Srwatsonobject contains NULL elements. Also adds a warning if a NULL element is 28202756Sedfollowed by any non-null elements. ACPICA BZ 813, 814. Future enhancement may 29202756Sedinclude repair or removal of all such NULL elements where possible. 30 31Implemented additional module-level executable AML code support. This change 32will execute module-level code that is not at the root of the namespace 33(under a Device object, etc.) at table load time. Module-level executable AML 34code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 35 36Implemented a new internal function to create Integer objects. This function 37simplifies miscellaneous object creation code. ACPICA BZ 823. 38 39Reduced the severity of predefined repair messages, Warning to Info. Since 40the object was successfully repaired, a warning is too severe. Reduced to an 41info message for now. These messages may eventually be changed to debug-only. 42ACPICA BZ 812. 43 44Example Code and Data Size: These are the sizes for the OS-independent 45acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 46debug version of the code includes the debug output trace mechanism and has a 47much larger code and data size. 48 49 Previous Release: 50 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 51 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 52 Current Release: 53 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 54 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 55 562) iASL Compiler/Disassembler and Tools: 57 58iASL: Implemented Switch() with While(1) so that Break works correctly. This 59change correctly implements the Switch operator with a surrounding While(1) 60so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 61 62iASL: Added a message if a package initializer list is shorter than package 63length. Adds a new remark for a Package() declaration if an initializer list 64exists, but is shorter than the declared length of the package. Although 65technically legal, this is probably a coding error and it is seen in the 66field. ACPICA BZ 815. Lin Ming, Bob Moore. 67 68iASL: Fixed a problem where the compiler could fault after the maximum number 69of errors was reached (200). 70 71acpixtract: Fixed a possible warning for pointer cast if the compiler warning 72level set very high. 73 74---------------------------------------- 7513 October 2009. Summary of changes for version 20091013: 76 77This release is available at www.acpica.org/downloads 78 791) ACPI CA Core Subsystem: 80 81Fixed a problem where an Operation Region _REG method could be executed more 82than once. If a custom address space handler is installed by the host before 83the "initialize operation regions" phase of the ACPICA initialization, any 84_REG methods for that address space could be executed twice. This change 85fixes the problem. ACPICA BZ 427. Lin Ming. 86 87Fixed a possible memory leak for the Scope() ASL operator. When the exact 88invocation of "Scope(\)" is executed (change scope to root), one internal 89operand object was leaked. Lin Ming. 90 91Implemented a run-time repair for the _MAT predefined method. If the _MAT 92return value is defined as a Field object in the AML, and the field 93size is less than or equal to the default width of an integer (32 or 64),_MAT 94can incorrectly return an Integer instead of a Buffer. ACPICA now 95automatically repairs this problem. ACPICA BZ 810. 96 97Implemented a run-time repair for the _BIF and _BIX predefined methods. The 98"OEM Information" field is often incorrectly returned as an Integer with 99value zero if the field is not supported by the platform. This is due to an 100ambiguity in the ACPI specification. The field should always be a string. 101ACPICA now automatically repairs this problem by returning a NULL string 102within the returned Package. ACPICA BZ 807. 103 104Example Code and Data Size: These are the sizes for the OS-independent 105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 106debug version of the code includes the debug output trace mechanism and has a 107much larger code and data size. 108 109 Previous Release: 110 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 111 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 112 Current Release: 113 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 114 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 115 1162) iASL Compiler/Disassembler and Tools: 117 118Disassembler: Fixed a problem where references to external symbols that 119contained one or more parent-prefixes (carats) were not handled correctly, 120possibly causing a fault. ACPICA BZ 806. Lin Ming. 121 122Disassembler: Restructured the code so that all functions that handle 123external symbols are in a single module. One new file is added, 124common/dmextern.c. 125 126AML Debugger: Added a max count argument for the Batch command (which 127executes multiple predefined methods within the namespace.) 128 129iASL: Updated the compiler documentation (User Reference.) Available at 130http://www.acpica.org/documentation/. ACPICA BZ 750. 131 132AcpiXtract: Updated for Lint and other formatting changes. Close all open 133files. 134 135---------------------------------------- 13603 September 2009. Summary of changes for version 20090903: 137 1381) ACPI CA Core Subsystem: 139 140For Windows Vista compatibility, added the automatic execution of an _INI 141method located at the namespace root (\_INI). This method is executed at 142table load time. This support is in addition to the automatic execution of 143\_SB._INI. Lin Ming. 144 145Fixed a possible memory leak in the interpreter for AML package objects if 146the package initializer list is longer than the defined size of the package. 147This apparently can only happen if the BIOS changes the package size on the 148fly (seen in a _PSS object), as ASL compilers do not allow this. The 149interpreter will truncate the package to the defined size (and issue an error 150message), but previously could leave the extra objects undeleted if they were 151pre-created during the argument processing (such is the case if the package 152consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 153 154Fixed a problem seen when a Buffer or String is stored to itself via ASL. 155This has been reported in the field. Previously, ACPICA would zero out the 156buffer/string. Now, the operation is treated as a noop. Provides Windows 157compatibility. ACPICA BZ 803. Lin Ming. 158 159Removed an extraneous error message for ASL constructs of the form 160Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements 161are seen in many BIOSs and are once again treated as NOOPs and no error is 162emitted when they are encountered. ACPICA BZ 785. 163 164Fixed an extraneous warning message if a _DSM reserved method returns a 165Package object. _DSM can return any type of object, so validation on the 166return type cannot be performed. ACPICA BZ 802. 167 168Example Code and Data Size: These are the sizes for the OS-independent 169acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 170debug version of the code includes the debug output trace mechanism and has a 171much larger code and data size. 172 173 Previous Release: 174 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 175 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 176 Current Release: 177 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 178 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 179 1802) iASL Compiler/Disassembler and Tools: 181 182iASL: Fixed a problem with the use of the Alias operator and Resource 183Templates. The correct alias is now constructed and no error is emitted. 184ACPICA BZ 738. 185 186iASL: Implemented the -I option to specify additional search directories for 187include files. Allows multiple additional search paths for include files. 188Directories are searched in the order specified on the command line (after 189the local directory is searched.) ACPICA BZ 800. 190 191iASL: Fixed a problem where the full pathname for include files was not 192emitted for warnings/errors. This caused the IDE support to not work 193properly. ACPICA BZ 765. 194 195iASL: Implemented the -@ option to specify a Windows-style response file 196containing additional command line options. ACPICA BZ 801. 197 198AcpiExec: Added support to load multiple AML files simultaneously (such as a 199DSDT and multiple SSDTs). Also added support for wildcards within the AML 200pathname. These features allow all machine tables to be easily loaded and 201debugged together. ACPICA BZ 804. 202 203Disassembler: Added missing support for disassembly of HEST table Error Bank 204subtables. 205 206---------------------------------------- 20730 July 2009. Summary of changes for version 20090730: 208 209The ACPI 4.0 implementation for ACPICA is complete with this release. 210 2111) ACPI CA Core Subsystem: 212 213ACPI 4.0: Added header file support for all new and changed ACPI tables. 214Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new 215for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT, 216EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There 217have been some ACPI 4.0 changes to other existing tables. Split the large 218actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 219 220ACPI 4.0: Implemented predefined name validation for all new names. There are 22131 new names in ACPI 4.0. The predefined validation module was split into two 222files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 223 224Implemented support for so-called "module-level executable code". This is 225executable AML code that exists outside of any control method and is intended 226to be executed at table load time. Although illegal since ACPI 2.0, this type 227of code still exists and is apparently still being created. Blocks of this 228code are now detected and executed as intended. Currently, the code blocks 229must exist under either an If, Else, or While construct; these are the 230typical cases seen in the field. ACPICA BZ 762. Lin Ming. 231 232Implemented an automatic dynamic repair for predefined names that return 233nested Package objects. This applies to predefined names that are defined to 234return a variable-length Package of sub-packages. If the number of sub- 235packages is one, BIOS code is occasionally seen that creates a simple single 236package with no sub-packages. This code attempts to fix the problem by 237wrapping a new package object around the existing package. These methods can 238be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ 239790. 240 241Fixed a regression introduced in 20090625 for the AcpiGetDevices interface. 242The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA 243BZ 793. 244 245Fixed a problem with AcpiReset where the reset would silently fail if the 246register was one of the protected I/O ports. AcpiReset now bypasses the port 247validation mechanism. This may eventually be driven into the AcpiRead/Write 248interfaces. 249 250Fixed a regression related to the recent update of the AcpiRead/Write 251interfaces. A sleep/suspend could fail if the optional PM2 Control register 252does not exist during an attempt to write the Bus Master Arbitration bit. 253(However, some hosts already delete the code that writes this bit, and the 254code may in fact be obsolete at this date.) ACPICA BZ 799. 255 256Fixed a problem where AcpiTerminate could fault if inadvertently called twice 257in succession. ACPICA BZ 795. 258 259Example Code and Data Size: These are the sizes for the OS-independent 260acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 261debug version of the code includes the debug output trace mechanism and has a 262much larger code and data size. 263 264 Previous Release: 265 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 266 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 267 Current Release: 268 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 269 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 270 2712) iASL Compiler/Disassembler and Tools: 272 273ACPI 4.0: Implemented disassembler support for all new ACPI tables and 274changes to existing tables. ACPICA BZ 775. 275 276---------------------------------------- 27725 June 2009. Summary of changes for version 20090625: 278 279The ACPI 4.0 Specification was released on June 16 and is available at 280www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 281continue for the next few releases. 282 2831) ACPI CA Core Subsystem: 284 285ACPI 4.0: Implemented interpreter support for the IPMI operation region 286address space. Includes support for bi-directional data buffers and an IPMI 287address space handler (to be installed by an IPMI device driver.) ACPICA BZ 288773. Lin Ming. 289 290ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes 291support in both the header files and the disassembler. 292 293Completed a major update for the AcpiGetObjectInfo external interface. 294Changes include: 295 - Support for variable, unlimited length HID, UID, and CID strings. 296 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.) 297 - Call the _SxW power methods on behalf of a device object. 298 - Determine if a device is a PCI root bridge. 299 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 300These changes will require an update to all callers of this interface. See 301the updated ACPICA Programmer Reference for details. One new source file has 302been added - utilities/utids.c. ACPICA BZ 368, 780. 303 304Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 305transfers. The Value parameter has been extended from 32 bits to 64 bits in 306order to support new ACPI 4.0 tables. These changes will require an update to 307all callers of these interfaces. See the ACPICA Programmer Reference for 308details. ACPICA BZ 768. 309 310Fixed several problems with AcpiAttachData. The handler was not invoked when 311the host node was deleted. The data sub-object was not automatically deleted 312when the host node was deleted. The interface to the handler had an unused 313parameter, this was removed. ACPICA BZ 778. 314 315Enhanced the function that dumps ACPI table headers. All non-printable 316characters in the string fields are now replaced with '?' (Signature, OemId, 317OemTableId, and CompilerId.) ACPI tables with non-printable characters in 318these fields are occasionally seen in the field. ACPICA BZ 788. 319 320Fixed a problem with predefined method repair code where the code that 321attempts to repair/convert an object of incorrect type is only executed on 322the first time the predefined method is called. The mechanism that disables 323warnings on subsequent calls was interfering with the repair mechanism. 324ACPICA BZ 781. 325 326Fixed a possible memory leak in the predefined validation/repair code when a 327buffer is automatically converted to an expected string object. 328 329Removed obsolete 16-bit files from the distribution and from the current git 330tree head. ACPICA BZ 776. 331 332Example Code and Data Size: These are the sizes for the OS-independent 333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 334debug version of the code includes the debug output trace mechanism and has a 335much larger code and data size. 336 337 Previous Release: 338 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 339 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 340 Current Release: 341 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 342 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 343 3442) iASL Compiler/Disassembler and Tools: 345 346ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 347operation region keyword. ACPICA BZ 771, 772. Lin Ming. 348 349ACPI 4.0: iASL - implemented compile-time validation support for all new 350predefined names and control methods (31 total). ACPICA BZ 769. 351 352---------------------------------------- 35321 May 2009. Summary of changes for version 20090521: 354 3551) ACPI CA Core Subsystem: 356 357Disabled the preservation of the SCI enable bit in the PM1 control register. 358The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be 359a "preserved" bit - "OSPM always preserves this bit position", section 3604.7.3.2.1. However, some machines fail if this bit is in fact preserved 361because the bit needs to be explicitly set by the OS as a workaround. No 362machines fail if the bit is not preserved. Therefore, ACPICA no longer 363attempts to preserve this bit. 364 365Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 366incorrectly formed _PRT package could cause a fault. Added validation to 367ensure that each package element is actually a sub-package. 368 369Implemented a new interface to install or override a single control method, 370AcpiInstallMethod. This interface is useful when debugging in order to repair 371an existing method or to install a missing method without having to override 372the entire ACPI table. See the ACPICA Programmer Reference for use and 373examples. Lin Ming, Bob Moore. 374 375Fixed several reference count issues with the DdbHandle object that is 376created from a Load or LoadTable operator. Prevent premature deletion of the 377object. Also, mark the object as invalid once the table has been unloaded. 378This is needed because the handle itself may not be deleted after the table 379unload, depending on whether it has been stored in a named object by the 380caller. Lin Ming. 381 382Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 383mutexes of the same sync level are acquired but then not released in strict 384opposite order, the internally maintained Current Sync Level becomes confused 385and can cause subsequent execution errors. ACPICA BZ 471. 386 387Changed the allowable release order for ASL mutex objects. The ACPI 4.0 388specification has been changed to make the SyncLevel for mutex objects more 389useful. When releasing a mutex, the SyncLevel of the mutex must now be the 390same as the current sync level. This makes more sense than the previous rule 391(SyncLevel less than or equal). This change updates the code to match the 392specification. 393 394Fixed a problem with the local version of the AcpiOsPurgeCache function. The 395(local) cache must be locked during all cache object deletions. Andrew 396Baumann. 397 398Updated the Load operator to use operation region interfaces. This replaces 399direct memory mapping with region access calls. Now, all region accesses go 400through the installed region handler as they should. 401 402Simplified and optimized the NsGetNextNode function. Reduced parameter count 403and reduced code for this frequently used function. 404 405Example Code and Data Size: These are the sizes for the OS-independent 406acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 407debug version of the code includes the debug output trace mechanism and has a 408much larger code and data size. 409 410 Previous Release: 411 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 412 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 413 Current Release: 414 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 415 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 416 4172) iASL Compiler/Disassembler and Tools: 418 419Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems 420with sub-table disassembly and handling invalid sub-tables. Attempt recovery 421after an invalid sub-table ID. 422 423---------------------------------------- 42422 April 2009. Summary of changes for version 20090422: 425 4261) ACPI CA Core Subsystem: 427 428Fixed a compatibility issue with the recently released I/O port protection 429mechanism. For windows compatibility, 1) On a port protection violation, 430simply ignore the request and do not return an exception (allow the control 431method to continue execution.) 2) If only part of the request overlaps a 432protected port, read/write the individual ports that are not protected. Linux 433BZ 13036. Lin Ming 434 435Enhanced the execution of the ASL/AML BreakPoint operator so that it actually 436breaks into the AML debugger if the debugger is present. This matches the 437ACPI-defined behavior. 438 439Fixed several possible warnings related to the use of the configurable 440ACPI_THREAD_ID. This type can now be configured as either an integer or a 441pointer with no warnings. Also fixes several warnings in printf-like 442statements for the 64-bit build when the type is configured as a pointer. 443ACPICA BZ 766, 767. 444 445Fixed a number of possible warnings when compiling with gcc 4+ (depending on 446warning options.) Examples include printf formats, aliasing, unused globals, 447missing prototypes, missing switch default statements, use of non-ANSI 448library functions, use of non-ANSI constructs. See generate/unix/Makefile for 449a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 450 451Example Code and Data Size: These are the sizes for the OS-independent 452acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 453debug version of the code includes the debug output trace mechanism and has a 454much larger code and data size. 455 456 Previous Release: 457 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 458 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 459 Current Release: 460 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 461 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 462 4632) iASL Compiler/Disassembler and Tools: 464 465iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on 466the 64-bit build. 467 468iASL: Fixed a problem where the Unix/Linux versions of the compiler could not 469correctly digest Windows/DOS formatted files (with CR/LF). 470 471iASL: Added a new option for "quiet mode" (-va) that produces only the 472compilation summary, not individual errors and warnings. Useful for large 473batch compilations. 474 475AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex 476timeout that can be used to detect hang conditions during execution of AML 477code (includes both internal semaphores and AML-defined mutexes and events.) 478 479Added new makefiles for the generation of acpica in a generic unix-like 480environment. These makefiles are intended to generate the acpica tools and 481utilities from the original acpica git source tree structure. 482 483Test Suites: Updated and cleaned up the documentation files. Updated the 484copyrights to 2009, affecting all source files. Use the new version of iASL 485with quiet mode. Increased the number of available semaphores in the Windows 486OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added 487an alternate implementation of the semaphore timeout to allow aslts to 488execute fully on Cygwin. 489 490---------------------------------------- 49120 March 2009. Summary of changes for version 20090320: 492 4931) ACPI CA Core Subsystem: 494 495Fixed a possible race condition between AcpiWalkNamespace and dynamic table 496unloads. Added a reader/writer locking mechanism to allow multiple concurrent 497namespace walks (readers), but block a dynamic table unload until it can gain 498exclusive write access to the namespace. This fixes a problem where a table 499unload could (possibly catastrophically) delete the portion of the namespace 500that is currently being examined by a walk. Adds a new file, utlock.c, that 501implements the reader/writer lock mechanism. ACPICA BZ 749. 502 503Fixed a regression introduced in version 20090220 where a change to the FADT 504handling could cause the ACPICA subsystem to access non-existent I/O ports. 505 506Modified the handling of FADT register and table (FACS/DSDT) addresses. The 507FADT can contain both 32-bit and 64-bit versions of these addresses. 508Previously, the 64-bit versions were favored, meaning that if both 32 and 64 509versions were valid, but not equal, the 64-bit version was used. This was 510found to cause some machines to fail. Now, in this case, the 32-bit version 511is used instead. This now matches the Windows behavior. 512 513Implemented a new mechanism to protect certain I/O ports. Provides Microsoft 514compatibility and protects the standard PC I/O ports from access via AML 515code. Adds a new file, hwvalid.c 516 517Fixed a possible extraneous warning message from the FADT support. The 518message warns of a 32/64 length mismatch between the legacy and GAS 519definitions for a register. 520 521Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is 522made obsolete by the port protection mechanism above. It was previously used 523to validate the entire address range of an operation region, which could be 524incorrect if the range included illegal ports, but fields within the 525operation region did not actually access those ports. Validation is now 526performed on a per-field basis instead of the entire region. 527 528Modified the handling of the PM1 Status Register ignored bit (bit 11.) 529Ignored bits must be "preserved" according to the ACPI spec. Usually, this 530means a read/modify/write when writing to the register. However, for status 531registers, writing a one means clear the event. Writing a zero means preserve 532the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec, 533and the ACPICA code now simply always writes a zero to the ignored bit. 534 535Modified the handling of ignored bits for the PM1 A/B Control Registers. As 536per the ACPI specification, for the control registers, preserve 537(read/modify/write) all bits that are defined as either reserved or ignored. 538 539Updated the handling of write-only bits in the PM1 A/B Control Registers. 540When reading the register, zero the write-only bits as per the ACPI spec. 541ACPICA BZ 443. Lin Ming. 542 543Removed "Linux" from the list of supported _OSI strings. Linux no longer 544wants to reply true to this request. The Windows strings are the only paths 545through the AML that are tested and known to work properly. 546 547 Previous Release: 548 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 549 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 550 Current Release: 551 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 552 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 553 5542) iASL Compiler/Disassembler and Tools: 555 556Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and 557aetables.c 558 559---------------------------------------- 56020 February 2009. Summary of changes for version 20090220: 561 5621) ACPI CA Core Subsystem: 563 564Optimized the ACPI register locking. Removed locking for reads from the ACPI 565bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is 566not required when reading the single-bit registers. The 567AcpiGetRegisterUnlocked function is no longer needed and has been removed. 568This will improve performance for reads on these registers. ACPICA BZ 760. 569 570Fixed the parameter validation for AcpiRead/Write. Now return 571AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if 572the register has an address of zero. Previously, these cases simply returned 573AE_OK. For optional registers such as PM1B status/enable/control, the caller 574should check for a valid register address before calling. ACPICA BZ 748. 575 576Renamed the external ACPI bit register access functions. Renamed 577AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 578functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister. 579Also, restructured the code for these functions by simplifying the code path 580and condensing duplicate code to reduce code size. 581 582Added new functions to transparently handle the possibly split PM1 A/B 583registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions 584now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ 585746. 586 587Added a function to handle the PM1 control registers, AcpiHwWritePm1Control. 588This function writes both of the PM1 control registers (A/B). These registers 589are different than the PM1 A/B status and enable registers in that different 590values can be written to the A/B registers. Most notably, the SLP_TYP bits 591can be different, as per the values returned from the _Sx predefined methods. 592 593Removed an extra register write within AcpiHwClearAcpiStatus. This function 594was writing an optional PM1B status register twice. The existing call to the 595low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B 596register. ACPICA BZ 751. 597 598Split out the PM1 Status registers from the FADT. Added new globals for these 599registers (A/B), similar to the way the PM1 Enable registers are handled. 600Instead of overloading the FADT Event Register blocks. This makes the code 601clearer and less prone to error. 602 603Fixed the warning message for when the platform contains too many ACPI tables 604for the default size of the global root table data structure. The calculation 605for the truncation value was incorrect. 606 607Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 608obsolete macro, since it is now a simple reference to ->common.type. There 609were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 610 611Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 612TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 613simply SLEEP_TYPE. ACPICA BZ 754. 614 615Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 616function is only needed on 64-bit host operating systems and is thus not 617included for 32-bit hosts. 618 619Debug output: print the input and result for invocations of the _OSI reserved 620control method via the ACPI_LV_INFO debug level. Also, reduced some of the 621verbosity of this debug level. Len Brown. 622 623Example Code and Data Size: These are the sizes for the OS-independent 624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 625debug version of the code includes the debug output trace mechanism and has a 626much larger code and data size. 627 628 Previous Release: 629 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 630 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 631 Current Release: 632 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 633 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 634 6352) iASL Compiler/Disassembler and Tools: 636 637Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 638various legal performance profiles. 639 640---------------------------------------- 64123 January 2009. Summary of changes for version 20090123: 642 6431) ACPI CA Core Subsystem: 644 645Added the 2009 copyright to all module headers and signons. This affects 646virtually every file in the ACPICA core subsystem, the iASL compiler, and 647the tools/utilities. 648 649Implemented a change to allow the host to override any ACPI table, including 650dynamically loaded tables. Previously, only the DSDT could be replaced by the 651host. With this change, the AcpiOsTableOverride interface is called for each 652table found in the RSDT/XSDT during ACPICA initialization, and also whenever 653a table is dynamically loaded via the AML Load operator. 654 655Updated FADT flag definitions, especially the Boot Architecture flags. 656 657Debugger: For the Find command, automatically pad the input ACPI name with 658underscores if the name is shorter than 4 characters. This enables a match 659with the actual namespace entry which is itself padded with underscores. 660 661Example Code and Data Size: These are the sizes for the OS-independent 662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 663debug version of the code includes the debug output trace mechanism and has a 664much larger code and data size. 665 666 Previous Release: 667 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 668 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 669 Current Release: 670 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 671 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 672 6732) iASL Compiler/Disassembler and Tools: 674 675Fix build error under Bison-2.4. 676 677Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture 678flags. Now decode all flags, regardless of the FADT version. Flag output 679includes the FADT version which first defined each flag. 680 681The iASL -g option now dumps the RSDT to a file (in addition to the FADT and 682DSDT). Windows only. 683 684---------------------------------------- 68504 December 2008. Summary of changes for version 20081204: 686 6871) ACPI CA Core Subsystem: 688 689The ACPICA Programmer Reference has been completely updated and revamped for 690this release. This includes updates to the external interfaces, OSL 691interfaces, the overview sections, and the debugger reference. 692 693Several new ACPICA interfaces have been implemented and documented in the 694programmer reference: 695AcpiReset - Writes the reset value to the FADT-defined reset register. 696AcpiDisableAllGpes - Disable all available GPEs. 697AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 698AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 699AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 700AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 701AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 702 703Most of the public ACPI hardware-related interfaces have been moved to a new 704file, components/hardware/hwxface.c 705 706Enhanced the FADT parsing and low-level ACPI register access: The ACPI 707register lengths within the FADT are now used, and the low level ACPI 708register access no longer hardcodes the ACPI register lengths. Given that 709there may be some risk in actually trusting the FADT register lengths, a run- 710time option was added to fall back to the default hardcoded lengths if the 711FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 712option is set to true for now, and a warning is issued if a suspicious FADT 713register length is overridden with the default value. 714 715Fixed a reference count issue in NsRepairObject. This problem was introduced 716in version 20081031 as part of a fix to repair Buffer objects within 717Packages. Lin Ming. 718 719Added semaphore support to the Linux/Unix application OS-services layer 720(OSL). ACPICA BZ 448. Lin Ming. 721 722Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will 723be implemented in the OSL, or will binary semaphores be used instead. 724 725Example Code and Data Size: These are the sizes for the OS-independent 726acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 727debug version of the code includes the debug output trace mechanism and has a 728much larger code and data size. 729 730 Previous Release: 731 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 732 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 733 Current Release: 734 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 735 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 736 7372) iASL Compiler/Disassembler and Tools: 738 739iASL: Completed the '-e' option to include additional ACPI tables in order to 740aid with disassembly and External statement generation. ACPICA BZ 742. Lin 741Ming. 742 743iASL: Removed the "named object in while loop" error. The compiler cannot 744determine how many times a loop will execute. ACPICA BZ 730. 745 746Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA 747BZ 743. 748 749Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG). 750 751---------------------------------------- 75231 October 2008. Summary of changes for version 20081031: 753 7541) ACPI CA Core Subsystem: 755 756Restructured the ACPICA header files into public/private. acpi.h now includes 757only the "public" acpica headers. All other acpica headers are "private" and 758should not be included by acpica users. One new file, accommon.h is used to 759include the commonly used private headers for acpica code generation. Future 760plans include moving all private headers to a new subdirectory. 761 762Implemented an automatic Buffer->String return value conversion for 763predefined ACPI methods. For these methods (such as _BIF), added automatic 764conversion for return objects that are required to be a String, but a Buffer 765was found instead. This can happen when reading string battery data from an 766operation region, because it used to be difficult to convert the data from 767buffer to string from within the ASL. Ensures that the host OS is provided 768with a valid null-terminated string. Linux BZ 11822. 769 770Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector 771into two: one for the 32-bit vector, another for the 64-bit vector. This is 772required because the host OS must setup the wake much differently for each 773vector (real vs. protected mode, etc.) and the interface itself should not be 774deciding which vector to use. Also, eliminated the GetFirmwareWakingVector 775interface, as it served no purpose (only the firmware reads the vector, OS 776only writes the vector.) ACPICA BZ 731. 777 778Implemented a mechanism to escape infinite AML While() loops. Added a loop 779counter to force exit from AML While loops if the count becomes too large. 780This can occur in poorly written AML when the hardware does not respond 781within a while loop and the loop does not implement a timeout. The maximum 782loop count is configurable. A new exception code is returned when a loop is 783broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 784 785Optimized the execution of AML While loops. Previously, a control state 786object was allocated and freed for each execution of the loop. The 787optimization is to simply reuse the control state for each iteration. This 788speeds up the raw loop execution time by about 5%. 789 790Enhanced the implicit return mechanism. For Windows compatibility, return an 791implicit integer of value zero for methods that contain no executable code. 792Such methods are seen in the field as stubs (presumably), and can cause 793drivers to fail if they expect a return value. Lin Ming. 794 795Allow multiple backslashes as root prefixes in namepaths. In a fully 796qualified namepath, allow multiple backslash prefixes. This can happen (and 797is seen in the field) because of the use of a double-backslash in strings 798(since backslash is the escape character) causing confusion. ACPICA BZ 739 799Lin Ming. 800 801Emit a warning if two different FACS or DSDT tables are discovered in the 802FADT. Checks if there are two valid but different addresses for the FACS and 803DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 804 805Consolidated the method argument count validation code. Merged the code that 806validates control method argument counts into the predefined validation 807module. Eliminates possible multiple warnings for incorrect argument counts. 808 809Implemented ACPICA example code. Includes code for ACPICA initialization, 810handler installation, and calling a control method. Available at 811source/tools/examples. 812 813Added a global pointer for FACS table to simplify internal FACS access. Use 814the global pointer instead of using AcpiGetTableByIndex for each FACS access. 815This simplifies the code for the Global Lock and the Firmware Waking 816Vector(s). 817 818Example Code and Data Size: These are the sizes for the OS-independent 819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 820debug version of the code includes the debug output trace mechanism and has a 821much larger code and data size. 822 823 Previous Release: 824 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 825 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 826 Current Release: 827 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 828 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 829 8302) iASL Compiler/Disassembler and Tools: 831 832iASL: Improved disassembly of external method calls. Added the -e option to 833allow the inclusion of additional ACPI tables to help with the disassembly of 834method invocations and the generation of external declarations during the 835disassembly. Certain external method invocations cannot be disassembled 836properly without the actual declaration of the method. Use the -e option to 837include the table where the external method(s) are actually declared. Most 838useful for disassembling SSDTs that make method calls back to the master 839DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl -d 840-e dsdt.aml ssdt1.aml 841 842iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 843problem where the use of an alias within a namepath would result in a not 844found error or cause the compiler to fault. Also now allows forward 845references from the Alias operator itself. ACPICA BZ 738. 846 847---------------------------------------- 84826 September 2008. Summary of changes for version 20080926: 849 8501) ACPI CA Core Subsystem: 851 852Designed and implemented a mechanism to validate predefined ACPI methods and 853objects. This code validates the predefined ACPI objects (objects whose names 854start with underscore) that appear in the namespace, at the time they are 855evaluated. The argument count and the type of the returned object are 856validated against the ACPI specification. The purpose of this validation is 857to detect problems with the BIOS-implemented predefined ACPI objects before 858the results are returned to the ACPI-related drivers. Future enhancements may 859include actual repair of incorrect return objects where possible. Two new 860files are nspredef.c and acpredef.h. 861 862Fixed a fault in the AML parser if a memory allocation fails during the Op 863completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 864 865Fixed an issue with implicit return compatibility. This change improves the 866implicit return mechanism to be more compatible with the MS interpreter. Lin 867Ming, ACPICA BZ 349. 868 869Implemented support for zero-length buffer-to-string conversions. Allow zero 870length strings during interpreter buffer-to-string conversions. For example, 871during the ToDecimalString and ToHexString operators, as well as implicit 872conversions. Fiodor Suietov, ACPICA BZ 585. 873 874Fixed two possible memory leaks in the error exit paths of 875AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are 876similar in that they use a stack of state objects in order to eliminate 877recursion. The stack must be fully unwound and deallocated if an error 878occurs. Lin Ming. ACPICA BZ 383. 879 880Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global 881ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 882Moore ACPICA BZ 442. 883 884Removed the obsolete version number in module headers. Removed the 885"$Revision" number that appeared in each module header. This version number 886was useful under SourceSafe and CVS, but has no meaning under git. It is not 887only incorrect, it could also be misleading. 888 889Example Code and Data Size: These are the sizes for the OS-independent 890acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 891debug version of the code includes the debug output trace mechanism and has a 892much larger code and data size. 893 894 Previous Release: 895 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 896 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 897 Current Release: 898 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 899 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 900 901---------------------------------------- 90229 August 2008. Summary of changes for version 20080829: 903 9041) ACPI CA Core Subsystem: 905 906Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 907Reference. Changes include the elimination of cheating on the Object field 908for the DdbHandle subtype, addition of a reference class field to 909differentiate the various reference types (instead of an AML opcode), and the 910cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 911 912Reduce an error to a warning for an incorrect method argument count. 913Previously aborted with an error if too few arguments were passed to a 914control method via the external ACPICA interface. Now issue a warning instead 915and continue. Handles the case where the method inadvertently declares too 916many arguments, but does not actually use the extra ones. Applies mainly to 917the predefined methods. Lin Ming. Linux BZ 11032. 918 919Disallow the evaluation of named object types with no intrinsic value. Return 920AE_TYPE for objects that have no value and therefore evaluation is undefined: 921Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of 922these types were allowed, but an exception would be generated at some point 923during the evaluation. Now, the error is generated up front. 924 925Fixed a possible memory leak in the AcpiNsGetExternalPathname function 926(nsnames.c). Fixes a leak in the error exit path. 927 928Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug 929levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION 930interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 931ACPI_LV_EVENTS. 932 933Removed obsolete and/or unused exception codes from the acexcep.h header. 934There is the possibility that certain device drivers may be affected if they 935use any of these exceptions. 936 937The ACPICA documentation has been added to the public git source tree, under 938acpica/documents. Included are the ACPICA programmer reference, the iASL 939compiler reference, and the changes.txt release logfile. 940 941Example Code and Data Size: These are the sizes for the OS-independent 942acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 943debug version of the code includes the debug output trace mechanism and has a 944much larger code and data size. 945 946 Previous Release: 947 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 948 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 949 Current Release: 950 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 951 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 952 9532) iASL Compiler/Disassembler and Tools: 954 955Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 956defines _SCP with 3 arguments. Previous versions defined it with only 1 957argument. iASL now allows both definitions. 958 959iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero- 960length subtables when disassembling ACPI tables. Also fixed a couple of 961errors where a full 16-bit table type field was not extracted from the input 962properly. 963 964acpisrc: Improve comment counting mechanism for generating source code 965statistics. Count first and last lines of multi-line comments as whitespace, 966not comment lines. Handle Linux legal header in addition to standard acpica 967header. 968 969---------------------------------------- 970 97129 July 2008. Summary of changes for version 20080729: 972 973This release is available at http://acpica.org/downloads 974Direct git access via http://www.acpica.org/repos/acpica.git 975 9761) ACPI CA Core Subsystem: 977 978Fix a possible deadlock in the GPE dispatch. Remove call to 979AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt 980to acquire the GPE lock but can deadlock since the GPE lock is already held 981at dispatch time. This code was introduced in version 20060831 as a response 982to Linux BZ 6881 and has since been removed from Linux. 983 984Add a function to dereference returned reference objects. Examines the return 985object from a call to AcpiEvaluateObject. Any Index or RefOf references are 986automatically dereferenced in an attempt to return something useful (these 987reference types cannot be converted into an external ACPI_OBJECT.) Provides 988MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 989 990x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 991subtables for the MADT and one new subtable for the SRAT. Includes 992disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC 993Specification, June 2008. 994 995Additional error checking for pathname utilities. Add error check after all 996calls to AcpiNsGetPathnameLength. Add status return from 997AcpiNsBuildExternalPath and check after all calls. Add parameter validation 998to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 999 1000Return status from the global init function AcpiUtGlobalInitialize. This is 1001used by both the kernel subsystem and the utilities such as iASL compiler. 1002The function could possibly fail when the caches are initialized. Yang Yi. 1003 1004Add a function to decode reference object types to strings. Created for 1005improved error messages. 1006 1007Improve object conversion error messages. Better error messages during object 1008conversion from internal to the external ACPI_OBJECT. Used for external calls 1009to AcpiEvaluateObject. 1010 1011Example Code and Data Size: These are the sizes for the OS-independent 1012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1013debug version of the code includes the debug output trace mechanism and has a 1014much larger code and data size. 1015 1016 Previous Release: 1017 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 1018 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 1019 Current Release: 1020 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 1021 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 1022 10232) iASL Compiler/Disassembler and Tools: 1024 1025Debugger: fix a possible hang when evaluating non-methods. Fixes a problem 1026introduced in version 20080701. If the object being evaluated (via execute 1027command) is not a method, the debugger can hang while trying to obtain non- 1028existent parameters. 1029 1030iASL: relax error for using reserved "_T_x" identifiers. These names can 1031appear in a disassembled ASL file if they were emitted by the original 1032compiler. Instead of issuing an error or warning and forcing the user to 1033manually change these names, issue a remark instead. 1034 1035iASL: error if named object created in while loop. Emit an error if any named 1036object is created within a While loop. If allowed, this code will generate a 1037run-time error on the second iteration of the loop when an attempt is made to 1038create the same named object twice. ACPICA bugzilla 730. 1039 1040iASL: Support absolute pathnames for include files. Add support for absolute 1041pathnames within the Include operator. previously, only relative pathnames 1042were supported. 1043 1044iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor. 1045The ACPI spec requires one interrupt minimum. BZ 423 1046 1047iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 1048Handles the case for the Interrupt Resource Descriptor where 1049the ResourceSource argument is omitted but ResourceSourceIndex 1050is present. Now leave room for the Index. BZ 426 1051 1052iASL: Prevent error message if CondRefOf target does not exist. Fixes cases 1053where an error message is emitted if the target does not exist. BZ 516 1054 1055iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 1056(get ACPI tables on Windows). This was apparently broken in version 20070919. 1057 1058AcpiXtract: Handle EOF while extracting data. Correctly handle the case where 1059the EOF happens immediately after the last table in the input file. Print 1060completion message. Previously, no message was displayed in this case. 1061 1062---------------------------------------- 106301 July 2008. Summary of changes for version 20080701: 1064 1065This release is available at http://acpica.org/downloads 1066Direct git access via http://www.acpica.org/repos/acpica.git 1067 10680) Git source tree / acpica.org 1069 1070Fixed a problem where a git-clone from http would not transfer the entire 1071source tree. 1072 10731) ACPI CA Core Subsystem: 1074 1075Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 1076enable bit. Now performs a read-change-write of the enable register instead 1077of simply writing out the cached enable mask. This will prevent inadvertent 1078enabling of GPEs if a rogue GPE is received during initialization (before GPE 1079handlers are installed.) 1080 1081Implemented a copy for dynamically loaded tables. Previously, dynamically 1082loaded tables were simply mapped - but on some machines this memory is 1083corrupted after suspend. Now copy the table to a local buffer. For the 1084OpRegion case, added checksum verify. Use the table length from the table 1085header, not the region length. For the Buffer case, use the table length 1086also. Dennis Noordsij, Bob Moore. BZ 10734 1087 1088Fixed a problem where the same ACPI table could not be dynamically loaded and 1089unloaded more than once. Without this change, a table cannot be loaded again 1090once it has been loaded/unloaded one time. The current mechanism does not 1091unregister a table upon an unload. During a load, if the same table is found, 1092this no longer returns an exception. BZ 722 1093 1094Fixed a problem where the wrong descriptor length was calculated for the 1095EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag 1096are calculated as 12 bytes long, but the actual length in the internal 1097descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported 1098by Linn Crosetto. BZ 728 1099 1100Fixed a possible memory leak in the Unload operator. The DdbHandle returned 1101by Load() did not have its reference count decremented during unload, leading 1102to a memory leak. Lin Ming. BZ 727 1103 1104Fixed a possible memory leak when deleting thermal/processor objects. Any 1105associated notify handlers (and objects) were not being deleted. Fiodor 1106Suietov. BZ 506 1107 1108Fixed the ordering of the ASCII names in the global mutex table to match the 1109actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only. 1110Vegard Nossum. BZ 726 1111 1112Enhanced the AcpiGetObjectInfo interface to return the number of required 1113arguments if the object is a control method. Added this call to the debugger 1114so the proper number of default arguments are passed to a method. This 1115prevents a warning when executing methods from AcpiExec. 1116 1117Added a check for an invalid handle in AcpiGetObjectInfo. Return 1118AE_BAD_PARAMETER if input handle is invalid. BZ 474 1119 1120Fixed an extraneous warning from exconfig.c on the 64-bit build. 1121 1122Example Code and Data Size: These are the sizes for the OS-independent 1123acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1124debug version of the code includes the debug output trace mechanism and has a 1125much larger code and data size. 1126 1127 Previous Release: 1128 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 1129 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 1130 Current Release: 1131 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 1132 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 1133 11342) iASL Compiler/Disassembler and Tools: 1135 1136iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 1137resource descriptor names. 1138 1139iASL: Detect invalid ASCII characters in input (windows version). Removed the 1140"-CF" flag from the flex compile, enables correct detection of non-ASCII 1141characters in the input. BZ 441 1142 1143iASL: Eliminate warning when result of LoadTable is not used. Eliminate the 1144"result of operation not used" warning when the DDB handle returned from 1145LoadTable is not used. The warning is not needed. BZ 590 1146 1147AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to 1148pass address of table to the AML. Added option to disable OpRegion simulation 1149to allow creation of an OpRegion with a real address that was passed to _CFG. 1150All of this allows testing of the Load and Unload operators from AcpiExec. 1151 1152Debugger: update tables command for unloaded tables. Handle unloaded tables 1153and use the standard table header output routine. 1154 1155---------------------------------------- 115609 June 2008. Summary of changes for version 20080609: 1157 11581) ACPI CA Core Subsystem: 1159 1160Implemented a workaround for reversed _PRT entries. A significant number of 1161BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 1162change dynamically detects and repairs this problem. Provides compatibility 1163with MS ACPI. BZ 6859 1164 1165Simplified the internal ACPI hardware interfaces to eliminate the locking 1166flag parameter from Register Read/Write. Added a new external interface, 1167AcpiGetRegisterUnlocked. 1168 1169Fixed a problem where the invocation of a GPE control method could hang. This 1170was a regression introduced in 20080514. The new method argument count 1171validation mechanism can enter an infinite loop when a GPE method is 1172dispatched. Problem fixed by removing the obsolete code that passed GPE block 1173information to the notify handler via the control method parameter pointer. 1174 1175Fixed a problem where the _SST execution status was incorrectly returned to 1176the caller of AcpiEnterSleepStatePrep. This was a regression introduced in 117720080514. _SST is optional and a NOT_FOUND exception should never be 1178returned. BZ 716 1179 1180Fixed a problem where a deleted object could be accessed from within the AML 1181parser. This was a regression introduced in version 20080123 as a fix for the 1182Unload operator. Lin Ming. BZ 10669 1183 1184Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands 1185and eliminated the use of a negative index in a loop. Operands are now 1186displayed in the correct order, not backwards. This also fixes a regression 1187introduced in 20080514 on 64-bit systems where the elimination of 1188ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715 1189 1190Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit 1191path did not delete a locally allocated structure. 1192 1193Updated definitions for the DMAR and SRAT tables to synchronize with the 1194current specifications. Includes disassembler support. 1195 1196Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 1197loop termination value was used. Loop terminated on iteration early, missing 1198one mutex. Linn Crosetto 1199 1200Example Code and Data Size: These are the sizes for the OS-independent 1201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1202debug version of the code includes the debug output trace mechanism and has a 1203much larger code and data size. 1204 1205 Previous Release: 1206 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 1207 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 1208 Current Release: 1209 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 1210 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 1211 12122) iASL Compiler/Disassembler and Tools: 1213 1214Disassembler: Implemented support for EisaId() within _CID objects. Now 1215disassemble integer _CID objects back to EisaId invocations, including 1216multiple integers within _CID packages. Includes single-step support for 1217debugger also. 1218 1219Disassembler: Added support for DMAR and SRAT table definition changes. 1220 1221---------------------------------------- 122214 May 2008. Summary of changes for version 20080514: 1223 12241) ACPI CA Core Subsystem: 1225 1226Fixed a problem where GPEs were enabled too early during the ACPICA 1227initialization. This could lead to "handler not installed" errors on some 1228machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This 1229ensures that all operation regions and devices throughout the namespace have 1230been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 1231 1232Implemented a change to the enter sleep code. Moved execution of the _GTS 1233method to just before setting sleep enable bit. The execution was moved from 1234AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 1235immediately before the SLP_EN bit is set, as per the ACPI specification. 1236Luming Yu, BZ 1653. 1237 1238Implemented a fix to disable unknown GPEs (2nd version). Now always disable 1239the GPE, even if ACPICA thinks that that it is already disabled. It is 1240possible that the AML or some other code has enabled the GPE unbeknownst to 1241the ACPICA code. 1242 1243Fixed a problem with the Field operator where zero-length fields would return 1244an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL 1245field declarations in Field(), BankField(), and IndexField(). BZ 10606. 1246 1247Implemented a fix for the Load operator, now load the table at the namespace 1248root. This reverts a change introduced in version 20071019. The table is now 1249loaded at the namespace root even though this goes against the ACPI 1250specification. This provides compatibility with other ACPI implementations. 1251The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming. 1252 1253Fixed a problem where ACPICA would not Load() tables with unusual signatures. 1254Now ignore ACPI table signature for Load() operator. Only "SSDT" is 1255acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 1256Therefore, signature validation is worthless. Apparently MS ACPI accepts such 1257signatures, ACPICA must be compatible. BZ 10454. 1258 1259Fixed a possible negative array index in AcpiUtValidateException. Added NULL 1260fields to the exception string arrays to eliminate a -1 subtraction on the 1261SubStatus field. 1262 1263Updated the debug tracking macros to reduce overall code and data size. 1264Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 1265instead of pointers to static strings. Jan Beulich and Bob Moore. 1266 1267Implemented argument count checking in control method invocation via 1268AcpiEvaluateObject. Now emit an error if too few arguments, warning if too 1269many. This applies only to extern programmatic control method execution, not 1270method-to-method calls within the AML. Lin Ming. 1271 1272Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no 1273longer needed, especially with the removal of 16-bit support. It was replaced 1274mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on 127532/64-bit platforms is required. 1276 1277Added the C const qualifier for appropriate string constants -- mostly 1278MODULE_NAME and printf format strings. Jan Beulich. 1279 1280Example Code and Data Size: These are the sizes for the OS-independent 1281acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1282debug version of the code includes the debug output trace mechanism and has a 1283much larger code and data size. 1284 1285 Previous Release: 1286 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 1287 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 1288 Current Release: 1289 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 1290 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 1291 12922) iASL Compiler/Disassembler and Tools: 1293 1294Implemented ACPI table revision ID validation in the disassembler. Zero is 1295always invalid. For DSDTs, the ID controls the interpreter integer width. 1 1296means 32-bit and this is unusual. 2 or greater is 64-bit. 1297 1298---------------------------------------- 129921 March 2008. Summary of changes for version 20080321: 1300 13011) ACPI CA Core Subsystem: 1302 1303Implemented an additional change to the GPE support in order to suppress 1304spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently 1305disable incoming GPEs that are neither enabled nor disabled -- meaning that 1306the GPE is unknown to the system. This should prevent future interrupt floods 1307from that GPE. BZ 6217 (Zhang Rui) 1308 1309Fixed a problem where NULL package elements were not returned to the 1310AcpiEvaluateObject interface correctly. The element was simply ignored 1311instead of returning a NULL ACPI_OBJECT package element, potentially causing 1312a buffer overflow and/or confusing the caller who expected a fixed number of 1313elements. BZ 10132 (Lin Ming, Bob Moore) 1314 1315Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword, 1316Qword), Field, BankField, and IndexField operators when invoked from inside 1317an executing control method. In this case, these operators created namespace 1318nodes that were incorrectly left marked as permanent nodes instead of 1319temporary nodes. This could cause a problem if there is race condition 1320between an exiting control method and a running namespace walk. (Reported by 1321Linn Crosetto) 1322 1323Fixed a problem where the CreateField and CreateXXXField operators would 1324incorrectly allow duplicate names (the name of the field) with no exception 1325generated. 1326 1327Implemented several changes for Notify handling. Added support for new Notify 1328values (ACPI 2.0+) and improved the Notify debug output. Notify on 1329PowerResource objects is no longer allowed, as per the ACPI specification. 1330(Bob Moore, Zhang Rui) 1331 1332All Reference Objects returned via the AcpiEvaluateObject interface are now 1333marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for 1334NULL objects - either NULL package elements or unresolved named references. 1335 1336Fixed a problem where an extraneous debug message was produced for package 1337objects (when debugging enabled). The message "Package List length larger 1338than NumElements count" is now produced in the correct case, and is now an 1339error message rather than a debug message. Added a debug message for the 1340opposite case, where NumElements is larger than the Package List (the package 1341will be padded out with NULL elements as per the ACPI spec.) 1342 1343Implemented several improvements for the output of the ASL "Debug" object to 1344clarify and keep all data for a given object on one output line. 1345 1346Fixed two size calculation issues with the variable-length Start Dependent 1347resource descriptor. 1348 1349Example Code and Data Size: These are the sizes for the OS-independent 1350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1351debug version of the code includes the debug output trace mechanism and has 1352a much larger code and data size. 1353 1354 Previous Release: 1355 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 1356 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 1357 Current Release: 1358 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 1359 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 1360 13612) iASL Compiler/Disassembler and Tools: 1362 1363Fixed a problem with the use of the Switch operator where execution of the 1364containing method by multiple concurrent threads could cause an 1365AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 1366actual Switch opcode, it must be simulated with local named temporary 1367variables and if/else pairs. The solution chosen was to mark any method that 1368uses Switch as Serialized, thus preventing multiple thread entries. BZ 469. 1369 1370---------------------------------------- 137113 February 2008. Summary of changes for version 20080213: 1372 13731) ACPI CA Core Subsystem: 1374 1375Implemented another MS compatibility design change for GPE/Notify handling. 1376GPEs are now cleared/enabled asynchronously to allow all pending notifies to 1377complete first. It is expected that the OSL will queue the enable request 1378behind all pending notify requests (may require changes to the local host OSL 1379in AcpiOsExecute). Alexey Starikovskiy. 1380 1381Fixed a problem where buffer and package objects passed as arguments to a 1382control method via the external AcpiEvaluateObject interface could cause an 1383AE_AML_INTERNAL exception depending on the order and type of operators 1384executed by the target control method. 1385 1386Fixed a problem where resource descriptor size optimization could cause a 1387problem when a _CRS resource template is passed to a _SRS method. The _SRS 1388resource template must use the same descriptors (with the same size) as 1389returned from _CRS. This change affects the following resource descriptors: 1390IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487) 1391 1392Fixed a problem where a CopyObject to RegionField, BankField, and IndexField 1393objects did not perform an implicit conversion as it should. These types must 1394retain their initial type permanently as per the ACPI specification. However, 1395a CopyObject to all other object types should not perform an implicit 1396conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 1397 1398Fixed a problem with the AcpiGetDevices interface where the mechanism to 1399match device CIDs did not examine the entire list of available CIDs, but 1400instead aborted on the first non-matching CID. Andrew Patterson. 1401 1402Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was 1403inadvertently changed to return a 16-bit value instead of a 32-bit value, 1404truncating the upper dword of a 64-bit value. This macro is only used to 1405display debug output, so no incorrect calculations were made. Also, 1406reimplemented the macro so that a 64-bit shift is not performed by 1407inefficient compilers. 1408 1409Added missing va_end statements that should correspond with each va_start 1410statement. 1411 1412Example Code and Data Size: These are the sizes for the OS-independent 1413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1414debug version of the code includes the debug output trace mechanism and has 1415a much larger code and data size. 1416 1417 Previous Release: 1418 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 1419 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 1420 Current Release: 1421 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 1422 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 1423 14242) iASL Compiler/Disassembler and Tools: 1425 1426Implemented full disassembler support for the following new ACPI tables: 1427BERT, EINJ, and ERST. Implemented partial disassembler support for the 1428complicated HEST table. These tables support the Windows Hardware Error 1429Architecture (WHEA). 1430 1431---------------------------------------- 143223 January 2008. Summary of changes for version 20080123: 1433 14341) ACPI CA Core Subsystem: 1435 1436Added the 2008 copyright to all module headers and signons. This affects 1437virtually every file in the ACPICA core subsystem, the iASL compiler, and 1438the tools/utilities. 1439 1440Fixed a problem with the SizeOf operator when used with Package and Buffer 1441objects. These objects have deferred execution for some arguments, and the 1442execution is now completed before the SizeOf is executed. This problem caused 1443unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ 14449558 1445 1446Implemented an enhancement to the interpreter "slack mode". In the absence of 1447an explicit return or an implicitly returned object from the last executed 1448opcode, a control method will now implicitly return an integer of value 0 for 1449Microsoft compatibility. (Lin Ming) BZ 392 1450 1451Fixed a problem with the Load operator where an exception was not returned in 1452the case where the table is already loaded. (Lin Ming) BZ 463 1453 1454Implemented support for the use of DDBHandles as an Indexed Reference, as per 1455the ACPI spec. (Lin Ming) BZ 486 1456 1457Implemented support for UserTerm (Method invocation) for the Unload operator 1458as per the ACPI spec. (Lin Ming) BZ 580 1459 1460Fixed a problem with the LoadTable operator where the OemId and OemTableId 1461input strings could cause unexpected failures if they were shorter than the 1462maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 1463 1464Implemented support for UserTerm (Method invocation) for the Unload operator 1465as per the ACPI spec. (Lin Ming) BZ 580 1466 1467Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST, 1468IBFT, UEFI, WDAT. Disassembler support is forthcoming. 1469 1470Example Code and Data Size: These are the sizes for the OS-independent 1471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1472debug version of the code includes the debug output trace mechanism and has 1473a much larger code and data size. 1474 1475 Previous Release: 1476 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 1477 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 1478 Current Release: 1479 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 1480 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 1481 14822) iASL Compiler/Disassembler and Tools: 1483 1484Implemented support in the disassembler for checksum validation on incoming 1485binary DSDTs and SSDTs. If incorrect, a message is displayed within the table 1486header dump at the start of the disassembly. 1487 1488Implemented additional debugging information in the namespace listing file 1489created during compilation. In addition to the namespace hierarchy, the full 1490pathname to each namespace object is displayed. 1491 1492Fixed a problem with the disassembler where invalid ACPI tables could cause 1493faults or infinite loops. 1494 1495Fixed an unexpected parse error when using the optional "parameter types" 1496list in a control method declaration. (Lin Ming) BZ 397 1497 1498Fixed a problem where two External declarations with the same name did not 1499cause an error (Lin Ming) BZ 509 1500 1501Implemented support for full TermArgs (adding Argx, Localx and method 1502invocation) for the ParameterData parameter to the LoadTable operator. (Lin 1503Ming) BZ 583,587 1504 1505---------------------------------------- 150619 December 2007. Summary of changes for version 20071219: 1507 15081) ACPI CA Core Subsystem: 1509 1510Implemented full support for deferred execution for the TermArg string 1511arguments for DataTableRegion. This enables forward references and full 1512operand resolution for the three string arguments. Similar to OperationRegion 1513deferred argument execution.) Lin Ming. BZ 430 1514 1515Implemented full argument resolution support for the BankValue argument to 1516BankField. Previously, only constants were supported, now any TermArg may be 1517used. Lin Ming BZ 387, 393 1518 1519Fixed a problem with AcpiGetDevices where the search of a branch of the 1520device tree could be terminated prematurely. In accordance with the ACPI 1521specification, the search down the current branch is terminated if a device 1522is both not present and not functional (instead of just not present.) Yakui 1523Zhao. 1524 1525Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if 1526the underlying AML code changed the GPE enable registers. Now, any unknown 1527incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled 1528instead of simply ignored. Rui Zhang. 1529 1530Fixed a problem with Index Fields where the Index register was incorrectly 1531limited to a maximum of 32 bits. Now any size may be used. 1532 1533Fixed a couple memory leaks associated with "implicit return" objects when 1534the AML Interpreter slack mode is enabled. Lin Ming BZ 349 1535 1536Example Code and Data Size: These are the sizes for the OS-independent 1537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1538debug version of the code includes the debug output trace mechanism and has 1539a much larger code and data size. 1540 1541 Previous Release: 1542 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 1543 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 1544 Current Release: 1545 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 1546 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 1547 1548---------------------------------------- 154914 November 2007. Summary of changes for version 20071114: 1550 15511) ACPI CA Core Subsystem: 1552 1553Implemented event counters for each of the Fixed Events, the ACPI SCI 1554(interrupt) itself, and control methods executed. Named 1555AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These 1556should be useful for debugging and statistics. 1557 1558Implemented a new external interface, AcpiGetStatistics, to retrieve the 1559contents of the various event counters. Returns the current values for 1560AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 1561AcpiMethodCount. The interface can be expanded in the future if new counters 1562are added. Device drivers should use this interface rather than access the 1563counters directly. 1564 1565Fixed a problem with the FromBCD and ToBCD operators. With some compilers, 1566the ShortDivide function worked incorrectly, causing problems with the BCD 1567functions with large input values. A truncation from 64-bit to 32-bit 1568inadvertently occurred. Internal BZ 435. Lin Ming 1569 1570Fixed a problem with Index references passed as method arguments. References 1571passed as arguments to control methods were dereferenced immediately (before 1572control was passed to the called method). The references are now correctly 1573passed directly to the called method. BZ 5389. Lin Ming 1574 1575Fixed a problem with CopyObject used in conjunction with the Index operator. 1576The reference was incorrectly dereferenced before the copy. The reference is 1577now correctly copied. BZ 5391. Lin Ming 1578 1579Fixed a problem with Control Method references within Package objects. These 1580references are now correctly generated. This completes the package 1581construction overhaul that began in version 20071019. 1582 1583Example Code and Data Size: These are the sizes for the OS-independent 1584acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1585debug version of the code includes the debug output trace mechanism and has 1586a much larger code and data size. 1587 1588 Previous Release: 1589 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 1590 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 1591 Current Release: 1592 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 1593 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 1594 1595 15962) iASL Compiler/Disassembler and Tools: 1597 1598The AcpiExec utility now installs handlers for all of the predefined 1599Operation Region types. New types supported are: PCI_Config, CMOS, and 1600PCIBARTarget. 1601 1602Fixed a problem with the 64-bit version of AcpiExec where the extended (64- 1603bit) address fields for the DSDT and FACS within the FADT were not being 1604used, causing truncation of the upper 32-bits of these addresses. Lin Ming 1605and Bob Moore 1606 1607---------------------------------------- 160819 October 2007. Summary of changes for version 20071019: 1609 16101) ACPI CA Core Subsystem: 1611 1612Fixed a problem with the Alias operator when the target of the alias is a 1613named ASL operator that opens a new scope -- Scope, Device, PowerResource, 1614Processor, and ThermalZone. In these cases, any children of the original 1615operator could not be accessed via the alias, potentially causing unexpected 1616AE_NOT_FOUND exceptions. (BZ 9067) 1617 1618Fixed a problem with the Package operator where all named references were 1619created as object references and left otherwise unresolved. According to the 1620ACPI specification, a Package can only contain Data Objects or references to 1621control methods. The implication is that named references to Data Objects 1622(Integer, Buffer, String, Package, BufferField, Field) should be resolved 1623immediately upon package creation. This is the approach taken with this 1624change. References to all other named objects (Methods, Devices, Scopes, 1625etc.) are all now properly created as reference objects. (BZ 5328) 1626 1627Reverted a change to Notify handling that was introduced in version 162820070508. This version changed the Notify handling from asynchronous to 1629fully synchronous (Device driver Notify handling with respect to the Notify 1630ASL operator). It was found that this change caused more problems than it 1631solved and was removed by most users. 1632 1633Fixed a problem with the Increment and Decrement operators where the type of 1634the target object could be unexpectedly and incorrectly changed. (BZ 353) 1635Lin Ming. 1636 1637Fixed a problem with the Load and LoadTable operators where the table 1638location within the namespace was ignored. Instead, the table was always 1639loaded into the root or current scope. Lin Ming. 1640 1641Fixed a problem with the Load operator when loading a table from a buffer 1642object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 1643 1644Fixed a problem with the Debug object where a store of a DdbHandle reference 1645object to the Debug object could cause a fault. 1646 1647Added a table checksum verification for the Load operator, in the case where 1648the load is from a buffer. (BZ 578). 1649 1650Implemented additional parameter validation for the LoadTable operator. The 1651length of the input strings SignatureString, OemIdString, and OemTableId are 1652now checked for maximum lengths. (BZ 582) Lin Ming. 1653 1654Example Code and Data Size: These are the sizes for the OS-independent 1655acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1656debug version of the code includes the debug output trace mechanism and has 1657a much larger code and data size. 1658 1659 Previous Release: 1660 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 1661 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 1662 Current Release: 1663 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 1664 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 1665 1666 16672) iASL Compiler/Disassembler: 1668 1669Fixed a problem where if a single file was specified and the file did not 1670exist, no error message was emitted. (Introduced with wildcard support in 1671version 20070917.) 1672 1673---------------------------------------- 167419 September 2007. Summary of changes for version 20070919: 1675 16761) ACPI CA Core Subsystem: 1677 1678Designed and implemented new external interfaces to install and remove 1679handlers for ACPI table-related events. Current events that are defined are 1680LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 1681they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 1682AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 1683 1684Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 1685(acpi_serialized option on Linux) could cause some systems to hang during 1686initialization. (Bob Moore) BZ 8171 1687 1688Fixed a problem where objects of certain types (Device, ThermalZone, 1689Processor, PowerResource) can be not found if they are declared and 1690referenced from within the same control method (Lin Ming) BZ 341 1691 1692Example Code and Data Size: These are the sizes for the OS-independent 1693acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1694debug version of the code includes the debug output trace mechanism and has 1695a much larger code and data size. 1696 1697 Previous Release: 1698 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 1699 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 1700 Current Release: 1701 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 1702 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 1703 1704 17052) iASL Compiler/Disassembler: 1706 1707Implemented support to allow multiple files to be compiled/disassembled in a 1708single invocation. This includes command line wildcard support for both the 1709Windows and Unix versions of the compiler. This feature simplifies the 1710disassembly and compilation of multiple ACPI tables in a single directory. 1711 1712---------------------------------------- 171308 May 2007. Summary of changes for version 20070508: 1714 17151) ACPI CA Core Subsystem: 1716 1717Implemented a Microsoft compatibility design change for the handling of the 1718Notify AML operator. Previously, notify handlers were dispatched and 1719executed completely asynchronously in a deferred thread. The new design 1720still executes the notify handlers in a different thread, but the original 1721thread that executed the Notify() now waits at a synchronization point for 1722the notify handler to complete. Some machines depend on a synchronous Notify 1723operator in order to operate correctly. 1724 1725Implemented support to allow Package objects to be passed as method 1726arguments to the external AcpiEvaluateObject interface. Previously, this 1727would return the AE_NOT_IMPLEMENTED exception. This feature had not been 1728implemented since there were no reserved control methods that required it 1729until recently. 1730 1731Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that 1732contained invalid non-zero values in reserved fields could cause later 1733failures because these fields have meaning in later revisions of the FADT. 1734For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields 1735are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 1736 1737Fixed a problem where the Global Lock handle was not properly updated if a 1738thread that acquired the Global Lock via executing AML code then attempted 1739to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe 1740Liu. 1741 1742Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 1743could be corrupted if the interrupt being removed was at the head of the 1744list. Reported by Linn Crosetto. 1745 1746Example Code and Data Size: These are the sizes for the OS-independent 1747acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1748debug version of the code includes the debug output trace mechanism and has 1749a much larger code and data size. 1750 1751 Previous Release: 1752 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 1753 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 1754 Current Release: 1755 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 1756 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 1757 1758---------------------------------------- 175920 March 2007. Summary of changes for version 20070320: 1760 17611) ACPI CA Core Subsystem: 1762 1763Implemented a change to the order of interpretation and evaluation of AML 1764operand objects within the AML interpreter. The interpreter now evaluates 1765operands in the order that they appear in the AML stream (and the 1766corresponding ASL code), instead of in the reverse order (after the entire 1767operand list has been parsed). The previous behavior caused several subtle 1768incompatibilities with the Microsoft AML interpreter as well as being 1769somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 1770 1771Implemented a change to the ACPI Global Lock support. All interfaces to the 1772global lock now allow the same thread to acquire the lock multiple times. 1773This affects the AcpiAcquireGlobalLock external interface to the global lock 1774as well as the internal use of the global lock to support AML fields -- a 1775control method that is holding the global lock can now simultaneously access 1776AML fields that require global lock protection. Previously, in both cases, 1777this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to 1778AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 1779Controller. There is no change to the behavior of the AML Acquire operator, 1780as this can already be used to acquire a mutex multiple times by the same 1781thread. BZ 8066. With assistance from Alexey Starikovskiy. 1782 1783Fixed a problem where invalid objects could be referenced in the AML 1784Interpreter after error conditions. During operand evaluation, ensure that 1785the internal "Return Object" field is cleared on error and only valid 1786pointers are stored there. Caused occasional access to deleted objects that 1787resulted in "large reference count" warning messages. Valery Podrezov. 1788 1789Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on 1790deeply nested control method invocations. BZ 7873, local BZ 487. Valery 1791Podrezov. 1792 1793Fixed an internal problem with the handling of result objects on the 1794interpreter result stack. BZ 7872. Valery Podrezov. 1795 1796Removed obsolete code that handled the case where AML_NAME_OP is the target 1797of a reference (Reference.Opcode). This code was no longer necessary. BZ 17987874. Valery Podrezov. 1799 1800Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a 1801remnant from the previously discontinued 16-bit support. 1802 1803Example Code and Data Size: These are the sizes for the OS-independent 1804acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1805debug version of the code includes the debug output trace mechanism and has 1806a much larger code and data size. 1807 1808 Previous Release: 1809 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 1810 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 1811 Current Release: 1812 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 1813 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 1814 1815---------------------------------------- 181626 January 2007. Summary of changes for version 20070126: 1817 18181) ACPI CA Core Subsystem: 1819 1820Added the 2007 copyright to all module headers and signons. This affects 1821virtually every file in the ACPICA core subsystem, the iASL compiler, and 1822the utilities. 1823 1824Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 1825during a table load. A bad pointer was passed in the case where the DSDT is 1826overridden, causing a fault in this case. 1827 1828Example Code and Data Size: These are the sizes for the OS-independent 1829acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1830debug version of the code includes the debug output trace mechanism and has 1831a much larger code and data size. 1832 1833 Previous Release: 1834 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 1835 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 1836 Current Release: 1837 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 1838 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 1839 1840---------------------------------------- 184115 December 2006. Summary of changes for version 20061215: 1842 18431) ACPI CA Core Subsystem: 1844 1845Support for 16-bit ACPICA has been completely removed since it is no longer 1846necessary and it clutters the code. All 16-bit macros, types, and 1847conditional compiles have been removed, cleaning up and simplifying the code 1848across the entire subsystem. DOS support is no longer needed since the 1849bootable Linux firmware kit is now available. 1850 1851The handler for the Global Lock is now removed during AcpiTerminate to 1852enable a clean subsystem restart, via the implementation of the 1853AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 1854HP) 1855 1856Implemented enhancements to the multithreading support within the debugger 1857to enable improved multithreading debugging and evaluation of the subsystem. 1858(Valery Podrezov) 1859 1860Debugger: Enhanced the Statistics/Memory command to emit the total (maximum) 1861memory used during the execution, as well as the maximum memory consumed by 1862each of the various object types. (Valery Podrezov) 1863 1864Example Code and Data Size: These are the sizes for the OS-independent 1865acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1866debug version of the code includes the debug output trace mechanism and has 1867a much larger code and data size. 1868 1869 Previous Release: 1870 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 1871 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 1872 Current Release: 1873 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 1874 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 1875 1876 18772) iASL Compiler/Disassembler and Tools: 1878 1879AcpiExec: Implemented a new option (-m) to display full memory use 1880statistics upon subsystem/program termination. (Valery Podrezov) 1881 1882---------------------------------------- 188309 November 2006. Summary of changes for version 20061109: 1884 18851) ACPI CA Core Subsystem: 1886 1887Optimized the Load ASL operator in the case where the source operand is an 1888operation region. Simply map the operation region memory, instead of 1889performing a bytewise read. (Region must be of type SystemMemory, see 1890below.) 1891 1892Fixed the Load ASL operator for the case where the source operand is a 1893region field. A buffer object is also allowed as the source operand. BZ 480 1894 1895Fixed a problem where the Load ASL operator allowed the source operand to be 1896an operation region of any type. It is now restricted to regions of type 1897SystemMemory, as per the ACPI specification. BZ 481 1898 1899Additional cleanup and optimizations for the new Table Manager code. 1900 1901AcpiEnable will now fail if all of the required ACPI tables are not loaded 1902(FADT, FACS, DSDT). BZ 477 1903 1904Added #pragma pack(8/4) to acobject.h to ensure that the structures in this 1905header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 1906manually optimized to be aligned and will not work if it is byte-packed. 1907 1908Example Code and Data Size: These are the sizes for the OS-independent 1909acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1910debug version of the code includes the debug output trace mechanism and has 1911a much larger code and data size. 1912 1913 Previous Release: 1914 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 1915 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 1916 Current Release: 1917 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 1918 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 1919 1920 19212) iASL Compiler/Disassembler and Tools: 1922 1923Fixed a problem where the presence of the _OSI predefined control method 1924within complex expressions could cause an internal compiler error. 1925 1926AcpiExec: Implemented full region support for multiple address spaces. 1927SpaceId is now part of the REGION object. BZ 429 1928 1929---------------------------------------- 193011 October 2006. Summary of changes for version 20061011: 1931 19321) ACPI CA Core Subsystem: 1933 1934Completed an AML interpreter performance enhancement for control method 1935execution. Previously a 2-pass parse/execution, control methods are now 1936completely parsed and executed in a single pass. This improves overall 1937interpreter performance by ~25%, reduces code size, and reduces CPU stack 1938use. (Valery Podrezov + interpreter changes in version 20051202 that 1939eliminated namespace loading during the pass one parse.) 1940 1941Implemented _CID support for PCI Root Bridge detection. If the _HID does not 1942match the predefined PCI Root Bridge IDs, the _CID list (if present) is now 1943obtained and also checked for an ID match. 1944 1945Implemented additional support for the PCI _ADR execution: upsearch until a 1946device scope is found before executing _ADR. This allows PCI_Config 1947operation regions to be declared locally within control methods underneath 1948PCI device objects. 1949 1950Fixed a problem with a possible race condition between threads executing 1951AcpiWalkNamespace and the AML interpreter. This condition was removed by 1952modifying AcpiWalkNamespace to (by default) ignore all temporary namespace 1953entries created during any concurrent control method execution. An 1954additional namespace race condition is known to exist between 1955AcpiWalkNamespace and the Load/Unload ASL operators and is still under 1956investigation. 1957 1958Restructured the AML ParseLoop function, breaking it into several 1959subfunctions in order to reduce CPU stack use and improve maintainability. 1960(Mikhail Kouzmich) 1961 1962AcpiGetHandle: Fix for parameter validation to detect invalid combinations 1963of prefix handle and pathname. BZ 478 1964 1965Example Code and Data Size: These are the sizes for the OS-independent 1966acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 1967debug version of the code includes the debug output trace mechanism and has 1968a much larger code and data size. 1969 1970 Previous Release: 1971 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 1972 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 1973 Current Release: 1974 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 1975 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 1976 19772) iASL Compiler/Disassembler and Tools: 1978 1979Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager 1980to restore original behavior. 1981 1982---------------------------------------- 198327 September 2006. Summary of changes for version 20060927: 1984 19851) ACPI CA Core Subsystem: 1986 1987Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 1988These functions now use a spinlock for mutual exclusion and the interrupt 1989level indication flag is not needed. 1990 1991Fixed a problem with the Global Lock where the lock could appear to be 1992obtained before it is actually obtained. The global lock semaphore was 1993inadvertently created with one unit instead of zero units. (BZ 464) Fiodor 1994Suietov. 1995 1996Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during 1997a read from a buffer or region field. (BZ 458) Fiodor Suietov. 1998 1999Example Code and Data Size: These are the sizes for the OS-independent 2000acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2001debug version of the code includes the debug output trace mechanism and has 2002a much larger code and data size. 2003 2004 Previous Release: 2005 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 2006 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 2007 Current Release: 2008 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 2009 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 2010 2011 20122) iASL Compiler/Disassembler and Tools: 2013 2014Fixed a compilation problem with the pre-defined Resource Descriptor field 2015names where an "object does not exist" error could be incorrectly generated 2016if the parent ResourceTemplate pathname places the template within a 2017different namespace scope than the current scope. (BZ 7212) 2018 2019Fixed a problem where the compiler could hang after syntax errors detected 2020in an ElseIf construct. (BZ 453) 2021 2022Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 2023operator. An incorrect output filename was produced when this parameter was 2024a null string (""). Now, the original input filename is used as the AML 2025output filename, with an ".aml" extension. 2026 2027Implemented a generic batch command mode for the AcpiExec utility (execute 2028any AML debugger command) (Valery Podrezov). 2029 2030---------------------------------------- 203112 September 2006. Summary of changes for version 20060912: 2032 20331) ACPI CA Core Subsystem: 2034 2035Enhanced the implementation of the "serialized mode" of the interpreter 2036(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 2037specified, instead of creating a serialization semaphore per control method, 2038the interpreter lock is simply no longer released before a blocking 2039operation during control method execution. This effectively makes the AML 2040Interpreter single-threaded. The overhead of a semaphore per-method is 2041eliminated. 2042 2043Fixed a regression where an error was no longer emitted if a control method 2044attempts to create 2 objects of the same name. This once again returns 2045AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that 2046will dynamically serialize the control method to possible prevent future 2047errors. (BZ 440) 2048 2049Integrated a fix for a problem with PCI Express HID detection in the PCI 2050Config Space setup procedure. (BZ 7145) 2051 2052Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 2053AcpiHwInitialize function - the FADT registers are now validated when the 2054table is loaded. 2055 2056Added two new warnings during FADT verification - 1) if the FADT is larger 2057than the largest known FADT version, and 2) if there is a mismatch between a 205832-bit block address and the 64-bit X counterpart (when both are non-zero.) 2059 2060Example Code and Data Size: These are the sizes for the OS-independent 2061acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2062debug version of the code includes the debug output trace mechanism and has 2063a much larger code and data size. 2064 2065 Previous Release: 2066 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 2067 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 2068 Current Release: 2069 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 2070 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 2071 2072 20732) iASL Compiler/Disassembler and Tools: 2074 2075Fixed a problem with the implementation of the Switch() operator where the 2076temporary variable was declared too close to the actual Switch, instead of 2077at method level. This could cause a problem if the Switch() operator is 2078within a while loop, causing an error on the second iteration. (BZ 460) 2079 2080Disassembler - fix for error emitted for unknown type for target of scope 2081operator. Now, ignore it and continue. 2082 2083Disassembly of an FADT now verifies the input FADT and reports any errors 2084found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 2085 2086Disassembly of raw data buffers with byte initialization data now prefixes 2087each output line with the current buffer offset. 2088 2089Disassembly of ASF! table now includes all variable-length data fields at 2090the end of some of the subtables. 2091 2092The disassembler now emits a comment if a buffer appears to be a 2093ResourceTemplate, but cannot be disassembled as such because the EndTag does 2094not appear at the very end of the buffer. 2095 2096AcpiExec - Added the "-t" command line option to enable the serialized mode 2097of the AML interpreter. 2098 2099---------------------------------------- 210031 August 2006. Summary of changes for version 20060831: 2101 21021) ACPI CA Core Subsystem: 2103 2104Miscellaneous fixes for the Table Manager: 2105- Correctly initialize internal common FADT for all 64-bit "X" fields 2106- Fixed a couple table mapping issues during table load 2107- Fixed a couple alignment issues for IA64 2108- Initialize input array to zero in AcpiInitializeTables 2109- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 2110AcpiGetTableByIndex 2111 2112Change for GPE support: when a "wake" GPE is received, all wake GPEs are now 2113immediately disabled to prevent the waking GPE from firing again and to 2114prevent other wake GPEs from interrupting the wake process. 2115 2116Added the AcpiGpeCount global that tracks the number of processed GPEs, to 2117be used for debugging systems with a large number of ACPI interrupts. 2118 2119Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 2120both the ACPICA headers and the disassembler. 2121 2122Example Code and Data Size: These are the sizes for the OS-independent 2123acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2124debug version of the code includes the debug output trace mechanism and has 2125a much larger code and data size. 2126 2127 Previous Release: 2128 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 2129 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 2130 Current Release: 2131 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 2132 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 2133 2134 21352) iASL Compiler/Disassembler and Tools: 2136 2137Disassembler support for the DMAR ACPI table. 2138 2139---------------------------------------- 214023 August 2006. Summary of changes for version 20060823: 2141 21421) ACPI CA Core Subsystem: 2143 2144The Table Manager component has been completely redesigned and 2145reimplemented. The new design is much simpler, and reduces the overall code 2146and data size of the kernel-resident ACPICA by approximately 5%. Also, it is 2147now possible to obtain the ACPI tables very early during kernel 2148initialization, even before dynamic memory management is initialized. 2149(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 2150 2151Obsolete ACPICA interfaces: 2152 2153- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init 2154time). 2155- AcpiLoadTable: Not needed. 2156- AcpiUnloadTable: Not needed. 2157 2158New ACPICA interfaces: 2159 2160- AcpiInitializeTables: Must be called before the table manager can be used. 2161- AcpiReallocateRootTable: Used to transfer the root table to dynamically 2162allocated memory after it becomes available. 2163- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables 2164in the RSDT/XSDT. 2165 2166Other ACPICA changes: 2167 2168- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use 2169AcpiOsUnmapMemory to free this mapping. 2170- AcpiGetTable returns the actual mapped table. The mapping is managed 2171internally and must not be deleted by the caller. Use of this interface 2172causes no additional dynamic memory allocation. 2173- AcpiFindRootPointer: Support for physical addressing has been eliminated, 2174it appeared to be unused. 2175- The interface to AcpiOsMapMemory has changed to be consistent with the 2176other allocation interfaces. 2177- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary 2178parameters. 2179- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64- 2180bit platforms. Was previously 64 bits on all platforms. 2181- The interface to the ACPI Global Lock acquire/release macros have changed 2182slightly since ACPICA no longer keeps a local copy of the FACS with a 2183constructed pointer to the actual global lock. 2184 2185Porting to the new table manager: 2186 2187- AcpiInitializeTables: Must be called once, and can be called anytime 2188during the OS initialization process. It allows the host to specify an area 2189of memory to be used to store the internal version of the RSDT/XSDT (root 2190table). This allows the host to access ACPI tables before memory management 2191is initialized and running. 2192- AcpiReallocateRootTable: Can be called after memory management is running 2193to copy the root table to a dynamically allocated array, freeing up the 2194scratch memory specified in the call to AcpiInitializeTables. 2195- AcpiSubsystemInitialize: This existing interface is independent of the 2196Table Manager, and does not have to be called before the Table Manager can 2197be used, it only must be called before the rest of ACPICA can be used. 2198- ACPI Tables: Some changes have been made to the names and structure of the 2199actbl.h and actbl1.h header files and may require changes to existing code. 2200For example, bitfields have been completely removed because of their lack of 2201portability across C compilers. 2202- Update interfaces to the Global Lock acquire/release macros if local 2203versions are used. (see acwin.h) 2204 2205Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 2206 2207New files: tbfind.c 2208 2209Example Code and Data Size: These are the sizes for the OS-independent 2210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2211debug version of the code includes the debug output trace mechanism and has 2212a much larger code and data size. 2213 2214 Previous Release: 2215 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 2216 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 2217 Current Release: 2218 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 2219 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 2220 2221 22222) iASL Compiler/Disassembler and Tools: 2223 2224No changes for this release. 2225 2226---------------------------------------- 222721 July 2006. Summary of changes for version 20060721: 2228 22291) ACPI CA Core Subsystem: 2230 2231The full source code for the ASL test suite used to validate the iASL 2232compiler and the ACPICA core subsystem is being released with the ACPICA 2233source for the first time. The source is contained in a separate package and 2234consists of over 1100 files that exercise all ASL/AML operators. The package 2235should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor 2236Suietov) 2237 2238Completed a new design and implementation for support of the ACPI Global 2239Lock. On the OS side, the global lock is now treated as a standard AML 2240mutex. Previously, multiple OS threads could "acquire" the global lock 2241simultaneously. However, this could cause the BIOS to be starved out of the 2242lock - especially in cases such as the Embedded Controller driver where 2243there is a tight coupling between the OS and the BIOS. 2244 2245Implemented an optimization for the ACPI Global Lock interrupt mechanism. 2246The Global Lock interrupt handler no longer queues the execution of a 2247separate thread to signal the global lock semaphore. Instead, the semaphore 2248is signaled directly from the interrupt handler. 2249 2250Implemented support within the AML interpreter for package objects that 2251contain a larger AML length (package list length) than the package element 2252count. In this case, the length of the package is truncated to match the 2253package element count. Some BIOS code apparently modifies the package length 2254on the fly, and this change supports this behavior. Provides compatibility 2255with the MS AML interpreter. (With assistance from Fiodor Suietov) 2256 2257Implemented a temporary fix for the BankValue parameter of a Bank Field to 2258support all constant values, now including the Zero and One opcodes. 2259Evaluation of this parameter must eventually be converted to a full TermArg 2260evaluation. A not-implemented error is now returned (temporarily) for non- 2261constant values for this parameter. 2262 2263Fixed problem reports (Fiodor Suietov) integrated: 2264- Fix for premature object deletion after CopyObject on Operation Region (BZ 2265350) 2266 2267Example Code and Data Size: These are the sizes for the OS-independent 2268acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2269debug version of the code includes the debug output trace mechanism and has 2270a much larger code and data size. 2271 2272 Previous Release: 2273 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 2274 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 2275 Current Release: 2276 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 2277 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 2278 2279 22802) iASL Compiler/Disassembler and Tools: 2281 2282No changes for this release. 2283 2284---------------------------------------- 228507 July 2006. Summary of changes for version 20060707: 2286 22871) ACPI CA Core Subsystem: 2288 2289Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 2290that do not allow the initialization of address pointers within packed 2291structures - even though the hardware itself may support misaligned 2292transfers. Some of the debug data structures are packed by default to 2293minimize size. 2294 2295Added an error message for the case where AcpiOsGetThreadId() returns zero. 2296A non-zero value is required by the core ACPICA code to ensure the proper 2297operation of AML mutexes and recursive control methods. 2298 2299The DSDT is now the only ACPI table that determines whether the AML 2300interpreter is in 32-bit or 64-bit mode. Not really a functional change, but 2301the hooks for per-table 32/64 switching have been removed from the code. A 2302clarification to the ACPI specification is forthcoming in ACPI 3.0B. 2303 2304Fixed a possible leak of an OwnerID in the error path of 2305AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 2306deletion to a single place in AcpiTbUninstallTable to correct possible leaks 2307when using the AcpiTbDeleteTablesByType interface (with assistance from 2308Lance Ortiz.) 2309 2310Fixed a problem with Serialized control methods where the semaphore 2311associated with the method could be over-signaled after multiple method 2312invocations. 2313 2314Fixed two issues with the locking of the internal namespace data structure. 2315Both the Unload() operator and AcpiUnloadTable interface now lock the 2316namespace during the namespace deletion associated with the table unload 2317(with assistance from Linn Crosetto.) 2318 2319Fixed problem reports (Valery Podrezov) integrated: 2320- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 2321 2322Fixed problem reports (Fiodor Suietov) integrated: 2323- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 2324- On Address Space handler deletion, needless deactivation call (BZ 374) 2325- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375) 2326- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone 2327(BZ 376) 2328- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 2329- Minimum Length of RSDT should be validated (BZ 379) 2330- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 2331Handler (BZ (380) 2332- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded 2333(BZ 381) 2334 2335Example Code and Data Size: These are the sizes for the OS-independent 2336acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2337debug version of the code includes the debug output trace mechanism and has 2338a much larger code and data size. 2339 2340 Previous Release: 2341 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 2342 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 2343 Current Release: 2344 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 2345 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 2346 2347 23482) iASL Compiler/Disassembler and Tools: 2349 2350Fixed problem reports: 2351Compiler segfault when ASL contains a long (>1024) String declaration (BZ 2352436) 2353 2354---------------------------------------- 235523 June 2006. Summary of changes for version 20060623: 2356 23571) ACPI CA Core Subsystem: 2358 2359Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 2360allows the type to be customized to the host OS for improved efficiency 2361(since a spinlock is usually a very small object.) 2362 2363Implemented support for "ignored" bits in the ACPI registers. According to 2364the ACPI specification, these bits should be preserved when writing the 2365registers via a read/modify/write cycle. There are 3 bits preserved in this 2366manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 2367 2368Implemented the initial deployment of new OSL mutex interfaces. Since some 2369host operating systems have separate mutex and semaphore objects, this 2370feature was requested. The base code now uses mutexes (and the new mutex 2371interfaces) wherever a binary semaphore was used previously. However, for 2372the current release, the mutex interfaces are defined as macros to map them 2373to the existing semaphore interfaces. Therefore, no OSL changes are required 2374at this time. (See acpiosxf.h) 2375 2376Fixed several problems with the support for the control method SyncLevel 2377parameter. The SyncLevel now works according to the ACPI specification and 2378in concert with the Mutex SyncLevel parameter, since the current SyncLevel 2379is a property of the executing thread. Mutual exclusion for control methods 2380is now implemented with a mutex instead of a semaphore. 2381 2382Fixed three instances of the use of the C shift operator in the bitfield 2383support code (exfldio.c) to avoid the use of a shift value larger than the 2384target data width. The behavior of C compilers is undefined in this case and 2385can cause unpredictable results, and therefore the case must be detected and 2386avoided. (Fiodor Suietov) 2387 2388Added an info message whenever an SSDT or OEM table is loaded dynamically 2389via the Load() or LoadTable() ASL operators. This should improve debugging 2390capability since it will show exactly what tables have been loaded (beyond 2391the tables present in the RSDT/XSDT.) 2392 2393Example Code and Data Size: These are the sizes for the OS-independent 2394acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2395debug version of the code includes the debug output trace mechanism and has 2396a much larger code and data size. 2397 2398 Previous Release: 2399 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 2400 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 2401 Current Release: 2402 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 2403 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 2404 2405 24062) iASL Compiler/Disassembler and Tools: 2407 2408No changes for this release. 2409 2410---------------------------------------- 241108 June 2006. Summary of changes for version 20060608: 2412 24131) ACPI CA Core Subsystem: 2414 2415Converted the locking mutex used for the ACPI hardware to a spinlock. This 2416change should eliminate all problems caused by attempting to acquire a 2417semaphore at interrupt level, and it means that all ACPICA external 2418interfaces that directly access the ACPI hardware can be safely called from 2419interrupt level. OSL code that implements the semaphore interfaces should be 2420able to eliminate any workarounds for being called at interrupt level. 2421 2422Fixed a regression introduced in 20060526 where the ACPI device 2423initialization could be prematurely aborted with an AE_NOT_FOUND if a device 2424did not have an optional _INI method. 2425 2426Fixed an IndexField issue where a write to the Data Register should be 2427limited in size to the AccessSize (width) of the IndexField itself. (BZ 433, 2428Fiodor Suietov) 2429 2430Fixed problem reports (Valery Podrezov) integrated: 2431- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 2432 2433Fixed problem reports (Fiodor Suietov) integrated: 2434- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 2435 2436Removed four global mutexes that were obsolete and were no longer being 2437used. 2438 2439Example Code and Data Size: These are the sizes for the OS-independent 2440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2441debug version of the code includes the debug output trace mechanism and has 2442a much larger code and data size. 2443 2444 Previous Release: 2445 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 2446 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 2447 Current Release: 2448 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 2449 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 2450 2451 24522) iASL Compiler/Disassembler and Tools: 2453 2454Fixed a fault when using -g option (get tables from registry) on Windows 2455machines. 2456 2457Fixed problem reports integrated: 2458- Generate error if CreateField NumBits parameter is zero. (BZ 405) 2459- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 2460Suietov) 2461- Global table revision override (-r) is ignored (BZ 413) 2462 2463---------------------------------------- 246426 May 2006. Summary of changes for version 20060526: 2465 24661) ACPI CA Core Subsystem: 2467 2468Restructured, flattened, and simplified the internal interfaces for 2469namespace object evaluation - resulting in smaller code, less CPU stack use, 2470and fewer interfaces. (With assistance from Mikhail Kouzmich) 2471 2472Fixed a problem with the CopyObject operator where the first parameter was 2473not typed correctly for the parser, interpreter, compiler, and disassembler. 2474Caused various errors and unexpected behavior. 2475 2476Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 2477produced incorrect results with some C compilers. Since the behavior of C 2478compilers when the shift value is larger than the datatype width is 2479apparently not well defined, the interpreter now detects this condition and 2480simply returns zero as expected in all such cases. (BZ 395) 2481 2482Fixed problem reports (Valery Podrezov) integrated: 2483- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 2484- Allow interpreter to handle nested method declarations (BZ 5361) 2485 2486Fixed problem reports (Fiodor Suietov) integrated: 2487- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355) 2488- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356) 2489- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 2490- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 2491- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 2492- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 2493- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 2494- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 2495- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365) 2496- Status of the Global Initialization Handler call not used (BZ 366) 2497- Incorrect object parameter to Global Initialization Handler (BZ 367) 2498 2499Example Code and Data Size: These are the sizes for the OS-independent 2500acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2501debug version of the code includes the debug output trace mechanism and has 2502a much larger code and data size. 2503 2504 Previous Release: 2505 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 2506 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 2507 Current Release: 2508 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 2509 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 2510 2511 25122) iASL Compiler/Disassembler and Tools: 2513 2514Modified the parser to allow the names IO, DMA, and IRQ to be used as 2515namespace identifiers with no collision with existing resource descriptor 2516macro names. This provides compatibility with other ASL compilers and is 2517most useful for disassembly/recompilation of existing tables without parse 2518errors. (With assistance from Thomas Renninger) 2519 2520Disassembler: fixed an incorrect disassembly problem with the 2521DataTableRegion and CopyObject operators. Fixed a possible fault during 2522disassembly of some Alias operators. 2523 2524---------------------------------------- 252512 May 2006. Summary of changes for version 20060512: 2526 25271) ACPI CA Core Subsystem: 2528 2529Replaced the AcpiOsQueueForExecution interface with a new interface named 2530AcpiOsExecute. The major difference is that the new interface does not have 2531a Priority parameter, this appeared to be useless and has been replaced by a 2532Type parameter. The Type tells the host what type of execution is being 2533requested, such as global lock handler, notify handler, GPE handler, etc. 2534This allows the host to queue and execute the request as appropriate for the 2535request type, possibly using different work queues and different priorities 2536for the various request types. This enables fixes for multithreading 2537deadlock problems such as BZ #5534, and will require changes to all existing 2538OS interface layers. (Alexey Starikovskiy and Bob Moore) 2539 2540Fixed a possible memory leak associated with the support for the so-called 2541"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 2542Suietov) 2543 2544Fixed a problem with the Load() operator where a table load from an 2545operation region could overwrite an internal table buffer by up to 7 bytes 2546and cause alignment faults on IPF systems. (With assistance from Luming Yu) 2547 2548Example Code and Data Size: These are the sizes for the OS-independent 2549acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2550debug version of the code includes the debug output trace mechanism and has 2551a much larger code and data size. 2552 2553 Previous Release: 2554 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 2555 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 2556 Current Release: 2557 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 2558 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 2559 2560 2561 25622) iASL Compiler/Disassembler and Tools: 2563 2564Disassembler: Implemented support to cross reference the internal namespace 2565and automatically generate ASL External() statements for symbols not defined 2566within the current table being disassembled. This will simplify the 2567disassembly and recompilation of interdependent tables such as SSDTs since 2568these statements will no longer have to be added manually. 2569 2570Disassembler: Implemented experimental support to automatically detect 2571invocations of external control methods and generate appropriate External() 2572statements. This is problematic because the AML cannot be correctly parsed 2573until the number of arguments for each control method is known. Currently, 2574standalone method invocations and invocations as the source operand of a 2575Store() statement are supported. 2576 2577Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 2578LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 2579LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 2580more readable and likely closer to the original ASL source. 2581 2582---------------------------------------- 258321 April 2006. Summary of changes for version 20060421: 2584 25851) ACPI CA Core Subsystem: 2586 2587Removed a device initialization optimization introduced in 20051216 where 2588the _STA method was not run unless an _INI was also present for the same 2589device. This optimization could cause problems because it could allow _INI 2590methods to be run within a not-present device subtree. (If a not-present 2591device had no _INI, _STA would not be run, the not-present status would not 2592be discovered, and the children of the device would be incorrectly 2593traversed.) 2594 2595Implemented a new _STA optimization where namespace subtrees that do not 2596contain _INI are identified and ignored during device initialization. 2597Selectively running _STA can significantly improve boot time on large 2598machines (with assistance from Len Brown.) 2599 2600Implemented support for the device initialization case where the returned 2601_STA flags indicate a device not-present but functioning. In this case, _INI 2602is not run, but the device children are examined for presence, as per the 2603ACPI specification. 2604 2605Implemented an additional change to the IndexField support in order to 2606conform to MS behavior. The value written to the Index Register is not 2607simply a byte offset, it is a byte offset in units of the access width of 2608the parent Index Field. (Fiodor Suietov) 2609 2610Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 2611interface is called during the creation of all AML operation regions, and 2612allows the host OS to exert control over what addresses it will allow the 2613AML code to access. Operation Regions whose addresses are disallowed will 2614cause a runtime exception when they are actually accessed (will not affect 2615or abort table loading.) See oswinxf or osunixxf for an example 2616implementation. 2617 2618Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 2619interface allows the host OS to match the various "optional" 2620interface/behavior strings for the _OSI predefined control method as 2621appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 2622for an example implementation. 2623 2624Restructured and corrected various problems in the exception handling code 2625paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 2626(with assistance from Takayoshi Kochi.) 2627 2628Modified the Linux source converter to ignore quoted string literals while 2629converting identifiers from mixed to lower case. This will correct problems 2630with the disassembler and other areas where such strings must not be 2631modified. 2632 2633The ACPI_FUNCTION_* macros no longer require quotes around the function 2634name. This allows the Linux source converter to convert the names, now that 2635the converter ignores quoted strings. 2636 2637Example Code and Data Size: These are the sizes for the OS-independent 2638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2639debug version of the code includes the debug output trace mechanism and has 2640a much larger code and data size. 2641 2642 Previous Release: 2643 2644 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 2645 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 2646 Current Release: 2647 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 2648 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 2649 2650 26512) iASL Compiler/Disassembler and Tools: 2652 2653Implemented 3 new warnings for iASL, and implemented multiple warning levels 2654(w2 flag). 2655 26561) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not 2657WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 2658check for the possible timeout, a warning is issued. 2659 26602) Useless operators: If an ASL operator does not specify an optional target 2661operand and it also does not use the function return value from the 2662operator, a warning is issued since the operator effectively does nothing. 2663 26643) Unreferenced objects: If a namespace object is created, but never 2665referenced, a warning is issued. This is a warning level 2 since there are 2666cases where this is ok, such as when a secondary table is loaded that uses 2667the unreferenced objects. Even so, care is taken to only flag objects that 2668don't look like they will ever be used. For example, the reserved methods 2669(starting with an underscore) are usually not referenced because it is 2670expected that the OS will invoke them. 2671 2672---------------------------------------- 267331 March 2006. Summary of changes for version 20060331: 2674 26751) ACPI CA Core Subsystem: 2676 2677Implemented header file support for the following additional ACPI tables: 2678ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support, 2679all current and known ACPI tables are now defined in the ACPICA headers and 2680are available for use by device drivers and other software. 2681 2682Implemented support to allow tables that contain ACPI names with invalid 2683characters to be loaded. Previously, this would cause the table load to 2684fail, but since there are several known cases of such tables on existing 2685machines, this change was made to enable ACPI support for them. Also, this 2686matches the behavior of the Microsoft ACPI implementation. 2687 2688Fixed a couple regressions introduced during the memory optimization in the 268920060317 release. The namespace node definition required additional 2690reorganization and an internal datatype that had been changed to 8-bit was 2691restored to 32-bit. (Valery Podrezov) 2692 2693Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 2694could be passed through to AcpiOsReleaseObject which is unexpected. Such 2695null pointers are now trapped and ignored, matching the behavior of the 2696previous implementation before the deployment of AcpiOsReleaseObject. 2697(Valery Podrezov, Fiodor Suietov) 2698 2699Fixed a memory mapping leak during the deletion of a SystemMemory operation 2700region where a cached memory mapping was not deleted. This became a 2701noticeable problem for operation regions that are defined within frequently 2702used control methods. (Dana Meyers) 2703 2704Reorganized the ACPI table header files into two main files: one for the 2705ACPI tables consumed by the ACPICA core, and another for the miscellaneous 2706ACPI tables that are consumed by the drivers and other software. The various 2707FADT definitions were merged into one common section and three different 2708tables (ACPI 1.0, 1.0+, and 2.0) 2709 2710Example Code and Data Size: These are the sizes for the OS-independent 2711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 2712debug version of the code includes the debug output trace mechanism and has 2713a much larger code and data size. 2714 2715 Previous Release: 2716 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 2717 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 2718 Current Release: 2719 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 2720 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 2721 2722 27232) iASL Compiler/Disassembler and Tools: 2724 2725Disassembler: Implemented support to decode and format all non-AML ACPI 2726tables (tables other than DSDTs and SSDTs.) This includes the new tables 2727added to the ACPICA headers, therefore all current and known ACPI tables are 2728supported. 2729 2730Disassembler: The change to allow ACPI names with invalid characters also 2731enables the disassembly of such tables. Invalid characters within names are 2732changed to '*' to make the name printable; the iASL compiler will still 2733generate an error for such names, however, since this is an invalid ACPI 2734character. 2735 2736Implemented an option for AcpiXtract (-a) to extract all tables found in the 2737input file. The default invocation extracts only the DSDTs and SSDTs. 2738 2739Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 2740makefile for the AcpiXtract utility. 2741 2742---------------------------------------- 274317 March 2006. Summary of changes for version 20060317: 2744 27451) ACPI CA Core Subsystem: 2746 2747Implemented the use of a cache object for all internal namespace nodes. 2748Since there are about 1000 static nodes in a typical system, this will 2749decrease memory use for cache implementations that minimize per-allocation 2750overhead (such as a slab allocator.) 2751 2752Removed the reference count mechanism for internal namespace nodes, since it 2753was deemed unnecessary. This reduces the size of each namespace node by 2754about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case, 2755and 32 bytes for the 64-bit case. 2756 2757Optimized several internal data structures to reduce object size on 64-bit 2758platforms by packing data within the 64-bit alignment. This includes the 2759frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 2760instances corresponding to the namespace objects. 2761 2762Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1" 2763and "Windows 2006". 2764 2765Split the allocation tracking mechanism out to a separate file, from 2766utalloc.c to uttrack.c. This mechanism appears to be only useful for 2767application-level code. Kernels may wish to not include uttrack.c in 2768distributions. 2769 2770Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated 2771code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 2772macros.) 2773 2774Code and Data Size: These are the sizes for the acpica.lib produced by the 2775Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 2776driver or OSPM code. The debug version of the code includes the debug output 2777trace mechanism and has a much larger code and data size. Note that these 2778values will vary depending on the efficiency of the compiler and the 2779compiler options used during generation. 2780 2781 Previous Release: 2782 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 2783 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 2784 Current Release: 2785 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 2786 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 2787 2788 27892) iASL Compiler/Disassembler and Tools: 2790 2791Implemented an ANSI C version of the acpixtract utility. This version will 2792automatically extract the DSDT and all SSDTs from the input acpidump text 2793file and dump the binary output to separate files. It can also display a 2794summary of the input file including the headers for each table found and 2795will extract any single ACPI table, with any signature. (See 2796source/tools/acpixtract) 2797 2798---------------------------------------- 279910 March 2006. Summary of changes for version 20060310: 2800 28011) ACPI CA Core Subsystem: 2802 2803Tagged all external interfaces to the subsystem with the new 2804ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist 2805kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 2806macro. The default definition is NULL. 2807 2808Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId. 2809This allows the host to define this as necessary to simplify kernel 2810integration. The default definition is ACPI_NATIVE_UINT. 2811 2812Fixed two interpreter problems related to error processing, the deletion of 2813objects, and placing invalid pointers onto the internal operator result 2814stack. BZ 6028, 6151 (Valery Podrezov) 2815 2816Increased the reference count threshold where a warning is emitted for large 2817reference counts in order to eliminate unnecessary warnings on systems with 2818large namespaces (especially 64-bit.) Increased the value from 0x400 to 28190x800. 2820 2821Due to universal disagreement as to the meaning of the 'c' in the calloc() 2822function, the ACPI_MEM_CALLOCATE macro has been renamed to 2823ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 2824ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 2825ACPI_FREE. 2826 2827Code and Data Size: These are the sizes for the acpica.lib produced by the 2828Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 2829driver or OSPM code. The debug version of the code includes the debug output 2830trace mechanism and has a much larger code and data size. Note that these 2831values will vary depending on the efficiency of the compiler and the 2832compiler options used during generation. 2833 2834 Previous Release: 2835 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 2836 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 2837 Current Release: 2838 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 2839 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 2840 2841 28422) iASL Compiler/Disassembler: 2843 2844Disassembler: implemented support for symbolic resource descriptor 2845references. If a CreateXxxxField operator references a fixed offset within a 2846resource descriptor, a name is assigned to the descriptor and the offset is 2847translated to the appropriate resource tag and pathname. The addition of 2848this support brings the disassembled code very close to the original ASL 2849source code and helps eliminate run-time errors when the disassembled code 2850is modified (and recompiled) in such a way as to invalidate the original 2851fixed offsets. 2852 2853Implemented support for a Descriptor Name as the last parameter to the ASL 2854Register() macro. This parameter was inadvertently left out of the ACPI 2855specification, and will be added for ACPI 3.0b. 2856 2857Fixed a problem where the use of the "_OSI" string (versus the full path 2858"\_OSI") caused an internal compiler error. ("No back ptr to op") 2859 2860Fixed a problem with the error message that occurs when an invalid string is 2861used for a _HID object (such as one with an embedded asterisk: "*PNP010A".) 2862The correct message is now displayed. 2863 2864---------------------------------------- 286517 February 2006. Summary of changes for version 20060217: 2866 28671) ACPI CA Core Subsystem: 2868 2869Implemented a change to the IndexField support to match the behavior of the 2870Microsoft AML interpreter. The value written to the Index register is now a 2871byte offset, no longer an index based upon the width of the Data register. 2872This should fix IndexField problems seen on some machines where the Data 2873register is not exactly one byte wide. The ACPI specification will be 2874clarified on this point. 2875 2876Fixed a problem where several resource descriptor types could overrun the 2877internal descriptor buffer due to size miscalculation: VendorShort, 2878VendorLong, and Interrupt. This was noticed on IA64 machines, but could 2879affect all platforms. 2880 2881Fixed a problem where individual resource descriptors were misaligned within 2882the internal buffer, causing alignment faults on IA64 platforms. 2883 2884Code and Data Size: These are the sizes for the acpica.lib produced by the 2885Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI 2886driver or OSPM code. The debug version of the code includes the debug output 2887trace mechanism and has a much larger code and data size. Note that these 2888values will vary depending on the efficiency of the compiler and the 2889compiler options used during generation. 2890 2891 Previous Release: 2892 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 2893 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 2894 Current Release: 2895 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 2896 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 2897 2898 28992) iASL Compiler/Disassembler: 2900 2901Implemented support for new reserved names: _WDG and _WED are Microsoft 2902extensions for Windows Instrumentation Management, _TDL is a new ACPI- 2903defined method (Throttling Depth Limit.) 2904 2905Fixed a problem where a zero-length VendorShort or VendorLong resource 2906descriptor was incorrectly emitted as a descriptor of length one. 2907 2908---------------------------------------- 290910 February 2006. Summary of changes for version 20060210: 2910 29111) ACPI CA Core Subsystem: 2912 2913Removed a couple of extraneous ACPI_ERROR messages that appeared during 2914normal execution. These became apparent after the conversion from 2915ACPI_DEBUG_PRINT. 2916 2917Fixed a problem where the CreateField operator could hang if the BitIndex or 2918NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 2919 2920Fixed a problem where a DeRefOf operation on a buffer object incorrectly 2921failed with an exception. This also fixes a couple of related RefOf and 2922DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 2923 2924Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of 2925AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ 29265480) 2927 2928Implemented a memory cleanup at the end of the execution of each iteration 2929of an AML While() loop, preventing the accumulation of outstanding objects. 2930(Valery Podrezov, BZ 5427) 2931 2932Eliminated a chunk of duplicate code in the object resolution code. (Valery 2933Podrezov, BZ 5336) 2934 2935Fixed several warnings during the 64-bit code generation. 2936 2937The AcpiSrc source code conversion tool now inserts one line of whitespace 2938after an if() statement that is followed immediately by a comment, improving 2939readability of the Linux code. 2940 2941Code and Data Size: The current and previous library sizes for the core 2942subsystem are shown below. These are the code and data sizes for the 2943acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2944values do not include any ACPI driver or OSPM code. The debug version of the 2945code includes the debug output trace mechanism and has a much larger code 2946and data size. Note that these values will vary depending on the efficiency 2947of the compiler and the compiler options used during generation. 2948 2949 Previous Release: 2950 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 2951 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 2952 Current Release: 2953 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 2954 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 2955 2956 29572) iASL Compiler/Disassembler: 2958 2959Fixed a problem with the disassembly of a BankField operator with a complex 2960expression for the BankValue parameter. 2961 2962---------------------------------------- 296327 January 2006. Summary of changes for version 20060127: 2964 29651) ACPI CA Core Subsystem: 2966 2967Implemented support in the Resource Manager to allow unresolved namestring 2968references within resource package objects for the _PRT method. This support 2969is in addition to the previously implemented unresolved reference support 2970within the AML parser. If the interpreter slack mode is enabled, these 2971unresolved references will be passed through to the caller as a NULL package 2972entry. 2973 2974Implemented and deployed new macros and functions for error and warning 2975messages across the subsystem. These macros are simpler and generate less 2976code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 2977ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 2978macros remain defined to allow ACPI drivers time to migrate to the new 2979macros. 2980 2981Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the 2982Acquire/Release Lock OSL interfaces. 2983 2984Fixed a problem where Alias ASL operators are sometimes not correctly 2985resolved, in both the interpreter and the iASL compiler. 2986 2987Fixed several problems with the implementation of the ConcatenateResTemplate 2988ASL operator. As per the ACPI specification, zero length buffers are now 2989treated as a single EndTag. One-length buffers always cause a fatal 2990exception. Non-zero length buffers that do not end with a full 2-byte EndTag 2991cause a fatal exception. 2992 2993Fixed a possible structure overwrite in the AcpiGetObjectInfo external 2994interface. (With assistance from Thomas Renninger) 2995 2996Code and Data Size: The current and previous library sizes for the core 2997subsystem are shown below. These are the code and data sizes for the 2998acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 2999values do not include any ACPI driver or OSPM code. The debug version of the 3000code includes the debug output trace mechanism and has a much larger code 3001and data size. Note that these values will vary depending on the efficiency 3002of the compiler and the compiler options used during generation. 3003 3004 Previous Release: 3005 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 3006 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 3007 Current Release: 3008 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 3009 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 3010 3011 30122) iASL Compiler/Disassembler: 3013 3014Fixed an internal error that was generated for any forward references to ASL 3015Alias objects. 3016 3017---------------------------------------- 301813 January 2006. Summary of changes for version 20060113: 3019 30201) ACPI CA Core Subsystem: 3021 3022Added 2006 copyright to all module headers and signons. This affects 3023virtually every file in the ACPICA core subsystem, iASL compiler, and the 3024utilities. 3025 3026Enhanced the ACPICA error reporting in order to simplify user migration to 3027the non-debug version of ACPICA. Replaced all instances of the 3028ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug 3029levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 3030respectively. This preserves all error and warning messages in the non-debug 3031version of the ACPICA code (this has been referred to as the "debug lite" 3032option.) Over 200 cases were converted to create a total of over 380 3033error/warning messages across the ACPICA code. This increases the code and 3034data size of the default non-debug version of the code somewhat (about 13K), 3035but all error/warning reporting may be disabled if desired (and code 3036eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 3037configuration option. The size of the debug version of ACPICA remains about 3038the same. 3039 3040Fixed a memory leak within the AML Debugger "Set" command. One object was 3041not properly deleted for every successful invocation of the command. 3042 3043Code and Data Size: The current and previous library sizes for the core 3044subsystem are shown below. These are the code and data sizes for the 3045acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3046values do not include any ACPI driver or OSPM code. The debug version of the 3047code includes the debug output trace mechanism and has a much larger code 3048and data size. Note that these values will vary depending on the efficiency 3049of the compiler and the compiler options used during generation. 3050 3051 Previous Release: 3052 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 3053 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 3054 Current Release: 3055 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 3056 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 3057 3058 30592) iASL Compiler/Disassembler: 3060 3061The compiler now officially supports the ACPI 3.0a specification that was 3062released on December 30, 2005. (Specification is available at www.acpi.info) 3063 3064---------------------------------------- 306516 December 2005. Summary of changes for version 20051216: 3066 30671) ACPI CA Core Subsystem: 3068 3069Implemented optional support to allow unresolved names within ASL Package 3070objects. A null object is inserted in the package when a named reference 3071cannot be located in the current namespace. Enabled via the interpreter 3072slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines 3073that contain such code. 3074 3075Implemented an optimization to the initialization sequence that can improve 3076boot time. During ACPI device initialization, the _STA method is now run if 3077and only if the _INI method exists. The _STA method is used to determine if 3078the device is present; An _INI can only be run if _STA returns present, but 3079it is a waste of time to run the _STA method if the _INI does not exist. 3080(Prototype and assistance from Dong Wei) 3081 3082Implemented use of the C99 uintptr_t for the pointer casting macros if it is 3083available in the current compiler. Otherwise, the default (void *) cast is 3084used as before. 3085 3086Fixed some possible memory leaks found within the execution path of the 3087Break, Continue, If, and CreateField operators. (Valery Podrezov) 3088 3089Fixed a problem introduced in the 20051202 release where an exception is 3090generated during method execution if a control method attempts to declare 3091another method. 3092 3093Moved resource descriptor string constants that are used by both the AML 3094disassembler and AML debugger to the common utilities directory so that 3095these components are independent. 3096 3097Implemented support in the AcpiExec utility (-e switch) to globally ignore 3098exceptions during control method execution (method is not aborted.) 3099 3100Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 3101generation. 3102 3103Code and Data Size: The current and previous library sizes for the core 3104subsystem are shown below. These are the code and data sizes for the 3105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3106values do not include any ACPI driver or OSPM code. The debug version of the 3107code includes the debug output trace mechanism and has a much larger code 3108and data size. Note that these values will vary depending on the efficiency 3109of the compiler and the compiler options used during generation. 3110 3111 Previous Release: 3112 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 3113 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 3114 Current Release: 3115 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 3116 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 3117 3118 31192) iASL Compiler/Disassembler: 3120 3121Fixed a problem where a CPU stack overflow fault could occur if a recursive 3122method call was made from within a Return statement. 3123 3124---------------------------------------- 312502 December 2005. Summary of changes for version 20051202: 3126 31271) ACPI CA Core Subsystem: 3128 3129Modified the parsing of control methods to no longer create namespace 3130objects during the first pass of the parse. Objects are now created only 3131during the execute phase, at the moment the namespace creation operator is 3132encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This 3133should eliminate ALREADY_EXISTS exceptions seen on some machines where 3134reentrant control methods are protected by an AML mutex. The mutex will now 3135correctly block multiple threads from attempting to create the same object 3136more than once. 3137 3138Increased the number of available Owner Ids for namespace object tracking 3139from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on 3140some machines with a large number of ACPI tables (either static or dynamic). 3141 3142Fixed a problem with the AcpiExec utility where a fault could occur when the 3143-b switch (batch mode) is used. 3144 3145Enhanced the namespace dump routine to output the owner ID for each 3146namespace object. 3147 3148Code and Data Size: The current and previous library sizes for the core 3149subsystem are shown below. These are the code and data sizes for the 3150acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3151values do not include any ACPI driver or OSPM code. The debug version of the 3152code includes the debug output trace mechanism and has a much larger code 3153and data size. Note that these values will vary depending on the efficiency 3154of the compiler and the compiler options used during generation. 3155 3156 Previous Release: 3157 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 3158 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 3159 Current Release: 3160 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 3161 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 3162 3163 31642) iASL Compiler/Disassembler: 3165 3166Fixed a parse error during compilation of certain Switch/Case constructs. To 3167simplify the parse, the grammar now allows for multiple Default statements 3168and this error is now detected and flagged during the analysis phase. 3169 3170Disassembler: The disassembly now includes the contents of the original 3171table header within a comment at the start of the file. This includes the 3172name and version of the original ASL compiler. 3173 3174---------------------------------------- 317517 November 2005. Summary of changes for version 20051117: 3176 31771) ACPI CA Core Subsystem: 3178 3179Fixed a problem in the AML parser where the method thread count could be 3180decremented below zero if any errors occurred during the method parse phase. 3181This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines. 3182This also fixed a related regression with the mechanism that detects and 3183corrects methods that cannot properly handle reentrancy (related to the 3184deployment of the new OwnerId mechanism.) 3185 3186Eliminated the pre-parsing of control methods (to detect errors) during 3187table load. Related to the problem above, this was causing unwind issues if 3188any errors occurred during the parse, and it seemed to be overkill. A table 3189load should not be aborted if there are problems with any single control 3190method, thus rendering this feature rather pointless. 3191 3192Fixed a problem with the new table-driven resource manager where an internal 3193buffer overflow could occur for small resource templates. 3194 3195Implemented a new external interface, AcpiGetVendorResource. This interface 3196will find and return a vendor-defined resource descriptor within a _CRS or 3197_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas. 3198 3199Removed the length limit (200) on string objects as per the upcoming ACPI 32003.0A specification. This affects the following areas of the interpreter: 1) 3201any implicit conversion of a Buffer to a String, 2) a String object result 3202of the ASL Concatentate operator, 3) the String object result of the ASL 3203ToString operator. 3204 3205Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER 3206on a semaphore object would incorrectly timeout. This allows the 3207multithreading features of the AcpiExec utility to work properly under 3208Windows. 3209 3210Updated the Linux makefiles for the iASL compiler and AcpiExec to include 3211the recently added file named "utresrc.c". 3212 3213Code and Data Size: The current and previous library sizes for the core 3214subsystem are shown below. These are the code and data sizes for the 3215acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3216values do not include any ACPI driver or OSPM code. The debug version of the 3217code includes the debug output trace mechanism and has a much larger code 3218and data size. Note that these values will vary depending on the efficiency 3219of the compiler and the compiler options used during generation. 3220 3221 Previous Release: 3222 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 3223 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 3224 Current Release: 3225 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 3226 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 3227 3228 32292) iASL Compiler/Disassembler: 3230 3231Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 3232specification. For the iASL compiler, this means that string literals within 3233the source ASL can be of any length. 3234 3235Enhanced the listing output to dump the AML code for resource descriptors 3236immediately after the ASL code for each descriptor, instead of in a block at 3237the end of the entire resource template. 3238 3239Enhanced the compiler debug output to dump the entire original parse tree 3240constructed during the parse phase, before any transforms are applied to the 3241tree. The transformed tree is dumped also. 3242 3243---------------------------------------- 324402 November 2005. Summary of changes for version 20051102: 3245 32461) ACPI CA Core Subsystem: 3247 3248Modified the subsystem initialization sequence to improve GPE support. The 3249GPE initialization has been split into two parts in order to defer execution 3250of the _PRW methods (Power Resources for Wake) until after the hardware is 3251fully initialized and the SCI handler is installed. This allows the _PRW 3252methods to access fields protected by the Global Lock. This will fix systems 3253where a NO_GLOBAL_LOCK exception has been seen during initialization. 3254 3255Converted the ACPI internal object disassemble and display code within the 3256AML debugger to fully table-driven operation, reducing code size and 3257increasing maintainability. 3258 3259Fixed a regression with the ConcatenateResTemplate() ASL operator introduced 3260in the 20051021 release. 3261 3262Implemented support for "local" internal ACPI object types within the 3263debugger "Object" command and the AcpiWalkNamespace external interfaces. 3264These local types include RegionFields, BankFields, IndexFields, Alias, and 3265reference objects. 3266 3267Moved common AML resource handling code into a new file, "utresrc.c". This 3268code is shared by both the Resource Manager and the AML Debugger. 3269 3270Code and Data Size: The current and previous library sizes for the core 3271subsystem are shown below. These are the code and data sizes for the 3272acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3273values do not include any ACPI driver or OSPM code. The debug version of the 3274code includes the debug output trace mechanism and has a much larger code 3275and data size. Note that these values will vary depending on the efficiency 3276of the compiler and the compiler options used during generation. 3277 3278 Previous Release: 3279 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 3280 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 3281 Current Release: 3282 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 3283 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 3284 3285 32862) iASL Compiler/Disassembler: 3287 3288Fixed a problem with very large initializer lists (more than 4000 elements) 3289for both Buffer and Package objects where the parse stack could overflow. 3290 3291Enhanced the pre-compile source code scan for non-ASCII characters to ignore 3292characters within comment fields. The scan is now always performed and is no 3293longer optional, detecting invalid characters within a source file 3294immediately rather than during the parse phase or later. 3295 3296Enhanced the ASL grammar definition to force early reductions on all list- 3297style grammar elements so that the overall parse stack usage is greatly 3298reduced. This should improve performance and reduce the possibility of parse 3299stack overflow. 3300 3301Eliminated all reduce/reduce conflicts in the iASL parser generation. Also, 3302with the addition of a %expected statement, the compiler generates from 3303source with no warnings. 3304 3305Fixed a possible segment fault in the disassembler if the input filename 3306does not contain a "dot" extension (Thomas Renninger). 3307 3308---------------------------------------- 330921 October 2005. Summary of changes for version 20051021: 3310 33111) ACPI CA Core Subsystem: 3312 3313Implemented support for the EM64T and other x86-64 processors. This 3314essentially entails recognizing that these processors support non-aligned 3315memory transfers. Previously, all 64-bit processors were assumed to lack 3316hardware support for non-aligned transfers. 3317 3318Completed conversion of the Resource Manager to nearly full table-driven 3319operation. Specifically, the resource conversion code (convert AML to 3320internal format and the reverse) and the debug code to dump internal 3321resource descriptors are fully table-driven, reducing code and data size and 3322improving maintainability. 3323 3324The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word 3325on 64-bit processors instead of a fixed 32-bit word. (With assistance from 3326Alexey Starikovskiy) 3327 3328Implemented support within the resource conversion code for the Type- 3329Specific byte within the various ACPI 3.0 *WordSpace macros. 3330 3331Fixed some issues within the resource conversion code for the type-specific 3332flags for both Memory and I/O address resource descriptors. For Memory, 3333implemented support for the MTP and TTP flags. For I/O, split the TRS and 3334TTP flags into two separate fields. 3335 3336Code and Data Size: The current and previous library sizes for the core 3337subsystem are shown below. These are the code and data sizes for the 3338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3339values do not include any ACPI driver or OSPM code. The debug version of the 3340code includes the debug output trace mechanism and has a much larger code 3341and data size. Note that these values will vary depending on the efficiency 3342of the compiler and the compiler options used during generation. 3343 3344 Previous Release: 3345 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 3346 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 3347 Current Release: 3348 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 3349 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 3350 3351 3352 33532) iASL Compiler/Disassembler: 3354 3355Relaxed a compiler restriction that disallowed a ResourceIndex byte if the 3356corresponding ResourceSource string was not also present in a resource 3357descriptor declaration. This restriction caused problems with existing 3358AML/ASL code that includes the Index byte without the string. When such AML 3359was disassembled, it could not be compiled without modification. Further, 3360the modified code created a resource template with a different size than the 3361original, breaking code that used fixed offsets into the resource template 3362buffer. 3363 3364Removed a recent feature of the disassembler to ignore a lone ResourceIndex 3365byte. This byte is now emitted if present so that the exact AML can be 3366reproduced when the disassembled code is recompiled. 3367 3368Improved comments and text alignment for the resource descriptor code 3369emitted by the disassembler. 3370 3371Implemented disassembler support for the ACPI 3.0 AccessSize field within a 3372Register() resource descriptor. 3373 3374---------------------------------------- 337530 September 2005. Summary of changes for version 20050930: 3376 33771) ACPI CA Core Subsystem: 3378 3379Completed a major overhaul of the Resource Manager code - specifically, 3380optimizations in the area of the AML/internal resource conversion code. The 3381code has been optimized to simplify and eliminate duplicated code, CPU stack 3382use has been decreased by optimizing function parameters and local 3383variables, and naming conventions across the manager have been standardized 3384for clarity and ease of maintenance (this includes function, parameter, 3385variable, and struct/typedef names.) The update may force changes in some 3386driver code, depending on how resources are handled by the host OS. 3387 3388All Resource Manager dispatch and information tables have been moved to a 3389single location for clarity and ease of maintenance. One new file was 3390created, named "rsinfo.c". 3391 3392The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 3393guarantee that the argument is not evaluated twice, making them less prone 3394to macro side-effects. However, since there exists the possibility of 3395additional stack use if a particular compiler cannot optimize them (such as 3396in the debug generation case), the original macros are optionally available. 3397Note that some invocations of the return_VALUE macro may now cause size 3398mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to 3399eliminate these. (From Randy Dunlap) 3400 3401Implemented a new mechanism to enable debug tracing for individual control 3402methods. A new external interface, AcpiDebugTrace, is provided to enable 3403this mechanism. The intent is to allow the host OS to easily enable and 3404disable tracing for problematic control methods. This interface can be 3405easily exposed to a user or debugger interface if desired. See the file 3406psxface.c for details. 3407 3408AcpiUtCallocate will now return a valid pointer if a length of zero is 3409specified - a length of one is used and a warning is issued. This matches 3410the behavior of AcpiUtAllocate. 3411 3412Code and Data Size: The current and previous library sizes for the core 3413subsystem are shown below. These are the code and data sizes for the 3414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3415values do not include any ACPI driver or OSPM code. The debug version of the 3416code includes the debug output trace mechanism and has a much larger code 3417and data size. Note that these values will vary depending on the efficiency 3418of the compiler and the compiler options used during generation. 3419 3420 Previous Release: 3421 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 3422 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 3423 Current Release: 3424 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 3425 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 3426 3427 34282) iASL Compiler/Disassembler: 3429 3430A remark is issued if the effective compile-time length of a package or 3431buffer is zero. Previously, this was a warning. 3432 3433---------------------------------------- 343416 September 2005. Summary of changes for version 20050916: 3435 34361) ACPI CA Core Subsystem: 3437 3438Fixed a problem within the Resource Manager where support for the Generic 3439Register descriptor was not fully implemented. This descriptor is now fully 3440recognized, parsed, disassembled, and displayed. 3441 3442Completely restructured the Resource Manager code to utilize table-driven 3443dispatch and lookup, eliminating many of the large switch() statements. This 3444reduces overall subsystem code size and code complexity. Affects the 3445resource parsing and construction, disassembly, and debug dump output. 3446 3447Cleaned up and restructured the debug dump output for all resource 3448descriptors. Improved readability of the output and reduced code size. 3449 3450Fixed a problem where changes to internal data structures caused the 3451optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 3452 3453Code and Data Size: The current and previous library sizes for the core 3454subsystem are shown below. These are the code and data sizes for the 3455acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These 3456values do not include any ACPI driver or OSPM code. The debug version of the 3457code includes the debug output trace mechanism and has a much larger code 3458and data size. Note that these values will vary depending on the efficiency 3459of the compiler and the compiler options used during generation. 3460 3461 Previous Release: 3462 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 3463 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 3464 Current Release: 3465 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 3466 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 3467 3468 34692) iASL Compiler/Disassembler: 3470 3471Updated the disassembler to automatically insert an EndDependentFn() macro 3472into the ASL stream if this macro is missing in the original AML code, 3473simplifying compilation of the resulting ASL module. 3474 3475Fixed a problem in the disassembler where a disassembled ResourceSource 3476string (within a large resource descriptor) was not surrounded by quotes and 3477not followed by a comma, causing errors when the resulting ASL module was 3478compiled. Also, escape sequences within a ResourceSource string are now 3479handled correctly (especially "\\") 3480 3481---------------------------------------- 348202 September 2005. Summary of changes for version 20050902: 3483 34841) ACPI CA Core Subsystem: 3485 3486Fixed a problem with the internal Owner ID allocation and deallocation 3487mechanisms for control method execution and recursive method invocation. 3488This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 3489messages seen on some systems. Recursive method invocation depth is 3490currently limited to 255. (Alexey Starikovskiy) 3491 3492Completely eliminated all vestiges of support for the "module-level 3493executable code" until this support is fully implemented and debugged. This 3494should eliminate the NO_RETURN_VALUE exceptions seen during table load on 3495some systems that invoke this support. 3496 3497Fixed a problem within the resource manager code where the transaction flags 3498for a 64-bit address descriptor were handled incorrectly in the type- 3499specific flag byte. 3500 3501Consolidated duplicate code within the address descriptor resource manager 3502code, reducing overall subsystem code size. 3503 3504Fixed a fault when using the AML debugger "disassemble" command to 3505disassemble individual control methods. 3506 3507Removed references to the "release_current" directory within the Unix 3508release package. 3509 3510Code and Data Size: The current and previous core subsystem library sizes 3511are shown below. These are the code and data sizes for the acpica.lib 3512produced by the Microsoft Visual C++ 6.0 compiler. These values do not 3513include any ACPI driver or OSPM code. The debug version of the code includes 3514the debug output trace mechanism and has a much larger code and data size. 3515Note that these values will vary depending on the efficiency of the compiler 3516and the compiler options used during generation. 3517 3518 Previous Release: 3519 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 3520 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 3521 Current Release: 3522 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 3523 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 3524 3525 35262) iASL Compiler/Disassembler: 3527 3528Implemented an error check for illegal duplicate values in the interrupt and 3529dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 3530Interrupt(). 3531 3532Implemented error checking for the Irq() and IrqNoFlags() macros to detect 3533too many values in the interrupt list (16 max) and invalid values in the 3534list (range 0 - 15) 3535 3536The maximum length string literal within an ASL file is now restricted to 3537200 characters as per the ACPI specification. 3538 3539Fixed a fault when using the -ln option (generate namespace listing). 3540 3541Implemented an error check to determine if a DescriptorName within a 3542resource descriptor has already been used within the current scope. 3543 3544---------------------------------------- 354515 August 2005. Summary of changes for version 20050815: 3546 35471) ACPI CA Core Subsystem: 3548 3549Implemented a full bytewise compare to determine if a table load request is 3550attempting to load a duplicate table. The compare is performed if the table 3551signatures and table lengths match. This will allow different tables with 3552the same OEM Table ID and revision to be loaded - probably against the ACPI 3553specification, but discovered in the field nonetheless. 3554 3555Added the changes.txt logfile to each of the zipped release packages. 3556 3557Code and Data Size: Current and previous core subsystem library sizes are 3558shown below. These are the code and data sizes for the acpica.lib produced 3559by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3560any ACPI driver or OSPM code. The debug version of the code includes the 3561debug output trace mechanism and has a much larger code and data size. Note 3562that these values will vary depending on the efficiency of the compiler and 3563the compiler options used during generation. 3564 3565 Previous Release: 3566 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 3567 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 3568 Current Release: 3569 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 3570 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 3571 3572 35732) iASL Compiler/Disassembler: 3574 3575Fixed a problem where incorrect AML code could be generated for Package 3576objects if optimization is disabled (via the -oa switch). 3577 3578Fixed a problem with where incorrect AML code is generated for variable- 3579length packages when the package length is not specified and the number of 3580initializer values is greater than 255. 3581 3582 3583---------------------------------------- 358429 July 2005. Summary of changes for version 20050729: 3585 35861) ACPI CA Core Subsystem: 3587 3588Implemented support to ignore an attempt to install/load a particular ACPI 3589table more than once. Apparently there exists BIOS code that repeatedly 3590attempts to load the same SSDT upon certain events. With assistance from 3591Venkatesh Pallipadi. 3592 3593Restructured the main interface to the AML parser in order to correctly 3594handle all exceptional conditions. This will prevent leakage of the OwnerId 3595resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some 3596machines. With assistance from Alexey Starikovskiy. 3597 3598Support for "module level code" has been disabled in this version due to a 3599number of issues that have appeared on various machines. The support can be 3600enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 3601compilation. When the issues are fully resolved, the code will be enabled by 3602default again. 3603 3604Modified the internal functions for debug print support to define the 3605FunctionName parameter as a (const char *) for compatibility with compiler 3606built-in macros such as __FUNCTION__, etc. 3607 3608Linted the entire ACPICA source tree for both 32-bit and 64-bit. 3609 3610Implemented support to display an object count summary for the AML Debugger 3611commands Object and Methods. 3612 3613Code and Data Size: Current and previous core subsystem library sizes are 3614shown below. These are the code and data sizes for the acpica.lib produced 3615by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3616any ACPI driver or OSPM code. The debug version of the code includes the 3617debug output trace mechanism and has a much larger code and data size. Note 3618that these values will vary depending on the efficiency of the compiler and 3619the compiler options used during generation. 3620 3621 Previous Release: 3622 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 3623 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 3624 Current Release: 3625 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 3626 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 3627 3628 36292) iASL Compiler/Disassembler: 3630 3631Fixed a regression that appeared in the 20050708 version of the compiler 3632where an error message was inadvertently emitted for invocations of the _OSI 3633reserved control method. 3634 3635---------------------------------------- 363608 July 2005. Summary of changes for version 20050708: 3637 36381) ACPI CA Core Subsystem: 3639 3640The use of the CPU stack in the debug version of the subsystem has been 3641considerably reduced. Previously, a debug structure was declared in every 3642function that used the debug macros. This structure has been removed in 3643favor of declaring the individual elements as parameters to the debug 3644functions. This reduces the cumulative stack use during nested execution of 3645ACPI function calls at the cost of a small increase in the code size of the 3646debug version of the subsystem. With assistance from Alexey Starikovskiy and 3647Len Brown. 3648 3649Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 3650headers to define a macro that will return the current function name at 3651runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by 3652the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 3653compiler-dependent header, the function name is saved on the CPU stack (one 3654pointer per function.) This mechanism is used because apparently there 3655exists no standard ANSI-C defined macro that that returns the function name. 3656 3657Redesigned and reimplemented the "Owner ID" mechanism used to track 3658namespace objects created/deleted by ACPI tables and control method 3659execution. A bitmap is now used to allocate and free the IDs, thus solving 3660the wraparound problem present in the previous implementation. The size of 3661the namespace node descriptor was reduced by 2 bytes as a result (Alexey 3662Starikovskiy). 3663 3664Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield 3665flag definitions within the headers for the predefined ACPI tables. These 3666have been replaced by UINT8_BIT in order to increase the code portability of 3667the subsystem. If the use of UINT8 remains a problem, we may be forced to 3668eliminate bitfields entirely because of a lack of portability. 3669 3670Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This 3671is a frequently used function and this improvement increases the performance 3672of the entire subsystem (Alexey Starikovskiy). 3673 3674Fixed several possible memory leaks and the inverse - premature object 3675deletion (Alexey Starikovskiy). 3676 3677Code and Data Size: Current and previous core subsystem library sizes are 3678shown below. These are the code and data sizes for the acpica.lib produced 3679by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3680any ACPI driver or OSPM code. The debug version of the code includes the 3681debug output trace mechanism and has a much larger code and data size. Note 3682that these values will vary depending on the efficiency of the compiler and 3683the compiler options used during generation. 3684 3685 Previous Release: 3686 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 3687 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 3688 Current Release: 3689 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 3690 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 3691 3692---------------------------------------- 369324 June 2005. Summary of changes for version 20050624: 3694 36951) ACPI CA Core Subsystem: 3696 3697Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 3698the host-defined cache object. This allows the OSL implementation to define 3699and type this object in any manner desired, simplifying the OSL 3700implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 3701Linux, and should be defined in the OS-specific header file for other 3702operating systems as required. 3703 3704Changed the interface to AcpiOsAcquireObject to directly return the 3705requested object as the function return (instead of ACPI_STATUS.) This 3706change was made for performance reasons, since this is the purpose of the 3707interface in the first place. AcpiOsAcquireObject is now similar to the 3708AcpiOsAllocate interface. 3709 3710Implemented a new AML debugger command named Businfo. This command displays 3711information about all devices that have an associate _PRT object. The _ADR, 3712_HID, _UID, and _CID are displayed for these devices. 3713 3714Modified the initialization sequence in AcpiInitializeSubsystem to call the 3715OSL interface AcpiOslInitialize first, before any local initialization. This 3716change was required because the global initialization now calls OSL 3717interfaces. 3718 3719Enhanced the Dump command to display the entire contents of Package objects 3720(including all sub-objects and their values.) 3721 3722Restructured the code base to split some files because of size and/or 3723because the code logically belonged in a separate file. New files are listed 3724below. All makefiles and project files included in the ACPI CA release have 3725been updated. 3726 utilities/utcache.c /* Local cache interfaces */ 3727 utilities/utmutex.c /* Local mutex support */ 3728 utilities/utstate.c /* State object support */ 3729 interpreter/parser/psloop.c /* Main AML parse loop */ 3730 3731Code and Data Size: Current and previous core subsystem library sizes are 3732shown below. These are the code and data sizes for the acpica.lib produced 3733by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3734any ACPI driver or OSPM code. The debug version of the code includes the 3735debug output trace mechanism and has a much larger code and data size. Note 3736that these values will vary depending on the efficiency of the compiler and 3737the compiler options used during generation. 3738 3739 Previous Release: 3740 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 3741 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 3742 Current Release: 3743 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 3744 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 3745 3746 37472) iASL Compiler/Disassembler: 3748 3749Fixed a regression introduced in version 20050513 where the use of a Package 3750object within a Case() statement caused a compile time exception. The 3751original behavior has been restored (a Match() operator is emitted.) 3752 3753---------------------------------------- 375417 June 2005. Summary of changes for version 20050617: 3755 37561) ACPI CA Core Subsystem: 3757 3758Moved the object cache operations into the OS interface layer (OSL) to allow 3759the host OS to handle these operations if desired (for example, the Linux 3760OSL will invoke the slab allocator). This support is optional; the compile 3761time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache 3762code in the ACPI CA core. The new OSL interfaces are shown below. See 3763utalloc.c for an example implementation, and acpiosxf.h for the exact 3764interface definitions. With assistance from Alexey Starikovskiy. 3765 AcpiOsCreateCache 3766 AcpiOsDeleteCache 3767 AcpiOsPurgeCache 3768 AcpiOsAcquireObject 3769 AcpiOsReleaseObject 3770 3771Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return 3772and restore a flags parameter. This fits better with many OS lock models. 3773Note: the current execution state (interrupt handler or not) is no longer 3774passed to these interfaces. If necessary, the OSL must determine this state 3775by itself, a simple and fast operation. With assistance from Alexey 3776Starikovskiy. 3777 3778Fixed a problem in the ACPI table handling where a valid XSDT was assumed 3779present if the revision of the RSDP was 2 or greater. According to the ACPI 3780specification, the XSDT is optional in all cases, and the table manager 3781therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 3782Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain 3783only the RSDT. 3784 3785Fixed an interpreter problem with the Mid() operator in the case of an input 3786string where the resulting output string is of zero length. It now correctly 3787returns a valid, null terminated string object instead of a string object 3788with a null pointer. 3789 3790Fixed a problem with the control method argument handling to allow a store 3791to an Arg object that already contains an object of type Device. The Device 3792object is now correctly overwritten. Previously, an error was returned. 3793 3794 3795Enhanced the debugger Find command to emit object values in addition to the 3796found object pathnames. The output format is the same as the dump namespace 3797command. 3798 3799Enhanced the debugger Set command. It now has the ability to set the value 3800of any Named integer object in the namespace (Previously, only method locals 3801and args could be set.) 3802 3803Code and Data Size: Current and previous core subsystem library sizes are 3804shown below. These are the code and data sizes for the acpica.lib produced 3805by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3806any ACPI driver or OSPM code. The debug version of the code includes the 3807debug output trace mechanism and has a much larger code and data size. Note 3808that these values will vary depending on the efficiency of the compiler and 3809the compiler options used during generation. 3810 3811 Previous Release: 3812 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 3813 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 3814 Current Release: 3815 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 3816 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 3817 3818 38192) iASL Compiler/Disassembler: 3820 3821Fixed a regression in the disassembler where if/else/while constructs were 3822output incorrectly. This problem was introduced in the previous release 3823(20050526). This problem also affected the single-step disassembly in the 3824debugger. 3825 3826Fixed a problem where compiling the reserved _OSI method would randomly (but 3827rarely) produce compile errors. 3828 3829Enhanced the disassembler to emit compilable code in the face of incorrect 3830AML resource descriptors. If the optional ResourceSourceIndex is present, 3831but the ResourceSource is not, do not emit the ResourceSourceIndex in the 3832disassembly. Otherwise, the resulting code cannot be compiled without 3833errors. 3834 3835---------------------------------------- 383626 May 2005. Summary of changes for version 20050526: 3837 38381) ACPI CA Core Subsystem: 3839 3840Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 3841the module level (not within a control method.) These opcodes are executed 3842exactly once at the time the table is loaded. This type of code was legal up 3843until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in 3844order to provide backwards compatibility with earlier BIOS implementations. 3845This eliminates the "Encountered executable code at module level" warning 3846that was previously generated upon detection of such code. 3847 3848Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 3849inadvertently be generated during the lookup of namespace objects in the 3850second pass parse of ACPI tables and control methods. It appears that this 3851problem could occur during the resolution of forward references to namespace 3852objects. 3853 3854Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 3855corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 3856allows the deadlock detection debug code to be compiled out in the normal 3857case, improving mutex performance (and overall subsystem performance) 3858considerably. 3859 3860Implemented a handful of miscellaneous fixes for possible memory leaks on 3861error conditions and error handling control paths. These fixes were 3862suggested by FreeBSD and the Coverity Prevent source code analysis tool. 3863 3864Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c) 3865to prevent a fault in this error case. 3866 3867Code and Data Size: Current and previous core subsystem library sizes are 3868shown below. These are the code and data sizes for the acpica.lib produced 3869by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3870any ACPI driver or OSPM code. The debug version of the code includes the 3871debug output trace mechanism and has a much larger code and data size. Note 3872that these values will vary depending on the efficiency of the compiler and 3873the compiler options used during generation. 3874 3875 Previous Release: 3876 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 3877 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 3878 Current Release: 3879 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 3880 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 3881 3882 38832) iASL Compiler/Disassembler: 3884 3885Implemented support to allow Type 1 and Type 2 ASL operators to appear at 3886the module level (not within a control method.) These operators will be 3887executed once at the time the table is loaded. This type of code was legal 3888up until the release of ACPI 2.0B (2002) and is now supported by the iASL 3889compiler in order to provide backwards compatibility with earlier BIOS ASL 3890code. 3891 3892The ACPI integer width (specified via the table revision ID or the -r 3893override, 32 or 64 bits) is now used internally during compile-time constant 3894folding to ensure that constants are truncated to 32 bits if necessary. 3895Previously, the revision ID value was only emitted in the AML table header. 3896 3897An error message is now generated for the Mutex and Method operators if the 3898SyncLevel parameter is outside the legal range of 0 through 15. 3899 3900Fixed a problem with the Method operator ParameterTypes list handling (ACPI 39013.0). Previously, more than 2 types or 2 arguments generated a syntax error. 3902The actual underlying implementation of method argument typechecking is 3903still under development, however. 3904 3905---------------------------------------- 390613 May 2005. Summary of changes for version 20050513: 3907 39081) ACPI CA Core Subsystem: 3909 3910Implemented support for PCI Express root bridges -- added support for device 3911PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 3912 3913The interpreter now automatically truncates incoming 64-bit constants to 32 3914bits if currently executing out of a 32-bit ACPI table (Revision < 2). This 3915also affects the iASL compiler constant folding. (Note: as per below, the 3916iASL compiler no longer allows 64-bit constants within 32-bit tables.) 3917 3918Fixed a problem where string and buffer objects with "static" pointers 3919(pointers to initialization data within an ACPI table) were not handled 3920consistently. The internal object copy operation now always copies the data 3921to a newly allocated buffer, regardless of whether the source object is 3922static or not. 3923 3924Fixed a problem with the FromBCD operator where an implicit result 3925conversion was improperly performed while storing the result to the target 3926operand. Since this is an "explicit conversion" operator, the implicit 3927conversion should never be performed on the output. 3928 3929Fixed a problem with the CopyObject operator where a copy to an existing 3930named object did not always completely overwrite the existing object stored 3931at name. Specifically, a buffer-to-buffer copy did not delete the existing 3932buffer. 3933 3934Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and 3935structs for consistency. 3936 3937Code and Data Size: Current and previous core subsystem library sizes are 3938shown below. These are the code and data sizes for the acpica.lib produced 3939by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3940any ACPI driver or OSPM code. The debug version of the code includes the 3941debug output trace mechanism and has a much larger code and data size. Note 3942that these values will vary depending on the efficiency of the compiler and 3943the compiler options used during generation. 3944 3945 Previous Release: 3946 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 3947 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 3948 Current Release: (Same sizes) 3949 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 3950 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 3951 3952 39532) iASL Compiler/Disassembler: 3954 3955The compiler now emits a warning if an attempt is made to generate a 64-bit 3956integer constant from within a 32-bit ACPI table (Revision < 2). The integer 3957is truncated to 32 bits. 3958 3959Fixed a problem with large package objects: if the static length of the 3960package is greater than 255, the "variable length package" opcode is 3961emitted. Previously, this caused an error. This requires an update to the 3962ACPI spec, since it currently (incorrectly) states that packages larger than 3963255 elements are not allowed. 3964 3965The disassembler now correctly handles variable length packages and packages 3966larger than 255 elements. 3967 3968---------------------------------------- 396908 April 2005. Summary of changes for version 20050408: 3970 39711) ACPI CA Core Subsystem: 3972 3973Fixed three cases in the interpreter where an "index" argument to an ASL 3974function was still (internally) 32 bits instead of the required 64 bits. 3975This was the Index argument to the Index, Mid, and Match operators. 3976 3977The "strupr" function is now permanently local (AcpiUtStrupr), since this is 3978not a POSIX-defined function and not present in most kernel-level C 3979libraries. All references to the C library strupr function have been removed 3980from the headers. 3981 3982Completed the deployment of static functions/prototypes. All prototypes with 3983the static attribute have been moved from the headers to the owning C file. 3984 3985Implemented an extract option (-e) for the AcpiBin utility (AML binary 3986utility). This option allows the utility to extract individual ACPI tables 3987from the output of AcpiDmp. It provides the same functionality of the 3988acpixtract.pl perl script without the worry of setting the correct perl 3989options. AcpiBin runs on Windows and has not yet been generated/validated in 3990the Linux/Unix environment (but should be soon). 3991 3992Updated and fixed the table dump option for AcpiBin (-d). This option 3993converts a single ACPI table to a hex/ascii file, similar to the output of 3994AcpiDmp. 3995 3996Code and Data Size: Current and previous core subsystem library sizes are 3997shown below. These are the code and data sizes for the acpica.lib produced 3998by the Microsoft Visual C++ 6.0 compiler, and these values do not include 3999any ACPI driver or OSPM code. The debug version of the code includes the 4000debug output trace mechanism and has a much larger code and data size. Note 4001that these values will vary depending on the efficiency of the compiler and 4002the compiler options used during generation. 4003 4004 Previous Release: 4005 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 4006 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 4007 Current Release: 4008 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 4009 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 4010 4011 40122) iASL Compiler/Disassembler: 4013 4014Disassembler fix: Added a check to ensure that the table length found in the 4015ACPI table header within the input file is not longer than the actual input 4016file size. This indicates some kind of file or table corruption. 4017 4018---------------------------------------- 401929 March 2005. Summary of changes for version 20050329: 4020 40211) ACPI CA Core Subsystem: 4022 4023An error is now generated if an attempt is made to create a Buffer Field of 4024length zero (A CreateField with a length operand of zero.) 4025 4026The interpreter now issues a warning whenever executable code at the module 4027level is detected during ACPI table load. This will give some idea of the 4028prevalence of this type of code. 4029 4030Implemented support for references to named objects (other than control 4031methods) within package objects. 4032 4033Enhanced package object output for the debug object. Package objects are now 4034completely dumped, showing all elements. 4035 4036Enhanced miscellaneous object output for the debug object. Any object can 4037now be written to the debug object (for example, a device object can be 4038written, and the type of the object will be displayed.) 4039 4040The "static" qualifier has been added to all local functions across both the 4041core subsystem and the iASL compiler. 4042 4043The number of "long" lines (> 80 chars) within the source has been 4044significantly reduced, by about 1/3. 4045 4046Cleaned up all header files to ensure that all CA/iASL functions are 4047prototyped (even static functions) and the formatting is consistent. 4048 4049Two new header files have been added, acopcode.h and acnames.h. 4050 4051Removed several obsolete functions that were no longer used. 4052 4053Code and Data Size: Current and previous core subsystem library sizes are 4054shown below. These are the code and data sizes for the acpica.lib produced 4055by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4056any ACPI driver or OSPM code. The debug version of the code includes the 4057debug output trace mechanism and has a much larger code and data size. Note 4058that these values will vary depending on the efficiency of the compiler and 4059the compiler options used during generation. 4060 4061 Previous Release: 4062 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4063 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 4064 Current Release: 4065 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 4066 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 4067 4068 4069 40702) iASL Compiler/Disassembler: 4071 4072Fixed a problem with the resource descriptor generation/support. For the 4073ResourceSourceIndex and the ResourceSource fields, both must be present, or 4074both must be not present - can't have one without the other. 4075 4076The compiler now returns non-zero from the main procedure if any errors have 4077occurred during the compilation. 4078 4079 4080---------------------------------------- 408109 March 2005. Summary of changes for version 20050309: 4082 40831) ACPI CA Core Subsystem: 4084 4085The string-to-buffer implicit conversion code has been modified again after 4086a change to the ACPI specification. In order to match the behavior of the 4087other major ACPI implementation, the target buffer is no longer truncated if 4088the source string is smaller than an existing target buffer. This change 4089requires an update to the ACPI spec, and should eliminate the recent 4090AE_AML_BUFFER_LIMIT issues. 4091 4092The "implicit return" support was rewritten to a new algorithm that solves 4093the general case. Rather than attempt to determine when a method is about to 4094exit, the result of every ASL operator is saved momentarily until the very 4095next ASL operator is executed. Therefore, no matter how the method exits, 4096there will always be a saved implicit return value. This feature is only 4097enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate 4098AE_AML_NO_RETURN_VALUE errors when enabled. 4099 4100Implemented implicit conversion support for the predicate (operand) of the 4101If, Else, and While operators. String and Buffer arguments are automatically 4102converted to Integers. 4103 4104Changed the string-to-integer conversion behavior to match the new ACPI 4105errata: "If no integer object exists, a new integer is created. The ASCII 4106string is interpreted as a hexadecimal constant. Each string character is 4107interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 4108with the first character as the most significant digit, and ending with the 4109first non-hexadecimal character or end-of-string." This means that the first 4110non-hex character terminates the conversion and this is the code that was 4111changed. 4112 4113Fixed a problem where the ObjectType operator would fail (fault) when used 4114on an Index of a Package which pointed to a null package element. The 4115operator now properly returns zero (Uninitialized) in this case. 4116 4117Fixed a problem where the While operator used excessive memory by not 4118properly popping the result stack during execution. There was no memory leak 4119after execution, however. (Code provided by Valery Podrezov.) 4120 4121Fixed a problem where references to control methods within Package objects 4122caused the method to be invoked, instead of producing a reference object 4123pointing to the method. 4124 4125Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to 4126improve performance and reduce code size. (Code provided by Alexey 4127Starikovskiy.) 4128 4129Code and Data Size: Current and previous core subsystem library sizes are 4130shown below. These are the code and data sizes for the acpica.lib produced 4131by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4132any ACPI driver or OSPM code. The debug version of the code includes the 4133debug output trace mechanism and has a much larger code and data size. Note 4134that these values will vary depending on the efficiency of the compiler and 4135the compiler options used during generation. 4136 4137 Previous Release: 4138 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4139 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 4140 Current Release: 4141 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4142 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 4143 4144 41452) iASL Compiler/Disassembler: 4146 4147Fixed a problem with the Return operator with no arguments. Since the AML 4148grammar for the byte encoding requires an operand for the Return opcode, the 4149compiler now emits a Return(Zero) for this case. An ACPI specification 4150update has been written for this case. 4151 4152For tables other than the DSDT, namepath optimization is automatically 4153disabled. This is because SSDTs can be loaded anywhere in the namespace, the 4154compiler has no knowledge of where, and thus cannot optimize namepaths. 4155 4156Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 4157inadvertently omitted from the ACPI specification, and will require an 4158update to the spec. 4159 4160The source file scan for ASCII characters is now optional (-a). This change 4161was made because some vendors place non-ascii characters within comments. 4162However, the scan is simply a brute-force byte compare to ensure all 4163characters in the file are in the range 0x00 to 0x7F. 4164 4165Fixed a problem with the CondRefOf operator where the compiler was 4166inappropriately checking for the existence of the target. Since the point of 4167the operator is to check for the existence of the target at run-time, the 4168compiler no longer checks for the target existence. 4169 4170Fixed a problem where errors generated from the internal AML interpreter 4171during constant folding were not handled properly, causing a fault. 4172 4173Fixed a problem with overly aggressive range checking for the Stall 4174operator. The valid range (max 255) is now only checked if the operand is of 4175type Integer. All other operand types cannot be statically checked. 4176 4177Fixed a problem where control method references within the RefOf, DeRefOf, 4178and ObjectType operators were not treated properly. They are now treated as 4179actual references, not method invocations. 4180 4181Fixed and enhanced the "list namespace" option (-ln). This option was broken 4182a number of releases ago. 4183 4184Improved error handling for the Field, IndexField, and BankField operators. 4185The compiler now cleanly reports and recovers from errors in the field 4186component (FieldUnit) list. 4187 4188Fixed a disassembler problem where the optional ResourceDescriptor fields 4189TRS and TTP were not always handled correctly. 4190 4191Disassembler - Comments in output now use "//" instead of "/*" 4192 4193---------------------------------------- 419428 February 2005. Summary of changes for version 20050228: 4195 41961) ACPI CA Core Subsystem: 4197 4198Fixed a problem where the result of an Index() operator (an object 4199reference) must increment the reference count on the target object for the 4200life of the object reference. 4201 4202Implemented AML Interpreter and Debugger support for the new ACPI 3.0 4203Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace 4204resource descriptors. 4205 4206Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 4207Space Descriptor" string, indicating interpreter support for the descriptors 4208above. 4209 4210Implemented header support for the new ACPI 3.0 FADT flag bits. 4211 4212Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1 4213status/enable registers. 4214 4215Updated header support for the MADT processor local Apic struct and MADT 4216platform interrupt source struct for new ACPI 3.0 fields. 4217 4218Implemented header support for the SRAT and SLIT ACPI tables. 4219 4220Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag 4221at runtime. 4222 4223Code and Data Size: Current and previous core subsystem library sizes are 4224shown below. These are the code and data sizes for the acpica.lib produced 4225by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4226any ACPI driver or OSPM code. The debug version of the code includes the 4227debug output trace mechanism and has a much larger code and data size. Note 4228that these values will vary depending on the efficiency of the compiler and 4229the compiler options used during generation. 4230 4231 Previous Release: 4232 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 4233 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 4234 Current Release: 4235 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4236 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 4237 4238 42392) iASL Compiler/Disassembler: 4240 4241Fixed a problem with the internal 64-bit String-to-integer conversion with 4242strings less than two characters long. 4243 4244Fixed a problem with constant folding where the result of the Index() 4245operator can not be considered a constant. This means that Index() cannot be 4246a type3 opcode and this will require an update to the ACPI specification. 4247 4248Disassembler: Implemented support for the TTP, MTP, and TRS resource 4249descriptor fields. These fields were inadvertently ignored and not output in 4250the disassembly of the resource descriptor. 4251 4252 4253 ---------------------------------------- 425411 February 2005. Summary of changes for version 20050211: 4255 42561) ACPI CA Core Subsystem: 4257 4258Implemented ACPI 3.0 support for implicit conversion within the Match() 4259operator. MatchObjects can now be of type integer, buffer, or string instead 4260of just type integer. Package elements are implicitly converted to the type 4261of the MatchObject. This change aligns the behavior of Match() with the 4262behavior of the other logical operators (LLess(), etc.) It also requires an 4263errata change to the ACPI specification as this support was intended for 4264ACPI 3.0, but was inadvertently omitted. 4265 4266Fixed a problem with the internal implicit "to buffer" conversion. Strings 4267that are converted to buffers will cause buffer truncation if the string is 4268smaller than the target buffer. Integers that are converted to buffers will 4269not cause buffer truncation, only zero extension (both as per the ACPI 4270spec.) The problem was introduced when code was added to truncate the 4271buffer, but this should not be performed in all cases, only the string case. 4272 4273Fixed a problem with the Buffer and Package operators where the interpreter 4274would get confused if two such operators were used as operands to an ASL 4275operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 4276stack was not being popped after the execution of these operators, resulting 4277in an AE_NO_RETURN_VALUE exception. 4278 4279Fixed a problem with constructs of the form Store(Index(...),...). The 4280reference object returned from Index was inadvertently resolved to an actual 4281value. This problem was introduced in version 20050114 when the behavior of 4282Store() was modified to restrict the object types that can be used as the 4283source operand (to match the ACPI specification.) 4284 4285Reduced excessive stack use within the AcpiGetObjectInfo procedure. 4286 4287Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 4288 4289Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 4290 4291Code and Data Size: Current and previous core subsystem library sizes are 4292shown below. These are the code and data sizes for the acpica.lib produced 4293by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4294any ACPI driver or OSPM code. The debug version of the code includes the 4295debug output trace mechanism and has a much larger code and data size. Note 4296that these values will vary depending on the efficiency of the compiler and 4297the compiler options used during generation. 4298 4299 Previous Release: 4300 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 4301 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 4302 Current Release: 4303 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 4304 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 4305 4306 43072) iASL Compiler/Disassembler: 4308 4309Fixed a code generation problem in the constant folding optimization code 4310where incorrect code was generated if a constant was reduced to a buffer 4311object (i.e., a reduced type 5 opcode.) 4312 4313Fixed a typechecking problem for the ToBuffer operator. Caused by an 4314incorrect return type in the internal opcode information table. 4315 4316---------------------------------------- 431725 January 2005. Summary of changes for version 20050125: 4318 43191) ACPI CA Core Subsystem: 4320 4321Fixed a recently introduced problem with the Global Lock where the 4322underlying semaphore was not created. This problem was introduced in 4323version 20050114, and caused an AE_AML_NO_OPERAND exception during an 4324Acquire() operation on _GL. 4325 4326The local object cache is now optional, and is disabled by default. Both 4327AcpiExec and the iASL compiler enable the cache because they run in user 4328mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE 4329to enable the local cache. 4330 4331Fixed an issue in the internal function AcpiUtEvaluateObject concerning the 4332optional "implicit return" support where an error was returned if no return 4333object was expected, but one was implicitly returned. AE_OK is now returned 4334in this case and the implicitly returned object is deleted. 4335AcpiUtEvaluateObject is only occasionally used, and only to execute reserved 4336methods such as _STA and _INI where the return type is known up front. 4337 4338Fixed a few issues with the internal convert-to-integer code. It now returns 4339an error if an attempt is made to convert a null string, a string of only 4340blanks/tabs, or a zero-length buffer. This affects both implicit conversion 4341and explicit conversion via the ToInteger() operator. 4342 4343The internal debug code in AcpiUtAcquireMutex has been commented out. It is 4344not needed for normal operation and should increase the performance of the 4345entire subsystem. The code remains in case it is needed for debug purposes 4346again. 4347 4348The AcpiExec source and makefile are included in the Unix/Linux package for 4349the first time. 4350 4351Code and Data Size: Current and previous core subsystem library sizes are 4352shown below. These are the code and data sizes for the acpica.lib produced 4353by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4354any ACPI driver or OSPM code. The debug version of the code includes the 4355debug output trace mechanism and has a much larger code and data size. Note 4356that these values will vary depending on the efficiency of the compiler and 4357the compiler options used during generation. 4358 4359 Previous Release: 4360 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 4361 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 4362 Current Release: 4363 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 4364 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 4365 43662) iASL Compiler/Disassembler: 4367 4368Switch/Case support: A warning is now issued if the type of the Switch value 4369cannot be determined at compile time. For example, Switch(Arg0) will 4370generate the warning, and the type is assumed to be an integer. As per the 4371ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the 4372warning. 4373 4374Switch/Case support: Implemented support for buffer and string objects as 4375the switch value. This is an ACPI 3.0 feature, now that LEqual supports 4376buffers and strings. 4377 4378Switch/Case support: The emitted code for the LEqual() comparisons now uses 4379the switch value as the first operand, not the second. The case value is now 4380the second operand, and this allows the case value to be implicitly 4381converted to the type of the switch value, not the other way around. 4382 4383Switch/Case support: Temporary variables are now emitted immediately within 4384the control method, not at the global level. This means that there are now 438536 temps available per-method, not 36 temps per-module as was the case with 4386the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 4387 4388---------------------------------------- 438914 January 2005. Summary of changes for version 20050114: 4390 4391Added 2005 copyright to all module headers. This affects every module in 4392the core subsystem, iASL compiler, and the utilities. 4393 43941) ACPI CA Core Subsystem: 4395 4396Fixed an issue with the String-to-Buffer conversion code where the string 4397null terminator was not included in the buffer after conversion, but there 4398is existing ASL that assumes the string null terminator is included. This is 4399the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 4400introduced in the previous version when the code was updated to correctly 4401set the converted buffer size as per the ACPI specification. The ACPI spec 4402is ambiguous and will be updated to specify that the null terminator must be 4403included in the converted buffer. This also affects the ToBuffer() ASL 4404operator. 4405 4406Fixed a problem with the Mid() ASL/AML operator where it did not work 4407correctly on Buffer objects. Newly created sub-buffers were not being marked 4408as initialized. 4409 4410 4411Fixed a problem in AcpiTbFindTable where incorrect string compares were 4412performed on the OemId and OemTableId table header fields. These fields are 4413not null terminated, so strncmp is now used instead of strcmp. 4414 4415Implemented a restriction on the Store() ASL/AML operator to align the 4416behavior with the ACPI specification. Previously, any object could be used 4417as the source operand. Now, the only objects that may be used are Integers, 4418Buffers, Strings, Packages, Object References, and DDB Handles. If 4419necessary, the original behavior can be restored by enabling the 4420EnableInterpreterSlack flag. 4421 4422Enhanced the optional "implicit return" support to allow an implicit return 4423value from methods that are invoked externally via the AcpiEvaluateObject 4424interface. This enables implicit returns from the _STA and _INI methods, 4425for example. 4426 4427Changed the Revision() ASL/AML operator to return the current version of the 4428AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned 4429the supported ACPI version (This is the function of the _REV method). 4430 4431Updated the _REV predefined method to return the currently supported version 4432of ACPI, now 3. 4433 4434Implemented batch mode option for the AcpiExec utility (-b). 4435 4436Code and Data Size: Current and previous core subsystem library sizes are 4437shown below. These are the code and data sizes for the acpica.lib produced 4438by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4439any ACPI driver or OSPM code. The debug version of the code includes the 4440debug output trace mechanism and has a much larger code and data size. Note 4441that these values will vary depending on the efficiency of the compiler and 4442the compiler options used during generation. 4443 4444 Previous Release: 4445 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4446 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 4447 Current Release: 4448 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 4449 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 4450 4451---------------------------------------- 445210 December 2004. Summary of changes for version 20041210: 4453 4454ACPI 3.0 support is nearing completion in both the iASL compiler and the 4455ACPI CA core subsystem. 4456 44571) ACPI CA Core Subsystem: 4458 4459Fixed a problem in the ToDecimalString operator where the resulting string 4460length was incorrectly calculated. The length is now calculated exactly, 4461eliminating incorrect AE_STRING_LIMIT exceptions. 4462 4463Fixed a problem in the ToHexString operator to allow a maximum 200 character 4464string to be produced. 4465 4466Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy 4467routine where the length of the resulting buffer was not truncated to the 4468new size (if the target buffer already existed). 4469 4470Code and Data Size: Current and previous core subsystem library sizes are 4471shown below. These are the code and data sizes for the acpica.lib produced 4472by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4473any ACPI driver or OSPM code. The debug version of the code includes the 4474debug output trace mechanism and has a much larger code and data size. Note 4475that these values will vary depending on the efficiency of the compiler and 4476the compiler options used during generation. 4477 4478 Previous Release: 4479 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4480 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 4481 Current Release: 4482 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4483 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 4484 4485 44862) iASL Compiler/Disassembler: 4487 4488Implemented the new ACPI 3.0 resource template macros - DWordSpace, 4489ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 4490Includes support in the disassembler. 4491 4492Implemented support for the new (ACPI 3.0) parameter to the Register macro, 4493AccessSize. 4494 4495Fixed a problem where the _HE resource name for the Interrupt macro was 4496referencing bit 0 instead of bit 1. 4497 4498Implemented check for maximum 255 interrupts in the Interrupt macro. 4499 4500Fixed a problem with the predefined resource descriptor names where 4501incorrect AML code was generated if the offset within the resource buffer 4502was 0 or 1. The optimizer shortened the AML code to a single byte opcode 4503but did not update the surrounding package lengths. 4504 4505Changes to the Dma macro: All channels within the channel list must be in 4506the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 4507optional (default is BusMaster). 4508 4509Implemented check for maximum 7 data bytes for the VendorShort macro. 4510 4511The ReadWrite parameter is now optional for the Memory32 and similar macros. 4512 4513---------------------------------------- 451403 December 2004. Summary of changes for version 20041203: 4515 45161) ACPI CA Core Subsystem: 4517 4518The low-level field insertion/extraction code (exfldio) has been completely 4519rewritten to eliminate unnecessary complexity, bugs, and boundary 4520conditions. 4521 4522Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString 4523operators where the input operand could be inadvertently deleted if no 4524conversion was necessary (e.g., if the input to ToInteger was an Integer 4525object.) 4526 4527Fixed a problem with the ToDecimalString and ToHexString where an incorrect 4528exception code was returned if the resulting string would be > 200 chars. 4529AE_STRING_LIMIT is now returned. 4530 4531Fixed a problem with the Concatenate operator where AE_OK was always 4532returned, even if the operation failed. 4533 4534Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 4535semaphores to be allocated. 4536 4537Code and Data Size: Current and previous core subsystem library sizes are 4538shown below. These are the code and data sizes for the acpica.lib produced 4539by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4540any ACPI driver or OSPM code. The debug version of the code includes the 4541debug output trace mechanism and has a much larger code and data size. Note 4542that these values will vary depending on the efficiency of the compiler and 4543the compiler options used during generation. 4544 4545 Previous Release: 4546 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 4547 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 4548 Current Release: 4549 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 4550 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 4551 4552 45532) iASL Compiler/Disassembler: 4554 4555Fixed typechecking for the ObjectType and SizeOf operators. Problem was 4556recently introduced in 20041119. 4557 4558Fixed a problem with the ToUUID macro where the upper nybble of each buffer 4559byte was inadvertently set to zero. 4560 4561---------------------------------------- 456219 November 2004. Summary of changes for version 20041119: 4563 45641) ACPI CA Core Subsystem: 4565 4566Fixed a problem in the internal ConvertToInteger routine where new integers 4567were not truncated to 32 bits for 32-bit ACPI tables. This routine converts 4568buffers and strings to integers. 4569 4570Implemented support to store a value to an Index() on a String object. This 4571is an ACPI 2.0 feature that had not yet been implemented. 4572 4573Implemented new behavior for storing objects to individual package elements 4574(via the Index() operator). The previous behavior was to invoke the implicit 4575conversion rules if an object was already present at the index. The new 4576behavior is to simply delete any existing object and directly store the new 4577object. Although the ACPI specification seems unclear on this subject, other 4578ACPI implementations behave in this manner. (This is the root of the 4579AE_BAD_HEX_CONSTANT issue.) 4580 4581Modified the RSDP memory scan mechanism to support the extended checksum for 4582ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 4583RSDP signature is found with a valid checksum. 4584 4585Code and Data Size: Current and previous core subsystem library sizes are 4586shown below. These are the code and data sizes for the acpica.lib produced 4587by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4588any ACPI driver or OSPM code. The debug version of the code includes the 4589debug output trace mechanism and has a much larger code and data size. Note 4590that these values will vary depending on the efficiency of the compiler and 4591the compiler options used during generation. 4592 4593 Previous Release: 4594 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 4595 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 4596 Current Release: 4597 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 4598 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 4599 4600 46012) iASL Compiler/Disassembler: 4602 4603Fixed a missing semicolon in the aslcompiler.y file. 4604 4605---------------------------------------- 460605 November 2004. Summary of changes for version 20041105: 4607 46081) ACPI CA Core Subsystem: 4609 4610Implemented support for FADT revision 2. This was an interim table (between 4611ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 4612 4613Implemented optional support to allow uninitialized LocalX and ArgX 4614variables in a control method. The variables are initialized to an Integer 4615object with a value of zero. This support is enabled by setting the 4616AcpiGbl_EnableInterpreterSlack flag to TRUE. 4617 4618Implemented support for Integer objects for the SizeOf operator. Either 4 4619or 8 is returned, depending on the current integer size (32-bit or 64-bit, 4620depending on the parent table revision). 4621 4622Fixed a problem in the implementation of the SizeOf and ObjectType operators 4623where the operand was resolved to a value too early, causing incorrect 4624return values for some objects. 4625 4626Fixed some possible memory leaks during exceptional conditions. 4627 4628Code and Data Size: Current and previous core subsystem library sizes are 4629shown below. These are the code and data sizes for the acpica.lib produced 4630by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4631any ACPI driver or OSPM code. The debug version of the code includes the 4632debug output trace mechanism and has a much larger code and data size. Note 4633that these values will vary depending on the efficiency of the compiler and 4634the compiler options used during generation. 4635 4636 Previous Release: 4637 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 4638 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 4639 Current Release: 4640 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 4641 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 4642 4643 46442) iASL Compiler/Disassembler: 4645 4646Implemented support for all ACPI 3.0 reserved names and methods. 4647 4648Implemented all ACPI 3.0 grammar elements in the front-end, including 4649support for semicolons. 4650 4651Implemented the ACPI 3.0 Function() and ToUUID() macros 4652 4653Fixed a problem in the disassembler where a Scope() operator would not be 4654emitted properly if the target of the scope was in another table. 4655 4656---------------------------------------- 465715 October 2004. Summary of changes for version 20041015: 4658 4659Note: ACPI CA is currently undergoing an in-depth and complete formal 4660evaluation to test/verify the following areas. Other suggestions are 4661welcome. This will result in an increase in the frequency of releases and 4662the number of bug fixes in the next few months. 4663 - Functional tests for all ASL/AML operators 4664 - All implicit/explicit type conversions 4665 - Bit fields and operation regions 4666 - 64-bit math support and 32-bit-only "truncated" math support 4667 - Exceptional conditions, both compiler and interpreter 4668 - Dynamic object deletion and memory leaks 4669 - ACPI 3.0 support when implemented 4670 - External interfaces to the ACPI subsystem 4671 4672 46731) ACPI CA Core Subsystem: 4674 4675Fixed two alignment issues on 64-bit platforms - within debug statements in 4676AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address 4677field within the non-aligned ACPI generic address structure. 4678 4679Fixed a problem in the Increment and Decrement operators where incorrect 4680operand resolution could result in the inadvertent modification of the 4681original integer when the integer is passed into another method as an 4682argument and the arg is then incremented/decremented. 4683 4684Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit 4685BCD number were truncated during conversion. 4686 4687Fixed a problem in the ToDecimal operator where the length of the resulting 4688string could be set incorrectly too long if the input operand was a Buffer 4689object. 4690 4691Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0) 4692within a buffer would prematurely terminate a compare between buffer 4693objects. 4694 4695Added a check for string overflow (>200 characters as per the ACPI 4696specification) during the Concatenate operator with two string operands. 4697 4698Code and Data Size: Current and previous core subsystem library sizes are 4699shown below. These are the code and data sizes for the acpica.lib produced 4700by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4701any ACPI driver or OSPM code. The debug version of the code includes the 4702debug output trace mechanism and has a much larger code and data size. Note 4703that these values will vary depending on the efficiency of the compiler and 4704the compiler options used during generation. 4705 4706 Previous Release: 4707 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 4708 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 4709 Current Release: 4710 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 4711 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 4712 4713 4714 47152) iASL Compiler/Disassembler: 4716 4717Allow the use of the ObjectType operator on uninitialized Locals and Args 4718(returns 0 as per the ACPI specification). 4719 4720Fixed a problem where the compiler would fault if there was a syntax error 4721in the FieldName of all of the various CreateXXXField operators. 4722 4723Disallow the use of lower case letters within the EISAID macro, as per the 4724ACPI specification. All EISAID strings must be of the form "UUUNNNN" Where 4725U is an uppercase letter and N is a hex digit. 4726 4727 4728---------------------------------------- 472906 October 2004. Summary of changes for version 20041006: 4730 47311) ACPI CA Core Subsystem: 4732 4733Implemented support for the ACPI 3.0 Timer operator. This ASL function 4734implements a 64-bit timer with 100 nanosecond granularity. 4735 4736Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 4737implement the ACPI 3.0 Timer operator. This allows the host OS to implement 4738the timer with the best clock available. Also, it keeps the core subsystem 4739out of the clock handling business, since the host OS (usually) performs 4740this function. 4741 4742Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 4743functions use a 64-bit address which is part of the packed ACPI Generic 4744Address Structure. Since the structure is non-aligned, the alignment macros 4745are now used to extract the address to a local variable before use. 4746 4747Fixed a problem where the ToInteger operator assumed all input strings were 4748hexadecimal. The operator now handles both decimal strings and hex strings 4749(prefixed with "0x"). 4750 4751Fixed a problem where the string length in the string object created as a 4752result of the internal ConvertToString procedure could be incorrect. This 4753potentially affected all implicit conversions and also the ToDecimalString 4754and ToHexString operators. 4755 4756Fixed two problems in the ToString operator. If the length parameter was 4757zero, an incorrect string object was created and the value of the input 4758length parameter was inadvertently changed from zero to Ones. 4759 4760Fixed a problem where the optional ResourceSource string in the ExtendedIRQ 4761resource macro was ignored. 4762 4763Simplified the interfaces to the internal division functions, reducing code 4764size and complexity. 4765 4766Code and Data Size: Current and previous core subsystem library sizes are 4767shown below. These are the code and data sizes for the acpica.lib produced 4768by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4769any ACPI driver or OSPM code. The debug version of the code includes the 4770debug output trace mechanism and has a much larger code and data size. Note 4771that these values will vary depending on the efficiency of the compiler and 4772the compiler options used during generation. 4773 4774 Previous Release: 4775 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 4776 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 4777 Current Release: 4778 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 4779 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 4780 4781 47822) iASL Compiler/Disassembler: 4783 4784Implemented support for the ACPI 3.0 Timer operator. 4785 4786Fixed a problem where the Default() operator was inadvertently ignored in a 4787Switch/Case block. This was a problem in the translation of the Switch 4788statement to If...Else pairs. 4789 4790Added support to allow a standalone Return operator, with no parentheses (or 4791operands). 4792 4793Fixed a problem with code generation for the ElseIf operator where the 4794translated Else...If parse tree was improperly constructed leading to the 4795loss of some code. 4796 4797---------------------------------------- 479822 September 2004. Summary of changes for version 20040922: 4799 48001) ACPI CA Core Subsystem: 4801 4802Fixed a problem with the implementation of the LNot() operator where "Ones" 4803was not returned for the TRUE case. Changed the code to return Ones instead 4804of (!Arg) which was usually 1. This change affects iASL constant folding for 4805this operator also. 4806 4807Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not 4808initialized properly -- Now zero the entire buffer in this case where the 4809buffer already exists. 4810 4811Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 4812Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 4813related code considerably. This will require changes/updates to all OS 4814interface layers (OSLs.) 4815 4816Implemented a new external interface, AcpiInstallExceptionHandler, to allow 4817a system exception handler to be installed. This handler is invoked upon any 4818run-time exception that occurs during control method execution. 4819 4820Added support for the DSDT in AcpiTbFindTable. This allows the 4821DataTableRegion() operator to access the local copy of the DSDT. 4822 4823Code and Data Size: Current and previous core subsystem library sizes are 4824shown below. These are the code and data sizes for the acpica.lib produced 4825by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4826any ACPI driver or OSPM code. The debug version of the code includes the 4827debug output trace mechanism and has a much larger code and data size. Note 4828that these values will vary depending on the efficiency of the compiler and 4829the compiler options used during generation. 4830 4831 Previous Release: 4832 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 4833 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 4834 Current Release: 4835 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 4836 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 4837 4838 48392) iASL Compiler/Disassembler: 4840 4841Fixed a problem with constant folding and the LNot operator. LNot was 4842returning 1 in the TRUE case, not Ones as per the ACPI specification. This 4843could result in the generation of an incorrect folded/reduced constant. 4844 4845End-Of-File is now allowed within a "//"-style comment. A parse error no 4846longer occurs if such a comment is at the very end of the input ASL source 4847file. 4848 4849Implemented the "-r" option to override the Revision in the table header. 4850The initial use of this option will be to simplify the evaluation of the AML 4851interpreter by allowing a single ASL source module to be compiled for either 485232-bit or 64-bit integers. 4853 4854 4855---------------------------------------- 485627 August 2004. Summary of changes for version 20040827: 4857 48581) ACPI CA Core Subsystem: 4859 4860- Implemented support for implicit object conversion in the non-numeric 4861logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and 4862LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 4863the second operand is implicitly converted on the fly to match the type of 4864the first operand. For example: 4865 4866 LEqual (Source1, Source2) 4867 4868Source1 and Source2 must each evaluate to an integer, a string, or a buffer. 4869The data type of Source1 dictates the required type of Source2. Source2 is 4870implicitly converted if necessary to match the type of Source1. 4871 4872- Updated and corrected the behavior of the string conversion support. The 4873rules concerning conversion of buffers to strings (according to the ACPI 4874specification) are as follows: 4875 4876ToDecimalString - explicit byte-wise conversion of buffer to string of 4877decimal values (0-255) separated by commas. ToHexString - explicit byte-wise 4878conversion of buffer to string of hex values (0-FF) separated by commas. 4879ToString - explicit byte-wise conversion of buffer to string. Byte-by-byte 4880copy with no transform except NULL terminated. Any other implicit buffer-to- 4881string conversion - byte-wise conversion of buffer to string of hex values 4882(0-FF) separated by spaces. 4883 4884- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 4885 4886- Fixed a problem in AcpiNsGetPathnameLength where the returned length was 4887one byte too short in the case of a node in the root scope. This could 4888cause a fault during debug output. 4889 4890- Code and Data Size: Current and previous core subsystem library sizes are 4891shown below. These are the code and data sizes for the acpica.lib produced 4892by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4893any ACPI driver or OSPM code. The debug version of the code includes the 4894debug output trace mechanism and has a much larger code and data size. Note 4895that these values will vary depending on the efficiency of the compiler and 4896the compiler options used during generation. 4897 4898 Previous Release: 4899 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 4900 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 4901 Current Release: 4902 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 4903 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 4904 4905 49062) iASL Compiler/Disassembler: 4907 4908- Fixed a Linux generation error. 4909 4910 4911---------------------------------------- 491216 August 2004. Summary of changes for version 20040816: 4913 49141) ACPI CA Core Subsystem: 4915 4916Designed and implemented support within the AML interpreter for the so- 4917called "implicit return". This support returns the result of the last ASL 4918operation within a control method, in the absence of an explicit Return() 4919operator. A few machines depend on this behavior, even though it is not 4920explicitly supported by the ASL language. It is optional support that can 4921be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 4922 4923Removed support for the PCI_Config address space from the internal low level 4924hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 4925support was not used internally, and would not work correctly anyway because 4926the PCI bus number and segment number were not supported. There are 4927separate interfaces for PCI configuration space access because of the unique 4928interface. 4929 4930Code and Data Size: Current and previous core subsystem library sizes are 4931shown below. These are the code and data sizes for the acpica.lib produced 4932by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4933any ACPI driver or OSPM code. The debug version of the code includes the 4934debug output trace mechanism and has a much larger code and data size. Note 4935that these values will vary depending on the efficiency of the compiler and 4936the compiler options used during generation. 4937 4938 Previous Release: 4939 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 4940 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 4941 Current Release: 4942 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 4943 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 4944 4945 49462) iASL Compiler/Disassembler: 4947 4948Fixed a problem where constants in ASL expressions at the root level (not 4949within a control method) could be inadvertently truncated during code 4950generation. This problem was introduced in the 20040715 release. 4951 4952 4953---------------------------------------- 495415 July 2004. Summary of changes for version 20040715: 4955 49561) ACPI CA Core Subsystem: 4957 4958Restructured the internal HW GPE interfaces to pass/track the current state 4959of interrupts (enabled/disabled) in order to avoid possible deadlock and 4960increase flexibility of the interfaces. 4961 4962Implemented a "lexicographical compare" for String and Buffer objects within 4963the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -- 4964as per further clarification to the ACPI specification. Behavior is similar 4965to C library "strcmp". 4966 4967Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 4968external function. In the 32-bit non-debug case, the stack use has been 4969reduced from 168 bytes to 32 bytes. 4970 4971Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack, 4972whose purpose is to allow the AML interpreter to forgive certain bad AML 4973constructs. Default setting is FALSE. 4974 4975Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO 4976support code. If enabled, it allows field access to go beyond the end of a 4977region definition if the field is within the region length rounded up to the 4978next access width boundary (a common coding error.) 4979 4980Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 4981ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, these 4982symbols are lowercased by the latest version of the AcpiSrc tool. 4983 4984The prototypes for the PCI interfaces in acpiosxf.h have been updated to 4985rename "Register" to simply "Reg" to prevent certain compilers from 4986complaining. 4987 4988Code and Data Size: Current and previous core subsystem library sizes are 4989shown below. These are the code and data sizes for the acpica.lib produced 4990by the Microsoft Visual C++ 6.0 compiler, and these values do not include 4991any ACPI driver or OSPM code. The debug version of the code includes the 4992debug output trace mechanism and has a much larger code and data size. Note 4993that these values will vary depending on the efficiency of the compiler and 4994the compiler options used during generation. 4995 4996 Previous Release: 4997 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 4998 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 4999 Current Release: 5000 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 5001 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 5002 5003 50042) iASL Compiler/Disassembler: 5005 5006Implemented full support for Package objects within the Case() operator. 5007Note: The Break() operator is currently not supported within Case blocks 5008(TermLists) as there is some question about backward compatibility with ACPI 50091.0 interpreters. 5010 5011 5012Fixed a problem where complex terms were not supported properly within the 5013Switch() operator. 5014 5015Eliminated extraneous warning for compiler-emitted reserved names of the 5016form "_T_x". (Used in Switch/Case operators.) 5017 5018Eliminated optimization messages for "_T_x" objects and small constants 5019within the DefinitionBlock operator. 5020 5021 5022---------------------------------------- 502315 June 2004. Summary of changes for version 20040615: 5024 50251) ACPI CA Core Subsystem: 5026 5027Implemented support for Buffer and String objects (as per ACPI 2.0) for the 5028following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 5029LLessEqual. 5030 5031All directory names in the entire source package are lower case, as they 5032were in earlier releases. 5033 5034Implemented "Disassemble" command in the AML debugger that will disassemble 5035a single control method. 5036 5037Code and Data Size: Current and previous core subsystem library sizes are 5038shown below. These are the code and data sizes for the acpica.lib produced 5039by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5040any ACPI driver or OSPM code. The debug version of the code includes the 5041debug output trace mechanism and has a much larger code and data size. Note 5042that these values will vary depending on the efficiency of the compiler and 5043the compiler options used during generation. 5044 5045 Previous Release: 5046 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 5047 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 5048 5049 Current Release: 5050 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 5051 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 5052 5053 50542) iASL Compiler/Disassembler: 5055 5056Implemented support for Buffer and String objects (as per ACPI 2.0) for the 5057following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 5058LLessEqual. 5059 5060All directory names in the entire source package are lower case, as they 5061were in earlier releases. 5062 5063Fixed a fault when using the -g or -d<nofilename> options if the FADT was 5064not found. 5065 5066Fixed an issue with the Windows version of the compiler where later versions 5067of Windows place the FADT in the registry under the name "FADT" and not 5068"FACP" as earlier versions did. This applies when using the -g or - 5069d<nofilename> options. The compiler now looks for both strings as 5070necessary. 5071 5072Fixed a problem with compiler namepath optimization where a namepath within 5073the Scope() operator could not be optimized if the namepath was a subpath of 5074the current scope path. 5075 5076---------------------------------------- 507727 May 2004. Summary of changes for version 20040527: 5078 50791) ACPI CA Core Subsystem: 5080 5081Completed a new design and implementation for EBDA (Extended BIOS Data Area) 5082support in the RSDP scan code. The original code improperly scanned for the 5083EBDA by simply scanning from memory location 0 to 0x400. The correct method 5084is to first obtain the EBDA pointer from within the BIOS data area, then 5085scan 1K of memory starting at the EBDA pointer. There appear to be few if 5086any machines that place the RSDP in the EBDA, however. 5087 5088Integrated a fix for a possible fault during evaluation of BufferField 5089arguments. Obsolete code that was causing the problem was removed. 5090 5091Found and fixed a problem in the Field Support Code where data could be 5092corrupted on a bit field read that starts on an aligned boundary but does 5093not end on an aligned boundary. Merged the read/write "datum length" 5094calculation code into a common procedure. 5095 5096Rolled in a couple of changes to the FreeBSD-specific header. 5097 5098 5099Code and Data Size: Current and previous core subsystem library sizes are 5100shown below. These are the code and data sizes for the acpica.lib produced 5101by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5102any ACPI driver or OSPM code. The debug version of the code includes the 5103debug output trace mechanism and has a much larger code and data size. Note 5104that these values will vary depending on the efficiency of the compiler and 5105the compiler options used during generation. 5106 5107 Previous Release: 5108 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 5109 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 5110 Current Release: 5111 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 5112 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 5113 5114 51152) iASL Compiler/Disassembler: 5116 5117Fixed a generation warning produced by some overly-verbose compilers for a 511864-bit constant. 5119 5120---------------------------------------- 512114 May 2004. Summary of changes for version 20040514: 5122 51231) ACPI CA Core Subsystem: 5124 5125Fixed a problem where hardware GPE enable bits sometimes not set properly 5126during and after GPE method execution. Result of 04/27 changes. 5127 5128Removed extra "clear all GPEs" when sleeping/waking. 5129 5130Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 5131AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to 5132the new AcpiEv* calls as appropriate. 5133 5134ACPI_OS_NAME was removed from the OS-specific headers. The default name is 5135now "Microsoft Windows NT" for maximum compatibility. However this can be 5136changed by modifying the acconfig.h file. 5137 5138Allow a single invocation of AcpiInstallNotifyHandler for a handler that 5139traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 5140 5141Run _INI methods on ThermalZone objects. This is against the ACPI 5142specification, but there is apparently ASL code in the field that has these 5143_INI methods, and apparently "other" AML interpreters execute them. 5144 5145Performed a full 16/32/64 bit lint that resulted in some small changes. 5146 5147Added a sleep simulation command to the AML debugger to test sleep code. 5148 5149Code and Data Size: Current and previous core subsystem library sizes are 5150shown below. These are the code and data sizes for the acpica.lib produced 5151by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5152any ACPI driver or OSPM code. The debug version of the code includes the 5153debug output trace mechanism and has a much larger code and data size. Note 5154that these values will vary depending on the efficiency of the compiler and 5155the compiler options used during generation. 5156 5157 Previous Release: 5158 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 5159 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 5160 Current Release: 5161 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 5162 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 5163 5164---------------------------------------- 516527 April 2004. Summary of changes for version 20040427: 5166 51671) ACPI CA Core Subsystem: 5168 5169Completed a major overhaul of the GPE handling within ACPI CA. There are 5170now three types of GPEs: wake-only, runtime-only, and combination wake/run. 5171The only GPEs allowed to be combination wake/run are for button-style 5172devices such as a control-method power button, control-method sleep button, 5173or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are not 5174referenced by any _PRW methods are marked for "runtime" and hardware 5175enabled. Any GPE that is referenced by a _PRW method is marked for "wake" 5176(and disabled at runtime). However, at sleep time, only those GPEs that 5177have been specifically enabled for wake via the AcpiEnableGpe interface will 5178actually be hardware enabled. 5179 5180A new external interface has been added, AcpiSetGpeType(), that is meant to 5181be used by device drivers to force a GPE to a particular type. It will be 5182especially useful for the drivers for the button devices mentioned above. 5183 5184Completed restructuring of the ACPI CA initialization sequence so that 5185default operation region handlers are installed before GPEs are initialized 5186and the _PRW methods are executed. This will prevent errors when the _PRW 5187methods attempt to access system memory or I/O space. 5188 5189GPE enable/disable no longer reads the GPE enable register. We now keep the 5190enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 5191thus no longer depend on the hardware to maintain these bits. 5192 5193Always clear the wake status and fixed/GPE status bits before sleep, even 5194for state S5. 5195 5196Improved the AML debugger output for displaying the GPE blocks and their 5197current status. 5198 5199Added new strings for the _OSI method, of the form "Windows 2001 SPx" where 5200x = 0,1,2,3,4. 5201 5202Fixed a problem where the physical address was incorrectly calculated when 5203the Load() operator was used to directly load from an Operation Region (vs. 5204loading from a Field object.) Also added check for minimum table length for 5205this case. 5206 5207Fix for multiple mutex acquisition. Restore original thread SyncLevel on 5208mutex release. 5209 5210Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 5211consistency with the other fields returned. 5212 5213Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 5214structure for each GPE in the system, so the size of this structure is 5215important. 5216 5217CPU stack requirement reduction: Cleaned up the method execution and object 5218evaluation paths so that now a parameter structure is passed, instead of 5219copying the various method parameters over and over again. 5220 5221In evregion.c: Correctly exit and reenter the interpreter region if and 5222only if dispatching an operation region request to a user-installed handler. 5223Do not exit/reenter when dispatching to a default handler (e.g., default 5224system memory or I/O handlers) 5225 5226 5227Notes for updating drivers for the new GPE support. The following changes 5228must be made to ACPI-related device drivers that are attached to one or more 5229GPEs: (This information will be added to the ACPI CA Programmer Reference.) 5230 52311) AcpiInstallGpeHandler no longer automatically enables the GPE, you must 5232explicitly call AcpiEnableGpe. 52332) There is a new interface called AcpiSetGpeType. This should be called 5234before enabling the GPE. Also, this interface will automatically disable 5235the GPE if it is currently enabled. 52363) AcpiEnableGpe no longer supports a GPE type flag. 5237 5238Specific drivers that must be changed: 52391) EC driver: 5240 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 5241AeGpeHandler, NULL); 5242 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 5243 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 5244 52452) Button Drivers (Power, Lid, Sleep): 5246Run _PRW method under parent device 5247If _PRW exists: /* This is a control-method button */ 5248 Extract GPE number and possibly GpeDevice 5249 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 5250 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 5251 5252For all other devices that have _PRWs, we automatically set the GPE type to 5253ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. This 5254must be done on a selective basis, usually requiring some kind of user app 5255to allow the user to pick the wake devices. 5256 5257 5258Code and Data Size: Current and previous core subsystem library sizes are 5259shown below. These are the code and data sizes for the acpica.lib produced 5260by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5261any ACPI driver or OSPM code. The debug version of the code includes the 5262debug output trace mechanism and has a much larger code and data size. Note 5263that these values will vary depending on the efficiency of the compiler and 5264the compiler options used during generation. 5265 5266 Previous Release: 5267 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 5268 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 5269 Current Release: 5270 5271 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 5272 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 5273 5274 5275 5276---------------------------------------- 527702 April 2004. Summary of changes for version 20040402: 5278 52791) ACPI CA Core Subsystem: 5280 5281Fixed an interpreter problem where an indirect store through an ArgX 5282parameter was incorrectly applying the "implicit conversion rules" during 5283the store. From the ACPI specification: "If the target is a method local or 5284argument (LocalX or ArgX), no conversion is performed and the result is 5285stored directly to the target". The new behavior is to disable implicit 5286conversion during ALL stores to an ArgX. 5287 5288Changed the behavior of the _PRW method scan to ignore any and all errors 5289returned by a given _PRW. This prevents the scan from aborting from the 5290failure of any single _PRW. 5291 5292Moved the runtime configuration parameters from the global init procedure to 5293static variables in acglobal.h. This will allow the host to override the 5294default values easily. 5295 5296Code and Data Size: Current and previous core subsystem library sizes are 5297shown below. These are the code and data sizes for the acpica.lib produced 5298by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5299any ACPI driver or OSPM code. The debug version of the code includes the 5300debug output trace mechanism and has a much larger code and data size. Note 5301that these values will vary depending on the efficiency of the compiler and 5302the compiler options used during generation. 5303 5304 Previous Release: 5305 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 5306 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 5307 Current Release: 5308 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 5309 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 5310 5311 53122) iASL Compiler/Disassembler: 5313 5314iASL now fully disassembles SSDTs. However, External() statements are not 5315generated automatically for unresolved symbols at this time. This is a 5316planned feature for future implementation. 5317 5318Fixed a scoping problem in the disassembler that occurs when the type of the 5319target of a Scope() operator is overridden. This problem caused an 5320incorrectly nested internal namespace to be constructed. 5321 5322Any warnings or errors that are emitted during disassembly are now commented 5323out automatically so that the resulting file can be recompiled without any 5324hand editing. 5325 5326---------------------------------------- 532726 March 2004. Summary of changes for version 20040326: 5328 53291) ACPI CA Core Subsystem: 5330 5331Implemented support for "wake" GPEs via interaction between GPEs and the 5332_PRW methods. Every GPE that is pointed to by one or more _PRWs is 5333identified as a WAKE GPE and by default will no longer be enabled at 5334runtime. Previously, we were blindly enabling all GPEs with a corresponding 5335_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. We 5336believe this has been the cause of thousands of "spurious" GPEs on some 5337systems. 5338 5339This new GPE behavior is can be reverted to the original behavior (enable 5340ALL GPEs at runtime) via a runtime flag. 5341 5342Fixed a problem where aliased control methods could not access objects 5343properly. The proper scope within the namespace was not initialized 5344(transferred to the target of the aliased method) before executing the 5345target method. 5346 5347Fixed a potential race condition on internal object deletion on the return 5348object in AcpiEvaluateObject. 5349 5350Integrated a fix for resource descriptors where both _MEM and _MTP were 5351being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 5352wide, 0x0F instead of 0x03.) 5353 5354Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a 5355fault in some cases. 5356 5357Updated Notify() values for debug statements in evmisc.c 5358 5359Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 5360 5361Code and Data Size: Current and previous core subsystem library sizes are 5362shown below. These are the code and data sizes for the acpica.lib produced 5363by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5364any ACPI driver or OSPM code. The debug version of the code includes the 5365debug output trace mechanism and has a much larger code and data size. Note 5366that these values will vary depending on the efficiency of the compiler and 5367the compiler options used during generation. 5368 5369 Previous Release: 5370 5371 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 5372 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 5373 Current Release: 5374 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 5375 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 5376 5377---------------------------------------- 537811 March 2004. Summary of changes for version 20040311: 5379 53801) ACPI CA Core Subsystem: 5381 5382Fixed a problem where errors occurring during the parse phase of control 5383method execution did not abort cleanly. For example, objects created and 5384installed in the namespace were not deleted. This caused all subsequent 5385invocations of the method to return the AE_ALREADY_EXISTS exception. 5386 5387Implemented a mechanism to force a control method to "Serialized" execution 5388if the method attempts to create namespace objects. (The root of the 5389AE_ALREADY_EXISTS problem.) 5390 5391Implemented support for the predefined _OSI "internal" control method. 5392Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and 5393"Windows 2001.1", and can be easily upgraded for new strings as necessary. 5394This feature will allow "other" operating systems to execute the fully 5395tested, "Windows" code path through the ASL code 5396 5397Global Lock Support: Now allows multiple acquires and releases with any 5398internal thread. Removed concept of "owning thread" for this special mutex. 5399 5400Fixed two functions that were inappropriately declaring large objects on the 5401CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage during 5402method execution considerably. 5403 5404Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 5405S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 5406 5407Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 5408defined on the machine. 5409 5410Implemented two runtime options: One to force all control method execution 5411to "Serialized" to mimic Windows behavior, another to disable _OSI support 5412if it causes problems on a given machine. 5413 5414Code and Data Size: Current and previous core subsystem library sizes are 5415shown below. These are the code and data sizes for the acpica.lib produced 5416by the Microsoft Visual C++ 6.0 compiler, and these values do not include 5417any ACPI driver or OSPM code. The debug version of the code includes the 5418debug output trace mechanism and has a much larger code and data size. Note 5419that these values will vary depending on the efficiency of the compiler and 5420the compiler options used during generation. 5421 5422 Previous Release: 5423 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 5424 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 5425 Current Release: 5426 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 5427 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 5428 54292) iASL Compiler/Disassembler: 5430 5431Fixed an array size problem for FreeBSD that would cause the compiler to 5432fault. 5433 5434---------------------------------------- 543520 February 2004. Summary of changes for version 20040220: 5436 5437 54381) ACPI CA Core Subsystem: 5439 5440Implemented execution of _SxD methods for Device objects in the 5441GetObjectInfo interface. 5442 5443Fixed calls to _SST method to pass the correct arguments. 5444 5445Added a call to _SST on wake to restore to "working" state. 5446 5447Check for End-Of-Buffer failure case in the WalkResources interface. 5448 5449Integrated fix for 64-bit alignment issue in acglobal.h by moving two 5450structures to the beginning of the file. 5451 5452After wake, clear GPE status register(s) before enabling GPEs. 5453 5454After wake, clear/enable power button. (Perhaps we should clear/enable all 5455fixed events upon wake.) 5456 5457Fixed a couple of possible memory leaks in the Namespace manager. 5458 5459Integrated latest acnetbsd.h file. 5460 5461---------------------------------------- 546211 February 2004. Summary of changes for version 20040211: 5463 5464 54651) ACPI CA Core Subsystem: 5466 5467Completed investigation and implementation of the call-by-reference 5468mechanism for control method arguments. 5469 5470Fixed a problem where a store of an object into an indexed package could 5471fail if the store occurs within a different method than the method that 5472created the package. 5473 5474Fixed a problem where the ToDecimal operator could return incorrect results. 5475 5476Fixed a problem where the CopyObject operator could fail on some of the more 5477obscure objects (e.g., Reference objects.) 5478 5479Improved the output of the Debug object to display buffer, package, and 5480index objects. 5481 5482Fixed a problem where constructs of the form "RefOf (ArgX)" did not return 5483the expected result. 5484 5485Added permanent ACPI_REPORT_ERROR macros for all instances of the 5486ACPI_AML_INTERNAL exception. 5487 5488Integrated latest version of acfreebsd.h 5489 5490---------------------------------------- 549116 January 2004. Summary of changes for version 20040116: 5492 5493The purpose of this release is primarily to update the copyright years in 5494each module, thus causing a huge number of diffs. There are a few small 5495functional changes, however. 5496 54971) ACPI CA Core Subsystem: 5498 5499Improved error messages when there is a problem finding one or more of the 5500required base ACPI tables 5501 5502Reintroduced the definition of APIC_HEADER in actbl.h 5503 5504Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 5505 5506Removed extraneous reference to NewObj in dsmthdat.c 5507 55082) iASL compiler 5509 5510Fixed a problem introduced in December that disabled the correct disassembly 5511of Resource Templates 5512 5513 5514---------------------------------------- 551503 December 2003. Summary of changes for version 20031203: 5516 55171) ACPI CA Core Subsystem: 5518 5519Changed the initialization of Operation Regions during subsystem 5520init to perform two entire walks of the ACPI namespace; The first 5521to initialize the regions themselves, the second to execute the 5522_REG methods. This fixed some interdependencies across _REG 5523methods found on some machines. 5524 5525Fixed a problem where a Store(Local0, Local1) could simply update 5526the object reference count, and not create a new copy of the 5527object if the Local1 is uninitialized. 5528 5529Implemented support for the _SST reserved method during sleep 5530transitions. 5531 5532Implemented support to clear the SLP_TYP and SLP_EN bits when 5533waking up, this is apparently required by some machines. 5534 5535When sleeping, clear the wake status only if SleepState is not S5. 5536 5537Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 5538pointer arithmetic advanced a string pointer too far. 5539 5540Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 5541could be returned if the requested table has not been loaded. 5542 5543Within the support for IRQ resources, restructured the handling of 5544the active and edge/level bits. 5545 5546Fixed a few problems in AcpiPsxExecute() where memory could be 5547leaked under certain error conditions. 5548 5549Improved error messages for the cases where the ACPI mode could 5550not be entered. 5551 5552Code and Data Size: Current and previous core subsystem library 5553sizes are shown below. These are the code and data sizes for the 5554acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 5555these values do not include any ACPI driver or OSPM code. The 5556debug version of the code includes the debug output trace 5557mechanism and has a much larger code and data size. Note that 5558these values will vary depending on the efficiency of the compiler 5559and the compiler options used during generation. 5560 5561 Previous Release (20031029): 5562 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 5563 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 5564 Current Release: 5565 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 5566 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 5567 55682) iASL Compiler/Disassembler: 5569 5570Implemented a fix for the iASL disassembler where a bad index was 5571generated. This was most noticeable on 64-bit platforms 5572 5573 5574---------------------------------------- 557529 October 2003. Summary of changes for version 20031029: 5576 55771) ACPI CA Core Subsystem: 5578 5579 5580Fixed a problem where a level-triggered GPE with an associated 5581_Lxx control method was incorrectly cleared twice. 5582 5583Fixed a problem with the Field support code where an access can 5584occur beyond the end-of-region if the field is non-aligned but 5585extends to the very end of the parent region (resulted in an 5586AE_AML_REGION_LIMIT exception.) 5587 5588Fixed a problem with ACPI Fixed Events where an RT Clock handler 5589would not get invoked on an RTC event. The RTC event bitmasks for 5590the PM1 registers were not being initialized properly. 5591 5592Implemented support for executing _STA and _INI methods for 5593Processor objects. Although this is currently not part of the 5594ACPI specification, there is existing ASL code that depends on the 5595init-time execution of these methods. 5596 5597Implemented and deployed a GetDescriptorName function to decode 5598the various types of internal descriptors. Guards against null 5599descriptors during debug output also. 5600 5601Implemented and deployed a GetNodeName function to extract the 4- 5602character namespace node name. This function simplifies the debug 5603and error output, as well as guarding against null pointers during 5604output. 5605 5606Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 5607simplify the debug and error output of 64-bit integers. This 5608macro replaces the HIDWORD and LODWORD macros for dumping these 5609integers. 5610 5611Updated the implementation of the Stall() operator to only call 5612AcpiOsStall(), and also return an error if the operand is larger 5613than 255. This preserves the required behavior of not 5614relinquishing the processor, as would happen if AcpiOsSleep() was 5615called for "long stalls". 5616 5617Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 5618initialized are now treated as NOOPs. 5619 5620Cleaned up a handful of warnings during 64-bit generation. 5621 5622Fixed a reported error where and incorrect GPE number was passed 5623to the GPE dispatch handler. This value is only used for error 5624output, however. Used this opportunity to clean up and streamline 5625the GPE dispatch code. 5626 5627Code and Data Size: Current and previous core subsystem library 5628sizes are shown below. These are the code and data sizes for the 5629acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 5630these values do not include any ACPI driver or OSPM code. The 5631 5632debug version of the code includes the debug output trace 5633mechanism and has a much larger code and data size. Note that 5634these values will vary depending on the efficiency of the compiler 5635and the compiler options used during generation. 5636 5637 Previous Release (20031002): 5638 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 5639 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 5640 Current Release: 5641 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 5642 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 5643 5644 56452) iASL Compiler/Disassembler: 5646 5647Updated the iASL compiler to return an error if the operand to the 5648Stall() operator is larger than 255. 5649 5650 5651---------------------------------------- 565202 October 2003. Summary of changes for version 20031002: 5653 5654 56551) ACPI CA Core Subsystem: 5656 5657Fixed a problem with Index Fields where the index was not 5658incremented for fields that require multiple writes to the 5659index/data registers (Fields that are wider than the data 5660register.) 5661 5662Fixed a problem with all Field objects where a write could go 5663beyond the end-of-field if the field was larger than the access 5664granularity and therefore required multiple writes to complete the 5665request. An extra write beyond the end of the field could happen 5666inadvertently. 5667 5668Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 5669would incorrectly be returned if the width of the Data Register 5670was larger than the specified field access width. 5671 5672Completed fixes for LoadTable() and Unload() and verified their 5673operation. Implemented full support for the "DdbHandle" object 5674throughout the ACPI CA subsystem. 5675 5676Implemented full support for the MADT and ECDT tables in the ACPI 5677CA header files. Even though these tables are not directly 5678consumed by ACPI CA, the header definitions are useful for ACPI 5679device drivers. 5680 5681Integrated resource descriptor fixes posted to the Linux ACPI 5682list. This included checks for minimum descriptor length, and 5683support for trailing NULL strings within descriptors that have 5684optional string elements. 5685 5686Code and Data Size: Current and previous core subsystem library 5687sizes are shown below. These are the code and data sizes for the 5688acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 5689these values do not include any ACPI driver or OSPM code. The 5690debug version of the code includes the debug output trace 5691mechanism and has a much larger code and data size. Note that 5692these values will vary depending on the efficiency of the compiler 5693and the compiler options used during generation. 5694 5695 Previous Release (20030918): 5696 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 5697 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 5698 Current Release: 5699 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 5700 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 5701 5702 57032) iASL Compiler: 5704 5705Implemented detection of non-ASCII characters within the input 5706source ASL file. This catches attempts to compile binary (AML) 5707files early in the compile, with an informative error message. 5708 5709Fixed a problem where the disassembler would fault if the output 5710filename could not be generated or if the output file could not be 5711opened. 5712 5713---------------------------------------- 571418 September 2003. Summary of changes for version 20030918: 5715 5716 57171) ACPI CA Core Subsystem: 5718 5719Found and fixed a longstanding problem with the late execution of 5720the various deferred AML opcodes (such as Operation Regions, 5721Buffer Fields, Buffers, and Packages). If the name string 5722specified for the name of the new object placed the object in a 5723scope other than the current scope, the initialization/execution 5724of the opcode failed. The solution to this problem was to 5725implement a mechanism where the late execution of such opcodes 5726does not attempt to lookup/create the name a second time in an 5727incorrect scope. This fixes the "region size computed 5728incorrectly" problem. 5729 5730Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 5731Global Lock AE_BAD_PARAMETER error. 5732 5733Fixed several 64-bit issues with prototypes, casting and data 5734types. 5735 5736Removed duplicate prototype from acdisasm.h 5737 5738Fixed an issue involving EC Operation Region Detach (Shaohua Li) 5739 5740Code and Data Size: Current and previous core subsystem library 5741sizes are shown below. These are the code and data sizes for the 5742acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 5743these values do not include any ACPI driver or OSPM code. The 5744debug version of the code includes the debug output trace 5745mechanism and has a much larger code and data size. Note that 5746these values will vary depending on the efficiency of the compiler 5747and the compiler options used during generation. 5748 5749 Previous Release: 5750 5751 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 5752 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 5753 Current Release: 5754 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 5755 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 5756 5757 57582) Linux: 5759 5760Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 5761correct sleep time in seconds. 5762 5763---------------------------------------- 576414 July 2003. Summary of changes for version 20030619: 5765 57661) ACPI CA Core Subsystem: 5767 5768Parse SSDTs in order discovered, as opposed to reverse order 5769(Hrvoje Habjanic) 5770 5771Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 5772Klausner, 5773 Nate Lawson) 5774 5775 57762) Linux: 5777 5778Dynamically allocate SDT list (suggested by Andi Kleen) 5779 5780proc function return value cleanups (Andi Kleen) 5781 5782Correctly handle NMI watchdog during long stalls (Andrew Morton) 5783 5784Make it so acpismp=force works (reported by Andrew Morton) 5785 5786 5787---------------------------------------- 578819 June 2003. Summary of changes for version 20030619: 5789 57901) ACPI CA Core Subsystem: 5791 5792Fix To/FromBCD, eliminating the need for an arch-specific #define. 5793 5794Do not acquire a semaphore in the S5 shutdown path. 5795 5796Fix ex_digits_needed for 0. (Takayoshi Kochi) 5797 5798Fix sleep/stall code reversal. (Andi Kleen) 5799 5800Revert a change having to do with control method calling 5801semantics. 5802 58032) Linux: 5804 5805acpiphp update (Takayoshi Kochi) 5806 5807Export acpi_disabled for sonypi (Stelian Pop) 5808 5809Mention acpismp=force in config help 5810 5811Re-add acpitable.c and acpismp=force. This improves backwards 5812 5813compatibility and also cleans up the code to a significant degree. 5814 5815Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 5816 5817---------------------------------------- 581822 May 2003. Summary of changes for version 20030522: 5819 58201) ACPI CA Core Subsystem: 5821 5822Found and fixed a reported problem where an AE_NOT_FOUND error 5823occurred occasionally during _BST evaluation. This turned out to 5824be an Owner ID allocation issue where a called method did not get 5825a new ID assigned to it. Eventually, (after 64k calls), the Owner 5826ID UINT16 would wraparound so that the ID would be the same as the 5827caller's and the called method would delete the caller's 5828namespace. 5829 5830Implemented extended error reporting for control methods that are 5831aborted due to a run-time exception. Output includes the exact 5832AML instruction that caused the method abort, a dump of the method 5833locals and arguments at the time of the abort, and a trace of all 5834nested control method calls. 5835 5836Modified the interpreter to allow the creation of buffers of zero 5837length from the AML code. Implemented new code to ensure that no 5838attempt is made to actually allocate a memory buffer (of length 5839zero) - instead, a simple buffer object with a NULL buffer pointer 5840and length zero is created. A warning is no longer issued when 5841the AML attempts to create a zero-length buffer. 5842 5843Implemented a workaround for the "leading asterisk issue" in 5844_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 5845asterisk is automatically removed if present in any HID, UID, or 5846CID strings. The iASL compiler will still flag this asterisk as 5847an error, however. 5848 5849Implemented full support for _CID methods that return a package of 5850multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 5851now additionally returns a device _CID list if present. This 5852required a change to the external interface in order to pass an 5853ACPI_BUFFER object as a parameter since the _CID list is of 5854variable length. 5855 5856Fixed a problem with the new AE_SAME_HANDLER exception where 5857handler initialization code did not know about this exception. 5858 5859Code and Data Size: Current and previous core subsystem library 5860sizes are shown below. These are the code and data sizes for the 5861acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 5862these values do not include any ACPI driver or OSPM code. The 5863debug version of the code includes the debug output trace 5864mechanism and has a much larger code and data size. Note that 5865these values will vary depending on the efficiency of the compiler 5866and the compiler options used during generation. 5867 5868 Previous Release (20030509): 5869 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 5870 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 5871 Current Release: 5872 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 5873 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 5874 5875 58762) Linux: 5877 5878Fixed a bug in which we would reinitialize the ACPI interrupt 5879after it was already working, thus disabling all ACPI and the IRQs 5880for any other device sharing the interrupt. (Thanks to Stian 5881Jordet) 5882 5883Toshiba driver update (John Belmonte) 5884 5885Return only 0 or 1 for our interrupt handler status (Andrew 5886Morton) 5887 5888 58893) iASL Compiler: 5890 5891Fixed a reported problem where multiple (nested) ElseIf() 5892statements were not handled correctly by the compiler, resulting 5893in incorrect warnings and incorrect AML code. This was a problem 5894in both the ASL parser and the code generator. 5895 5896 58974) Documentation: 5898 5899Added changes to existing interfaces, new exception codes, and new 5900text concerning reference count object management versus garbage 5901collection. 5902 5903---------------------------------------- 590409 May 2003. Summary of changes for version 20030509. 5905 5906 59071) ACPI CA Core Subsystem: 5908 5909Changed the subsystem initialization sequence to hold off 5910installation of address space handlers until the hardware has been 5911initialized and the system has entered ACPI mode. This is because 5912the installation of space handlers can cause _REG methods to be 5913run. Previously, the _REG methods could potentially be run before 5914ACPI mode was enabled. 5915 5916Fixed some memory leak issues related to address space handler and 5917notify handler installation. There were some problems with the 5918reference count mechanism caused by the fact that the handler 5919objects are shared across several namespace objects. 5920 5921Fixed a reported problem where reference counts within the 5922namespace were not properly updated when named objects created by 5923method execution were deleted. 5924 5925Fixed a reported problem where multiple SSDTs caused a deletion 5926issue during subsystem termination. Restructured the table data 5927structures to simplify the linked lists and the related code. 5928 5929Fixed a problem where the table ID associated with secondary 5930tables (SSDTs) was not being propagated into the namespace objects 5931created by those tables. This would only present a problem for 5932tables that are unloaded at run-time, however. 5933 5934Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 5935type as the length parameter (instead of UINT32). 5936 5937Solved a long-standing problem where an ALREADY_EXISTS error 5938appears on various systems. This problem could happen when there 5939are multiple PCI_Config operation regions under a single PCI root 5940bus. This doesn't happen very frequently, but there are some 5941systems that do this in the ASL. 5942 5943Fixed a reported problem where the internal DeleteNode function 5944was incorrectly handling the case where a namespace node was the 5945first in the parent's child list, and had additional peers (not 5946the only child, but first in the list of children.) 5947 5948Code and Data Size: Current core subsystem library sizes are shown 5949below. These are the code and data sizes for the acpica.lib 5950produced by the Microsoft Visual C++ 6.0 compiler, and these 5951values do not include any ACPI driver or OSPM code. The debug 5952version of the code includes the debug output trace mechanism and 5953has a much larger code and data size. Note that these values will 5954vary depending on the efficiency of the compiler and the compiler 5955options used during generation. 5956 5957 Previous Release 5958 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 5959 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 5960 Current Release: 5961 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 5962 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 5963 5964 59652) Linux: 5966 5967Allow ":" in OS override string (Ducrot Bruno) 5968 5969Kobject fix (Greg KH) 5970 5971 59723 iASL Compiler/Disassembler: 5973 5974Fixed a problem in the generation of the C source code files (AML 5975is emitted in C source statements for BIOS inclusion) where the 5976Ascii dump that appears within a C comment at the end of each line 5977could cause a compile time error if the AML sequence happens to 5978have an open comment or close comment sequence embedded. 5979 5980 5981---------------------------------------- 598224 April 2003. Summary of changes for version 20030424. 5983 5984 59851) ACPI CA Core Subsystem: 5986 5987Support for big-endian systems has been implemented. Most of the 5988support has been invisibly added behind big-endian versions of the 5989ACPI_MOVE_* macros. 5990 5991Fixed a problem in AcpiHwDisableGpeBlock() and 5992AcpiHwClearGpeBlock() where an incorrect offset was passed to the 5993low level hardware write routine. The offset parameter was 5994actually eliminated from the low level read/write routines because 5995they had become obsolete. 5996 5997Fixed a problem where a handler object was deleted twice during 5998the removal of a fixed event handler. 5999 6000 60012) Linux: 6002 6003A fix for SMP systems with link devices was contributed by 6004 6005Compaq's Dan Zink. 6006 6007(2.5) Return whether we handled the interrupt in our IRQ handler. 6008(Linux ISRs no longer return void, so we can propagate the handler 6009return value from the ACPI CA core back to the OS.) 6010 6011 6012 60133) Documentation: 6014 6015The ACPI CA Programmer Reference has been updated to reflect new 6016interfaces and changes to existing interfaces. 6017 6018---------------------------------------- 601928 March 2003. Summary of changes for version 20030328. 6020 60211) ACPI CA Core Subsystem: 6022 6023The GPE Block Device support has been completed. New interfaces 6024are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 6025interfaces (enable, disable, clear, getstatus) have been split 6026into separate interfaces for Fixed Events and General Purpose 6027Events (GPEs) in order to support GPE Block Devices properly. 6028 6029Fixed a problem where the error message "Failed to acquire 6030semaphore" would appear during operations on the embedded 6031controller (EC). 6032 6033Code and Data Size: Current core subsystem library sizes are shown 6034below. These are the code and data sizes for the acpica.lib 6035produced by the Microsoft Visual C++ 6.0 compiler, and these 6036values do not include any ACPI driver or OSPM code. The debug 6037version of the code includes the debug output trace mechanism and 6038has a much larger code and data size. Note that these values will 6039vary depending on the efficiency of the compiler and the compiler 6040options used during generation. 6041 6042 Previous Release 6043 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 6044 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 6045 Current Release: 6046 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 6047 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 6048 6049 6050---------------------------------------- 605128 February 2003. Summary of changes for version 20030228. 6052 6053 60541) ACPI CA Core Subsystem: 6055 6056The GPE handling and dispatch code has been completely overhauled 6057in preparation for support of GPE Block Devices (ID ACPI0006). 6058This affects internal data structures and code only; there should 6059be no differences visible externally. One new file has been 6060added, evgpeblk.c 6061 6062The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 6063fields that are used to determine the GPE block lengths. The 6064REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 6065structures are ignored. This is per the ACPI specification but it 6066isn't very clear. The full 256 Block 0/1 GPEs are now supported 6067(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 6068 6069In the SCI interrupt handler, removed the read of the PM1_CONTROL 6070register to look at the SCI_EN bit. On some machines, this read 6071causes an SMI event and greatly slows down SCI events. (This may 6072in fact be the cause of slow battery status response on some 6073systems.) 6074 6075Fixed a problem where a store of a NULL string to a package object 6076could cause the premature deletion of the object. This was seen 6077during execution of the battery _BIF method on some systems, 6078resulting in no battery data being returned. 6079 6080Added AcpiWalkResources interface to simplify parsing of resource 6081lists. 6082 6083Code and Data Size: Current core subsystem library sizes are shown 6084below. These are the code and data sizes for the acpica.lib 6085produced by the Microsoft Visual C++ 6.0 compiler, and these 6086values do not include any ACPI driver or OSPM code. The debug 6087version of the code includes the debug output trace mechanism and 6088has a much larger code and data size. Note that these values will 6089vary depending on the efficiency of the compiler and the compiler 6090options used during generation. 6091 6092 Previous Release 6093 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 6094 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 6095 Current Release: 6096 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 6097 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 6098 6099 61002) Linux 6101 6102S3 fixes (Ole Rohne) 6103 6104Update ACPI PHP driver with to use new acpi_walk_resource API 6105(Bjorn Helgaas) 6106 6107Add S4BIOS support (Pavel Machek) 6108 6109Map in entire table before performing checksum (John Stultz) 6110 6111Expand the mem= cmdline to allow the specification of reserved and 6112ACPI DATA blocks (Pavel Machek) 6113 6114Never use ACPI on VISWS 6115 6116Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 6117 6118Revert a change that allowed P_BLK lengths to be 4 or 5. This is 6119causing us to think that some systems support C2 when they really 6120don't. 6121 6122Do not count processor objects for non-present CPUs (Thanks to 6123Dominik Brodowski) 6124 6125 61263) iASL Compiler: 6127 6128Fixed a problem where ASL include files could not be found and 6129opened. 6130 6131Added support for the _PDC reserved name. 6132 6133 6134---------------------------------------- 613522 January 2003. Summary of changes for version 20030122. 6136 6137 61381) ACPI CA Core Subsystem: 6139 6140Added a check for constructs of the form: Store (Local0, Local0) 6141where Local0 is not initialized. Apparently, some BIOS 6142programmers believe that this is a NOOP. Since this store doesn't 6143do anything anyway, the new prototype behavior will ignore this 6144error. This is a case where we can relax the strict checking in 6145the interpreter in the name of compatibility. 6146 6147 61482) Linux 6149 6150The AcpiSrc Source Conversion Utility has been released with the 6151Linux package for the first time. This is the utility that is 6152used to convert the ACPI CA base source code to the Linux version. 6153 6154(Both) Handle P_BLK lengths shorter than 6 more gracefully 6155 6156(Both) Move more headers to include/acpi, and delete an unused 6157header. 6158 6159(Both) Move drivers/acpi/include directory to include/acpi 6160 6161(Both) Boot functions don't use cmdline, so don't pass it around 6162 6163(Both) Remove include of unused header (Adrian Bunk) 6164 6165(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 6166the 6167former now also includes the latter, acpiphp.h only needs the one, 6168now. 6169 6170(2.5) Make it possible to select method of bios restoring after S3 6171resume. [=> no more ugly ifdefs] (Pavel Machek) 6172 6173(2.5) Make proc write interfaces work (Pavel Machek) 6174 6175(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 6176 6177(2.5) Break out ACPI Perf code into its own module, under cpufreq 6178(Dominik Brodowski) 6179 6180(2.4) S4BIOS support (Ducrot Bruno) 6181 6182(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 6183Visinoni) 6184 6185 61863) iASL Compiler: 6187 6188Added support to disassemble SSDT and PSDTs. 6189 6190Implemented support to obtain SSDTs from the Windows registry if 6191available. 6192 6193 6194---------------------------------------- 619509 January 2003. Summary of changes for version 20030109. 6196 61971) ACPI CA Core Subsystem: 6198 6199Changed the behavior of the internal Buffer-to-String conversion 6200function. The current ACPI specification states that the contents 6201of the buffer are "converted to a string of two-character 6202hexadecimal numbers, each separated by a space". Unfortunately, 6203this definition is not backwards compatible with existing ACPI 1.0 6204implementations (although the behavior was not defined in the ACPI 62051.0 specification). The new behavior simply copies data from the 6206buffer to the string until a null character is found or the end of 6207the buffer is reached. The new String object is always null 6208terminated. This problem was seen during the generation of _BIF 6209battery data where incorrect strings were returned for battery 6210type, etc. This will also require an errata to the ACPI 6211specification. 6212 6213Renamed all instances of NATIVE_UINT and NATIVE_INT to 6214ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 6215 6216Copyright in all module headers (both Linux and non-Linux) has be 6217updated to 2003. 6218 6219Code and Data Size: Current core subsystem library sizes are shown 6220below. These are the code and data sizes for the acpica.lib 6221produced by the Microsoft Visual C++ 6.0 compiler, and these 6222values do not include any ACPI driver or OSPM code. The debug 6223version of the code includes the debug output trace mechanism and 6224has a much larger code and data size. Note that these values will 6225vary depending on the efficiency of the compiler and the compiler 6226options used during generation. 6227 6228 Previous Release 6229 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 6230 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 6231 Current Release: 6232 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 6233 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 6234 6235 62362) Linux 6237 6238Fixed an oops on module insertion/removal (Matthew Tippett) 6239 6240(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 6241 6242(2.5) Replace pr_debug (Randy Dunlap) 6243 6244(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 6245 6246(Both) Eliminate spawning of thread from timer callback, in favor 6247of schedule_work() 6248 6249(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 6250 6251(Both) Added define for Fixed Function HW region (Matthew Wilcox) 6252 6253(Both) Add missing statics to button.c (Pavel Machek) 6254 6255Several changes have been made to the source code translation 6256utility that generates the Linux Code in order to make the code 6257more "Linux-like": 6258 6259All typedefs on structs and unions have been removed in keeping 6260with the Linux coding style. 6261 6262Removed the non-Linux SourceSafe module revision number from each 6263module header. 6264 6265Completed major overhaul of symbols to be lowercased for linux. 6266Doubled the number of symbols that are lowercased. 6267 6268Fixed a problem where identifiers within procedure headers and 6269within quotes were not fully lower cased (they were left with a 6270starting capital.) 6271 6272Some C macros whose only purpose is to allow the generation of 16- 6273bit code are now completely removed in the Linux code, increasing 6274readability and maintainability. 6275 6276---------------------------------------- 6277 627812 December 2002. Summary of changes for version 20021212. 6279 6280 62811) ACPI CA Core Subsystem: 6282 6283Fixed a problem where the creation of a zero-length AML Buffer 6284would cause a fault. 6285 6286Fixed a problem where a Buffer object that pointed to a static AML 6287buffer (in an ACPI table) could inadvertently be deleted, causing 6288memory corruption. 6289 6290Fixed a problem where a user buffer (passed in to the external 6291ACPI CA interfaces) could be overwritten if the buffer was too 6292small to complete the operation, causing memory corruption. 6293 6294Fixed a problem in the Buffer-to-String conversion code where a 6295string of length one was always returned, regardless of the size 6296of the input Buffer object. 6297 6298Removed the NATIVE_CHAR data type across the entire source due to 6299lack of need and lack of consistent use. 6300 6301Code and Data Size: Current core subsystem library sizes are shown 6302below. These are the code and data sizes for the acpica.lib 6303produced by the Microsoft Visual C++ 6.0 compiler, and these 6304values do not include any ACPI driver or OSPM code. The debug 6305version of the code includes the debug output trace mechanism and 6306has a much larger code and data size. Note that these values will 6307vary depending on the efficiency of the compiler and the compiler 6308options used during generation. 6309 6310 Previous Release 6311 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 6312 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 6313 Current Release: 6314 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 6315 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 6316 6317 6318---------------------------------------- 631905 December 2002. Summary of changes for version 20021205. 6320 63211) ACPI CA Core Subsystem: 6322 6323Fixed a problem where a store to a String or Buffer object could 6324cause corruption of the DSDT if the object type being stored was 6325the same as the target object type and the length of the object 6326being stored was equal to or smaller than the original (existing) 6327target object. This was seen to cause corruption of battery _BIF 6328buffers if the _BIF method modified the buffer on the fly. 6329 6330Fixed a problem where an internal error was generated if a control 6331method invocation was used in an OperationRegion, Buffer, or 6332Package declaration. This was caused by the deferred parsing of 6333the control method and thus the deferred creation of the internal 6334method object. The solution to this problem was to create the 6335internal method object at the moment the method is encountered in 6336the first pass - so that subsequent references to the method will 6337able to obtain the required parameter count and thus properly 6338parse the method invocation. This problem presented itself as an 6339AE_AML_INTERNAL during the pass 1 parse phase during table load. 6340 6341Fixed a problem where the internal String object copy routine did 6342not always allocate sufficient memory for the target String object 6343and caused memory corruption. This problem was seen to cause 6344"Allocation already present in list!" errors as memory allocation 6345became corrupted. 6346 6347Implemented a new function for the evaluation of namespace objects 6348that allows the specification of the allowable return object 6349types. This simplifies a lot of code that checks for a return 6350object of one or more specific objects returned from the 6351evaluation (such as _STA, etc.) This may become and external 6352function if it would be useful to ACPI-related drivers. 6353 6354Completed another round of prefixing #defines with "ACPI_" for 6355clarity. 6356 6357Completed additional code restructuring to allow more modular 6358linking for iASL compiler and AcpiExec. Several files were split 6359creating new files. New files: nsparse.c dsinit.c evgpe.c 6360 6361Implemented an abort mechanism to terminate an executing control 6362method via the AML debugger. This feature is useful for debugging 6363control methods that depend (wait) for specific hardware 6364responses. 6365 6366Code and Data Size: Current core subsystem library sizes are shown 6367below. These are the code and data sizes for the acpica.lib 6368produced by the Microsoft Visual C++ 6.0 compiler, and these 6369values do not include any ACPI driver or OSPM code. The debug 6370version of the code includes the debug output trace mechanism and 6371has a much larger code and data size. Note that these values will 6372vary depending on the efficiency of the compiler and the compiler 6373options used during generation. 6374 6375 Previous Release 6376 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 6377 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 6378 Current Release: 6379 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 6380 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 6381 6382 63832) iASL Compiler/Disassembler 6384 6385Fixed a compiler code generation problem for "Interrupt" Resource 6386Descriptors. If specified in the ASL, the optional "Resource 6387Source Index" and "Resource Source" fields were not inserted into 6388the correct location within the AML resource descriptor, creating 6389an invalid descriptor. 6390 6391Fixed a disassembler problem for "Interrupt" resource descriptors. 6392The optional "Resource Source Index" and "Resource Source" fields 6393were ignored. 6394 6395 6396---------------------------------------- 639722 November 2002. Summary of changes for version 20021122. 6398 6399 64001) ACPI CA Core Subsystem: 6401 6402Fixed a reported problem where an object stored to a Method Local 6403or Arg was not copied to a new object during the store - the 6404object pointer was simply copied to the Local/Arg. This caused 6405all subsequent operations on the Local/Arg to also affect the 6406original source of the store operation. 6407 6408Fixed a problem where a store operation to a Method Local or Arg 6409was not completed properly if the Local/Arg contained a reference 6410(from RefOf) to a named field. The general-purpose store-to- 6411namespace-node code is now used so that this case is handled 6412automatically. 6413 6414Fixed a problem where the internal object copy routine would cause 6415a protection fault if the object being copied was a Package and 6416contained either 1) a NULL package element or 2) a nested sub- 6417package. 6418 6419Fixed a problem with the GPE initialization that resulted from an 6420ambiguity in the ACPI specification. One section of the 6421specification states that both the address and length of the GPE 6422block must be zero if the block is not supported. Another section 6423implies that only the address need be zero if the block is not 6424supported. The code has been changed so that both the address and 6425the length must be non-zero to indicate a valid GPE block (i.e., 6426if either the address or the length is zero, the GPE block is 6427invalid.) 6428 6429Code and Data Size: Current core subsystem library sizes are shown 6430below. These are the code and data sizes for the acpica.lib 6431produced by the Microsoft Visual C++ 6.0 compiler, and these 6432values do not include any ACPI driver or OSPM code. The debug 6433version of the code includes the debug output trace mechanism and 6434has a much larger code and data size. Note that these values will 6435vary depending on the efficiency of the compiler and the compiler 6436options used during generation. 6437 6438 Previous Release 6439 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 6440 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 6441 Current Release: 6442 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 6443 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 6444 6445 64462) Linux 6447 6448Cleaned up EC driver. Exported an external EC read/write 6449interface. By going through this, other drivers (most notably 6450sonypi) will be able to serialize access to the EC. 6451 6452 64533) iASL Compiler/Disassembler 6454 6455Implemented support to optionally generate include files for both 6456ASM and C (the -i switch). This simplifies BIOS development by 6457automatically creating include files that contain external 6458declarations for the symbols that are created within the 6459 6460(optionally generated) ASM and C AML source files. 6461 6462 6463---------------------------------------- 646415 November 2002. Summary of changes for version 20021115. 6465 64661) ACPI CA Core Subsystem: 6467 6468Fixed a memory leak problem where an error during resolution of 6469 6470method arguments during a method invocation from another method 6471failed to cleanup properly by deleting all successfully resolved 6472argument objects. 6473 6474Fixed a problem where the target of the Index() operator was not 6475correctly constructed if the source object was a package. This 6476problem has not been detected because the use of a target operand 6477with Index() is very rare. 6478 6479Fixed a problem with the Index() operator where an attempt was 6480made to delete the operand objects twice. 6481 6482Fixed a problem where an attempt was made to delete an operand 6483twice during execution of the CondRefOf() operator if the target 6484did not exist. 6485 6486Implemented the first of perhaps several internal create object 6487functions that create and initialize a specific object type. This 6488consolidates duplicated code wherever the object is created, thus 6489shrinking the size of the subsystem. 6490 6491Implemented improved debug/error messages for errors that occur 6492during nested method invocations. All executing method pathnames 6493are displayed (with the error) as the call stack is unwound - thus 6494simplifying debug. 6495 6496Fixed a problem introduced in the 10/02 release that caused 6497premature deletion of a buffer object if a buffer was used as an 6498ASL operand where an integer operand is required (Thus causing an 6499implicit object conversion from Buffer to Integer.) The change in 6500the 10/02 release was attempting to fix a memory leak (albeit 6501incorrectly.) 6502 6503Code and Data Size: Current core subsystem library sizes are shown 6504below. These are the code and data sizes for the acpica.lib 6505produced by the Microsoft Visual C++ 6.0 compiler, and these 6506values do not include any ACPI driver or OSPM code. The debug 6507version of the code includes the debug output trace mechanism and 6508has a much larger code and data size. Note that these values will 6509vary depending on the efficiency of the compiler and the compiler 6510options used during generation. 6511 6512 Previous Release 6513 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 6514 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 6515 Current Release: 6516 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 6517 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 6518 6519 65202) Linux 6521 6522Changed the implementation of the ACPI semaphores to use down() 6523instead of down_interruptable(). It is important that the 6524execution of ACPI control methods not be interrupted by signals. 6525Methods must run to completion, or the system may be left in an 6526unknown/unstable state. 6527 6528Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 6529(Shawn Starr) 6530 6531 65323) iASL Compiler/Disassembler 6533 6534 6535Changed the default location of output files. All output files 6536are now placed in the current directory by default instead of in 6537the directory of the source file. This change may affect some 6538existing makefiles, but it brings the behavior of the compiler in 6539line with other similar tools. The location of the output files 6540can be overridden with the -p command line switch. 6541 6542 6543---------------------------------------- 654411 November 2002. Summary of changes for version 20021111. 6545 6546 65470) ACPI Specification 2.0B is released and is now available at: 6548http://www.acpi.info/index.html 6549 6550 65511) ACPI CA Core Subsystem: 6552 6553Implemented support for the ACPI 2.0 SMBus Operation Regions. 6554This includes the early detection and handoff of the request to 6555the SMBus region handler (avoiding all of the complex field 6556support code), and support for the bidirectional return packet 6557from an SMBus write operation. This paves the way for the 6558development of SMBus drivers in each host operating system. 6559 6560Fixed a problem where the semaphore WAIT_FOREVER constant was 6561defined as 32 bits, but must be 16 bits according to the ACPI 6562specification. This had the side effect of causing ASL 6563Mutex/Event timeouts even though the ASL code requested a wait 6564forever. Changed all internal references to the ACPI timeout 6565parameter to 16 bits to prevent future problems. Changed the name 6566of WAIT_FOREVER to ACPI_WAIT_FOREVER. 6567 6568Code and Data Size: Current core subsystem library sizes are shown 6569below. These are the code and data sizes for the acpica.lib 6570produced by the Microsoft Visual C++ 6.0 compiler, and these 6571values do not include any ACPI driver or OSPM code. The debug 6572version of the code includes the debug output trace mechanism and 6573has a much larger code and data size. Note that these values will 6574vary depending on the efficiency of the compiler and the compiler 6575options used during generation. 6576 6577 Previous Release 6578 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 6579 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 6580 Current Release: 6581 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 6582 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 6583 6584 65852) Linux 6586 6587Module loading/unloading fixes (John Cagle) 6588 6589 65903) iASL Compiler/Disassembler 6591 6592Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 6593 6594Implemented support for the disassembly of all SMBus protocol 6595keywords (SMBQuick, SMBWord, etc.) 6596 6597---------------------------------------- 659801 November 2002. Summary of changes for version 20021101. 6599 6600 66011) ACPI CA Core Subsystem: 6602 6603Fixed a problem where platforms that have a GPE1 block but no GPE0 6604block were not handled correctly. This resulted in a "GPE 6605overlap" error message. GPE0 is no longer required. 6606 6607Removed code added in the previous release that inserted nodes 6608into the namespace in alphabetical order. This caused some side- 6609effects on various machines. The root cause of the problem is 6610still under investigation since in theory, the internal ordering 6611of the namespace nodes should not matter. 6612 6613 6614Enhanced error reporting for the case where a named object is not 6615found during control method execution. The full ACPI namepath 6616(name reference) of the object that was not found is displayed in 6617this case. 6618 6619Note: as a result of the overhaul of the namespace object types in 6620the previous release, the namespace nodes for the predefined 6621scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 6622instead of ACPI_TYPE_ANY. This simplifies the namespace 6623management code but may affect code that walks the namespace tree 6624looking for specific object types. 6625 6626Code and Data Size: Current core subsystem library sizes are shown 6627below. These are the code and data sizes for the acpica.lib 6628produced by the Microsoft Visual C++ 6.0 compiler, and these 6629values do not include any ACPI driver or OSPM code. The debug 6630version of the code includes the debug output trace mechanism and 6631has a much larger code and data size. Note that these values will 6632vary depending on the efficiency of the compiler and the compiler 6633options used during generation. 6634 6635 Previous Release 6636 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 6637 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 6638 Current Release: 6639 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 6640 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 6641 6642 66432) Linux 6644 6645Fixed a problem introduced in the previous release where the 6646Processor and Thermal objects were not recognized and installed in 6647/proc. This was related to the scope type change described above. 6648 6649 66503) iASL Compiler/Disassembler 6651 6652Implemented the -g option to get all of the required ACPI tables 6653from the registry and save them to files (Windows version of the 6654compiler only.) The required tables are the FADT, FACS, and DSDT. 6655 6656Added ACPI table checksum validation during table disassembly in 6657order to catch corrupted tables. 6658 6659 6660---------------------------------------- 666122 October 2002. Summary of changes for version 20021022. 6662 66631) ACPI CA Core Subsystem: 6664 6665Implemented a restriction on the Scope operator that the target 6666must already exist in the namespace at the time the operator is 6667encountered (during table load or method execution). In other 6668words, forward references are not allowed and Scope() cannot 6669create a new object. This changes the previous behavior where the 6670interpreter would create the name if not found. This new behavior 6671correctly enables the search-to-root algorithm during namespace 6672lookup of the target name. Because of this upsearch, this fixes 6673the known Compaq _SB_.OKEC problem and makes both the AML 6674interpreter and iASL compiler compatible with other ACPI 6675implementations. 6676 6677Completed a major overhaul of the internal ACPI object types for 6678the ACPI Namespace and the associated operand objects. Many of 6679these types had become obsolete with the introduction of the two- 6680pass namespace load. This cleanup simplifies the code and makes 6681the entire namespace load mechanism much clearer and easier to 6682understand. 6683 6684Improved debug output for tracking scope opening/closing to help 6685diagnose scoping issues. The old scope name as well as the new 6686scope name are displayed. Also improved error messages for 6687problems with ASL Mutex objects and error messages for GPE 6688problems. 6689 6690Cleaned up the namespace dump code, removed obsolete code. 6691 6692All string output (for all namespace/object dumps) now uses the 6693common ACPI string output procedure which handles escapes properly 6694and does not emit non-printable characters. 6695 6696Fixed some issues with constants in the 64-bit version of the 6697local C library (utclib.c) 6698 6699 67002) Linux 6701 6702EC Driver: No longer attempts to acquire the Global Lock at 6703interrupt level. 6704 6705 67063) iASL Compiler/Disassembler 6707 6708Implemented ACPI 2.0B grammar change that disallows all Type 1 and 67092 opcodes outside of a control method. This means that the 6710"executable" operators (versus the "namespace" operators) cannot 6711be used at the table level; they can only be used within a control 6712method. 6713 6714Implemented the restriction on the Scope() operator where the 6715target must already exist in the namespace at the time the 6716operator is encountered (during ASL compilation). In other words, 6717forward references are not allowed and Scope() cannot create a new 6718object. This makes the iASL compiler compatible with other ACPI 6719implementations and makes the Scope() implementation adhere to the 6720ACPI specification. 6721 6722Fixed a problem where namepath optimization for the Alias operator 6723was optimizing the wrong path (of the two namepaths.) This caused 6724a "Missing alias link" error message. 6725 6726Fixed a problem where an "unknown reserved name" warning could be 6727incorrectly generated for names like "_SB" when the trailing 6728underscore is not used in the original ASL. 6729 6730Fixed a problem where the reserved name check did not handle 6731NamePaths with multiple NameSegs correctly. The first nameseg of 6732the NamePath was examined instead of the last NameSeg. 6733 6734 6735---------------------------------------- 6736 673702 October 2002. Summary of changes for this release. 6738 6739 67401) ACPI CA Core Subsystem version 20021002: 6741 6742Fixed a problem where a store/copy of a string to an existing 6743string did not always set the string length properly in the String 6744object. 6745 6746Fixed a reported problem with the ToString operator where the 6747behavior was identical to the ToHexString operator instead of just 6748simply converting a raw buffer to a string data type. 6749 6750Fixed a problem where CopyObject and the other "explicit" 6751conversion operators were not updating the internal namespace node 6752type as part of the store operation. 6753 6754Fixed a memory leak during implicit source operand conversion 6755where the original object was not deleted if it was converted to a 6756new object of a different type. 6757 6758Enhanced error messages for all problems associated with namespace 6759lookups. Common procedure generates and prints the lookup name as 6760well as the formatted status. 6761 6762Completed implementation of a new design for the Alias support 6763within the namespace. The existing design did not handle the case 6764where a new object was assigned to one of the two names due to the 6765use of an explicit conversion operator, resulting in the two names 6766pointing to two different objects. The new design simply points 6767the Alias name to the original name node - not to the object. 6768This results in a level of indirection that must be handled in the 6769name resolution mechanism. 6770 6771Code and Data Size: Current core subsystem library sizes are shown 6772below. These are the code and data sizes for the acpica.lib 6773produced by the Microsoft Visual C++ 6.0 compiler, and these 6774values do not include any ACPI driver or OSPM code. The debug 6775version of the code includes the debug output trace mechanism and 6776has a larger code and data size. Note that these values will vary 6777depending on the efficiency of the compiler and the compiler 6778options used during generation. 6779 6780 Previous Release 6781 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 6782 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 6783 Current Release: 6784 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 6785 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 6786 6787 67882) Linux 6789 6790Initialize thermal driver's timer before it is used. (Knut 6791Neumann) 6792 6793Allow handling negative celsius values. (Kochi Takayoshi) 6794 6795Fix thermal management and make trip points. R/W (Pavel Machek) 6796 6797Fix /proc/acpi/sleep. (P. Christeas) 6798 6799IA64 fixes. (David Mosberger) 6800 6801Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 6802 6803Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 6804Brodowski) 6805 6806 68073) iASL Compiler/Disassembler 6808 6809Clarified some warning/error messages. 6810 6811 6812---------------------------------------- 681318 September 2002. Summary of changes for this release. 6814 6815 68161) ACPI CA Core Subsystem version 20020918: 6817 6818Fixed a reported problem with reference chaining (via the Index() 6819and RefOf() operators) in the ObjectType() and SizeOf() operators. 6820The definition of these operators includes the dereferencing of 6821all chained references to return information on the base object. 6822 6823Fixed a problem with stores to indexed package elements - the 6824existing code would not complete the store if an "implicit 6825conversion" was not performed. In other words, if the existing 6826object (package element) was to be replaced completely, the code 6827didn't handle this case. 6828 6829Relaxed typechecking on the ASL "Scope" operator to allow the 6830target name to refer to an object of type Integer, String, or 6831Buffer, in addition to the scoping object types (Device, 6832predefined Scopes, Processor, PowerResource, and ThermalZone.) 6833This allows existing AML code that has workarounds for a bug in 6834Windows to function properly. A warning is issued, however. This 6835affects both the AML interpreter and the iASL compiler. Below is 6836an example of this type of ASL code: 6837 6838 Name(DEB,0x00) 6839 Scope(DEB) 6840 { 6841 6842Fixed some reported problems with 64-bit integer support in the 6843local implementation of C library functions (clib.c) 6844 6845 68462) Linux 6847 6848Use ACPI fix map region instead of IOAPIC region, since it is 6849undefined in non-SMP. 6850 6851Ensure that the SCI has the proper polarity and trigger, even on 6852systems that do not have an interrupt override entry in the MADT. 6853 68542.5 big driver reorganization (Pat Mochel) 6855 6856Use early table mapping code from acpitable.c (Andi Kleen) 6857 6858New blacklist entries (Andi Kleen) 6859 6860Blacklist improvements. Split blacklist code out into a separate 6861file. Move checking the blacklist to very early. Previously, we 6862would use ACPI tables, and then halfway through init, check the 6863blacklist -- too late. Now, it's early enough to completely fall- 6864back to non-ACPI. 6865 6866 68673) iASL Compiler/Disassembler version 20020918: 6868 6869Fixed a problem where the typechecking code didn't know that an 6870alias could point to a method. In other words, aliases were not 6871being dereferenced during typechecking. 6872 6873 6874---------------------------------------- 687529 August 2002. Summary of changes for this release. 6876 68771) ACPI CA Core Subsystem Version 20020829: 6878 6879If the target of a Scope() operator already exists, it must be an 6880object type that actually opens a scope -- such as a Device, 6881Method, Scope, etc. This is a fatal runtime error. Similar error 6882check has been added to the iASL compiler also. 6883 6884Tightened up the namespace load to disallow multiple names in the 6885same scope. This previously was allowed if both objects were of 6886the same type. (i.e., a lookup was the same as entering a new 6887name). 6888 6889 68902) Linux 6891 6892Ensure that the ACPI interrupt has the proper trigger and 6893polarity. 6894 6895local_irq_disable is extraneous. (Matthew Wilcox) 6896 6897Make "acpi=off" actually do what it says, and not use the ACPI 6898interpreter *or* the tables. 6899 6900Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 6901Takayoshi) 6902 6903 69043) iASL Compiler/Disassembler Version 20020829: 6905 6906Implemented namepath optimization for name declarations. For 6907example, a declaration like "Method (\_SB_.ABCD)" would get 6908optimized to "Method (ABCD)" if the declaration is within the 6909\_SB_ scope. This optimization is in addition to the named 6910reference path optimization first released in the previous 6911version. This would seem to complete all possible optimizations 6912for namepaths within the ASL/AML. 6913 6914If the target of a Scope() operator already exists, it must be an 6915object type that actually opens a scope -- such as a Device, 6916Method, Scope, etc. 6917 6918Implemented a check and warning for unreachable code in the same 6919block below a Return() statement. 6920 6921Fixed a problem where the listing file was not generated if the 6922compiler aborted if the maximum error count was exceeded (200). 6923 6924Fixed a problem where the typechecking of method return values was 6925broken. This includes the check for a return value when the 6926method is invoked as a TermArg (a return value is expected.) 6927 6928Fixed a reported problem where EOF conditions during a quoted 6929string or comment caused a fault. 6930 6931 6932---------------------------------------- 693315 August 2002. Summary of changes for this release. 6934 69351) ACPI CA Core Subsystem Version 20020815: 6936 6937Fixed a reported problem where a Store to a method argument that 6938contains a reference did not perform the indirect store correctly. 6939This problem was created during the conversion to the new 6940reference object model - the indirect store to a method argument 6941code was not updated to reflect the new model. 6942 6943Reworked the ACPI mode change code to better conform to ACPI 2.0, 6944handle corner cases, and improve code legibility (Kochi Takayoshi) 6945 6946Fixed a problem with the pathname parsing for the carat (^) 6947prefix. The heavy use of the carat operator by the new namepath 6948optimization in the iASL compiler uncovered a problem with the AML 6949interpreter handling of this prefix. In the case where one or 6950more carats precede a single nameseg, the nameseg was treated as 6951standalone and the search rule (to root) was inadvertently 6952applied. This could cause both the iASL compiler and the 6953interpreter to find the wrong object or to miss the error that 6954should occur if the object does not exist at that exact pathname. 6955 6956Found and fixed the problem where the HP Pavilion DSDT would not 6957load. This was a relatively minor tweak to the table loading code 6958(a problem caused by the unexpected encounter with a method 6959invocation not within a control method), but it does not solve the 6960overall issue of the execution of AML code at the table level. 6961This investigation is still ongoing. 6962 6963Code and Data Size: Current core subsystem library sizes are shown 6964below. These are the code and data sizes for the acpica.lib 6965produced by the Microsoft Visual C++ 6.0 compiler, and these 6966values do not include any ACPI driver or OSPM code. The debug 6967version of the code includes the debug output trace mechanism and 6968has a larger code and data size. Note that these values will vary 6969depending on the efficiency of the compiler and the compiler 6970options used during generation. 6971 6972 Previous Release 6973 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 6974 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 6975 Current Release: 6976 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 6977 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 6978 6979 69802) Linux 6981 6982Remove redundant slab.h include (Brad Hards) 6983 6984Fix several bugs in thermal.c (Herbert Nachtnebel) 6985 6986Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 6987 6988Change acpi_system_suspend to use updated irq functions (Pavel 6989Machek) 6990 6991Export acpi_get_firmware_table (Matthew Wilcox) 6992 6993Use proper root proc entry for ACPI (Kochi Takayoshi) 6994 6995Fix early-boot table parsing (Bjorn Helgaas) 6996 6997 69983) iASL Compiler/Disassembler 6999 7000Reworked the compiler options to make them more consistent and to 7001use two-letter options where appropriate. We were running out of 7002sensible letters. This may break some makefiles, so check the 7003current options list by invoking the compiler with no parameters. 7004 7005Completed the design and implementation of the ASL namepath 7006optimization option for the compiler. This option optimizes all 7007references to named objects to the shortest possible path. The 7008first attempt tries to utilize a single nameseg (4 characters) and 7009the "search-to-root" algorithm used by the interpreter. If that 7010cannot be used (because either the name is not in the search path 7011or there is a conflict with another object with the same name), 7012the pathname is optimized using the carat prefix (usually a 7013shorter string than specifying the entire path from the root.) 7014 7015Implemented support to obtain the DSDT from the Windows registry 7016(when the disassembly option is specified with no input file). 7017Added this code as the implementation for AcpiOsTableOverride in 7018the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 7019utility) to scan memory for the DSDT to the AcpiOsTableOverride 7020function in the DOS OSL to make the disassembler truly OS 7021independent. 7022 7023Implemented a new option to disassemble and compile in one step. 7024When used without an input filename, this option will grab the 7025DSDT from the local machine, disassemble it, and compile it in one 7026step. 7027 7028Added a warning message for invalid escapes (a backslash followed 7029by any character other than the allowable escapes). This catches 7030the quoted string error "\_SB_" (which should be "\\_SB_" ). 7031 7032Also, there are numerous instances in the ACPI specification where 7033this error occurs. 7034 7035Added a compiler option to disable all optimizations. This is 7036basically the "compatibility mode" because by using this option, 7037the AML code will come out exactly the same as other ASL 7038compilers. 7039 7040Added error messages for incorrectly ordered dependent resource 7041functions. This includes: missing EndDependentFn macro at end of 7042dependent resource list, nested dependent function macros (both 7043start and end), and missing StartDependentFn macro. These are 7044common errors that should be caught at compile time. 7045 7046Implemented _OSI support for the disassembler and compiler. _OSI 7047must be included in the namespace for proper disassembly (because 7048the disassembler must know the number of arguments.) 7049 7050Added an "optimization" message type that is optional (off by 7051default). This message is used for all optimizations - including 7052constant folding, integer optimization, and namepath optimization. 7053 7054---------------------------------------- 705525 July 2002. Summary of changes for this release. 7056 7057 70581) ACPI CA Core Subsystem Version 20020725: 7059 7060The AML Disassembler has been enhanced to produce compilable ASL 7061code and has been integrated into the iASL compiler (see below) as 7062well as the single-step disassembly for the AML debugger and the 7063disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 7064resource templates and macros are fully supported. The 7065disassembler has been tested on over 30 different AML files, 7066producing identical AML when the resulting disassembled ASL file 7067is recompiled with the same ASL compiler. 7068 7069Modified the Resource Manager to allow zero interrupts and zero 7070dma channels during the GetCurrentResources call. This was 7071causing problems on some platforms. 7072 7073Added the AcpiOsRedirectOutput interface to the OSL to simplify 7074output redirection for the AcpiOsPrintf and AcpiOsVprintf 7075interfaces. 7076 7077Code and Data Size: Current core subsystem library sizes are shown 7078below. These are the code and data sizes for the acpica.lib 7079produced by the Microsoft Visual C++ 6.0 compiler, and these 7080values do not include any ACPI driver or OSPM code. The debug 7081version of the code includes the debug output trace mechanism and 7082has a larger code and data size. Note that these values will vary 7083depending on the efficiency of the compiler and the compiler 7084options used during generation. 7085 7086 Previous Release 7087 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 7088 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 7089 Current Release: 7090 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 7091 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 7092 7093 70942) Linux 7095 7096Fixed a panic in the EC driver (Dominik Brodowski) 7097 7098Implemented checksum of the R/XSDT itself during Linux table scan 7099(Richard Schaal) 7100 7101 71023) iASL compiler 7103 7104The AML disassembler is integrated into the compiler. The "-d" 7105option invokes the disassembler to completely disassemble an 7106input AML file, producing as output a text ASL file with the 7107extension ".dsl" (to avoid name collisions with existing .asl 7108source files.) A future enhancement will allow the disassembler 7109to obtain the BIOS DSDT from the registry under Windows. 7110 7111Fixed a problem with the VendorShort and VendorLong resource 7112descriptors where an invalid AML sequence was created. 7113 7114Implemented a fix for BufferData term in the ASL parser. It was 7115inadvertently defined twice, allowing invalid syntax to pass and 7116causing reduction conflicts. 7117 7118Fixed a problem where the Ones opcode could get converted to a 7119value of zero if "Ones" was used where a byte, word or dword value 7120was expected. The 64-bit value is now truncated to the correct 7121size with the correct value. 7122 7123 7124 7125---------------------------------------- 712602 July 2002. Summary of changes for this release. 7127 7128 71291) ACPI CA Core Subsystem Version 20020702: 7130 7131The Table Manager code has been restructured to add several new 7132features. Tables that are not required by the core subsystem 7133(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 7134validated in any way and are returned from AcpiGetFirmwareTable if 7135requested. The AcpiOsTableOverride interface is now called for 7136each table that is loaded by the subsystem in order to allow the 7137host to override any table it chooses. Previously, only the DSDT 7138could be overridden. Added one new files, tbrsdt.c and 7139tbgetall.c. 7140 7141Fixed a problem with the conversion of internal package objects to 7142external objects (when a package is returned from a control 7143method.) The return buffer length was set to zero instead of the 7144proper length of the package object. 7145 7146Fixed a reported problem with the use of the RefOf and DeRefOf 7147operators when passing reference arguments to control methods. A 7148new type of Reference object is used internally for references 7149produced by the RefOf operator. 7150 7151Added additional error messages in the Resource Manager to explain 7152AE_BAD_DATA errors when they occur during resource parsing. 7153 7154Split the AcpiEnableSubsystem into two primitives to enable a 7155finer granularity initialization sequence. These two calls should 7156be called in this order: AcpiEnableSubsystem (flags), 7157AcpiInitializeObjects (flags). The flags parameter remains the 7158same. 7159 7160 71612) Linux 7162 7163Updated the ACPI utilities module to understand the new style of 7164fully resolved package objects that are now returned from the core 7165subsystem. This eliminates errors of the form: 7166 7167 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 7168 acpi_utils-0430 [145] acpi_evaluate_reference: 7169 Invalid element in package (not a device reference) 7170 7171The method evaluation utility uses the new buffer allocation 7172scheme instead of calling AcpiEvaluate Object twice. 7173 7174Added support for ECDT. This allows the use of the Embedded 7175 7176Controller before the namespace has been fully initialized, which 7177is necessary for ACPI 2.0 support, and for some laptops to 7178initialize properly. (Laptops using ECDT are still rare, so only 7179limited testing was performed of the added functionality.) 7180 7181Fixed memory leaks in the EC driver. 7182 7183Eliminated a brittle code structure in acpi_bus_init(). 7184 7185Eliminated the acpi_evaluate() helper function in utils.c. It is 7186no longer needed since acpi_evaluate_object can optionally 7187allocate memory for the return object. 7188 7189Implemented fix for keyboard hang when getting battery readings on 7190some systems (Stephen White) 7191 7192PCI IRQ routing update (Dominik Brodowski) 7193 7194Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 7195support 7196 7197---------------------------------------- 719811 June 2002. Summary of changes for this release. 7199 7200 72011) ACPI CA Core Subsystem Version 20020611: 7202 7203Fixed a reported problem where constants such as Zero and One 7204appearing within _PRT packages were not handled correctly within 7205the resource manager code. Originally reported against the ASL 7206compiler because the code generator now optimizes integers to 7207their minimal AML representation (i.e. AML constants if possible.) 7208The _PRT code now handles all AML constant opcodes correctly 7209(Zero, One, Ones, Revision). 7210 7211Fixed a problem with the Concatenate operator in the AML 7212interpreter where a buffer result object was incorrectly marked as 7213not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 7214 7215All package sub-objects are now fully resolved before they are 7216returned from the external ACPI interfaces. This means that name 7217strings are resolved to object handles, and constant operators 7218(Zero, One, Ones, Revision) are resolved to Integers. 7219 7220Implemented immediate resolution of the AML Constant opcodes 7221(Zero, One, Ones, Revision) to Integer objects upon detection 7222within the AML stream. This has simplified and reduced the 7223generated code size of the subsystem by eliminating about 10 7224switch statements for these constants (which previously were 7225contained in Reference objects.) The complicating issues are that 7226the Zero opcode is used as a "placeholder" for unspecified 7227optional target operands and stores to constants are defined to be 7228no-ops. 7229 7230Code and Data Size: Current core subsystem library sizes are shown 7231below. These are the code and data sizes for the acpica.lib 7232produced by the Microsoft Visual C++ 6.0 compiler, and these 7233values do not include any ACPI driver or OSPM code. The debug 7234version of the code includes the debug output trace mechanism and 7235has a larger code and data size. Note that these values will vary 7236depending on the efficiency of the compiler and the compiler 7237options used during generation. 7238 7239 Previous Release 7240 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 7241 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 7242 Current Release: 7243 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 7244 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 7245 7246 72472) Linux 7248 7249 7250Added preliminary support for obtaining _TRA data for PCI root 7251bridges (Bjorn Helgaas). 7252 7253 72543) iASL Compiler Version X2046: 7255 7256Fixed a problem where the "_DDN" reserved name was defined to be a 7257control method with one argument. There are no arguments, and 7258_DDN does not have to be a control method. 7259 7260Fixed a problem with the Linux version of the compiler where the 7261source lines printed with error messages were the wrong lines. 7262This turned out to be the "LF versus CR/LF" difference between 7263Windows and Unix. This appears to be the longstanding issue 7264concerning listing output and error messages. 7265 7266Fixed a problem with the Linux version of compiler where opcode 7267names within error messages were wrong. This was caused by a 7268slight difference in the output of the Flex tool on Linux versus 7269Windows. 7270 7271Fixed a problem with the Linux compiler where the hex output files 7272contained some garbage data caused by an internal buffer overrun. 7273 7274 7275---------------------------------------- 727617 May 2002. Summary of changes for this release. 7277 7278 72791) ACPI CA Core Subsystem Version 20020517: 7280 7281Implemented a workaround to an BIOS bug discovered on the HP 7282OmniBook where the FADT revision number and the table size are 7283inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 7284behavior is to fallback to using only the ACPI 1.0 fields of the 7285FADT if the table is too small to be a ACPI 2.0 table as claimed 7286by the revision number. Although this is a BIOS bug, this is a 7287case where the workaround is simple enough and with no side 7288effects, so it seemed prudent to add it. A warning message is 7289issued, however. 7290 7291Implemented minimum size checks for the fixed-length ACPI tables - 7292- the FADT and FACS, as well as consistency checks between the 7293revision number and the table size. 7294 7295Fixed a reported problem in the table override support where the 7296new table pointer was incorrectly treated as a physical address 7297instead of a logical address. 7298 7299Eliminated the use of the AE_AML_ERROR exception and replaced it 7300with more descriptive codes. 7301 7302Fixed a problem where an exception would occur if an ASL Field was 7303defined with no named Field Units underneath it (used by some 7304index fields). 7305 7306Code and Data Size: Current core subsystem library sizes are shown 7307below. These are the code and data sizes for the acpica.lib 7308produced by the Microsoft Visual C++ 6.0 compiler, and these 7309values do not include any ACPI driver or OSPM code. The debug 7310version of the code includes the debug output trace mechanism and 7311has a larger code and data size. Note that these values will vary 7312depending on the efficiency of the compiler and the compiler 7313options used during generation. 7314 7315 Previous Release 7316 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 7317 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 7318 Current Release: 7319 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 7320 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 7321 7322 7323 73242) Linux 7325 7326Much work done on ACPI init (MADT and PCI IRQ routing support). 7327(Paul D. and Dominik Brodowski) 7328 7329Fix PCI IRQ-related panic on boot (Sam Revitch) 7330 7331Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 7332 7333Fix "MHz" typo (Dominik Brodowski) 7334 7335Fix RTC year 2000 issue (Dominik Brodowski) 7336 7337Preclude multiple button proc entries (Eric Brunet) 7338 7339Moved arch-specific code out of include/platform/aclinux.h 7340 73413) iASL Compiler Version X2044: 7342 7343Implemented error checking for the string used in the EISAID macro 7344(Usually used in the definition of the _HID object.) The code now 7345strictly enforces the PnP format - exactly 7 characters, 3 7346uppercase letters and 4 hex digits. 7347 7348If a raw string is used in the definition of the _HID object 7349(instead of the EISAID macro), the string must contain all 7350alphanumeric characters (e.g., "*PNP0011" is not allowed because 7351of the asterisk.) 7352 7353Implemented checking for invalid use of ACPI reserved names for 7354most of the name creation operators (Name, Device, Event, Mutex, 7355OperationRegion, PowerResource, Processor, and ThermalZone.) 7356Previously, this check was only performed for control methods. 7357 7358Implemented an additional check on the Name operator to emit an 7359error if a reserved name that must be implemented in ASL as a 7360control method is used. We know that a reserved name must be a 7361method if it is defined with input arguments. 7362 7363The warning emitted when a namespace object reference is not found 7364during the cross reference phase has been changed into an error. 7365The "External" directive should be used for names defined in other 7366modules. 7367 7368 73694) Tools and Utilities 7370 7371The 16-bit tools (adump16 and aexec16) have been regenerated and 7372tested. 7373 7374Fixed a problem with the output of both acpidump and adump16 where 7375the indentation of closing parentheses and brackets was not 7376 7377aligned properly with the parent block. 7378 7379 7380---------------------------------------- 738103 May 2002. Summary of changes for this release. 7382 7383 73841) ACPI CA Core Subsystem Version 20020503: 7385 7386Added support a new OSL interface that allows the host operating 7387 7388system software to override the DSDT found in the firmware - 7389AcpiOsTableOverride. With this interface, the OSL can examine the 7390version of the firmware DSDT and replace it with a different one 7391if desired. 7392 7393Added new external interfaces for accessing ACPI registers from 7394device drivers and other system software - AcpiGetRegister and 7395AcpiSetRegister. This was simply an externalization of the 7396existing AcpiHwBitRegister interfaces. 7397 7398Fixed a regression introduced in the previous build where the 7399ASL/AML CreateField operator always returned an error, 7400"destination must be a NS Node". 7401 7402Extended the maximum time (before failure) to successfully enable 7403ACPI mode to 3 seconds. 7404 7405Code and Data Size: Current core subsystem library sizes are shown 7406below. These are the code and data sizes for the acpica.lib 7407produced by the Microsoft Visual C++ 6.0 compiler, and these 7408values do not include any ACPI driver or OSPM code. The debug 7409version of the code includes the debug output trace mechanism and 7410has a larger code and data size. Note that these values will vary 7411depending on the efficiency of the compiler and the compiler 7412options used during generation. 7413 7414 Previous Release 7415 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 7416 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 7417 Current Release: 7418 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 7419 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 7420 7421 74222) Linux 7423 7424Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 7425free. While 3 out of 4 of our in-house systems work fine, the last 7426one still hangs when testing the LAPIC timer. 7427 7428Renamed many files in 2.5 kernel release to omit "acpi_" from the 7429name. 7430 7431Added warning on boot for Presario 711FR. 7432 7433Sleep improvements (Pavel Machek) 7434 7435ACPI can now be built without CONFIG_PCI enabled. 7436 7437IA64: Fixed memory map functions (JI Lee) 7438 7439 74403) iASL Compiler Version X2043: 7441 7442Added support to allow the compiler to be integrated into the MS 7443VC++ development environment for one-button compilation of single 7444files or entire projects -- with error-to-source-line mapping. 7445 7446Implemented support for compile-time constant folding for the 7447Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 7448specification. This allows the ASL writer to use expressions 7449instead of Integer/Buffer/String constants in terms that must 7450evaluate to constants at compile time and will also simplify the 7451emitted AML in any such sub-expressions that can be folded 7452(evaluated at compile-time.) This increases the size of the 7453compiler significantly because a portion of the ACPI CA AML 7454interpreter is included within the compiler in order to pre- 7455evaluate constant expressions. 7456 7457 7458Fixed a problem with the "Unicode" ASL macro that caused the 7459compiler to fault. (This macro is used in conjunction with the 7460_STR reserved name.) 7461 7462Implemented an AML opcode optimization to use the Zero, One, and 7463Ones opcodes where possible to further reduce the size of integer 7464constants and thus reduce the overall size of the generated AML 7465code. 7466 7467Implemented error checking for new reserved terms for ACPI version 74682.0A. 7469 7470Implemented the -qr option to display the current list of ACPI 7471reserved names known to the compiler. 7472 7473Implemented the -qc option to display the current list of ASL 7474operators that are allowed within constant expressions and can 7475therefore be folded at compile time if the operands are constants. 7476 7477 74784) Documentation 7479 7480Updated the Programmer's Reference for new interfaces, data types, 7481and memory allocation model options. 7482 7483Updated the iASL Compiler User Reference to apply new format and 7484add information about new features and options. 7485 7486---------------------------------------- 748719 April 2002. Summary of changes for this release. 7488 74891) ACPI CA Core Subsystem Version 20020419: 7490 7491The source code base for the Core Subsystem has been completely 7492cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 7493versions. The Lint option files used are included in the 7494/acpi/generate/lint directory. 7495 7496Implemented enhanced status/error checking across the entire 7497Hardware manager subsystem. Any hardware errors (reported from 7498the OSL) are now bubbled up and will abort a running control 7499method. 7500 7501 7502Fixed a problem where the per-ACPI-table integer width (32 or 64) 7503was stored only with control method nodes, causing a fault when 7504non-control method code was executed during table loading. The 7505solution implemented uses a global variable to indicate table 7506width across the entire ACPI subsystem. Therefore, ACPI CA does 7507not support mixed integer widths across different ACPI tables 7508(DSDT, SSDT). 7509 7510Fixed a problem where NULL extended fields (X fields) in an ACPI 75112.0 ACPI FADT caused the table load to fail. Although the 7512existing ACPI specification is a bit fuzzy on this topic, the new 7513behavior is to fall back on a ACPI 1.0 field if the corresponding 7514ACPI 2.0 X field is zero (even though the table revision indicates 7515a full ACPI 2.0 table.) The ACPI specification will be updated to 7516clarify this issue. 7517 7518Fixed a problem with the SystemMemory operation region handler 7519where memory was always accessed byte-wise even if the AML- 7520specified access width was larger than a byte. This caused 7521problems on systems with memory-mapped I/O. Memory is now 7522accessed with the width specified. On systems that do not support 7523non-aligned transfers, a check is made to guarantee proper address 7524alignment before proceeding in order to avoid an AML-caused 7525alignment fault within the kernel. 7526 7527 7528Fixed a problem with the ExtendedIrq resource where only one byte 7529of the 4-byte Irq field was extracted. 7530 7531Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 7532function was out of date and required a rewrite. 7533 7534Code and Data Size: Current core subsystem library sizes are shown 7535below. These are the code and data sizes for the acpica.lib 7536produced by the Microsoft Visual C++ 6.0 compiler, and these 7537values do not include any ACPI driver or OSPM code. The debug 7538version of the code includes the debug output trace mechanism and 7539has a larger code and data size. Note that these values will vary 7540depending on the efficiency of the compiler and the compiler 7541options used during generation. 7542 7543 Previous Release 7544 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 7545 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 7546 Current Release: 7547 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 7548 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 7549 7550 75512) Linux 7552 7553PCI IRQ routing fixes (Dominik Brodowski) 7554 7555 75563) iASL Compiler Version X2042: 7557 7558Implemented an additional compile-time error check for a field 7559unit whose size + minimum access width would cause a run-time 7560access beyond the end-of-region. Previously, only the field size 7561itself was checked. 7562 7563The Core subsystem and iASL compiler now share a common parse 7564object in preparation for compile-time evaluation of the type 75653/4/5 ASL operators. 7566 7567 7568---------------------------------------- 7569Summary of changes for this release: 03_29_02 7570 75711) ACPI CA Core Subsystem Version 20020329: 7572 7573Implemented support for late evaluation of TermArg operands to 7574Buffer and Package objects. This allows complex expressions to be 7575used in the declarations of these object types. 7576 7577Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 75781.0, if the field was larger than 32 bits, it was returned as a 7579buffer - otherwise it was returned as an integer. In ACPI 2.0, 7580the field is returned as a buffer only if the field is larger than 758164 bits. The TableRevision is now considered when making this 7582conversion to avoid incompatibility with existing ASL code. 7583 7584Implemented logical addressing for AcpiOsGetRootPointer. This 7585allows an RSDP with either a logical or physical address. With 7586this support, the host OS can now override all ACPI tables with 7587one logical RSDP. Includes implementation of "typed" pointer 7588support to allow a common data type for both physical and logical 7589pointers internally. This required a change to the 7590AcpiOsGetRootPointer interface. 7591 7592Implemented the use of ACPI 2.0 Generic Address Structures for all 7593GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 7594mapped I/O for these ACPI features. 7595 7596Initialization now ignores not only non-required tables (All 7597tables other than the FADT, FACS, DSDT, and SSDTs), but also does 7598not validate the table headers of unrecognized tables. 7599 7600Fixed a problem where a notify handler could only be 7601installed/removed on an object of type Device. All "notify" 7602 7603objects are now supported -- Devices, Processor, Power, and 7604Thermal. 7605 7606Removed most verbosity from the ACPI_DB_INFO debug level. Only 7607critical information is returned when this debug level is enabled. 7608 7609Code and Data Size: Current core subsystem library sizes are shown 7610below. These are the code and data sizes for the acpica.lib 7611produced by the Microsoft Visual C++ 6.0 compiler, and these 7612values do not include any ACPI driver or OSPM code. The debug 7613version of the code includes the debug output trace mechanism and 7614has a larger code and data size. Note that these values will vary 7615depending on the efficiency of the compiler and the compiler 7616options used during generation. 7617 7618 Previous Release 7619 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 7620 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 7621 Current Release: 7622 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 7623 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 7624 7625 76262) Linux: 7627 7628The processor driver (acpi_processor.c) now fully supports ACPI 76292.0-based processor performance control (e.g. Intel(R) 7630SpeedStep(TM) technology) Note that older laptops that only have 7631the Intel "applet" interface are not supported through this. The 7632'limit' and 'performance' interface (/proc) are fully functional. 7633[Note that basic policy for controlling performance state 7634transitions will be included in the next version of ospmd.] The 7635idle handler was modified to more aggressively use C2, and PIIX4 7636errata handling underwent a complete overhaul (big thanks to 7637Dominik Brodowski). 7638 7639Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 7640based devices in the ACPI namespace are now dynamically bound 7641(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 7642This allows, among other things, ACPI to resolve bus numbers for 7643subordinate PCI bridges. 7644 7645Enhanced PCI IRQ routing to get the proper bus number for _PRT 7646entries defined underneath PCI bridges. 7647 7648Added IBM 600E to bad bios list due to invalid _ADR value for 7649PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 7650 7651In the process of adding full MADT support (e.g. IOAPIC) for IA32 7652(acpi.c, mpparse.c) -- stay tuned. 7653 7654Added back visual differentiation between fixed-feature and 7655control-method buttons in dmesg. Buttons are also subtyped (e.g. 7656button/power/PWRF) to simplify button identification. 7657 7658We no longer use -Wno-unused when compiling debug. Please ignore 7659any "_THIS_MODULE defined but not used" messages. 7660 7661Can now shut down the system using "magic sysrq" key. 7662 7663 76643) iASL Compiler version 2041: 7665 7666Fixed a problem where conversion errors for hex/octal/decimal 7667constants were not reported. 7668 7669Implemented a fix for the General Register template Address field. 7670This field was 8 bits when it should be 64. 7671 7672Fixed a problem where errors/warnings were no longer being emitted 7673within the listing output file. 7674 7675Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 7676exactly 4 characters, alphanumeric only. 7677 7678 7679 7680 7681---------------------------------------- 7682Summary of changes for this release: 03_08_02 7683 7684 76851) ACPI CA Core Subsystem Version 20020308: 7686 7687Fixed a problem with AML Fields where the use of the "AccessAny" 7688keyword could cause an interpreter error due to attempting to read 7689or write beyond the end of the parent Operation Region. 7690 7691Fixed a problem in the SystemMemory Operation Region handler where 7692an attempt was made to map memory beyond the end of the region. 7693This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 7694errors on some Linux systems. 7695 7696Fixed a problem where the interpreter/namespace "search to root" 7697algorithm was not functioning for some object types. Relaxed the 7698internal restriction on the search to allow upsearches for all 7699external object types as well as most internal types. 7700 7701 77022) Linux: 7703 7704We now use safe_halt() macro versus individual calls to sti | hlt. 7705 7706Writing to the processor limit interface should now work. "echo 1" 7707will increase the limit, 2 will decrease, and 0 will reset to the 7708 7709default. 7710 7711 77123) ASL compiler: 7713 7714Fixed segfault on Linux version. 7715 7716 7717---------------------------------------- 7718Summary of changes for this release: 02_25_02 7719 77201) ACPI CA Core Subsystem: 7721 7722 7723Fixed a problem where the GPE bit masks were not initialized 7724properly, causing erratic GPE behavior. 7725 7726Implemented limited support for multiple calling conventions. The 7727code can be generated with either the VPL (variable parameter 7728list, or "C") convention, or the FPL (fixed parameter list, or 7729"Pascal") convention. The core subsystem is about 3.4% smaller 7730when generated with FPL. 7731 7732 77332) Linux 7734 7735Re-add some /proc/acpi/event functionality that was lost during 7736the rewrite 7737 7738Resolved issue with /proc events for fixed-feature buttons showing 7739up as the system device. 7740 7741Fixed checks on C2/C3 latencies to be inclusive of maximum values. 7742 7743Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 7744 7745Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 7746 7747Fixed limit interface & usage to fix bugs with passive cooling 7748hysterisis. 7749 7750Restructured PRT support. 7751 7752 7753---------------------------------------- 7754Summary of changes for this label: 02_14_02 7755 7756 77571) ACPI CA Core Subsystem: 7758 7759Implemented support in AcpiLoadTable to allow loading of FACS and 7760FADT tables. 7761 7762Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 7763been removed. All 64-bit platforms should be migrated to the ACPI 77642.0 tables. The actbl71.h header has been removed from the source 7765tree. 7766 7767All C macros defined within the subsystem have been prefixed with 7768"ACPI_" to avoid collision with other system include files. 7769 7770Removed the return value for the two AcpiOsPrint interfaces, since 7771it is never used and causes lint warnings for ignoring the return 7772value. 7773 7774Added error checking to all internal mutex acquire and release 7775calls. Although a failure from one of these interfaces is 7776probably a fatal system error, these checks will cause the 7777immediate abort of the currently executing method or interface. 7778 7779Fixed a problem where the AcpiSetCurrentResources interface could 7780fault. This was a side effect of the deployment of the new memory 7781allocation model. 7782 7783Fixed a couple of problems with the Global Lock support introduced 7784in the last major build. The "common" (1.0/2.0) internal FACS was 7785being overwritten with the FACS signature and clobbering the 7786Global Lock pointer. Also, the actual firmware FACS was being 7787unmapped after construction of the "common" FACS, preventing 7788access to the actual Global Lock field within it. The "common" 7789internal FACS is no longer installed as an actual ACPI table; it 7790is used simply as a global. 7791 7792Code and Data Size: Current core subsystem library sizes are shown 7793below. These are the code and data sizes for the acpica.lib 7794produced by the Microsoft Visual C++ 6.0 compiler, and these 7795values do not include any ACPI driver or OSPM code. The debug 7796version of the code includes the debug output trace mechanism and 7797has a larger code and data size. Note that these values will vary 7798depending on the efficiency of the compiler and the compiler 7799options used during generation. 7800 7801 Previous Release (02_07_01) 7802 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 7803 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 7804 Current Release: 7805 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 7806 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 7807 7808 78092) Linux 7810 7811Updated Linux-specific code for core macro and OSL interface 7812changes described above. 7813 7814Improved /proc/acpi/event. It now can be opened only once and has 7815proper poll functionality. 7816 7817Fixed and restructured power management (acpi_bus). 7818 7819Only create /proc "view by type" when devices of that class exist. 7820 7821Fixed "charging/discharging" bug (and others) in acpi_battery. 7822 7823Improved thermal zone code. 7824 7825 78263) ASL Compiler, version X2039: 7827 7828 7829Implemented the new compiler restriction on ASL String hex/octal 7830escapes to non-null, ASCII values. An error results if an invalid 7831value is used. (This will require an ACPI 2.0 specification 7832change.) 7833 7834AML object labels that are output to the optional C and ASM source 7835are now prefixed with both the ACPI table signature and table ID 7836to help guarantee uniqueness within a large BIOS project. 7837 7838 7839---------------------------------------- 7840Summary of changes for this label: 02_01_02 7841 78421) ACPI CA Core Subsystem: 7843 7844ACPI 2.0 support is complete in the entire Core Subsystem and the 7845ASL compiler. All new ACPI 2.0 operators are implemented and all 7846other changes for ACPI 2.0 support are complete. With 7847simultaneous code and data optimizations throughout the subsystem, 7848ACPI 2.0 support has been implemented with almost no additional 7849cost in terms of code and data size. 7850 7851Implemented a new mechanism for allocation of return buffers. If 7852the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 7853be allocated on behalf of the caller. Consolidated all return 7854buffer validation and allocation to a common procedure. Return 7855buffers will be allocated via the primary OSL allocation interface 7856since it appears that a separate pool is not needed by most users. 7857If a separate pool is required for these buffers, the caller can 7858still use the original mechanism and pre-allocate the buffer(s). 7859 7860Implemented support for string operands within the DerefOf 7861operator. 7862 7863Restructured the Hardware and Event managers to be table driven, 7864simplifying the source code and reducing the amount of generated 7865code. 7866 7867Split the common read/write low-level ACPI register bitfield 7868procedure into a separate read and write, simplifying the code 7869considerably. 7870 7871Obsoleted the AcpiOsCallocate OSL interface. This interface was 7872used only a handful of times and didn't have enough critical mass 7873for a separate interface. Replaced with a common calloc procedure 7874in the core. 7875 7876Fixed a reported problem with the GPE number mapping mechanism 7877that allows GPE1 numbers to be non-contiguous with GPE0. 7878Reorganized the GPE information and shrunk a large array that was 7879originally large enough to hold info for all possible GPEs (256) 7880to simply large enough to hold all GPEs up to the largest GPE 7881number on the machine. 7882 7883Fixed a reported problem with resource structure alignment on 64- 7884bit platforms. 7885 7886Changed the AcpiEnableEvent and AcpiDisableEvent external 7887interfaces to not require any flags for the common case of 7888enabling/disabling a GPE. 7889 7890Implemented support to allow a "Notify" on a Processor object. 7891 7892Most TBDs in comments within the source code have been resolved 7893and eliminated. 7894 7895 7896Fixed a problem in the interpreter where a standalone parent 7897prefix (^) was not handled correctly in the interpreter and 7898debugger. 7899 7900Removed obsolete and unnecessary GPE save/restore code. 7901 7902Implemented Field support in the ASL Load operator. This allows a 7903table to be loaded from a named field, in addition to loading a 7904table directly from an Operation Region. 7905 7906Implemented timeout and handle support in the external Global Lock 7907interfaces. 7908 7909Fixed a problem in the AcpiDump utility where pathnames were no 7910longer being generated correctly during the dump of named objects. 7911 7912Modified the AML debugger to give a full display of if/while 7913predicates instead of just one AML opcode at a time. (The 7914predicate can have several nested ASL statements.) The old method 7915was confusing during single stepping. 7916 7917Code and Data Size: Current core subsystem library sizes are shown 7918below. These are the code and data sizes for the acpica.lib 7919produced by the Microsoft Visual C++ 6.0 compiler, and these 7920values do not include any ACPI driver or OSPM code. The debug 7921version of the code includes the debug output trace mechanism and 7922has a larger code and data size. Note that these values will vary 7923depending on the efficiency of the compiler and the compiler 7924options used during generation. 7925 7926 Previous Release (12_18_01) 7927 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 7928 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 7929 Current Release: 7930 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 7931 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 7932 79332) Linux 7934 7935 Implemented fix for PIIX reverse throttling errata (Processor 7936driver) 7937 7938Added new Limit interface (Processor and Thermal drivers) 7939 7940New thermal policy (Thermal driver) 7941 7942Many updates to /proc 7943 7944Battery "low" event support (Battery driver) 7945 7946Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 7947 7948IA32 - IA64 initialization unification, no longer experimental 7949 7950Menuconfig options redesigned 7951 79523) ASL Compiler, version X2037: 7953 7954Implemented several new output features to simplify integration of 7955AML code into firmware: 1) Output the AML in C source code with 7956labels for each named ASL object. The original ASL source code 7957is interleaved as C comments. 2) Output the AML in ASM source code 7958with labels and interleaved ASL source. 3) Output the AML in 7959raw hex table form, in either C or ASM. 7960 7961Implemented support for optional string parameters to the 7962LoadTable operator. 7963 7964Completed support for embedded escape sequences within string 7965literals. The compiler now supports all single character escapes 7966as well as the Octal and Hex escapes. Note: the insertion of a 7967null byte into a string literal (via the hex/octal escape) causes 7968the string to be immediately terminated. A warning is issued. 7969 7970Fixed a problem where incorrect AML was generated for the case 7971where an ASL namepath consists of a single parent prefix ( 7972 7973) with no trailing name segments. 7974 7975The compiler has been successfully generated with a 64-bit C 7976compiler. 7977 7978 7979 7980 7981---------------------------------------- 7982Summary of changes for this label: 12_18_01 7983 79841) Linux 7985 7986Enhanced blacklist with reason and severity fields. Any table's 7987signature may now be used to identify a blacklisted system. 7988 7989Call _PIC control method to inform the firmware which interrupt 7990model the OS is using. Turn on any disabled link devices. 7991 7992Cleaned up busmgr /proc error handling (Andreas Dilger) 7993 7994 2) ACPI CA Core Subsystem: 7995 7996Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 7997while loop) 7998 7999Completed implementation of the ACPI 2.0 "Continue", 8000"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 8001operators. All new ACPI 2.0 operators are now implemented in both 8002the ASL compiler and the AML interpreter. The only remaining ACPI 80032.0 task is support for the String data type in the DerefOf 8004operator. Fixed a problem with AcquireMutex where the status code 8005was lost if the caller had to actually wait for the mutex. 8006 8007Increased the maximum ASL Field size from 64K bits to 4G bits. 8008 8009Completed implementation of the external Global Lock interfaces -- 8010AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 8011Handler parameters were added. 8012 8013Completed another pass at removing warnings and issues when 8014compiling with 64-bit compilers. The code now compiles cleanly 8015with the Intel 64-bit C/C++ compiler. Most notably, the pointer 8016add and subtract (diff) macros have changed considerably. 8017 8018 8019Created and deployed a new ACPI_SIZE type that is 64-bits wide on 802064-bit platforms, 32-bits on all others. This type is used 8021wherever memory allocation and/or the C sizeof() operator is used, 8022and affects the OSL memory allocation interfaces AcpiOsAllocate 8023and AcpiOsCallocate. 8024 8025Implemented sticky user breakpoints in the AML debugger. 8026 8027Code and Data Size: Current core subsystem library sizes are shown 8028below. These are the code and data sizes for the acpica.lib 8029produced by the Microsoft Visual C++ 6.0 compiler, and these 8030values do not include any ACPI driver or OSPM code. The debug 8031version of the code includes the debug output trace mechanism and 8032has a larger code and data size. Note that these values will vary 8033depending on the efficiency of the compiler and the compiler 8034options used during generation. 8035 8036 Previous Release (12_05_01) 8037 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 8038 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 8039 Current Release: 8040 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 8041 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 8042 8043 3) ASL Compiler, version X2034: 8044 8045Now checks for (and generates an error if detected) the use of a 8046Break or Continue statement without an enclosing While statement. 8047 8048 8049Successfully generated the compiler with the Intel 64-bit C 8050compiler. 8051 8052 ---------------------------------------- 8053Summary of changes for this label: 12_05_01 8054 8055 1) ACPI CA Core Subsystem: 8056 8057The ACPI 2.0 CopyObject operator is fully implemented. This 8058operator creates a new copy of an object (and is also used to 8059bypass the "implicit conversion" mechanism of the Store operator.) 8060 8061The ACPI 2.0 semantics for the SizeOf operator are fully 8062implemented. The change is that performing a SizeOf on a 8063reference object causes an automatic dereference of the object to 8064tha actual value before the size is evaluated. This behavior was 8065undefined in ACPI 1.0. 8066 8067The ACPI 2.0 semantics for the Extended IRQ resource descriptor 8068have been implemented. The interrupt polarity and mode are now 8069independently set. 8070 8071Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 8072appearing in Package objects were not properly converted to 8073integers when the internal Package was converted to an external 8074object (via the AcpiEvaluateObject interface.) 8075 8076Fixed a problem with the namespace object deletion mechanism for 8077objects created by control methods. There were two parts to this 8078problem: 1) Objects created during the initialization phase method 8079parse were not being deleted, and 2) The object owner ID mechanism 8080to track objects was broken. 8081 8082Fixed a problem where the use of the ASL Scope operator within a 8083control method would result in an invalid opcode exception. 8084 8085Fixed a problem introduced in the previous label where the buffer 8086length required for the _PRT structure was not being returned 8087correctly. 8088 8089Code and Data Size: Current core subsystem library sizes are shown 8090below. These are the code and data sizes for the acpica.lib 8091produced by the Microsoft Visual C++ 6.0 compiler, and these 8092values do not include any ACPI driver or OSPM code. The debug 8093version of the code includes the debug output trace mechanism and 8094has a larger code and data size. Note that these values will vary 8095depending on the efficiency of the compiler and the compiler 8096options used during generation. 8097 8098 Previous Release (11_20_01) 8099 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 8100 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 8101 8102 Current Release: 8103 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 8104 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 8105 8106 2) Linux: 8107 8108Updated all files to apply cleanly against 2.4.16. 8109 8110Added basic PCI Interrupt Routing Table (PRT) support for IA32 8111(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 8112version supports both static and dyanmic PRT entries, but dynamic 8113entries are treated as if they were static (not yet 8114reconfigurable). Architecture- specific code to use this data is 8115absent on IA32 but should be available shortly. 8116 8117Changed the initialization sequence to start the ACPI interpreter 8118(acpi_init) prior to initialization of the PCI driver (pci_init) 8119in init/main.c. This ordering is required to support PRT and 8120facilitate other (future) enhancement. A side effect is that the 8121ACPI bus driver and certain device drivers can no longer be loaded 8122as modules. 8123 8124Modified the 'make menuconfig' options to allow PCI Interrupt 8125Routing support to be included without the ACPI Bus and other 8126device drivers. 8127 8128 3) ASL Compiler, version X2033: 8129 8130Fixed some issues with the use of the new CopyObject and 8131DataTableRegion operators. Both are fully functional. 8132 8133 ---------------------------------------- 8134Summary of changes for this label: 11_20_01 8135 8136 20 November 2001. Summary of changes for this release. 8137 8138 1) ACPI CA Core Subsystem: 8139 8140Updated Index support to match ACPI 2.0 semantics. Storing a 8141Integer, String, or Buffer to an Index of a Buffer will store only 8142the least-significant byte of the source to the Indexed buffer 8143byte. Multiple writes are not performed. 8144 8145Fixed a problem where the access type used in an AccessAs ASL 8146operator was not recorded correctly into the field object. 8147 8148Fixed a problem where ASL Event objects were created in a 8149signalled state. Events are now created in an unsignalled state. 8150 8151The internal object cache is now purged after table loading and 8152initialization to reduce the use of dynamic kernel memory -- on 8153the assumption that object use is greatest during the parse phase 8154of the entire table (versus the run-time use of individual control 8155methods.) 8156 8157ACPI 2.0 variable-length packages are now fully operational. 8158 8159Code and Data Size: Code and Data optimizations have permitted new 8160feature development with an actual reduction in the library size. 8161Current core subsystem library sizes are shown below. These are 8162the code and data sizes for the acpica.lib produced by the 8163Microsoft Visual C++ 6.0 compiler, and these values do not include 8164any ACPI driver or OSPM code. The debug version of the code 8165includes the debug output trace mechanism and has a larger code 8166and data size. Note that these values will vary depending on the 8167efficiency of the compiler and the compiler options used during 8168generation. 8169 8170 Previous Release (11_09_01): 8171 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 8172 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 8173 8174 Current Release: 8175 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 8176 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 8177 8178 2) Linux: 8179 8180Enhanced the ACPI boot-time initialization code to allow the use 8181of Local APIC tables for processor enumeration on IA-32, and to 8182pave the way for a fully MPS-free boot (on SMP systems) in the 8183near future. This functionality replaces 8184arch/i386/kernel/acpitables.c, which was introduced in an earlier 81852.4.15-preX release. To enable this feature you must add 8186"acpi_boot=on" to the kernel command line -- see the help entry 8187for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 8188the works... 8189 8190Restructured the configuration options to allow boot-time table 8191parsing support without inclusion of the ACPI Interpreter (and 8192other) code. 8193 8194NOTE: This release does not include fixes for the reported events, 8195power-down, and thermal passive cooling issues (coming soon). 8196 8197 3) ASL Compiler: 8198 8199Added additional typechecking for Fields within restricted access 8200Operation Regions. All fields within EC and CMOS regions must be 8201declared with ByteAcc. All fields withing SMBus regions must be 8202declared with the BufferAcc access type. 8203 8204Fixed a problem where the listing file output of control methods 8205no longer interleaved the actual AML code with the ASL source 8206code. 8207 8208 8209 8210 8211---------------------------------------- 8212Summary of changes for this label: 11_09_01 8213 82141) ACPI CA Core Subsystem: 8215 8216Implemented ACPI 2.0-defined support for writes to fields with a 8217Buffer, String, or Integer source operand that is smaller than the 8218target field. In these cases, the source operand is zero-extended 8219to fill the target field. 8220 8221Fixed a problem where a Field starting bit offset (within the 8222parent operation region) was calculated incorrectly if the 8223 8224alignment of the field differed from the access width. This 8225affected CreateWordField, CreateDwordField, CreateQwordField, and 8226possibly other fields that use the "AccessAny" keyword. 8227 8228Fixed a problem introduced in the 11_02_01 release where indirect 8229stores through method arguments did not operate correctly. 8230 82312) Linux: 8232 8233Implemented boot-time ACPI table parsing support 8234(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 8235facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 8236legacy BIOS interfaces (e.g. MPS) for the configuration of system 8237processors, memory, and interrupts during setup_arch(). Note that 8238this patch does not include the required architecture-specific 8239changes required to apply this information -- subsequent patches 8240will be posted for both IA32 and IA64 to achieve this. 8241 8242Added low-level sleep support for IA32 platforms, courtesy of Pat 8243Mochel. This allows IA32 systems to transition to/from various 8244sleeping states (e.g. S1, S3), although the lack of a centralized 8245driver model and power-manageable drivers will prevent its 8246(successful) use on most systems. 8247 8248Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 8249submenu, unified IA32 and IA64 options, added new "Boot using ACPI 8250tables" option, etc. 8251 8252Increased the default timeout for the EC driver from 1ms to 10ms 8253(1000 cycles of 10us) to try to address AE_TIME errors during EC 8254transactions. 8255 8256 ---------------------------------------- 8257Summary of changes for this label: 11_02_01 8258 82591) ACPI CA Core Subsystem: 8260 8261ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 8262(QWordAcc keyword). All ACPI 2.0 64-bit support is now 8263implemented. 8264 8265OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 8266changes to support ACPI 2.0 Qword field access. Read/Write 8267PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 8268accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 8269the value parameter for the address space handler interface is now 8270an ACPI_INTEGER. OSL implementations of these interfaces must now 8271handle the case where the Width parameter is 64. 8272 8273Index Fields: Fixed a problem where unaligned bit assembly and 8274disassembly for IndexFields was not supported correctly. 8275 8276Index and Bank Fields: Nested Index and Bank Fields are now 8277supported. During field access, a check is performed to ensure 8278that the value written to an Index or Bank register is not out of 8279the range of the register. The Index (or Bank) register is 8280written before each access to the field data. Future support will 8281include allowing individual IndexFields to be wider than the 8282DataRegister width. 8283 8284Fields: Fixed a problem where the AML interpreter was incorrectly 8285attempting to write beyond the end of a Field/OpRegion. This was 8286a boundary case that occurred when a DWORD field was written to a 8287BYTE access OpRegion, forcing multiple writes and causing the 8288interpreter to write one datum too many. 8289 8290Fields: Fixed a problem with Field/OpRegion access where the 8291starting bit address of a field was incorrectly calculated if the 8292current access type was wider than a byte (WordAcc, DwordAcc, or 8293QwordAcc). 8294 8295Fields: Fixed a problem where forward references to individual 8296FieldUnits (individual Field names within a Field definition) were 8297not resolved during the AML table load. 8298 8299Fields: Fixed a problem where forward references from a Field 8300definition to the parent Operation Region definition were not 8301resolved during the AML table load. 8302 8303Fields: Duplicate FieldUnit names within a scope are now detected 8304during AML table load. 8305 8306Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 8307returned an incorrect name for the root node. 8308 8309Code and Data Size: Code and Data optimizations have permitted new 8310feature development with an actual reduction in the library size. 8311Current core subsystem library sizes are shown below. These are 8312the code and data sizes for the acpica.lib produced by the 8313Microsoft Visual C++ 6.0 compiler, and these values do not include 8314any ACPI driver or OSPM code. The debug version of the code 8315includes the debug output trace mechanism and has a larger code 8316and data size. Note that these values will vary depending on the 8317efficiency of the compiler and the compiler options used during 8318generation. 8319 8320 Previous Release (10_18_01): 8321 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 8322 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 8323 8324 Current Release: 8325 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 8326 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 8327 8328 2) Linux: 8329 8330Improved /proc processor output (Pavel Machek) Re-added 8331MODULE_LICENSE("GPL") to all modules. 8332 8333 3) ASL Compiler version X2030: 8334 8335Duplicate FieldUnit names within a scope are now detected and 8336flagged as errors. 8337 8338 4) Documentation: 8339 8340Programmer Reference updated to reflect OSL and address space 8341handler interface changes described above. 8342 8343---------------------------------------- 8344Summary of changes for this label: 10_18_01 8345 8346ACPI CA Core Subsystem: 8347 8348Fixed a problem with the internal object reference count mechanism 8349that occasionally caused premature object deletion. This resolves 8350all of the outstanding problem reports where an object is deleted 8351in the middle of an interpreter evaluation. Although this problem 8352only showed up in rather obscure cases, the solution to the 8353problem involved an adjustment of all reference counts involving 8354objects attached to namespace nodes. 8355 8356Fixed a problem with Field support in the interpreter where 8357writing to an aligned field whose length is an exact multiple (2 8358or greater) of the field access granularity would cause an attempt 8359to write beyond the end of the field. 8360 8361The top level AML opcode execution functions within the 8362interpreter have been renamed with a more meaningful and 8363consistent naming convention. The modules exmonad.c and 8364exdyadic.c were eliminated. New modules are exoparg1.c, 8365exoparg2.c, exoparg3.c, and exoparg6.c. 8366 8367Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 8368 8369Fixed a problem where the AML debugger was causing some internal 8370objects to not be deleted during subsystem termination. 8371 8372Fixed a problem with the external AcpiEvaluateObject interface 8373where the subsystem would fault if the named object to be 8374evaluated refered to a constant such as Zero, Ones, etc. 8375 8376Fixed a problem with IndexFields and BankFields where the 8377subsystem would fault if the index, data, or bank registers were 8378not defined in the same scope as the field itself. 8379 8380Added printf format string checking for compilers that support 8381this feature. Corrected more than 50 instances of issues with 8382format specifiers within invocations of ACPI_DEBUG_PRINT 8383throughout the core subsystem code. 8384 8385The ASL "Revision" operator now returns the ACPI support level 8386implemented in the core - the value "2" since the ACPI 2.0 support 8387is more than 50% implemented. 8388 8389Enhanced the output of the AML debugger "dump namespace" command 8390to output in a more human-readable form. 8391 8392Current core subsystem library code sizes are shown below. These 8393 8394are the code and data sizes for the acpica.lib produced by the 8395Microsoft Visual C++ 6.0 compiler, and these values do not include 8396any ACPI driver or OSPM code. The debug version of the code 8397includes the full debug trace mechanism -- leading to a much 8398 8399larger code and data size. Note that these values will vary 8400depending on the efficiency of the compiler and the compiler 8401options used during generation. 8402 8403 Previous Label (09_20_01): 8404 Non-Debug Version: 65K Code, 5K Data, 70K Total 8405 Debug Version: 138K Code, 58K Data, 196K Total 8406 8407 This Label: 8408 8409 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 8410 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 8411 8412Linux: 8413 8414Implemented a "Bad BIOS Blacklist" to track machines that have 8415known ASL/AML problems. 8416 8417Enhanced the /proc interface for the thermal zone driver and added 8418support for _HOT (the critical suspend trip point). The 'info' 8419file now includes threshold/policy information, and allows setting 8420of _SCP (cooling preference) and _TZP (polling frequency) values 8421to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 8422frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 8423preference to the passive/quiet mode (if supported by the ASL). 8424 8425Implemented a workaround for a gcc bug that resuted in an OOPs 8426when loading the control method battery driver. 8427 8428 ---------------------------------------- 8429Summary of changes for this label: 09_20_01 8430 8431 ACPI CA Core Subsystem: 8432 8433The AcpiEnableEvent and AcpiDisableEvent interfaces have been 8434modified to allow individual GPE levels to be flagged as wake- 8435enabled (i.e., these GPEs are to remain enabled when the platform 8436sleeps.) 8437 8438The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 8439support wake-enabled GPEs. This means that upon entering the 8440sleep state, all GPEs that are not wake-enabled are disabled. 8441When leaving the sleep state, these GPEs are reenabled. 8442 8443A local double-precision divide/modulo module has been added to 8444enhance portability to OS kernels where a 64-bit math library is 8445not available. The new module is "utmath.c". 8446 8447Several optimizations have been made to reduce the use of CPU 8448stack. Originally over 2K, the maximum stack usage is now below 84492K at 1860 bytes (1.82k) 8450 8451Fixed a problem with the AcpiGetFirmwareTable interface where the 8452root table pointer was not mapped into a logical address properly. 8453 8454Fixed a problem where a NULL pointer was being dereferenced in the 8455interpreter code for the ASL Notify operator. 8456 8457Fixed a problem where the use of the ASL Revision operator 8458returned an error. This operator now returns the current version 8459of the ACPI CA core subsystem. 8460 8461Fixed a problem where objects passed as control method parameters 8462to AcpiEvaluateObject were always deleted at method termination. 8463However, these objects may end up being stored into the namespace 8464by the called method. The object reference count mechanism was 8465applied to these objects instead of a force delete. 8466 8467Fixed a problem where static strings or buffers (contained in the 8468AML code) that are declared as package elements within the ASL 8469code could cause a fault because the interpreter would attempt to 8470delete them. These objects are now marked with the "static 8471object" flag to prevent any attempt to delete them. 8472 8473Implemented an interpreter optimization to use operands directly 8474from the state object instead of extracting the operands to local 8475variables. This reduces stack use and code size, and improves 8476performance. 8477 8478The module exxface.c was eliminated as it was an unnecessary extra 8479layer of code. 8480 8481Current core subsystem library code sizes are shown below. These 8482are the code and data sizes for the acpica.lib produced by the 8483Microsoft Visual C++ 6.0 compiler, and these values do not include 8484any ACPI driver or OSPM code. The debug version of the code 8485includes the full debug trace mechanism -- leading to a much 8486larger code and data size. Note that these values will vary 8487depending on the efficiency of the compiler and the compiler 8488options used during generation. 8489 8490 Non-Debug Version: 65K Code, 5K Data, 70K Total 8491(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 8492Total (Previously 195K) 8493 8494Linux: 8495 8496Support for ACPI 2.0 64-bit integers has been added. All ACPI 8497Integer objects are now 64 bits wide 8498 8499All Acpi data types and structures are now in lower case. Only 8500Acpi macros are upper case for differentiation. 8501 8502 Documentation: 8503 8504Changes to the external interfaces as described above. 8505 8506 ---------------------------------------- 8507Summary of changes for this label: 08_31_01 8508 8509 ACPI CA Core Subsystem: 8510 8511A bug with interpreter implementation of the ASL Divide operator 8512was found and fixed. The implicit function return value (not the 8513explicit store operands) was returning the remainder instead of 8514the quotient. This was a longstanding bug and it fixes several 8515known outstanding issues on various platforms. 8516 8517The ACPI_DEBUG_PRINT and function trace entry/exit macros have 8518been further optimized for size. There are 700 invocations of the 8519DEBUG_PRINT macro alone, so each optimization reduces the size of 8520the debug version of the subsystem significantly. 8521 8522A stack trace mechanism has been implemented. The maximum stack 8523usage is about 2K on 32-bit platforms. The debugger command "stat 8524stack" will display the current maximum stack usage. 8525 8526All public symbols and global variables within the subsystem are 8527now prefixed with the string "Acpi". This keeps all of the 8528symbols grouped together in a kernel map, and avoids conflicts 8529with other kernel subsystems. 8530 8531Most of the internal fixed lookup tables have been moved into the 8532code segment via the const operator. 8533 8534Several enhancements have been made to the interpreter to both 8535reduce the code size and improve performance. 8536 8537Current core subsystem library code sizes are shown below. These 8538are the code and data sizes for the acpica.lib produced by the 8539Microsoft Visual C++ 6.0 compiler, and these values do not include 8540any ACPI driver or OSPM code. The debug version of the code 8541includes the full debug trace mechanism which contains over 700 8542invocations of the DEBUG_PRINT macro, 500 function entry macro 8543invocations, and over 900 function exit macro invocations -- 8544leading to a much larger code and data size. Note that these 8545values will vary depending on the efficiency of the compiler and 8546the compiler options used during generation. 8547 8548 Non-Debug Version: 64K Code, 5K Data, 69K Total 8549Debug Version: 137K Code, 58K Data, 195K Total 8550 8551 Linux: 8552 8553Implemented wbinvd() macro, pending a kernel-wide definition. 8554 8555Fixed /proc/acpi/event to handle poll() and short reads. 8556 8557 ASL Compiler, version X2026: 8558 8559Fixed a problem introduced in the previous label where the AML 8560 8561code emitted for package objects produced packages with zero 8562length. 8563 8564 ---------------------------------------- 8565Summary of changes for this label: 08_16_01 8566 8567ACPI CA Core Subsystem: 8568 8569The following ACPI 2.0 ASL operators have been implemented in the 8570AML interpreter (These are already supported by the Intel ASL 8571compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 8572ToBuffer. Support for 64-bit AML constants is implemented in the 8573AML parser, debugger, and disassembler. 8574 8575The internal memory tracking mechanism (leak detection code) has 8576been upgraded to reduce the memory overhead (a separate tracking 8577block is no longer allocated for each memory allocation), and now 8578supports all of the internal object caches. 8579 8580The data structures and code for the internal object caches have 8581been coelesced and optimized so that there is a single cache and 8582memory list data structure and a single group of functions that 8583implement generic cache management. This has reduced the code 8584size in both the debug and release versions of the subsystem. 8585 8586The DEBUG_PRINT macro(s) have been optimized for size and replaced 8587by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 8588different, because it generates a single call to an internal 8589function. This results in a savings of about 90 bytes per 8590invocation, resulting in an overall code and data savings of about 859116% in the debug version of the subsystem. 8592 8593 Linux: 8594 8595Fixed C3 disk corruption problems and re-enabled C3 on supporting 8596machines. 8597 8598Integrated low-level sleep code by Patrick Mochel. 8599 8600Further tweaked source code Linuxization. 8601 8602Other minor fixes. 8603 8604 ASL Compiler: 8605 8606Support for ACPI 2.0 variable length packages is fixed/completed. 8607 8608Fixed a problem where the optional length parameter for the ACPI 86092.0 ToString operator. 8610 8611Fixed multiple extraneous error messages when a syntax error is 8612detected within the declaration line of a control method. 8613 8614 ---------------------------------------- 8615Summary of changes for this label: 07_17_01 8616 8617ACPI CA Core Subsystem: 8618 8619Added a new interface named AcpiGetFirmwareTable to obtain any 8620ACPI table via the ACPI signature. The interface can be called at 8621any time during kernel initialization, even before the kernel 8622virtual memory manager is initialized and paging is enabled. This 8623allows kernel subsystems to obtain ACPI tables very early, even 8624before the ACPI CA subsystem is initialized. 8625 8626Fixed a problem where Fields defined with the AnyAcc attribute 8627could be resolved to the incorrect address under the following 8628conditions: 1) the field width is larger than 8 bits and 2) the 8629parent operation region is not defined on a DWORD boundary. 8630 8631Fixed a problem where the interpreter is not being locked during 8632namespace initialization (during execution of the _INI control 8633methods), causing an error when an attempt is made to release it 8634later. 8635 8636ACPI 2.0 support in the AML Interpreter has begun and will be 8637ongoing throughout the rest of this year. In this label, The Mod 8638operator is implemented. 8639 8640Added a new data type to contain full PCI addresses named 8641ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 8642and Function values. 8643 8644 Linux: 8645 8646Enhanced the Linux version of the source code to change most 8647capitalized ACPI type names to lowercase. For example, all 8648instances of ACPI_STATUS are changed to acpi_status. This will 8649result in a large diff, but the change is strictly cosmetic and 8650aligns the CA code closer to the Linux coding standard. 8651 8652OSL Interfaces: 8653 8654The interfaces to the PCI configuration space have been changed to 8655add the PCI Segment number and to split the single 32-bit combined 8656DeviceFunction field into two 16-bit fields. This was 8657accomplished by moving the four values that define an address in 8658PCI configuration space (segment, bus, device, and function) to 8659the new ACPI_PCI_ID structure. 8660 8661The changes to the PCI configuration space interfaces led to a 8662reexamination of the complete set of address space access 8663interfaces for PCI, I/O, and Memory. The previously existing 18 8664interfaces have proven difficult to maintain (any small change 8665must be propagated across at least 6 interfaces) and do not easily 8666allow for future expansion to 64 bits if necessary. Also, on some 8667systems, it would not be appropriate to demultiplex the access 8668width (8, 16, 32,or 64) before calling the OSL if the 8669corresponding native OS interfaces contain a similar access width 8670parameter. For these reasons, the 18 address space interfaces 8671have been replaced by these 6 new ones: 8672 8673AcpiOsReadPciConfiguration 8674AcpiOsWritePciConfiguration 8675AcpiOsReadMemory 8676AcpiOsWriteMemory 8677AcpiOsReadPort 8678AcpiOsWritePort 8679 8680Added a new interface named AcpiOsGetRootPointer to allow the OSL 8681to perform the platform and/or OS-specific actions necessary to 8682obtain the ACPI RSDP table pointer. On IA-32 platforms, this 8683interface will simply call down to the CA core to perform the low- 8684memory search for the table. On IA-64, the RSDP is obtained from 8685EFI. Migrating this interface to the OSL allows the CA core to 8686 8687remain OS and platform independent. 8688 8689Added a new interface named AcpiOsSignal to provide a generic 8690"function code and pointer" interface for various miscellaneous 8691signals and notifications that must be made to the host OS. The 8692first such signals are intended to support the ASL Fatal and 8693Breakpoint operators. In the latter case, the AcpiOsBreakpoint 8694interface has been obsoleted. 8695 8696The definition of the AcpiFormatException interface has been 8697changed to simplify its use. The caller no longer must supply a 8698buffer to the call; A pointer to a const string is now returned 8699directly. This allows the call to be easily used in printf 8700statements, etc. since the caller does not have to manage a local 8701buffer. 8702 8703 8704 ASL Compiler, Version X2025: 8705 8706The ACPI 2.0 Switch/Case/Default operators have been implemented 8707and are fully functional. They will work with all ACPI 1.0 8708interpreters, since the operators are simply translated to If/Else 8709pairs. 8710 8711The ACPI 2.0 ElseIf operator is implemented and will also work 8712with 1.0 interpreters, for the same reason. 8713 8714Implemented support for ACPI 2.0 variable-length packages. These 8715packages have a separate opcode, and their size is determined by 8716the interpreter at run-time. 8717 8718Documentation The ACPI CA Programmer Reference has been updated to 8719reflect the new interfaces and changes to existing interfaces. 8720 8721 ------------------------------------------ 8722Summary of changes for this label: 06_15_01 8723 8724 ACPI CA Core Subsystem: 8725 8726Fixed a problem where a DWORD-accessed field within a Buffer 8727object would get its byte address inadvertently rounded down to 8728the nearest DWORD. Buffers are always Byte-accessible. 8729 8730 ASL Compiler, version X2024: 8731 8732Fixed a problem where the Switch() operator would either fault or 8733hang the compiler. Note however, that the AML code for this ACPI 87342.0 operator is not yet implemented. 8735 8736Compiler uses the new AcpiOsGetTimer interface to obtain compile 8737timings. 8738 8739Implementation of the CreateField operator automatically converts 8740a reference to a named field within a resource descriptor from a 8741byte offset to a bit offset if required. 8742 8743Added some missing named fields from the resource descriptor 8744support. These are the names that are automatically created by the 8745compiler to reference fields within a descriptor. They are only 8746valid at compile time and are not passed through to the AML 8747interpreter. 8748 8749Resource descriptor named fields are now typed as Integers and 8750subject to compile-time typechecking when used in expressions. 8751 8752 ------------------------------------------ 8753Summary of changes for this label: 05_18_01 8754 8755 ACPI CA Core Subsystem: 8756 8757Fixed a couple of problems in the Field support code where bits 8758from adjacent fields could be returned along with the proper field 8759bits. Restructured the field support code to improve performance, 8760readability and maintainability. 8761 8762New DEBUG_PRINTP macro automatically inserts the procedure name 8763into the output, saving hundreds of copies of procedure name 8764strings within the source, shrinking the memory footprint of the 8765debug version of the core subsystem. 8766 8767 Source Code Structure: 8768 8769The source code directory tree was restructured to reflect the 8770current organization of the component architecture. Some files 8771and directories have been moved and/or renamed. 8772 8773 Linux: 8774 8775Fixed leaking kacpidpc processes. 8776 8777Fixed queueing event data even when /proc/acpi/event is not 8778opened. 8779 8780 ASL Compiler, version X2020: 8781 8782Memory allocation performance enhancement - over 24X compile time 8783improvement on large ASL files. Parse nodes and namestring 8784buffers are now allocated from a large internal compiler buffer. 8785 8786The temporary .SRC file is deleted unless the "-s" option is 8787specified 8788 8789The "-d" debug output option now sends all output to the .DBG file 8790instead of the console. 8791 8792"External" second parameter is now optional 8793 8794"ElseIf" syntax now properly allows the predicate 8795 8796Last operand to "Load" now recognized as a Target operand 8797 8798Debug object can now be used anywhere as a normal object. 8799 8800ResourceTemplate now returns an object of type BUFFER 8801 8802EISAID now returns an object of type INTEGER 8803 8804"Index" now works with a STRING operand 8805 8806"LoadTable" now accepts optional parameters 8807 8808"ToString" length parameter is now optional 8809 8810"Interrupt (ResourceType," parse error fixed. 8811 8812"Register" with a user-defined region space parse error fixed 8813 8814Escaped backslash at the end of a string ("\\") scan/parse error 8815fixed 8816 8817"Revision" is now an object of type INTEGER. 8818 8819 8820 8821------------------------------------------ 8822Summary of changes for this label: 05_02_01 8823 8824Linux: 8825 8826/proc/acpi/event now blocks properly. 8827 8828Removed /proc/sys/acpi. You can still dump your DSDT from 8829/proc/acpi/dsdt. 8830 8831 ACPI CA Core Subsystem: 8832 8833Fixed a problem introduced in the previous label where some of the 8834"small" resource descriptor types were not recognized. 8835 8836Improved error messages for the case where an ASL Field is outside 8837the range of the parent operation region. 8838 8839 ASL Compiler, version X2018: 8840 8841 8842Added error detection for ASL Fields that extend beyond the length 8843of the parent operation region (only if the length of the region 8844is known at compile time.) This includes fields that have a 8845minimum access width that is smaller than the parent region, and 8846individual field units that are partially or entirely beyond the 8847extent of the parent. 8848 8849 8850 8851------------------------------------------ 8852Summary of changes for this label: 04_27_01 8853 8854 ACPI CA Core Subsystem: 8855 8856Fixed a problem where the namespace mutex could be released at the 8857wrong time during execution of AcpiRemoveAddressSpaceHandler. 8858 8859Added optional thread ID output for debug traces, to simplify 8860debugging of multiple threads. Added context switch notification 8861when the debug code realizes that a different thread is now 8862executing ACPI code. 8863 8864Some additional external data types have been prefixed with the 8865string "ACPI_" for consistency. This may effect existing code. 8866The data types affected are the external callback typedefs - e.g., 8867 8868WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 8869 8870 Linux: 8871 8872Fixed an issue with the OSL semaphore implementation where a 8873thread was waking up with an error from receiving a SIGCHLD 8874signal. 8875 8876Linux version of ACPI CA now uses the system C library for string 8877manipulation routines instead of a local implementation. 8878 8879Cleaned up comments and removed TBDs. 8880 8881 ASL Compiler, version X2017: 8882 8883Enhanced error detection and reporting for all file I/O 8884operations. 8885 8886 Documentation: 8887 8888Programmer Reference updated to version 1.06. 8889 8890 8891 8892------------------------------------------ 8893Summary of changes for this label: 04_13_01 8894 8895 ACPI CA Core Subsystem: 8896 8897Restructured support for BufferFields and RegionFields. 8898BankFields support is now fully operational. All known 32-bit 8899limitations on field sizes have been removed. Both BufferFields 8900and (Operation) RegionFields are now supported by the same field 8901management code. 8902 8903Resource support now supports QWORD address and IO resources. The 890416/32/64 bit address structures and the Extended IRQ structure 8905have been changed to properly handle Source Resource strings. 8906 8907A ThreadId of -1 is now used to indicate a "mutex not acquired" 8908condition internally and must never be returned by AcpiOsThreadId. 8909This reserved value was changed from 0 since Unix systems allow a 8910thread ID of 0. 8911 8912Linux: 8913 8914Driver code reorganized to enhance portability 8915 8916Added a kernel configuration option to control ACPI_DEBUG 8917 8918Fixed the EC driver to honor _GLK. 8919 8920ASL Compiler, version X2016: 8921 8922Fixed support for the "FixedHw" keyword. Previously, the FixedHw 8923address space was set to 0, not 0x7f as it should be. 8924 8925 ------------------------------------------ 8926Summary of changes for this label: 03_13_01 8927 8928 ACPI CA Core Subsystem: 8929 8930During ACPI initialization, the _SB_._INI method is now run if 8931present. 8932 8933Notify handler fix - notifies are deferred until the parent method 8934completes execution. This fixes the "mutex already acquired" 8935issue seen occasionally. 8936 8937Part of the "implicit conversion" rules in ACPI 2.0 have been 8938found to cause compatibility problems with existing ASL/AML. The 8939convert "result-to-target-type" implementation has been removed 8940for stores to method Args and Locals. Source operand conversion 8941is still fully implemented. Possible changes to ACPI 2.0 8942specification pending. 8943 8944Fix to AcpiRsCalculatePciRoutingTableLength to return correct 8945length. 8946 8947Fix for compiler warnings for 64-bit compiles. 8948 8949 Linux: 8950 8951/proc output aligned for easier parsing. 8952 8953Release-version compile problem fixed. 8954 8955New kernel configuration options documented in Configure.help. 8956 8957IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 8958context" message. 8959 8960 OSPM: 8961 8962Power resource driver integrated with bus manager. 8963 8964Fixed kernel fault during active cooling for thermal zones. 8965 8966Source Code: 8967 8968The source code tree has been restructured. 8969 8970 8971 8972------------------------------------------ 8973Summary of changes for this label: 03_02_01 8974 8975 Linux OS Services Layer (OSL): 8976 8977Major revision of all Linux-specific code. 8978 8979Modularized all ACPI-specific drivers. 8980 8981Added new thermal zone and power resource drivers. 8982 8983Revamped /proc interface (new functionality is under /proc/acpi). 8984 8985New kernel configuration options. 8986 8987 Linux known issues: 8988 8989New kernel configuration options not documented in Configure.help 8990yet. 8991 8992 8993Module dependencies not currently implemented. If used, they 8994should be loaded in this order: busmgr, power, ec, system, 8995processor, battery, ac_adapter, button, thermal. 8996 8997Modules will not load if CONFIG_MODVERSION is set. 8998 8999IBM 600E - entering S5 may reboot instead of shutting down. 9000 9001IBM 600E - Sleep button may generate "Invalid <NULL> context" 9002message. 9003 9004Some systems may fail with "execution mutex already acquired" 9005message. 9006 9007 ACPI CA Core Subsystem: 9008 9009Added a new OSL Interface, AcpiOsGetThreadId. This was required 9010for the deadlock detection code. Defined to return a non-zero, 32- 9011bit thread ID for the currently executing thread. May be a non- 9012zero constant integer on single-thread systems. 9013 9014Implemented deadlock detection for internal subsystem mutexes. We 9015may add conditional compilation for this code (debug only) later. 9016 9017ASL/AML Mutex object semantics are now fully supported. This 9018includes multiple acquires/releases by owner and support for the 9019 9020Mutex SyncLevel parameter. 9021 9022A new "Force Release" mechanism automatically frees all ASL 9023Mutexes that have been acquired but not released when a thread 9024exits the interpreter. This forces conformance to the ACPI spec 9025("All mutexes must be released when an invocation exits") and 9026prevents deadlocked ASL threads. This mechanism can be expanded 9027(later) to monitor other resource acquisitions if OEM ASL code 9028continues to misbehave (which it will). 9029 9030Several new ACPI exception codes have been added for the Mutex 9031support. 9032 9033Recursive method calls are now allowed and supported (the ACPI 9034spec does in fact allow recursive method calls.) The number of 9035recursive calls is subject to the restrictions imposed by the 9036SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 9037parameter. 9038 9039Implemented support for the SyncLevel parameter for control 9040methods (ACPI 2.0 feature) 9041 9042Fixed a deadlock problem when multiple threads attempted to use 9043the interpreter. 9044 9045Fixed a problem where the string length of a String package 9046element was not always set in a package returned from 9047AcpiEvaluateObject. 9048 9049Fixed a problem where the length of a String package element was 9050not always included in the length of the overall package returned 9051from AcpiEvaluateObject. 9052 9053Added external interfaces (Acpi*) to the ACPI debug memory 9054manager. This manager keeps a list of all outstanding 9055allocations, and can therefore detect memory leaks and attempts to 9056free memory blocks more than once. Useful for code such as the 9057power manager, etc. May not be appropriate for device drivers. 9058Performance with the debug code enabled is slow. 9059 9060The ACPI Global Lock is now an optional hardware element. 9061 9062 ASL Compiler Version X2015: 9063 9064Integrated changes to allow the compiler to be generated on 9065multiple platforms. 9066 9067Linux makefile added to generate the compiler on Linux 9068 9069 Source Code: 9070 9071All platform-specific headers have been moved to their own 9072subdirectory, Include/Platform. 9073 9074New source file added, Interpreter/ammutex.c 9075 9076New header file, Include/acstruct.h 9077 9078 Documentation: 9079 9080The programmer reference has been updated for the following new 9081interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 9082 9083 ------------------------------------------ 9084Summary of changes for this label: 02_08_01 9085 9086Core ACPI CA Subsystem: Fixed a problem where an error was 9087incorrectly returned if the return resource buffer was larger than 9088the actual data (in the resource interfaces). 9089 9090References to named objects within packages are resolved to the 9091 9092full pathname string before packages are returned directly (via 9093the AcpiEvaluateObject interface) or indirectly via the resource 9094interfaces. 9095 9096Linux OS Services Layer (OSL): 9097 9098Improved /proc battery interface. 9099 9100 9101Added C-state debugging output and other miscellaneous fixes. 9102 9103ASL Compiler Version X2014: 9104 9105All defined method arguments can now be used as local variables, 9106including the ones that are not actually passed in as parameters. 9107The compiler tracks initialization of the arguments and issues an 9108exception if they are used without prior assignment (just like 9109locals). 9110 9111The -o option now specifies a filename prefix that is used for all 9112output files, including the AML output file. Otherwise, the 9113default behavior is as follows: 1) the AML goes to the file 9114specified in the DSDT. 2) all other output files use the input 9115source filename as the base. 9116 9117 ------------------------------------------ 9118Summary of changes for this label: 01_25_01 9119 9120Core ACPI CA Subsystem: Restructured the implementation of object 9121store support within the interpreter. This includes support for 9122the Store operator as well as any ASL operators that include a 9123target operand. 9124 9125Partially implemented support for Implicit Result-to-Target 9126conversion. This is when a result object is converted on the fly 9127to the type of an existing target object. Completion of this 9128support is pending further analysis of the ACPI specification 9129concerning this matter. 9130 9131CPU-specific code has been removed from the subsystem (hardware 9132directory). 9133 9134New Power Management Timer functions added 9135 9136Linux OS Services Layer (OSL): Moved system state transition code 9137to the core, fixed it, and modified Linux OSL accordingly. 9138 9139Fixed C2 and C3 latency calculations. 9140 9141 9142We no longer use the compilation date for the version message on 9143initialization, but retrieve the version from AcpiGetSystemInfo(). 9144 9145Incorporated for fix Sony VAIO machines. 9146 9147Documentation: The Programmer Reference has been updated and 9148reformatted. 9149 9150 9151ASL Compiler: Version X2013: Fixed a problem where the line 9152numbering and error reporting could get out of sync in the 9153presence of multiple include files. 9154 9155 ------------------------------------------ 9156Summary of changes for this label: 01_15_01 9157 9158Core ACPI CA Subsystem: 9159 9160Implemented support for type conversions in the execution of the 9161ASL Concatenate operator (The second operand is converted to 9162match the type of the first operand before concatenation.) 9163 9164Support for implicit source operand conversion is partially 9165implemented. The ASL source operand types Integer, Buffer, and 9166String are freely interchangeable for most ASL operators and are 9167converted by the interpreter on the fly as required. Implicit 9168Target operand conversion (where the result is converted to the 9169target type before storing) is not yet implemented. 9170 9171Support for 32-bit and 64-bit BCD integers is implemented. 9172 9173Problem fixed where a field read on an aligned field could cause a 9174read past the end of the field. 9175 9176New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 9177does not return a value, but the caller expects one. (The ASL 9178compiler flags this as a warning.) 9179 9180ASL Compiler: 9181 9182Version X2011: 91831. Static typechecking of all operands is implemented. This 9184prevents the use of invalid objects (such as using a Package where 9185an Integer is required) at compile time instead of at interpreter 9186run-time. 91872. The ASL source line is printed with ALL errors and warnings. 91883. Bug fix for source EOF without final linefeed. 91894. Debug option is split into a parse trace and a namespace trace. 91905. Namespace output option (-n) includes initial values for 9191integers and strings. 91926. Parse-only option added for quick syntax checking. 91937. Compiler checks for duplicate ACPI name declarations 9194 9195Version X2012: 91961. Relaxed typechecking to allow interchangeability between 9197strings, integers, and buffers. These types are now converted by 9198the interpreter at runtime. 91992. Compiler reports time taken by each internal subsystem in the 9200debug output file. 9201 9202 9203 ------------------------------------------ 9204Summary of changes for this label: 12_14_00 9205 9206ASL Compiler: 9207 9208This is the first official release of the compiler. Since the 9209compiler requires elements of the Core Subsystem, this label 9210synchronizes everything. 9211 9212------------------------------------------ 9213Summary of changes for this label: 12_08_00 9214 9215 9216Fixed a problem where named references within the ASL definition 9217of both OperationRegions and CreateXXXFields did not work 9218properly. The symptom was an AE_AML_OPERAND_TYPE during 9219initialization of the region/field. This is similar (but not 9220related internally) to the problem that was fixed in the last 9221label. 9222 9223Implemented both 32-bit and 64-bit support for the BCD ASL 9224functions ToBCD and FromBCD. 9225 9226Updated all legal headers to include "2000" in the copyright 9227years. 9228 9229 ------------------------------------------ 9230Summary of changes for this label: 12_01_00 9231 9232Fixed a problem where method invocations within the ASL definition 9233of both OperationRegions and CreateXXXFields did not work 9234properly. The symptom was an AE_AML_OPERAND_TYPE during 9235initialization of the region/field: 9236 9237 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 9238[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 9239(0x3005) 9240 9241Fixed a problem where operators with more than one nested 9242subexpression would fail. The symptoms were varied, by mostly 9243AE_AML_OPERAND_TYPE errors. This was actually a rather serious 9244problem that has gone unnoticed until now. 9245 9246 Subtract (Add (1,2), Multiply (3,4)) 9247 9248Fixed a problem where AcpiGetHandle didn't quite get fixed in the 9249previous build (The prefix part of a relative path was handled 9250incorrectly). 9251 9252Fixed a problem where Operation Region initialization failed if 9253the operation region name was a "namepath" instead of a simple 9254"nameseg". Symptom was an AE_NO_OPERAND error. 9255 9256Fixed a problem where an assignment to a local variable via the 9257indirect RefOf mechanism only worked for the first such 9258assignment. Subsequent assignments were ignored. 9259 9260 ------------------------------------------ 9261Summary of changes for this label: 11_15_00 9262 9263ACPI 2.0 table support with backwards support for ACPI 1.0 and the 92640.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 9265the AML interpreter does NOT have support for the new 2.0 ASL 9266grammar terms at this time. 9267 9268All ACPI hardware access is via the GAS structures in the ACPI 2.0 9269FADT. 9270 9271All physical memory addresses across all platforms are now 64 bits 9272wide. Logical address width remains dependent on the platform 9273(i.e., "void *"). 9274 9275AcpiOsMapMemory interface changed to a 64-bit physical address. 9276 9277The AML interpreter integer size is now 64 bits, as per the ACPI 92782.0 specification. 9279 9280For backwards compatibility with ACPI 1.0, ACPI tables with a 9281revision number less than 2 use 32-bit integers only. 9282 9283Fixed a problem where the evaluation of OpRegion operands did not 9284always resolve them to numbers properly. 9285 9286------------------------------------------ 9287Summary of changes for this label: 10_20_00 9288 9289Fix for CBN_._STA issue. This fix will allow correct access to 9290CBN_ OpRegions when the _STA returns 0x8. 9291 9292Support to convert ACPI constants (Ones, Zeros, One) to actual 9293values before a package object is returned 9294 9295Fix for method call as predicate to if/while construct causing 9296incorrect if/while behavior 9297 9298Fix for Else block package lengths sometimes calculated wrong (if 9299block > 63 bytes) 9300 9301Fix for Processor object length field, was always zero 9302 9303Table load abort if FACP sanity check fails 9304 9305Fix for problem with Scope(name) if name already exists 9306 9307Warning emitted if a named object referenced cannot be found 9308(resolved) during method execution. 9309 9310 9311 9312 9313 9314------------------------------------------ 9315Summary of changes for this label: 9_29_00 9316 9317New table initialization interfaces: AcpiInitializeSubsystem no 9318longer has any parameters AcpiFindRootPointer - Find the RSDP (if 9319necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 9320>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 9321AcpiLoadTables 9322 9323Note: These interface changes require changes to all existing OSDs 9324 9325The PCI_Config default address space handler is always installed 9326at the root namespace object. 9327 9328------------------------------------------- 9329Summary of changes for this label: 09_15_00 9330 9331The new initialization architecture is implemented. New 9332interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 9333AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 9334 9335(Namespace is automatically loaded when a table is loaded) 9336 9337The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 933852 bytes to 32 bytes. There is usually one of these for every 9339namespace object, so the memory savings is significant. 9340 9341Implemented just-in-time evaluation of the CreateField operators. 9342 9343Bug fixes for IA-64 support have been integrated. 9344 9345Additional code review comments have been implemented 9346 9347The so-called "third pass parse" has been replaced by a final walk 9348through the namespace to initialize all operation regions (address 9349spaces) and fields that have not yet been initialized during the 9350execution of the various _INI and REG methods. 9351 9352New file - namespace/nsinit.c 9353 9354------------------------------------------- 9355Summary of changes for this label: 09_01_00 9356 9357Namespace manager data structures have been reworked to change the 9358primary object from a table to a single object. This has 9359resulted in dynamic memory savings of 3X within the namespace and 93602X overall in the ACPI CA subsystem. 9361 9362Fixed problem where the call to AcpiEvFindPciRootBuses was 9363inadvertently left commented out. 9364 9365Reduced the warning count when generating the source with the GCC 9366compiler. 9367 9368Revision numbers added to each module header showing the 9369SourceSafe version of the file. Please refer to this version 9370number when giving us feedback or comments on individual modules. 9371 9372The main object types within the subsystem have been renamed to 9373clarify their purpose: 9374 9375ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 9376ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 9377ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 9378 9379NOTE: no changes to the initialization sequence are included in 9380this label. 9381 9382------------------------------------------- 9383Summary of changes for this label: 08_23_00 9384 9385Fixed problem where TerminateControlMethod was being called 9386multiple times per method 9387 9388Fixed debugger problem where single stepping caused a semaphore to 9389be oversignalled 9390 9391Improved performance through additional parse object caching - 9392added ACPI_EXTENDED_OP type 9393 9394------------------------------------------- 9395Summary of changes for this label: 08_10_00 9396 9397Parser/Interpreter integration: Eliminated the creation of 9398complete parse trees for ACPI tables and control methods. 9399Instead, parse subtrees are created and then deleted as soon as 9400they are processed (Either entered into the namespace or executed 9401by the interpreter). This reduces the use of dynamic kernel 9402memory significantly. (about 10X) 9403 9404Exception codes broken into classes and renumbered. Be sure to 9405recompile all code that includes acexcep.h. Hopefully we won't 9406have to renumber the codes again now that they are split into 9407classes (environment, programmer, AML code, ACPI table, and 9408internal). 9409 9410Fixed some additional alignment issues in the Resource Manager 9411subcomponent 9412 9413Implemented semaphore tracking in the AcpiExec utility, and fixed 9414several places where mutexes/semaphores were being unlocked 9415without a corresponding lock operation. There are no known 9416semaphore or mutex "leaks" at this time. 9417 9418Fixed the case where an ASL Return operator is used to return an 9419unnamed package. 9420 9421------------------------------------------- 9422Summary of changes for this label: 07_28_00 9423 9424Fixed a problem with the way addresses were calculated in 9425AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 9426manifested itself when a Field was created with WordAccess or 9427DwordAccess, but the field unit defined within the Field was less 9428 9429than a Word or Dword. 9430 9431Fixed a problem in AmlDumpOperands() module's loop to pull 9432operands off of the operand stack to display information. The 9433problem manifested itself as a TLB error on 64-bit systems when 9434accessing an operand stack with two or more operands. 9435 9436Fixed a problem with the PCI configuration space handlers where 9437context was getting confused between accesses. This required a 9438change to the generic address space handler and address space 9439setup definitions. Handlers now get both a global handler context 9440(this is the one passed in by the user when executing 9441AcpiInstallAddressSpaceHandler() and a specific region context 9442that is unique to each region (For example, the _ADR, _SEG and 9443_BBN values associated with a specific region). The generic 9444function definitions have changed to the following: 9445 9446typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 9447UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 9448*HandlerContext, // This used to be void *Context void 9449*RegionContext); // This is an additional parameter 9450 9451typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 9452RegionHandle, UINT32 Function, void *HandlerContext, void 9453**RegionContext); // This used to be **ReturnContext 9454 9455------------------------------------------- 9456Summary of changes for this label: 07_21_00 9457 9458Major file consolidation and rename. All files within the 9459interpreter have been renamed as well as most header files. This 9460was done to prevent collisions with existing files in the host 9461OSs -- filenames such as "config.h" and "global.h" seem to be 9462quite common. The VC project files have been updated. All 9463makefiles will require modification. 9464 9465The parser/interpreter integration continues in Phase 5 with the 9466implementation of a complete 2-pass parse (the AML is parsed 9467twice) for each table; This avoids the construction of a huge 9468parse tree and therefore reduces the amount of dynamic memory 9469required by the subsystem. Greater use of the parse object cache 9470means that performance is unaffected. 9471 9472Many comments from the two code reviews have been rolled in. 9473 9474The 64-bit alignment support is complete. 9475 9476------------------------------------------- 9477Summary of changes for this label: 06_30_00 9478 9479With a nod and a tip of the hat to the technology of yesteryear, 9480we've added support in the source code for 80 column output 9481devices. The code is now mostly constrained to 80 columns or 9482less to support environments and editors that 1) cannot display 9483or print more than 80 characters on a single line, and 2) cannot 9484disable line wrapping. 9485 9486A major restructuring of the namespace data structure has been 9487completed. The result is 1) cleaner and more 9488understandable/maintainable code, and 2) a significant reduction 9489in the dynamic memory requirement for each named ACPI object 9490(almost half). 9491 9492------------------------------------------- 9493Summary of changes for this label: 06_23_00 9494 9495Linux support has been added. In order to obtain approval to get 9496the ACPI CA subsystem into the Linux kernel, we've had to make 9497quite a few changes to the base subsystem that will affect all 9498users (all the changes are generic and OS- independent). The 9499effects of these global changes have been somewhat far reaching. 9500Files have been merged and/or renamed and interfaces have been 9501renamed. The major changes are described below. 9502 9503Osd* interfaces renamed to AcpiOs* to eliminate namespace 9504pollution/confusion within our target kernels. All OSD 9505interfaces must be modified to match the new naming convention. 9506 9507Files merged across the subsystem. A number of the smaller source 9508and header files have been merged to reduce the file count and 9509increase the density of the existing files. There are too many 9510to list here. In general, makefiles that call out individual 9511files will require rebuilding. 9512 9513Interpreter files renamed. All interpreter files now have the 9514prefix am* instead of ie* and is*. 9515 9516Header files renamed: The acapi.h file is now acpixf.h. The 9517acpiosd.h file is now acpiosxf.h. We are removing references to 9518the acronym "API" since it is somewhat windowsy. The new name is 9519"external interface" or xface or xf in the filenames.j 9520 9521 9522All manifest constants have been forced to upper case (some were 9523mixed case.) Also, the string "ACPI_" has been prepended to many 9524(not all) of the constants, typedefs, and structs. 9525 9526The globals "DebugLevel" and "DebugLayer" have been renamed 9527"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 9528 9529All other globals within the subsystem are now prefixed with 9530"AcpiGbl_" Internal procedures within the subsystem are now 9531prefixed with "Acpi" (with only a few exceptions). The original 9532two-letter abbreviation for the subcomponent remains after "Acpi" 9533- for example, CmCallocate became AcpiCmCallocate. 9534 9535Added a source code translation/conversion utility. Used to 9536generate the Linux source code, it can be modified to generate 9537other types of source as well. Can also be used to cleanup 9538existing source by removing extraneous spaces and blank lines. 9539Found in tools/acpisrc/* 9540 9541OsdUnMapMemory was renamed to OsdUnmapMemory and then 9542AcpiOsUnmapMemory. (UnMap became Unmap). 9543 9544A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 9545When set to one, this indicates that the caller wants to use the 9546 9547semaphore as a mutex, not a counting semaphore. ACPI CA uses 9548both types. However, implementers of this call may want to use 9549different OS primitives depending on the type of semaphore 9550requested. For example, some operating systems provide separate 9551 9552"mutex" and "semaphore" interfaces - where the mutex interface is 9553much faster because it doesn't have all the overhead of a full 9554semaphore implementation. 9555 9556Fixed a deadlock problem where a method that accesses the PCI 9557address space can block forever if it is the first access to the 9558space. 9559 9560------------------------------------------- 9561Summary of changes for this label: 06_02_00 9562 9563Support for environments that cannot handle unaligned data 9564accesses (e.g. firmware and OS environments devoid of alignment 9565handler technology namely SAL/EFI and the IA-64 Linux kernel) has 9566been added (via configurable macros) in these three areas: - 9567Transfer of data from the raw AML byte stream is done via byte 9568moves instead of word/dword/qword moves. - External objects are 9569aligned within the user buffer, including package elements (sub- 9570objects). - Conversion of name strings to UINT32 Acpi Names is now 9571done byte-wise. 9572 9573The Store operator was modified to mimic Microsoft's 9574implementation when storing to a Buffer Field. 9575 9576Added a check of the BM_STS bit before entering C3. 9577 9578The methods subdirectory has been obsoleted and removed. A new 9579file, cmeval.c subsumes the functionality. 9580 9581A 16-bit (DOS) version of AcpiExec has been developed. The 9582makefile is under the acpiexec directory. 9583