changes.txt revision 151937
1---------------------------------------- 221 October 2005. Summary of changes for version 20051021: 3 41) ACPI CA Core Subsystem: 5 6Implemented support for the EM64T and other x86-64 processors. 7This essentially entails recognizing that these processors 8support non-aligned memory transfers. Previously, all 64-bit 9processors were assumed to lack hardware support for non-aligned 10transfers. 11 12Completed conversion of the Resource Manager to nearly full table- 13driven operation. Specifically, the resource conversion code 14(convert AML to internal format and the reverse) and the debug 15code to dump internal resource descriptors are fully table- 16driven, reducing code and data size and improving 17maintainability. 18 19The OSL interfaces for Acquire and Release Lock now use a 64-bit 20flag word on 64-bit processors instead of a fixed 32-bit word. 21(With assistance from Alexey Starikovskiy) 22 23Implemented support within the resource conversion code for the 24Type-Specific byte within the various ACPI 3.0 *WordSpace macros. 25 26Fixed some issues within the resource conversion code for the 27type-specific flags for both Memory and I/O address resource 28descriptors. For Memory, implemented support for the MTP and TTP 29flags. For I/O, split the TRS and TTP flags into two separate 30fields. 31 32Code and Data Size: The current and previous library sizes for 33the core subsystem are shown below. These are the code and data 34sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 3532-bit compiler. These values do not include any ACPI driver or 36OSPM code. The debug version of the code includes the debug 37output trace mechanism and has a much larger code and data size. 38Note that these values will vary depending on the efficiency of 39the compiler and the compiler options used during generation. 40 41 Previous Release: 42 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 43 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 44 Current Release: 45 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 46 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 47 48 492) iASL Compiler/Disassembler: 50 51Relaxed a compiler restriction that disallowed a ResourceIndex 52byte if the corresponding ResourceSource string was not also 53present in a resource descriptor declaration. This restriction 54caused problems with existing AML/ASL code that includes the 55Index byte without the string. When such AML was disassembled, it 56could not be compiled without modification. Further, the modified 57code created a resource template with a different size than the 58original, breaking code that used fixed offsets into the resource 59template buffer. 60 61Removed a recent feature of the disassembler to ignore a lone 62ResourceIndex byte. This byte is now emitted if present so that 63the exact AML can be reproduced when the disassembled code is 64recompiled. 65 66Improved comments and text alignment for the resource descriptor 67code emitted by the disassembler. 68 69Implemented disassembler support for the ACPI 3.0 AccessSize 70field within a Register() resource descriptor. 71 72---------------------------------------- 7330 September 2005. Summary of changes for version 20050930: 74 751) ACPI CA Core Subsystem: 76 77Completed a major overhaul of the Resource Manager code - 78specifically, optimizations in the area of the AML/internal 79resource conversion code. The code has been optimized to simplify 80and eliminate duplicated code, CPU stack use has been decreased 81by optimizing function parameters and local variables, and naming 82conventions across the manager have been standardized for clarity 83and ease of maintenance (this includes function, parameter, 84variable, and struct/typedef names.) The update may force changes 85in some driver code, depending on how resources are handled by 86the host OS. 87 88All Resource Manager dispatch and information tables have been 89moved to a single location for clarity and ease of maintenance. 90One new file was created, named "rsinfo.c". 91 92The ACPI return macros (return_ACPI_STATUS, etc.) have been 93modified to guarantee that the argument is not evaluated twice, 94making them less prone to macro side-effects. However, since 95there exists the possibility of additional stack use if a 96particular compiler cannot optimize them (such as in the debug 97generation case), the original macros are optionally available. 98Note that some invocations of the return_VALUE macro may now 99cause size mismatch warnings; the return_UINT8 and return_UINT32 100macros are provided to eliminate these. (From Randy Dunlap) 101 102Implemented a new mechanism to enable debug tracing for 103individual control methods. A new external interface, 104AcpiDebugTrace, is provided to enable this mechanism. The intent 105is to allow the host OS to easily enable and disable tracing for 106problematic control methods. This interface can be easily exposed 107to a user or debugger interface if desired. See the file 108psxface.c for details. 109 110AcpiUtCallocate will now return a valid pointer if a length of 111zero is specified - a length of one is used and a warning is 112issued. This matches the behavior of AcpiUtAllocate. 113 114Code and Data Size: The current and previous library sizes for 115the core subsystem are shown below. These are the code and data 116sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 11732-bit compiler. These values do not include any ACPI driver or 118OSPM code. The debug version of the code includes the debug 119output trace mechanism and has a much larger code and data size. 120Note that these values will vary depending on the efficiency of 121the compiler and the compiler options used during generation. 122 123 Previous Release: 124 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 125 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 126 Current Release: 127 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 128 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 129 130 1312) iASL Compiler/Disassembler: 132 133A remark is issued if the effective compile-time length of a 134package or buffer is zero. Previously, this was a warning. 135 136---------------------------------------- 13716 September 2005. Summary of changes for version 20050916: 138 1391) ACPI CA Core Subsystem: 140 141Fixed a problem within the Resource Manager where support for the 142Generic Register descriptor was not fully implemented. This 143descriptor is now fully recognized, parsed, disassembled, and 144displayed. 145 146Completely restructured the Resource Manager code to utilize 147table-driven dispatch and lookup, eliminating many of the large 148switch() statements. This reduces overall subsystem code size and 149code complexity. Affects the resource parsing and construction, 150disassembly, and debug dump output. 151 152Cleaned up and restructured the debug dump output for all 153resource descriptors. Improved readability of the output and 154reduced code size. 155 156Fixed a problem where changes to internal data structures caused 157the optional ACPI_MUTEX_DEBUG code to fail compilation if 158specified. 159 160Code and Data Size: The current and previous library sizes for 161the core subsystem are shown below. These are the code and data 162sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0 16332-bit compiler. These values do not include any ACPI driver or 164OSPM code. The debug version of the code includes the debug 165output trace mechanism and has a much larger code and data size. 166Note that these values will vary depending on the efficiency of 167the compiler and the compiler options used during generation. 168 169 Previous Release: 170 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 171 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 172 Current Release: 173 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 174 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 175 176 1772) iASL Compiler/Disassembler: 178 179Updated the disassembler to automatically insert an 180EndDependentFn() macro into the ASL stream if this macro is 181missing in the original AML code, simplifying compilation of the 182resulting ASL module. 183 184Fixed a problem in the disassembler where a disassembled 185ResourceSource string (within a large resource descriptor) was 186not surrounded by quotes and not followed by a comma, causing 187errors when the resulting ASL module was compiled. Also, escape 188sequences within a ResourceSource string are now handled 189correctly (especially "\\") 190 191---------------------------------------- 19202 September 2005. Summary of changes for version 20050902: 193 1941) ACPI CA Core Subsystem: 195 196Fixed a problem with the internal Owner ID allocation and 197deallocation mechanisms for control method execution and 198recursive method invocation. This should eliminate the 199OWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on 200some systems. Recursive method invocation depth is currently 201limited to 255. (Alexey Starikovskiy) 202 203Completely eliminated all vestiges of support for the "module- 204level executable code" until this support is fully implemented 205and debugged. This should eliminate the NO_RETURN_VALUE 206exceptions seen during table load on some systems that invoke 207this support. 208 209Fixed a problem within the resource manager code where the 210transaction flags for a 64-bit address descriptor were handled 211incorrectly in the type-specific flag byte. 212 213Consolidated duplicate code within the address descriptor 214resource manager code, reducing overall subsystem code size. 215 216Fixed a fault when using the AML debugger "disassemble" command 217to disassemble individual control methods. 218 219Removed references to the "release_current" directory within the 220Unix release package. 221 222Code and Data Size: The current and previous core subsystem 223library sizes are shown below. These are the code and data sizes 224for the acpica.lib produced by the Microsoft Visual C++ 6.0 225compiler. These values do not include any ACPI driver or OSPM 226code. The debug version of the code includes the debug output 227trace mechanism and has a much larger code and data size. Note 228that these values will vary depending on the efficiency of the 229compiler and the compiler options used during generation. 230 231 Previous Release: 232 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 233 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 234 Current Release: 235 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 236 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 237 238 2392) iASL Compiler/Disassembler: 240 241Implemented an error check for illegal duplicate values in the 242interrupt and dma lists for the following ASL macros: Dma(), 243Irq(), IrqNoFlags(), and Interrupt(). 244 245Implemented error checking for the Irq() and IrqNoFlags() macros 246to detect too many values in the interrupt list (16 max) and 247invalid values in the list (range 0 - 15) 248 249The maximum length string literal within an ASL file is now 250restricted to 200 characters as per the ACPI specification. 251 252Fixed a fault when using the -ln option (generate namespace 253listing). 254 255Implemented an error check to determine if a DescriptorName 256within a resource descriptor has already been used within the 257current scope. 258 259---------------------------------------- 26015 August 2005. Summary of changes for version 20050815: 261 2621) ACPI CA Core Subsystem: 263 264Implemented a full bytewise compare to determine if a table load 265request is attempting to load a duplicate table. The compare is 266performed if the table signatures and table lengths match. This 267will allow different tables with the same OEM Table ID and 268revision to be loaded - probably against the ACPI specification, 269but discovered in the field nonetheless. 270 271Added the changes.txt logfile to each of the zipped release 272packages. 273 274Code and Data Size: Current and previous core subsystem library 275sizes are shown below. These are the code and data sizes for the 276acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 277these values do not include any ACPI driver or OSPM code. The 278debug version of the code includes the debug output trace 279mechanism and has a much larger code and data size. Note that 280these values will vary depending on the efficiency of the 281compiler and the compiler options used during generation. 282 283 Previous Release: 284 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 285 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 286 Current Release: 287 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 288 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 289 290 2912) iASL Compiler/Disassembler: 292 293Fixed a problem where incorrect AML code could be generated for 294Package objects if optimization is disabled (via the -oa switch). 295 296Fixed a problem with where incorrect AML code is generated for 297variable-length packages when the package length is not specified 298and the number of initializer values is greater than 255. 299 300---------------------------------------- 30129 July 2005. Summary of changes for version 20050729: 302 3031) ACPI CA Core Subsystem: 304 305Implemented support to ignore an attempt to install/load a 306particular ACPI table more than once. Apparently there exists 307BIOS code that repeatedly attempts to load the same SSDT upon 308certain events. With assistance from Venkatesh Pallipadi. 309 310Restructured the main interface to the AML parser in order to 311correctly handle all exceptional conditions. This will prevent 312leakage of the OwnerId resource and should eliminate the 313AE_OWNER_ID_LIMIT exceptions seen on some machines. With 314assistance from Alexey Starikovskiy. 315 316Support for "module level code" has been disabled in this version 317due to a number of issues that have appeared on various machines. 318The support can be enabled by defining 319ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When 320the issues are fully resolved, the code will be enabled by 321default again. 322 323Modified the internal functions for debug print support to define 324the FunctionName parameter as a (const char *) for compatibility 325with compiler built-in macros such as __FUNCTION__, etc. 326 327Linted the entire ACPICA source tree for both 32-bit and 64-bit. 328 329Implemented support to display an object count summary for the 330AML Debugger commands Object and Methods. 331 332Code and Data Size: Current and previous core subsystem library 333sizes are shown below. These are the code and data sizes for the 334acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 335these values do not include any ACPI driver or OSPM code. The 336debug version of the code includes the debug output trace 337mechanism and has a much larger code and data size. Note that 338these values will vary depending on the efficiency of the 339compiler and the compiler options used during generation. 340 341 Previous Release: 342 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 343 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 344 Current Release: 345 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 346 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 347 348 3492) iASL Compiler/Disassembler: 350 351Fixed a regression that appeared in the 20050708 version of the 352compiler where an error message was inadvertently emitted for 353invocations of the _OSI reserved control method. 354 355---------------------------------------- 35608 July 2005. Summary of changes for version 20050708: 357 3581) ACPI CA Core Subsystem: 359 360The use of the CPU stack in the debug version of the subsystem 361has been considerably reduced. Previously, a debug structure was 362declared in every function that used the debug macros. This 363structure has been removed in favor of declaring the individual 364elements as parameters to the debug functions. This reduces the 365cumulative stack use during nested execution of ACPI function 366calls at the cost of a small increase in the code size of the 367debug version of the subsystem. With assistance from Alexey 368Starikovskiy and Len Brown. 369 370Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler- 371dependent headers to define a macro that will return the current 372function name at runtime (such as __FUNCTION__ or _func_, etc.) 373The function name is used by the debug trace output. If 374ACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent 375header, the function name is saved on the CPU stack (one pointer 376per function.) This mechanism is used because apparently there 377exists no standard ANSI-C defined macro that that returns the 378function name. 379 380Redesigned and reimplemented the "Owner ID" mechanism used to 381track namespace objects created/deleted by ACPI tables and 382control method execution. A bitmap is now used to allocate and 383free the IDs, thus solving the wraparound problem present in the 384previous implementation. The size of the namespace node 385descriptor was reduced by 2 bytes as a result (Alexey 386Starikovskiy). 387 388Removed the UINT32_BIT and UINT16_BIT types that were used for 389the bitfield flag definitions within the headers for the 390predefined ACPI tables. These have been replaced by UINT8_BIT in 391order to increase the code portability of the subsystem. If the 392use of UINT8 remains a problem, we may be forced to eliminate 393bitfields entirely because of a lack of portability. 394 395Enhanced the performance of the AcpiUtUpdateObjectReference 396procedure. This is a frequently used function and this 397improvement increases the performance of the entire subsystem 398(Alexey Starikovskiy). 399 400Fixed several possible memory leaks and the inverse - premature 401object deletion (Alexey Starikovskiy). 402 403Code and Data Size: Current and previous core subsystem library 404sizes are shown below. These are the code and data sizes for the 405acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 406these values do not include any ACPI driver or OSPM code. The 407debug version of the code includes the debug output trace 408mechanism and has a much larger code and data size. Note that 409these values will vary depending on the efficiency of the 410compiler and the compiler options used during generation. 411 412 Previous Release: 413 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 414 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 415 Current Release: 416 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 417 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 418 419---------------------------------------- 42024 June 2005. Summary of changes for version 20050624: 421 4221) ACPI CA Core Subsystem: 423 424Modified the new OSL cache interfaces to use ACPI_CACHE_T as the 425type for the host-defined cache object. This allows the OSL 426implementation to define and type this object in any manner 427desired, simplifying the OSL implementation. For example, 428ACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be 429defined in the OS-specific header file for other operating 430systems as required. 431 432Changed the interface to AcpiOsAcquireObject to directly return 433the requested object as the function return (instead of 434ACPI_STATUS.) This change was made for performance reasons, since 435this is the purpose of the interface in the first place. 436AcpiOsAcquireObject is now similar to the AcpiOsAllocate 437interface. 438 439Implemented a new AML debugger command named Businfo. This 440command displays information about all devices that have an 441associate _PRT object. The _ADR, _HID, _UID, and _CID are 442displayed for these devices. 443 444Modified the initialization sequence in AcpiInitializeSubsystem 445to call the OSL interface AcpiOslInitialize first, before any 446local initialization. This change was required because the global 447initialization now calls OSL interfaces. 448 449Enhanced the Dump command to display the entire contents of 450Package objects (including all sub-objects and their values.) 451 452Restructured the code base to split some files because of size 453and/or because the code logically belonged in a separate file. 454New files are listed below. All makefiles and project files 455included in the ACPI CA release have been updated. 456 utilities/utcache.c /* Local cache interfaces */ 457 utilities/utmutex.c /* Local mutex support */ 458 utilities/utstate.c /* State object support */ 459 interpreter/parser/psloop.c /* Main AML parse loop */ 460 461Code and Data Size: Current and previous core subsystem library 462sizes are shown below. These are the code and data sizes for the 463acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 464these values do not include any ACPI driver or OSPM code. The 465debug version of the code includes the debug output trace 466mechanism and has a much larger code and data size. Note that 467these values will vary depending on the efficiency of the 468compiler and the compiler options used during generation. 469 470 Previous Release: 471 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 472 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 473 Current Release: 474 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 475 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 476 477 4782) iASL Compiler/Disassembler: 479 480Fixed a regression introduced in version 20050513 where the use 481of a Package object within a Case() statement caused a compile 482time exception. The original behavior has been restored (a 483Match() operator is emitted.) 484 485---------------------------------------- 48617 June 2005. Summary of changes for version 20050617: 487 4881) ACPI CA Core Subsystem: 489 490Moved the object cache operations into the OS interface layer 491(OSL) to allow the host OS to handle these operations if desired 492(for example, the Linux OSL will invoke the slab allocator). This 493support is optional; the compile time define ACPI_USE_LOCAL_CACHE 494may be used to utilize the original cache code in the ACPI CA 495core. The new OSL interfaces are shown below. See utalloc.c for 496an example implementation, and acpiosxf.h for the exact interface 497definitions. With assistance from Alexey Starikovskiy. 498 AcpiOsCreateCache 499 AcpiOsDeleteCache 500 AcpiOsPurgeCache 501 AcpiOsAcquireObject 502 AcpiOsReleaseObject 503 504Modified the interfaces to AcpiOsAcquireLock and 505AcpiOsReleaseLock to return and restore a flags parameter. This 506fits better with many OS lock models. Note: the current execution 507state (interrupt handler or not) is no longer passed to these 508interfaces. If necessary, the OSL must determine this state by 509itself, a simple and fast operation. With assistance from Alexey 510Starikovskiy. 511 512Fixed a problem in the ACPI table handling where a valid XSDT was 513assumed present if the revision of the RSDP was 2 or greater. 514According to the ACPI specification, the XSDT is optional in all 515cases, and the table manager therefore now checks for both an 516RSDP >=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is 517used. Some ACPI 2.0 compliant BIOSs contain only the RSDT. 518 519Fixed an interpreter problem with the Mid() operator in the case 520of an input string where the resulting output string is of zero 521length. It now correctly returns a valid, null terminated string 522object instead of a string object with a null pointer. 523 524Fixed a problem with the control method argument handling to 525allow a store to an Arg object that already contains an object of 526type Device. The Device object is now correctly overwritten. 527Previously, an error was returned. 528 529Enhanced the debugger Find command to emit object values in 530addition to the found object pathnames. The output format is the 531same as the dump namespace command. 532 533Enhanced the debugger Set command. It now has the ability to set 534the value of any Named integer object in the namespace 535(Previously, only method locals and args could be set.) 536 537Code and Data Size: Current and previous core subsystem library 538sizes are shown below. These are the code and data sizes for the 539acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 540these values do not include any ACPI driver or OSPM code. The 541debug version of the code includes the debug output trace 542mechanism and has a much larger code and data size. Note that 543these values will vary depending on the efficiency of the 544compiler and the compiler options used during generation. 545 546 Previous Release: 547 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 548 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 549 Current Release: 550 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 551 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 552 553 5542) iASL Compiler/Disassembler: 555 556Fixed a regression in the disassembler where if/else/while 557constructs were output incorrectly. This problem was introduced 558in the previous release (20050526). This problem also affected 559the single-step disassembly in the debugger. 560 561Fixed a problem where compiling the reserved _OSI method would 562randomly (but rarely) produce compile errors. 563 564Enhanced the disassembler to emit compilable code in the face of 565incorrect AML resource descriptors. If the optional 566ResourceSourceIndex is present, but the ResourceSource is not, do 567not emit the ResourceSourceIndex in the disassembly. Otherwise, 568the resulting code cannot be compiled without errors. 569 570---------------------------------------- 57126 May 2005. Summary of changes for version 20050526: 572 5731) ACPI CA Core Subsystem: 574 575Implemented support to execute Type 1 and Type 2 AML opcodes 576appearing at the module level (not within a control method.) 577These opcodes are executed exactly once at the time the table is 578loaded. This type of code was legal up until the release of ACPI 5792.0B (2002) and is now supported within ACPI CA in order to 580provide backwards compatibility with earlier BIOS 581implementations. This eliminates the "Encountered executable code 582at module level" warning that was previously generated upon 583detection of such code. 584 585Fixed a problem in the interpreter where an AE_NOT_FOUND 586exception could inadvertently be generated during the lookup of 587namespace objects in the second pass parse of ACPI tables and 588control methods. It appears that this problem could occur during 589the resolution of forward references to namespace objects. 590 591Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex 592function, corresponding to the same #ifdef in the 593AcpiUtAcquireMutex function. This allows the deadlock detection 594debug code to be compiled out in the normal case, improving mutex 595performance (and overall subsystem performance) considerably. 596 597Implemented a handful of miscellaneous fixes for possible memory 598leaks on error conditions and error handling control paths. These 599fixes were suggested by FreeBSD and the Coverity Prevent source 600code analysis tool. 601 602Added a check for a null RSDT pointer in AcpiGetFirmwareTable 603(tbxfroot.c) to prevent a fault in this error case. 604 605Code and Data Size: Current and previous core subsystem library 606sizes are shown below. These are the code and data sizes for the 607acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 608these values do not include any ACPI driver or OSPM code. The 609debug version of the code includes the debug output trace 610mechanism and has a much larger code and data size. Note that 611these values will vary depending on the efficiency of the 612compiler and the compiler options used during generation. 613 614 Previous Release: 615 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 616 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 617 Current Release: 618 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 619 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 620 621 6222) iASL Compiler/Disassembler: 623 624Implemented support to allow Type 1 and Type 2 ASL operators to 625appear at the module level (not within a control method.) These 626operators will be executed once at the time the table is loaded. 627This type of code was legal up until the release of ACPI 2.0B 628(2002) and is now supported by the iASL compiler in order to 629provide backwards compatibility with earlier BIOS ASL code. 630 631The ACPI integer width (specified via the table revision ID or 632the -r override, 32 or 64 bits) is now used internally during 633compile-time constant folding to ensure that constants are 634truncated to 32 bits if necessary. Previously, the revision ID 635value was only emitted in the AML table header. 636 637An error message is now generated for the Mutex and Method 638operators if the SyncLevel parameter is outside the legal range 639of 0 through 15. 640 641Fixed a problem with the Method operator ParameterTypes list 642handling (ACPI 3.0). Previously, more than 2 types or 2 arguments 643generated a syntax error. The actual underlying implementation 644of method argument typechecking is still under development, 645however. 646 647---------------------------------------- 64813 May 2005. Summary of changes for version 20050513: 649 6501) ACPI CA Core Subsystem: 651 652Implemented support for PCI Express root bridges -- added support 653for device PNP0A08 in the root bridge search within 654AcpiEvPciConfigRegionSetup. 655 656The interpreter now automatically truncates incoming 64-bit 657constants to 32 bits if currently executing out of a 32-bit ACPI 658table (Revision < 2). This also affects the iASL compiler 659constant folding. (Note: as per below, the iASL compiler no 660longer allows 64-bit constants within 32-bit tables.) 661 662Fixed a problem where string and buffer objects with "static" 663pointers (pointers to initialization data within an ACPI table) 664were not handled consistently. The internal object copy operation 665now always copies the data to a newly allocated buffer, 666regardless of whether the source object is static or not. 667 668Fixed a problem with the FromBCD operator where an implicit 669result conversion was improperly performed while storing the 670result to the target operand. Since this is an "explicit 671conversion" operator, the implicit conversion should never be 672performed on the output. 673 674Fixed a problem with the CopyObject operator where a copy to an 675existing named object did not always completely overwrite the 676existing object stored at name. Specifically, a buffer-to-buffer 677copy did not delete the existing buffer. 678 679Replaced "InterruptLevel" with "InterruptNumber" in all GPE 680interfaces and structs for consistency. 681 682Code and Data Size: Current and previous core subsystem library 683sizes are shown below. These are the code and data sizes for the 684acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 685these values do not include any ACPI driver or OSPM code. The 686debug version of the code includes the debug output trace 687mechanism and has a much larger code and data size. Note that 688these values will vary depending on the efficiency of the 689compiler and the compiler options used during generation. 690 691 Previous Release: 692 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 693 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 694 Current Release: (Same sizes) 695 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 696 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 697 698 6992) iASL Compiler/Disassembler: 700 701The compiler now emits a warning if an attempt is made to 702generate a 64-bit integer constant from within a 32-bit ACPI 703table (Revision < 2). The integer is truncated to 32 bits. 704 705Fixed a problem with large package objects: if the static length 706of the package is greater than 255, the "variable length package" 707opcode is emitted. Previously, this caused an error. This 708requires an update to the ACPI spec, since it currently 709(incorrectly) states that packages larger than 255 elements are 710not allowed. 711 712The disassembler now correctly handles variable length packages 713and packages larger than 255 elements. 714 715---------------------------------------- 71608 April 2005. Summary of changes for version 20050408: 717 7181) ACPI CA Core Subsystem: 719 720Fixed three cases in the interpreter where an "index" argument to 721an ASL function was still (internally) 32 bits instead of the 722required 64 bits. This was the Index argument to the Index, Mid, 723and Match operators. 724 725The "strupr" function is now permanently local (AcpiUtStrupr), 726since this is not a POSIX-defined function and not present in 727most kernel-level C libraries. All references to the C library 728strupr function have been removed from the headers. 729 730Completed the deployment of static functions/prototypes. All 731prototypes with the static attribute have been moved from the 732headers to the owning C file. 733 734Implemented an extract option (-e) for the AcpiBin utility (AML 735binary utility). This option allows the utility to extract 736individual ACPI tables from the output of AcpiDmp. It provides 737the same functionality of the acpixtract.pl perl script without 738the worry of setting the correct perl options. AcpiBin runs on 739Windows and has not yet been generated/validated in the 740Linux/Unix environment (but should be soon). 741 742Updated and fixed the table dump option for AcpiBin (-d). This 743option converts a single ACPI table to a hex/ascii file, similar 744to the output of AcpiDmp. 745 746Code and Data Size: Current and previous core subsystem library 747sizes are shown below. These are the code and data sizes for the 748acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 749these values do not include any ACPI driver or OSPM code. The 750debug version of the code includes the debug output trace 751mechanism and has a much larger code and data size. Note that 752these values will vary depending on the efficiency of the 753compiler and the compiler options used during generation. 754 755 Previous Release: 756 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 757 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 758 Current Release: 759 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 760 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 761 762 7632) iASL Compiler/Disassembler: 764 765Disassembler fix: Added a check to ensure that the table length 766found in the ACPI table header within the input file is not 767longer than the actual input file size. This indicates some kind 768of file or table corruption. 769 770---------------------------------------- 77129 March 2005. Summary of changes for version 20050329: 772 7731) ACPI CA Core Subsystem: 774 775An error is now generated if an attempt is made to create a 776Buffer Field of length zero (A CreateField with a length operand 777of zero.) 778 779The interpreter now issues a warning whenever executable code at 780the module level is detected during ACPI table load. This will 781give some idea of the prevalence of this type of code. 782 783Implemented support for references to named objects (other than 784control methods) within package objects. 785 786Enhanced package object output for the debug object. Package 787objects are now completely dumped, showing all elements. 788 789Enhanced miscellaneous object output for the debug object. Any 790object can now be written to the debug object (for example, a 791device object can be written, and the type of the object will be 792displayed.) 793 794The "static" qualifier has been added to all local functions 795across both the core subsystem and the iASL compiler. 796 797The number of "long" lines (> 80 chars) within the source has 798been significantly reduced, by about 1/3. 799 800Cleaned up all header files to ensure that all CA/iASL functions 801are prototyped (even static functions) and the formatting is 802consistent. 803 804Two new header files have been added, acopcode.h and acnames.h. 805 806Removed several obsolete functions that were no longer used. 807 808Code and Data Size: Current and previous core subsystem library 809sizes are shown below. These are the code and data sizes for the 810acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 811these values do not include any ACPI driver or OSPM code. The 812debug version of the code includes the debug output trace 813mechanism and has a much larger code and data size. Note that 814these values will vary depending on the efficiency of the 815compiler and the compiler options used during generation. 816 817 Previous Release: 818 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 819 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 820 Current Release: 821 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 822 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 823 824 8252) iASL Compiler/Disassembler: 826 827Fixed a problem with the resource descriptor generation/support. 828For the ResourceSourceIndex and the ResourceSource fields, both 829must be present, or both must be not present - can't have one 830without the other. 831 832The compiler now returns non-zero from the main procedure if any 833errors have occurred during the compilation. 834 835 836---------------------------------------- 83709 March 2005. Summary of changes for version 20050309: 838 8391) ACPI CA Core Subsystem: 840 841The string-to-buffer implicit conversion code has been modified 842again after a change to the ACPI specification. In order to 843match the behavior of the other major ACPI implementation, the 844target buffer is no longer truncated if the source string is 845smaller than an existing target buffer. This change requires an 846update to the ACPI spec, and should eliminate the recent 847AE_AML_BUFFER_LIMIT issues. 848 849The "implicit return" support was rewritten to a new algorithm 850that solves the general case. Rather than attempt to determine 851when a method is about to exit, the result of every ASL operator 852is saved momentarily until the very next ASL operator is 853executed. Therefore, no matter how the method exits, there will 854always be a saved implicit return value. This feature is only 855enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 856eliminate AE_AML_NO_RETURN_VALUE errors when enabled. 857 858Implemented implicit conversion support for the predicate 859(operand) of the If, Else, and While operators. String and Buffer 860arguments are automatically converted to Integers. 861 862Changed the string-to-integer conversion behavior to match the 863new ACPI errata: "If no integer object exists, a new integer is 864created. The ASCII string is interpreted as a hexadecimal 865constant. Each string character is interpreted as a hexadecimal 866value (`0'-`9', `A'-`F', `a', `f'), starting with the first 867character as the most significant digit, and ending with the 868first non-hexadecimal character or end-of-string." This means 869that the first non-hex character terminates the conversion and 870this is the code that was changed. 871 872Fixed a problem where the ObjectType operator would fail (fault) 873when used on an Index of a Package which pointed to a null 874package element. The operator now properly returns zero 875(Uninitialized) in this case. 876 877Fixed a problem where the While operator used excessive memory by 878not properly popping the result stack during execution. There was 879no memory leak after execution, however. (Code provided by Valery 880Podrezov.) 881 882Fixed a problem where references to control methods within 883Package objects caused the method to be invoked, instead of 884producing a reference object pointing to the method. 885 886Restructured and simplified the pswalk.c module 887(AcpiPsDeleteParseTree) to improve performance and reduce code 888size. (Code provided by Alexey Starikovskiy.) 889 890Code and Data Size: Current and previous core subsystem library 891sizes are shown below. These are the code and data sizes for the 892acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 893these values do not include any ACPI driver or OSPM code. The 894debug version of the code includes the debug output trace 895mechanism and has a much larger code and data size. Note that 896these values will vary depending on the efficiency of the 897compiler and the compiler options used during generation. 898 899 Previous Release: 900 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 901 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 902 Current Release: 903 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 904 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 905 906 9072) iASL Compiler/Disassembler: 908 909Fixed a problem with the Return operator with no arguments. Since 910the AML grammar for the byte encoding requires an operand for the 911Return opcode, the compiler now emits a Return(Zero) for this 912case. An ACPI specification update has been written for this 913case. 914 915For tables other than the DSDT, namepath optimization is 916automatically disabled. This is because SSDTs can be loaded 917anywhere in the namespace, the compiler has no knowledge of 918where, and thus cannot optimize namepaths. 919 920Added "ProcessorObj" to the ObjectTypeKeyword list. This object 921type was inadvertently omitted from the ACPI specification, and 922will require an update to the spec. 923 924The source file scan for ASCII characters is now optional (-a). 925This change was made because some vendors place non-ascii 926characters within comments. However, the scan is simply a brute- 927force byte compare to ensure all characters in the file are in 928the range 0x00 to 0x7F. 929 930Fixed a problem with the CondRefOf operator where the compiler 931was inappropriately checking for the existence of the target. 932Since the point of the operator is to check for the existence of 933the target at run-time, the compiler no longer checks for the 934target existence. 935 936Fixed a problem where errors generated from the internal AML 937interpreter during constant folding were not handled properly, 938causing a fault. 939 940Fixed a problem with overly aggressive range checking for the 941Stall operator. The valid range (max 255) is now only checked if 942the operand is of type Integer. All other operand types cannot be 943statically checked. 944 945Fixed a problem where control method references within the RefOf, 946DeRefOf, and ObjectType operators were not treated properly. They 947are now treated as actual references, not method invocations. 948 949Fixed and enhanced the "list namespace" option (-ln). This option 950was broken a number of releases ago. 951 952Improved error handling for the Field, IndexField, and BankField 953operators. The compiler now cleanly reports and recovers from 954errors in the field component (FieldUnit) list. 955 956Fixed a disassembler problem where the optional 957ResourceDescriptor fields TRS and TTP were not always handled 958correctly. 959 960Disassembler - Comments in output now use "//" instead of "/*" 961 962---------------------------------------- 96328 February 2005. Summary of changes for version 20050228: 964 9651) ACPI CA Core Subsystem: 966 967Fixed a problem where the result of an Index() operator (an 968object reference) must increment the reference count on the 969target object for the life of the object reference. 970 971Implemented AML Interpreter and Debugger support for the new ACPI 9723.0 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, 973and WordSpace resource descriptors. 974 975Implemented support in the _OSI method for the ACPI 3.0 "Extended 976Address Space Descriptor" string, indicating interpreter support 977for the descriptors above. 978 979Implemented header support for the new ACPI 3.0 FADT flag bits. 980 981Implemented header support for the new ACPI 3.0 PCI Express bits 982for the PM1 status/enable registers. 983 984Updated header support for the MADT processor local Apic struct 985and MADT platform interrupt source struct for new ACPI 3.0 986fields. 987 988Implemented header support for the SRAT and SLIT ACPI tables. 989 990Implemented the -s switch in AcpiExec to enable the 991"InterpeterSlack" flag at runtime. 992 993Code and Data Size: Current and previous core subsystem library 994sizes are shown below. These are the code and data sizes for the 995acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 996these values do not include any ACPI driver or OSPM code. The 997debug version of the code includes the debug output trace 998mechanism and has a much larger code and data size. Note that 999these values will vary depending on the efficiency of the 1000compiler and the compiler options used during generation. 1001 1002 Previous Release: 1003 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 1004 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 1005 Current Release: 1006 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 1007 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 1008 1009 10102) iASL Compiler/Disassembler: 1011 1012Fixed a problem with the internal 64-bit String-to-integer 1013conversion with strings less than two characters long. 1014 1015Fixed a problem with constant folding where the result of the 1016Index() operator can not be considered a constant. This means 1017that Index() cannot be a type3 opcode and this will require an 1018update to the ACPI specification. 1019 1020Disassembler: Implemented support for the TTP, MTP, and TRS 1021resource descriptor fields. These fields were inadvertently 1022ignored and not output in the disassembly of the resource 1023descriptor. 1024 1025 1026 ---------------------------------------- 102711 February 2005. Summary of changes for version 20050211: 1028 10291) ACPI CA Core Subsystem: 1030 1031Implemented ACPI 3.0 support for implicit conversion within the 1032Match() operator. MatchObjects can now be of type integer, 1033buffer, or string instead of just type integer. Package elements 1034are implicitly converted to the type of the MatchObject. This 1035change aligns the behavior of Match() with the behavior of the 1036other logical operators (LLess(), etc.) It also requires an 1037errata change to the ACPI specification as this support was 1038intended for ACPI 3.0, but was inadvertently omitted. 1039 1040Fixed a problem with the internal implicit "to buffer" 1041conversion. Strings that are converted to buffers will cause 1042buffer truncation if the string is smaller than the target 1043buffer. Integers that are converted to buffers will not cause 1044buffer truncation, only zero extension (both as per the ACPI 1045spec.) The problem was introduced when code was added to truncate 1046the buffer, but this should not be performed in all cases, only 1047the string case. 1048 1049Fixed a problem with the Buffer and Package operators where the 1050interpreter would get confused if two such operators were used as 1051operands to an ASL operator (such as 1052LLess(Buffer(1){0},Buffer(1){1}). The internal result stack was 1053not being popped after the execution of these operators, 1054resulting in an AE_NO_RETURN_VALUE exception. 1055 1056Fixed a problem with constructs of the form 1057Store(Index(...),...). The reference object returned from Index 1058was inadvertently resolved to an actual value. This problem was 1059introduced in version 20050114 when the behavior of Store() was 1060modified to restrict the object types that can be used as the 1061source operand (to match the ACPI specification.) 1062 1063Reduced excessive stack use within the AcpiGetObjectInfo 1064procedure. 1065 1066Added a fix to aclinux.h to allow generation of AcpiExec on 1067Linux. 1068 1069Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS 1070struct. 1071 1072Code and Data Size: Current and previous core subsystem library 1073sizes are shown below. These are the code and data sizes for the 1074acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1075these values do not include any ACPI driver or OSPM code. The 1076debug version of the code includes the debug output trace 1077mechanism and has a much larger code and data size. Note that 1078these values will vary depending on the efficiency of the 1079compiler and the compiler options used during generation. 1080 1081 Previous Release: 1082 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 1083 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 1084 Current Release: 1085 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 1086 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 1087 1088 10892) iASL Compiler/Disassembler: 1090 1091Fixed a code generation problem in the constant folding 1092optimization code where incorrect code was generated if a 1093constant was reduced to a buffer object (i.e., a reduced type 5 1094opcode.) 1095 1096Fixed a typechecking problem for the ToBuffer operator. Caused by 1097an incorrect return type in the internal opcode information 1098table. 1099 1100---------------------------------------- 110125 January 2005. Summary of changes for version 20050125: 1102 11031) ACPI CA Core Subsystem: 1104 1105Fixed a recently introduced problem with the Global Lock where 1106the underlying semaphore was not created. This problem was 1107introduced in version 20050114, and caused an AE_AML_NO_OPERAND 1108exception during an Acquire() operation on _GL. 1109 1110The local object cache is now optional, and is disabled by 1111default. Both AcpiExec and the iASL compiler enable the cache 1112because they run in user mode and this enhances their 1113performance. #define ACPI_ENABLE_OBJECT_CACHE to enable the local 1114cache. 1115 1116Fixed an issue in the internal function AcpiUtEvaluateObject 1117concerning the optional "implicit return" support where an error 1118was returned if no return object was expected, but one was 1119implicitly returned. AE_OK is now returned in this case and the 1120implicitly returned object is deleted. AcpiUtEvaluateObject is 1121only occasionally used, and only to execute reserved methods such 1122as _STA and _INI where the return type is known up front. 1123 1124Fixed a few issues with the internal convert-to-integer code. It 1125now returns an error if an attempt is made to convert a null 1126string, a string of only blanks/tabs, or a zero-length buffer. 1127This affects both implicit conversion and explicit conversion via 1128the ToInteger() operator. 1129 1130The internal debug code in AcpiUtAcquireMutex has been commented 1131out. It is not needed for normal operation and should increase 1132the performance of the entire subsystem. The code remains in case 1133it is needed for debug purposes again. 1134 1135The AcpiExec source and makefile are included in the Unix/Linux 1136package for the first time. 1137 1138Code and Data Size: Current and previous core subsystem library 1139sizes are shown below. These are the code and data sizes for the 1140acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1141these values do not include any ACPI driver or OSPM code. The 1142debug version of the code includes the debug output trace 1143mechanism and has a much larger code and data size. Note that 1144these values will vary depending on the efficiency of the 1145compiler and the compiler options used during generation. 1146 1147 Previous Release: 1148 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 1149 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 1150 Current Release: 1151 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 1152 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 1153 11542) iASL Compiler/Disassembler: 1155 1156Switch/Case support: A warning is now issued if the type of the 1157Switch value cannot be determined at compile time. For example, 1158Switch(Arg0) will generate the warning, and the type is assumed 1159to be an integer. As per the ACPI spec, use a construct such as 1160Switch(ToInteger(Arg0)) to eliminate the warning. 1161 1162Switch/Case support: Implemented support for buffer and string 1163objects as the switch value. This is an ACPI 3.0 feature, now 1164that LEqual supports buffers and strings. 1165 1166Switch/Case support: The emitted code for the LEqual() 1167comparisons now uses the switch value as the first operand, not 1168the second. The case value is now the second operand, and this 1169allows the case value to be implicitly converted to the type of 1170the switch value, not the other way around. 1171 1172Switch/Case support: Temporary variables are now emitted 1173immediately within the control method, not at the global level. 1174This means that there are now 36 temps available per-method, not 117536 temps per-module as was the case with the earlier 1176implementation (_T_0 through _T_9 and _T_A through _T_Z.) 1177 1178---------------------------------------- 117914 January 2005. Summary of changes for version 20050114: 1180 1181Added 2005 copyright to all module headers. This affects every 1182module in the core subsystem, iASL compiler, and the utilities. 1183 11841) ACPI CA Core Subsystem: 1185 1186Fixed an issue with the String-to-Buffer conversion code where 1187the string null terminator was not included in the buffer after 1188conversion, but there is existing ASL that assumes the string 1189null terminator is included. This is the root of the 1190ACPI_AML_BUFFER_LIMIT regression. This problem was introduced in 1191the previous version when the code was updated to correctly set 1192the converted buffer size as per the ACPI specification. The ACPI 1193spec is ambiguous and will be updated to specify that the null 1194terminator must be included in the converted buffer. This also 1195affects the ToBuffer() ASL operator. 1196 1197Fixed a problem with the Mid() ASL/AML operator where it did not 1198work correctly on Buffer objects. Newly created sub-buffers were 1199not being marked as initialized. 1200 1201Fixed a problem in AcpiTbFindTable where incorrect string 1202compares were performed on the OemId and OemTableId table header 1203fields. These fields are not null terminated, so strncmp is now 1204used instead of strcmp. 1205 1206Implemented a restriction on the Store() ASL/AML operator to 1207align the behavior with the ACPI specification. Previously, any 1208object could be used as the source operand. Now, the only 1209objects that may be used are Integers, Buffers, Strings, 1210Packages, Object References, and DDB Handles. If necessary, the 1211original behavior can be restored by enabling the 1212EnableInterpreterSlack flag. 1213 1214Enhanced the optional "implicit return" support to allow an 1215implicit return value from methods that are invoked externally 1216via the AcpiEvaluateObject interface. This enables implicit 1217returns from the _STA and _INI methods, for example. 1218 1219Changed the Revision() ASL/AML operator to return the current 1220version of the AML interpreter, in the YYYYMMDD format. 1221Previously, it incorrectly returned the supported ACPI version 1222(This is the function of the _REV method). 1223 1224Updated the _REV predefined method to return the currently 1225supported version of ACPI, now 3. 1226 1227Implemented batch mode option for the AcpiExec utility (-b). 1228 1229Code and Data Size: Current and previous core subsystem library 1230sizes are shown below. These are the code and data sizes for the 1231acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1232these values do not include any ACPI driver or OSPM code. The 1233debug version of the code includes the debug output trace 1234mechanism and has a much larger code and data size. Note that 1235these values will vary depending on the efficiency of the 1236compiler and the compiler options used during generation. 1237 1238 Previous Release: 1239 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 1240 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 1241 Current Release: 1242 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 1243 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 1244 1245---------------------------------------- 124610 December 2004. Summary of changes for version 20041210: 1247 1248ACPI 3.0 support is nearing completion in both the iASL compiler 1249and the ACPI CA core subsystem. 1250 12511) ACPI CA Core Subsystem: 1252 1253Fixed a problem in the ToDecimalString operator where the 1254resulting string length was incorrectly calculated. The length is 1255now calculated exactly, eliminating incorrect AE_STRING_LIMIT 1256exceptions. 1257 1258Fixed a problem in the ToHexString operator to allow a maximum 1259200 character string to be produced. 1260 1261Fixed a problem in the internal string-to-buffer and buffer-to- 1262buffer copy routine where the length of the resulting buffer was 1263not truncated to the new size (if the target buffer already 1264existed). 1265 1266Code and Data Size: Current and previous core subsystem library 1267sizes are shown below. These are the code and data sizes for the 1268acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1269these values do not include any ACPI driver or OSPM code. The 1270debug version of the code includes the debug output trace 1271mechanism and has a much larger code and data size. Note that 1272these values will vary depending on the efficiency of the 1273compiler and the compiler options used during generation. 1274 1275 Previous Release: 1276 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 1277 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 1278 Current Release: 1279 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 1280 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 1281 1282 12832) iASL Compiler/Disassembler: 1284 1285Implemented the new ACPI 3.0 resource template macros - 1286DWordSpace, ExtendedIO, ExtendedMemory, ExtendedSpace, 1287QWordSpace, and WordSpace. Includes support in the disassembler. 1288 1289Implemented support for the new (ACPI 3.0) parameter to the 1290Register macro, AccessSize. 1291 1292Fixed a problem where the _HE resource name for the Interrupt 1293macro was referencing bit 0 instead of bit 1. 1294 1295Implemented check for maximum 255 interrupts in the Interrupt 1296macro. 1297 1298Fixed a problem with the predefined resource descriptor names 1299where incorrect AML code was generated if the offset within the 1300resource buffer was 0 or 1. The optimizer shortened the AML code 1301to a single byte opcode but did not update the surrounding 1302package lengths. 1303 1304Changes to the Dma macro: All channels within the channel list 1305must be in the range 0-7. Maximum 8 channels can be specified. 1306BusMaster operand is optional (default is BusMaster). 1307 1308Implemented check for maximum 7 data bytes for the VendorShort 1309macro. 1310 1311The ReadWrite parameter is now optional for the Memory32 and 1312similar macros. 1313 1314---------------------------------------- 131503 December 2004. Summary of changes for version 20041203: 1316 13171) ACPI CA Core Subsystem: 1318 1319The low-level field insertion/extraction code (exfldio) has been 1320completely rewritten to eliminate unnecessary complexity, bugs, 1321and boundary conditions. 1322 1323Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 1324ToDecimalString operators where the input operand could be 1325inadvertently deleted if no conversion was necessary (e.g., if 1326the input to ToInteger was an Integer object.) 1327 1328Fixed a problem with the ToDecimalString and ToHexString where an 1329incorrect exception code was returned if the resulting string 1330would be > 200 chars. AE_STRING_LIMIT is now returned. 1331 1332Fixed a problem with the Concatenate operator where AE_OK was 1333always returned, even if the operation failed. 1334 1335Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 1336128 semaphores to be allocated. 1337 1338Code and Data Size: Current and previous core subsystem library 1339sizes are shown below. These are the code and data sizes for the 1340acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1341these values do not include any ACPI driver or OSPM code. The 1342debug version of the code includes the debug output trace 1343mechanism and has a much larger code and data size. Note that 1344these values will vary depending on the efficiency of the 1345compiler and the compiler options used during generation. 1346 1347 Previous Release: 1348 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 1349 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 1350 Current Release: 1351 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 1352 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 1353 1354 13552) iASL Compiler/Disassembler: 1356 1357Fixed typechecking for the ObjectType and SizeOf operators. 1358Problem was recently introduced in 20041119. 1359 1360Fixed a problem with the ToUUID macro where the upper nybble of 1361each buffer byte was inadvertently set to zero. 1362 1363---------------------------------------- 136419 November 2004. Summary of changes for version 20041119: 1365 13661) ACPI CA Core Subsystem: 1367 1368Fixed a problem in the internal ConvertToInteger routine where 1369new integers were not truncated to 32 bits for 32-bit ACPI 1370tables. This routine converts buffers and strings to integers. 1371 1372Implemented support to store a value to an Index() on a String 1373object. This is an ACPI 2.0 feature that had not yet been 1374implemented. 1375 1376Implemented new behavior for storing objects to individual 1377package elements (via the Index() operator). The previous 1378behavior was to invoke the implicit conversion rules if an object 1379was already present at the index. The new behavior is to simply 1380delete any existing object and directly store the new object. 1381Although the ACPI specification seems unclear on this subject, 1382other ACPI implementations behave in this manner. (This is the 1383root of the AE_BAD_HEX_CONSTANT issue.) 1384 1385Modified the RSDP memory scan mechanism to support the extended 1386checksum for ACPI 2.0 (and above) RSDPs. Note that the search 1387continues until a valid RSDP signature is found with a valid 1388checksum. 1389 1390Code and Data Size: Current and previous core subsystem library 1391sizes are shown below. These are the code and data sizes for the 1392acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1393these values do not include any ACPI driver or OSPM code. The 1394debug version of the code includes the debug output trace 1395mechanism and has a much larger code and data size. Note that 1396these values will vary depending on the efficiency of the 1397compiler and the compiler options used during generation. 1398 1399 Previous Release: 1400 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 1401 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 1402 Current Release: 1403 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 1404 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 1405 1406 14072) iASL Compiler/Disassembler: 1408 1409Fixed a missing semicolon in the aslcompiler.y file. 1410 1411---------------------------------------- 141205 November 2004. Summary of changes for version 20041105: 1413 14141) ACPI CA Core Subsystem: 1415 1416Implemented support for FADT revision 2. This was an interim 1417table (between ACPI 1.0 and ACPI 2.0) that adds support for the 1418FADT reset register. 1419 1420Implemented optional support to allow uninitialized LocalX and 1421ArgX variables in a control method. The variables are 1422initialized to an Integer object with a value of zero. This 1423support is enabled by setting the AcpiGbl_EnableInterpreterSlack 1424flag to TRUE. 1425 1426Implemented support for Integer objects for the SizeOf operator. 1427Either 4 or 8 is returned, depending on the current integer size 1428(32-bit or 64-bit, depending on the parent table revision). 1429 1430Fixed a problem in the implementation of the SizeOf and 1431ObjectType operators where the operand was resolved to a value 1432too early, causing incorrect return values for some objects. 1433 1434Fixed some possible memory leaks during exceptional conditions. 1435 1436Code and Data Size: Current and previous core subsystem library 1437sizes are shown below. These are the code and data sizes for the 1438acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1439these values do not include any ACPI driver or OSPM code. The 1440debug version of the code includes the debug output trace 1441mechanism and has a much larger code and data size. Note that 1442these values will vary depending on the efficiency of the 1443compiler and the compiler options used during generation. 1444 1445 Previous Release: 1446 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 1447 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 1448 Current Release: 1449 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 1450 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 1451 1452 14532) iASL Compiler/Disassembler: 1454 1455Implemented support for all ACPI 3.0 reserved names and methods. 1456 1457Implemented all ACPI 3.0 grammar elements in the front-end, 1458including support for semicolons. 1459 1460Implemented the ACPI 3.0 Function() and ToUUID() macros 1461 1462Fixed a problem in the disassembler where a Scope() operator 1463would not be emitted properly if the target of the scope was in 1464another table. 1465 1466---------------------------------------- 146715 October 2004. Summary of changes for version 20041015: 1468 1469Note: ACPI CA is currently undergoing an in-depth and complete 1470formal evaluation to test/verify the following areas. Other 1471suggestions are welcome. This will result in an increase in the 1472frequency of releases and the number of bug fixes in the next few 1473months. 1474 - Functional tests for all ASL/AML operators 1475 - All implicit/explicit type conversions 1476 - Bit fields and operation regions 1477 - 64-bit math support and 32-bit-only "truncated" math support 1478 - Exceptional conditions, both compiler and interpreter 1479 - Dynamic object deletion and memory leaks 1480 - ACPI 3.0 support when implemented 1481 - External interfaces to the ACPI subsystem 1482 1483 14841) ACPI CA Core Subsystem: 1485 1486Fixed two alignment issues on 64-bit platforms - within debug 1487statements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed 1488references to the Address field within the non-aligned ACPI 1489generic address structure. 1490 1491Fixed a problem in the Increment and Decrement operators where 1492incorrect operand resolution could result in the inadvertent 1493modification of the original integer when the integer is passed 1494into another method as an argument and the arg is then 1495incremented/decremented. 1496 1497Fixed a problem in the FromBCD operator where the upper 32-bits 1498of a 64-bit BCD number were truncated during conversion. 1499 1500Fixed a problem in the ToDecimal operator where the length of the 1501resulting string could be set incorrectly too long if the input 1502operand was a Buffer object. 1503 1504Fixed a problem in the Logical operators (LLess, etc.) where a 1505NULL byte (0) within a buffer would prematurely terminate a 1506compare between buffer objects. 1507 1508Added a check for string overflow (>200 characters as per the 1509ACPI specification) during the Concatenate operator with two 1510string operands. 1511 1512Code and Data Size: Current and previous core subsystem library 1513sizes are shown below. These are the code and data sizes for the 1514acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1515these values do not include any ACPI driver or OSPM code. The 1516debug version of the code includes the debug output trace 1517mechanism and has a much larger code and data size. Note that 1518these values will vary depending on the efficiency of the 1519compiler and the compiler options used during generation. 1520 1521 Previous Release: 1522 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 1523 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 1524 Current Release: 1525 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 1526 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 1527 1528 15292) iASL Compiler/Disassembler: 1530 1531Allow the use of the ObjectType operator on uninitialized Locals 1532and Args (returns 0 as per the ACPI specification). 1533 1534Fixed a problem where the compiler would fault if there was a 1535syntax error in the FieldName of all of the various 1536CreateXXXField operators. 1537 1538Disallow the use of lower case letters within the EISAID macro, 1539as per the ACPI specification. All EISAID strings must be of the 1540form "UUUNNNN" Where U is an uppercase letter and N is a hex 1541digit. 1542 1543 1544---------------------------------------- 154506 October 2004. Summary of changes for version 20041006: 1546 15471) ACPI CA Core Subsystem: 1548 1549Implemented support for the ACPI 3.0 Timer operator. This ASL 1550function implements a 64-bit timer with 100 nanosecond 1551granularity. 1552 1553Defined a new OSL interface, AcpiOsGetTimer. This interface is 1554used to implement the ACPI 3.0 Timer operator. This allows the 1555host OS to implement the timer with the best clock available. 1556Also, it keeps the core subsystem out of the clock handling 1557business, since the host OS (usually) performs this function. 1558 1559Fixed an alignment issue on 64-bit platforms. The 1560HwLowLevelRead(Write) functions use a 64-bit address which is 1561part of the packed ACPI Generic Address Structure. Since the 1562structure is non-aligned, the alignment macros are now used to 1563extract the address to a local variable before use. 1564 1565Fixed a problem where the ToInteger operator assumed all input 1566strings were hexadecimal. The operator now handles both decimal 1567strings and hex strings (prefixed with "0x"). 1568 1569Fixed a problem where the string length in the string object 1570created as a result of the internal ConvertToString procedure 1571could be incorrect. This potentially affected all implicit 1572conversions and also the ToDecimalString and ToHexString 1573operators. 1574 1575Fixed two problems in the ToString operator. If the length 1576parameter was zero, an incorrect string object was created and 1577the value of the input length parameter was inadvertently changed 1578from zero to Ones. 1579 1580Fixed a problem where the optional ResourceSource string in the 1581ExtendedIRQ resource macro was ignored. 1582 1583Simplified the interfaces to the internal division functions, 1584reducing code size and complexity. 1585 1586Code and Data Size: Current and previous core subsystem library 1587sizes are shown below. These are the code and data sizes for the 1588acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1589these values do not include any ACPI driver or OSPM code. The 1590debug version of the code includes the debug output trace 1591mechanism and has a much larger code and data size. Note that 1592these values will vary depending on the efficiency of the 1593compiler and the compiler options used during generation. 1594 1595 Previous Release: 1596 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 1597 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 1598 Current Release: 1599 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 1600 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 1601 1602 16032) iASL Compiler/Disassembler: 1604 1605Implemented support for the ACPI 3.0 Timer operator. 1606 1607Fixed a problem where the Default() operator was inadvertently 1608ignored in a Switch/Case block. This was a problem in the 1609translation of the Switch statement to If...Else pairs. 1610 1611Added support to allow a standalone Return operator, with no 1612parentheses (or operands). 1613 1614Fixed a problem with code generation for the ElseIf operator 1615where the translated Else...If parse tree was improperly 1616constructed leading to the loss of some code. 1617 1618---------------------------------------- 161922 September 2004. Summary of changes for version 20040922: 1620 16211) ACPI CA Core Subsystem: 1622 1623Fixed a problem with the implementation of the LNot() operator 1624where "Ones" was not returned for the TRUE case. Changed the code 1625to return Ones instead of (!Arg) which was usually 1. This change 1626affects iASL constant folding for this operator also. 1627 1628Fixed a problem in AcpiUtInitializeBuffer where an existing 1629buffer was not initialized properly -- Now zero the entire buffer 1630in this case where the buffer already exists. 1631 1632Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 1633Milliseconds) to simply (ACPI_INTEGER Milliseconds). This 1634simplifies all related code considerably. This will require 1635changes/updates to all OS interface layers (OSLs.) 1636 1637Implemented a new external interface, 1638AcpiInstallExceptionHandler, to allow a system exception handler 1639to be installed. This handler is invoked upon any run-time 1640exception that occurs during control method execution. 1641 1642Added support for the DSDT in AcpiTbFindTable. This allows the 1643DataTableRegion() operator to access the local copy of the DSDT. 1644 1645Code and Data Size: Current and previous core subsystem library 1646sizes are shown below. These are the code and data sizes for the 1647acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1648these values do not include any ACPI driver or OSPM code. The 1649debug version of the code includes the debug output trace 1650mechanism and has a much larger code and data size. Note that 1651these values will vary depending on the efficiency of the 1652compiler and the compiler options used during generation. 1653 1654 Previous Release: 1655 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 1656 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 1657 Current Release: 1658 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 1659 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 1660 1661 16622) iASL Compiler/Disassembler: 1663 1664Fixed a problem with constant folding and the LNot operator. LNot 1665was returning 1 in the TRUE case, not Ones as per the ACPI 1666specification. This could result in the generation of an 1667incorrect folded/reduced constant. 1668 1669End-Of-File is now allowed within a "//"-style comment. A parse 1670error no longer occurs if such a comment is at the very end of 1671the input ASL source file. 1672 1673Implemented the "-r" option to override the Revision in the table 1674header. The initial use of this option will be to simplify the 1675evaluation of the AML interpreter by allowing a single ASL source 1676module to be compiled for either 32-bit or 64-bit integers. 1677 1678 1679---------------------------------------- 168027 August 2004. Summary of changes for version 20040827: 1681 16821) ACPI CA Core Subsystem: 1683 1684- Implemented support for implicit object conversion in the non- 1685numeric logical operators (LEqual, LGreater, LGreaterEqual, 1686LLess, LLessEqual, and LNotEqual.) Any combination of 1687Integers/Strings/Buffers may now be used; the second operand is 1688implicitly converted on the fly to match the type of the first 1689operand. For example: 1690 1691 LEqual (Source1, Source2) 1692 1693Source1 and Source2 must each evaluate to an integer, a string, 1694or a buffer. The data type of Source1 dictates the required type 1695of Source2. Source2 is implicitly converted if necessary to match 1696the type of Source1. 1697 1698- Updated and corrected the behavior of the string conversion 1699support. The rules concerning conversion of buffers to strings 1700(according to the ACPI specification) are as follows: 1701 1702ToDecimalString - explicit byte-wise conversion of buffer to 1703string of decimal values (0-255) separated by commas. ToHexString 1704- explicit byte-wise conversion of buffer to string of hex values 1705(0-FF) separated by commas. ToString - explicit byte-wise 1706conversion of buffer to string. Byte-by-byte copy with no 1707transform except NULL terminated. Any other implicit buffer-to- 1708string conversion - byte-wise conversion of buffer to string of 1709hex values (0-FF) separated by spaces. 1710 1711- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 1712 1713- Fixed a problem in AcpiNsGetPathnameLength where the returned 1714length was one byte too short in the case of a node in the root 1715scope. This could cause a fault during debug output. 1716 1717- Code and Data Size: Current and previous core subsystem library 1718sizes are shown below. These are the code and data sizes for the 1719acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1720these values do not include any ACPI driver or OSPM code. The 1721debug version of the code includes the debug output trace 1722mechanism and has a much larger code and data size. Note that 1723these values will vary depending on the efficiency of the 1724compiler and the compiler options used during generation. 1725 1726 Previous Release: 1727 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 1728 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 1729 Current Release: 1730 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 1731 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 1732 1733 17342) iASL Compiler/Disassembler: 1735 1736- Fixed a Linux generation error. 1737 1738 1739---------------------------------------- 174016 August 2004. Summary of changes for version 20040816: 1741 17421) ACPI CA Core Subsystem: 1743 1744Designed and implemented support within the AML interpreter for 1745the so-called "implicit return". This support returns the result 1746of the last ASL operation within a control method, in the absence 1747of an explicit Return() operator. A few machines depend on this 1748behavior, even though it is not explicitly supported by the ASL 1749language. It is optional support that can be enabled at runtime 1750via the AcpiGbl_EnableInterpeterSlack flag. 1751 1752Removed support for the PCI_Config address space from the 1753internal low level hardware interfaces (AcpiHwLowLevelRead and 1754AcpiHwLowLevelWrite). This support was not used internally, and 1755would not work correctly anyway because the PCI bus number and 1756segment number were not supported. There are separate interfaces 1757for PCI configuration space access because of the unique 1758interface. 1759 1760Code and Data Size: Current and previous core subsystem library 1761sizes are shown below. These are the code and data sizes for the 1762acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1763these values do not include any ACPI driver or OSPM code. The 1764debug version of the code includes the debug output trace 1765mechanism and has a much larger code and data size. Note that 1766these values will vary depending on the efficiency of the 1767compiler and the compiler options used during generation. 1768 1769 Previous Release: 1770 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 1771 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 1772 Current Release: 1773 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 1774 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 1775 1776 17772) iASL Compiler/Disassembler: 1778 1779Fixed a problem where constants in ASL expressions at the root 1780level (not within a control method) could be inadvertently 1781truncated during code generation. This problem was introduced in 1782the 20040715 release. 1783 1784 1785---------------------------------------- 178615 July 2004. Summary of changes for version 20040715: 1787 17881) ACPI CA Core Subsystem: 1789 1790Restructured the internal HW GPE interfaces to pass/track the 1791current state of interrupts (enabled/disabled) in order to avoid 1792possible deadlock and increase flexibility of the interfaces. 1793 1794Implemented a "lexicographical compare" for String and Buffer 1795objects within the logical operators -- LGreater, LLess, 1796LGreaterEqual, and LLessEqual -- as per further clarification to 1797the ACPI specification. Behavior is similar to C library 1798"strcmp". 1799 1800Completed a major reduction in CPU stack use for the 1801AcpiGetFirmwareTable external function. In the 32-bit non-debug 1802case, the stack use has been reduced from 168 bytes to 32 bytes. 1803 1804Deployed a new run-time configuration flag, 1805AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML 1806interpreter to forgive certain bad AML constructs. Default 1807setting is FALSE. 1808 1809Implemented the first use of AcpiGbl_EnableInterpreterSlack in 1810the Field IO support code. If enabled, it allows field access to 1811go beyond the end of a region definition if the field is within 1812the region length rounded up to the next access width boundary (a 1813common coding error.) 1814 1815Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and 1816OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency 1817with other ACPI symbols. Also, these symbols are lowercased by 1818the latest version of the AcpiSrc tool. 1819 1820The prototypes for the PCI interfaces in acpiosxf.h have been 1821updated to rename "Register" to simply "Reg" to prevent certain 1822compilers from complaining. 1823 1824Code and Data Size: Current and previous core subsystem library 1825sizes are shown below. These are the code and data sizes for the 1826acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1827these values do not include any ACPI driver or OSPM code. The 1828debug version of the code includes the debug output trace 1829mechanism and has a much larger code and data size. Note that 1830these values will vary depending on the efficiency of the 1831compiler and the compiler options used during generation. 1832 1833 Previous Release: 1834 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 1835 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 1836 Current Release: 1837 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 1838 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 1839 1840 18412) iASL Compiler/Disassembler: 1842 1843Implemented full support for Package objects within the Case() 1844operator. Note: The Break() operator is currently not supported 1845within Case blocks (TermLists) as there is some question about 1846backward compatibility with ACPI 1.0 interpreters. 1847 1848Fixed a problem where complex terms were not supported properly 1849within the Switch() operator. 1850 1851Eliminated extraneous warning for compiler-emitted reserved names 1852of the form "_T_x". (Used in Switch/Case operators.) 1853 1854Eliminated optimization messages for "_T_x" objects and small 1855constants within the DefinitionBlock operator. 1856 1857 1858---------------------------------------- 185915 June 2004. Summary of changes for version 20040615: 1860 18611) ACPI CA Core Subsystem: 1862 1863Implemented support for Buffer and String objects (as per ACPI 18642.0) for the following ASL operators: LEqual, LGreater, LLess, 1865LGreaterEqual, and LLessEqual. 1866 1867All directory names in the entire source package are lower case, 1868as they were in earlier releases. 1869 1870Implemented "Disassemble" command in the AML debugger that will 1871disassemble a single control method. 1872 1873Code and Data Size: Current and previous core subsystem library 1874sizes are shown below. These are the code and data sizes for the 1875acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1876these values do not include any ACPI driver or OSPM code. The 1877debug version of the code includes the debug output trace 1878mechanism and has a much larger code and data size. Note that 1879these values will vary depending on the efficiency of the 1880compiler and the compiler options used during generation. 1881 1882 Previous Release: 1883 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 1884 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 1885 Current Release: 1886 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 1887 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 1888 1889 18902) iASL Compiler/Disassembler: 1891 1892Implemented support for Buffer and String objects (as per ACPI 18932.0) for the following ASL operators: LEqual, LGreater, LLess, 1894LGreaterEqual, and LLessEqual. 1895 1896All directory names in the entire source package are lower case, 1897as they were in earlier releases. 1898 1899Fixed a fault when using the -g or -d<nofilename> options if the 1900FADT was not found. 1901 1902Fixed an issue with the Windows version of the compiler where 1903later versions of Windows place the FADT in the registry under 1904the name "FADT" and not "FACP" as earlier versions did. This 1905applies when using the -g or -d<nofilename> options. The 1906compiler now looks for both strings as necessary. 1907 1908Fixed a problem with compiler namepath optimization where a 1909namepath within the Scope() operator could not be optimized if 1910the namepath was a subpath of the current scope path. 1911 1912---------------------------------------- 191327 May 2004. Summary of changes for version 20040527: 1914 19151) ACPI CA Core Subsystem: 1916 1917Completed a new design and implementation for EBDA (Extended BIOS 1918Data Area) support in the RSDP scan code. The original code 1919improperly scanned for the EBDA by simply scanning from memory 1920location 0 to 0x400. The correct method is to first obtain the 1921EBDA pointer from within the BIOS data area, then scan 1K of 1922memory starting at the EBDA pointer. There appear to be few if 1923any machines that place the RSDP in the EBDA, however. 1924 1925Integrated a fix for a possible fault during evaluation of 1926BufferField arguments. Obsolete code that was causing the 1927problem was removed. 1928 1929Found and fixed a problem in the Field Support Code where data 1930could be corrupted on a bit field read that starts on an aligned 1931boundary but does not end on an aligned boundary. Merged the 1932read/write "datum length" calculation code into a common 1933procedure. 1934 1935Rolled in a couple of changes to the FreeBSD-specific header. 1936 1937Code and Data Size: Current and previous core subsystem library 1938sizes are shown below. These are the code and data sizes for the 1939acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1940these values do not include any ACPI driver or OSPM code. The 1941debug version of the code includes the debug output trace 1942mechanism and has a much larger code and data size. Note that 1943these values will vary depending on the efficiency of the 1944compiler and the compiler options used during generation. 1945 1946 Previous Release: 1947 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 1948 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 1949 Current Release: 1950 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 1951 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 1952 1953 19542) iASL Compiler/Disassembler: 1955 1956Fixed a generation warning produced by some overly-verbose 1957compilers for a 64-bit constant. 1958 1959---------------------------------------- 196014 May 2004. Summary of changes for version 20040514: 1961 19621) ACPI CA Core Subsystem: 1963 1964Fixed a problem where hardware GPE enable bits sometimes not set 1965properly during and after GPE method execution. Result of 04/27 1966changes. 1967 1968Removed extra "clear all GPEs" when sleeping/waking. 1969 1970Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the 1971single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the 1972functions above to the new AcpiEv* calls as appropriate. 1973 1974ACPI_OS_NAME was removed from the OS-specific headers. The 1975default name is now "Microsoft Windows NT" for maximum 1976compatibility. However this can be changed by modifying the 1977acconfig.h file. 1978 1979Allow a single invocation of AcpiInstallNotifyHandler for a 1980handler that traps both types of notifies (System, Device). Use 1981ACPI_ALL_NOTIFY flag. 1982 1983Run _INI methods on ThermalZone objects. This is against the 1984ACPI specification, but there is apparently ASL code in the field 1985that has these _INI methods, and apparently "other" AML 1986interpreters execute them. 1987 1988Performed a full 16/32/64 bit lint that resulted in some small 1989changes. 1990 1991Added a sleep simulation command to the AML debugger to test 1992sleep code. 1993 1994Code and Data Size: Current and previous core subsystem library 1995sizes are shown below. These are the code and data sizes for the 1996acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1997these values do not include any ACPI driver or OSPM code. The 1998debug version of the code includes the debug output trace 1999mechanism and has a much larger code and data size. Note that 2000these values will vary depending on the efficiency of the 2001compiler and the compiler options used during generation. 2002 2003 Previous Release: 2004 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 2005 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 2006 Current Release: 2007 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 2008 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 2009 2010---------------------------------------- 201127 April 2004. Summary of changes for version 20040427: 2012 20131) ACPI CA Core Subsystem: 2014 2015Completed a major overhaul of the GPE handling within ACPI CA. 2016There are now three types of GPEs: wake-only, runtime-only, and 2017combination wake/run. The only GPEs allowed to be combination 2018wake/run are for button-style devices such as a control-method 2019power button, control-method sleep button, or a notebook lid 2020switch. GPEs that have an _Lxx or _Exx method and are not 2021referenced by any _PRW methods are marked for "runtime" and 2022hardware enabled. Any GPE that is referenced by a _PRW method is 2023marked for "wake" (and disabled at runtime). However, at sleep 2024time, only those GPEs that have been specifically enabled for 2025wake via the AcpiEnableGpe interface will actually be hardware 2026enabled. 2027 2028A new external interface has been added, AcpiSetGpeType(), that 2029is meant to be used by device drivers to force a GPE to a 2030particular type. It will be especially useful for the drivers 2031for the button devices mentioned above. 2032 2033Completed restructuring of the ACPI CA initialization sequence so 2034that default operation region handlers are installed before GPEs 2035are initialized and the _PRW methods are executed. This will 2036prevent errors when the _PRW methods attempt to access system 2037memory or I/O space. 2038 2039GPE enable/disable no longer reads the GPE enable register. We 2040now keep the enable info for runtime and wake separate and in the 2041GPE_EVENT_INFO. We thus no longer depend on the hardware to 2042maintain these bits. 2043 2044Always clear the wake status and fixed/GPE status bits before 2045sleep, even for state S5. 2046 2047Improved the AML debugger output for displaying the GPE blocks 2048and their current status. 2049 2050Added new strings for the _OSI method, of the form "Windows 2001 2051SPx" where x = 0,1,2,3,4. 2052 2053Fixed a problem where the physical address was incorrectly 2054calculated when the Load() operator was used to directly load 2055from an Operation Region (vs. loading from a Field object.) Also 2056added check for minimum table length for this case. 2057 2058Fix for multiple mutex acquisition. Restore original thread 2059SyncLevel on mutex release. 2060 2061Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 2062consistency with the other fields returned. 2063 2064Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one 2065such structure for each GPE in the system, so the size of this 2066structure is important. 2067 2068CPU stack requirement reduction: Cleaned up the method execution 2069and object evaluation paths so that now a parameter structure is 2070passed, instead of copying the various method parameters over and 2071over again. 2072 2073In evregion.c: Correctly exit and reenter the interpreter region 2074if and only if dispatching an operation region request to a user- 2075installed handler. Do not exit/reenter when dispatching to a 2076default handler (e.g., default system memory or I/O handlers) 2077 2078 2079Notes for updating drivers for the new GPE support. The 2080following changes must be made to ACPI-related device drivers 2081that are attached to one or more GPEs: (This information will be 2082added to the ACPI CA Programmer Reference.) 2083 20841) AcpiInstallGpeHandler no longer automatically enables the GPE, 2085you must explicitly call AcpiEnableGpe. 20862) There is a new interface called AcpiSetGpeType. This should be 2087called before enabling the GPE. Also, this interface will 2088automatically disable the GPE if it is currently enabled. 20893) AcpiEnableGpe no longer supports a GPE type flag. 2090 2091Specific drivers that must be changed: 20921) EC driver: 2093 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 2094AeGpeHandler, NULL); 2095 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 2096 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 2097 20982) Button Drivers (Power, Lid, Sleep): 2099Run _PRW method under parent device 2100If _PRW exists: /* This is a control-method button */ 2101 Extract GPE number and possibly GpeDevice 2102 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 2103 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 2104 2105For all other devices that have _PRWs, we automatically set the 2106GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically 2107(wake) enabled. This must be done on a selective basis, usually 2108requiring some kind of user app to allow the user to pick the 2109wake devices. 2110 2111 2112Code and Data Size: Current and previous core subsystem library 2113sizes are shown below. These are the code and data sizes for the 2114acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2115these values do not include any ACPI driver or OSPM code. The 2116debug version of the code includes the debug output trace 2117mechanism and has a much larger code and data size. Note that 2118these values will vary depending on the efficiency of the 2119compiler and the compiler options used during generation. 2120 2121 Previous Release: 2122 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 2123 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 2124 Current Release: 2125 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 2126 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 2127 2128 2129 2130---------------------------------------- 213102 April 2004. Summary of changes for version 20040402: 2132 21331) ACPI CA Core Subsystem: 2134 2135Fixed an interpreter problem where an indirect store through an 2136ArgX parameter was incorrectly applying the "implicit conversion 2137rules" during the store. From the ACPI specification: "If the 2138target is a method local or argument (LocalX or ArgX), no 2139conversion is performed and the result is stored directly to the 2140target". The new behavior is to disable implicit conversion 2141during ALL stores to an ArgX. 2142 2143Changed the behavior of the _PRW method scan to ignore any and 2144all errors returned by a given _PRW. This prevents the scan from 2145aborting from the failure of any single _PRW. 2146 2147Moved the runtime configuration parameters from the global init 2148procedure to static variables in acglobal.h. This will allow the 2149host to override the default values easily. 2150 2151Code and Data Size: Current and previous core subsystem library 2152sizes are shown below. These are the code and data sizes for the 2153acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2154these values do not include any ACPI driver or OSPM code. The 2155debug version of the code includes the debug output trace 2156mechanism and has a much larger code and data size. Note that 2157these values will vary depending on the efficiency of the 2158compiler and the compiler options used during generation. 2159 2160 Previous Release: 2161 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 2162 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 2163 Current Release: 2164 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 2165 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 2166 2167 21682) iASL Compiler/Disassembler: 2169 2170iASL now fully disassembles SSDTs. However, External() 2171statements are not generated automatically for unresolved symbols 2172at this time. This is a planned feature for future 2173implementation. 2174 2175Fixed a scoping problem in the disassembler that occurs when the 2176type of the target of a Scope() operator is overridden. This 2177problem caused an incorrectly nested internal namespace to be 2178constructed. 2179 2180Any warnings or errors that are emitted during disassembly are 2181now commented out automatically so that the resulting file can be 2182recompiled without any hand editing. 2183 2184---------------------------------------- 218526 March 2004. Summary of changes for version 20040326: 2186 21871) ACPI CA Core Subsystem: 2188 2189Implemented support for "wake" GPEs via interaction between GPEs 2190and the _PRW methods. Every GPE that is pointed to by one or 2191more _PRWs is identified as a WAKE GPE and by default will no 2192longer be enabled at runtime. Previously, we were blindly 2193enabling all GPEs with a corresponding _Lxx or _Exx method - but 2194most of these turn out to be WAKE GPEs anyway. We believe this 2195has been the cause of thousands of "spurious" GPEs on some 2196systems. 2197 2198This new GPE behavior is can be reverted to the original behavior 2199(enable ALL GPEs at runtime) via a runtime flag. 2200 2201Fixed a problem where aliased control methods could not access 2202objects properly. The proper scope within the namespace was not 2203initialized (transferred to the target of the aliased method) 2204before executing the target method. 2205 2206Fixed a potential race condition on internal object deletion on 2207the return object in AcpiEvaluateObject. 2208 2209Integrated a fix for resource descriptors where both _MEM and 2210_MTP were being extracted instead of just _MEM. (i.e. bitmask 2211was incorrectly too wide, 0x0F instead of 0x03.) 2212 2213Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 2214preventing a fault in some cases. 2215 2216Updated Notify() values for debug statements in evmisc.c 2217 2218Return proper status from AcpiUtMutexInitialize, not just simply 2219AE_OK. 2220 2221Code and Data Size: Current and previous core subsystem library 2222sizes are shown below. These are the code and data sizes for the 2223acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2224these values do not include any ACPI driver or OSPM code. The 2225debug version of the code includes the debug output trace 2226mechanism and has a much larger code and data size. Note that 2227these values will vary depending on the efficiency of the 2228compiler and the compiler options used during generation. 2229 2230 Previous Release: 2231 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 2232 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 2233 Current Release: 2234 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 2235 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 2236 2237---------------------------------------- 223811 March 2004. Summary of changes for version 20040311: 2239 22401) ACPI CA Core Subsystem: 2241 2242Fixed a problem where errors occurring during the parse phase of 2243control method execution did not abort cleanly. For example, 2244objects created and installed in the namespace were not deleted. 2245This caused all subsequent invocations of the method to return 2246the AE_ALREADY_EXISTS exception. 2247 2248Implemented a mechanism to force a control method to "Serialized" 2249execution if the method attempts to create namespace objects. 2250(The root of the AE_ALREADY_EXISTS problem.) 2251 2252Implemented support for the predefined _OSI "internal" control 2253method. Initial supported strings are "Linux", "Windows 2000", 2254"Windows 2001", and "Windows 2001.1", and can be easily upgraded 2255for new strings as necessary. This feature will allow "other" 2256operating systems to execute the fully tested, "Windows" code 2257path through the ASL code 2258 2259Global Lock Support: Now allows multiple acquires and releases 2260with any internal thread. Removed concept of "owning thread" for 2261this special mutex. 2262 2263Fixed two functions that were inappropriately declaring large 2264objects on the CPU stack: PsParseLoop, NsEvaluateRelative. 2265Reduces the stack usage during method execution considerably. 2266 2267Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where 2268the S4Bios_f field was incorrectly defined as UINT32 instead of 2269UINT32_BIT. 2270 2271Fixed a problem where AcpiEvGpeDetect would fault if there were 2272no GPEs defined on the machine. 2273 2274Implemented two runtime options: One to force all control method 2275execution to "Serialized" to mimic Windows behavior, another to 2276disable _OSI support if it causes problems on a given machine. 2277 2278Code and Data Size: Current and previous core subsystem library 2279sizes are shown below. These are the code and data sizes for the 2280acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2281these values do not include any ACPI driver or OSPM code. The 2282debug version of the code includes the debug output trace 2283mechanism and has a much larger code and data size. Note that 2284these values will vary depending on the efficiency of the 2285compiler and the compiler options used during generation. 2286 2287 Previous Release: 2288 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 2289 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 2290 Current Release: 2291 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 2292 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 2293 22942) iASL Compiler/Disassembler: 2295 2296Fixed an array size problem for FreeBSD that would cause the 2297compiler to fault. 2298 2299---------------------------------------- 230020 February 2004. Summary of changes for version 20040220: 2301 23021) ACPI CA Core Subsystem: 2303 2304Implemented execution of _SxD methods for Device objects in the 2305GetObjectInfo interface. 2306 2307Fixed calls to _SST method to pass the correct arguments. 2308 2309Added a call to _SST on wake to restore to "working" state. 2310 2311Check for End-Of-Buffer failure case in the WalkResources 2312interface. 2313 2314Integrated fix for 64-bit alignment issue in acglobal.h by moving 2315two structures to the beginning of the file. 2316 2317After wake, clear GPE status register(s) before enabling GPEs. 2318 2319After wake, clear/enable power button. (Perhaps we should 2320clear/enable all fixed events upon wake.) 2321 2322Fixed a couple of possible memory leaks in the Namespace manager. 2323 2324Integrated latest acnetbsd.h file. 2325 2326---------------------------------------- 232711 February 2004. Summary of changes for version 20040211: 2328 23291) ACPI CA Core Subsystem: 2330 2331Completed investigation and implementation of the call-by- 2332reference mechanism for control method arguments. 2333 2334Fixed a problem where a store of an object into an indexed 2335package could fail if the store occurs within a different method 2336than the method that created the package. 2337 2338Fixed a problem where the ToDecimal operator could return 2339incorrect results. 2340 2341Fixed a problem where the CopyObject operator could fail on some 2342of the more obscure objects (e.g., Reference objects.) 2343 2344Improved the output of the Debug object to display buffer, 2345package, and index objects. 2346 2347Fixed a problem where constructs of the form "RefOf (ArgX)" did 2348not return the expected result. 2349 2350Added permanent ACPI_REPORT_ERROR macros for all instances of the 2351ACPI_AML_INTERNAL exception. 2352 2353Integrated latest version of acfreebsd.h 2354 2355---------------------------------------- 235616 January 2004. Summary of changes for version 20040116: 2357 2358The purpose of this release is primarily to update the copyright 2359years in each module, thus causing a huge number of diffs. There 2360are a few small functional changes, however. 2361 23621) ACPI CA Core Subsystem: 2363 2364Improved error messages when there is a problem finding one or 2365more of the required base ACPI tables 2366 2367Reintroduced the definition of APIC_HEADER in actbl.h 2368 2369Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 2370 2371Removed extraneous reference to NewObj in dsmthdat.c 2372 23732) iASL compiler 2374 2375Fixed a problem introduced in December that disabled the correct 2376disassembly of Resource Templates 2377 2378 2379---------------------------------------- 238003 December 2003. Summary of changes for version 20031203: 2381 23821) ACPI CA Core Subsystem: 2383 2384Changed the initialization of Operation Regions during subsystem 2385init to perform two entire walks of the ACPI namespace; The first 2386to initialize the regions themselves, the second to execute the 2387_REG methods. This fixed some interdependencies across _REG 2388methods found on some machines. 2389 2390Fixed a problem where a Store(Local0, Local1) could simply update 2391the object reference count, and not create a new copy of the 2392object if the Local1 is uninitialized. 2393 2394Implemented support for the _SST reserved method during sleep 2395transitions. 2396 2397Implemented support to clear the SLP_TYP and SLP_EN bits when 2398waking up, this is apparently required by some machines. 2399 2400When sleeping, clear the wake status only if SleepState is not 2401S5. 2402 2403Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 2404pointer arithmetic advanced a string pointer too far. 2405 2406Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 2407could be returned if the requested table has not been loaded. 2408 2409Within the support for IRQ resources, restructured the handling 2410of 2411the active and edge/level bits. 2412 2413Fixed a few problems in AcpiPsxExecute() where memory could be 2414leaked under certain error conditions. 2415 2416Improved error messages for the cases where the ACPI mode could 2417not be entered. 2418 2419Code and Data Size: Current and previous core subsystem library 2420sizes are shown below. These are the code and data sizes for the 2421acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2422these values do not include any ACPI driver or OSPM code. The 2423debug version of the code includes the debug output trace 2424mechanism and has a much larger code and data size. Note that 2425these values will vary depending on the efficiency of the 2426compiler 2427and the compiler options used during generation. 2428 2429 Previous Release (20031029): 2430 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 2431 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 2432 Current Release: 2433 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 2434 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 2435 24362) iASL Compiler/Disassembler: 2437 2438Implemented a fix for the iASL disassembler where a bad index was 2439generated. This was most noticeable on 64-bit platforms 2440 2441 2442---------------------------------------- 244329 October 2003. Summary of changes for version 20031029: 2444 24451) ACPI CA Core Subsystem: 2446 2447Fixed a problem where a level-triggered GPE with an associated 2448_Lxx control method was incorrectly cleared twice. 2449 2450Fixed a problem with the Field support code where an access can 2451occur beyond the end-of-region if the field is non-aligned but 2452extends to the very end of the parent region (resulted in an 2453AE_AML_REGION_LIMIT exception.) 2454 2455Fixed a problem with ACPI Fixed Events where an RT Clock handler 2456would not get invoked on an RTC event. The RTC event bitmasks 2457for 2458the PM1 registers were not being initialized properly. 2459 2460Implemented support for executing _STA and _INI methods for 2461Processor objects. Although this is currently not part of the 2462ACPI specification, there is existing ASL code that depends on 2463the 2464init-time execution of these methods. 2465 2466Implemented and deployed a GetDescriptorName function to decode 2467the various types of internal descriptors. Guards against null 2468descriptors during debug output also. 2469 2470Implemented and deployed a GetNodeName function to extract the 4- 2471character namespace node name. This function simplifies the 2472debug 2473and error output, as well as guarding against null pointers 2474during 2475output. 2476 2477Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 2478simplify the debug and error output of 64-bit integers. This 2479macro replaces the HIDWORD and LODWORD macros for dumping these 2480integers. 2481 2482Updated the implementation of the Stall() operator to only call 2483AcpiOsStall(), and also return an error if the operand is larger 2484than 255. This preserves the required behavior of not 2485relinquishing the processor, as would happen if AcpiOsSleep() was 2486called for "long stalls". 2487 2488Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 2489initialized are now treated as NOOPs. 2490 2491Cleaned up a handful of warnings during 64-bit generation. 2492 2493Fixed a reported error where and incorrect GPE number was passed 2494to the GPE dispatch handler. This value is only used for error 2495output, however. Used this opportunity to clean up and 2496streamline 2497the GPE dispatch code. 2498 2499Code and Data Size: Current and previous core subsystem library 2500sizes are shown below. These are the code and data sizes for the 2501acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2502these values do not include any ACPI driver or OSPM code. The 2503debug version of the code includes the debug output trace 2504mechanism and has a much larger code and data size. Note that 2505these values will vary depending on the efficiency of the 2506compiler 2507and the compiler options used during generation. 2508 2509 Previous Release (20031002): 2510 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 2511 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 2512 Current Release: 2513 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 2514 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 2515 2516 25172) iASL Compiler/Disassembler: 2518 2519Updated the iASL compiler to return an error if the operand to 2520the 2521Stall() operator is larger than 255. 2522 2523 2524---------------------------------------- 252502 October 2003. Summary of changes for version 20031002: 2526 2527 25281) ACPI CA Core Subsystem: 2529 2530Fixed a problem with Index Fields where the index was not 2531incremented for fields that require multiple writes to the 2532index/data registers (Fields that are wider than the data 2533register.) 2534 2535Fixed a problem with all Field objects where a write could go 2536beyond the end-of-field if the field was larger than the access 2537granularity and therefore required multiple writes to complete 2538the 2539request. An extra write beyond the end of the field could happen 2540inadvertently. 2541 2542Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 2543would incorrectly be returned if the width of the Data Register 2544was larger than the specified field access width. 2545 2546Completed fixes for LoadTable() and Unload() and verified their 2547operation. Implemented full support for the "DdbHandle" object 2548throughout the ACPI CA subsystem. 2549 2550Implemented full support for the MADT and ECDT tables in the ACPI 2551CA header files. Even though these tables are not directly 2552consumed by ACPI CA, the header definitions are useful for ACPI 2553device drivers. 2554 2555Integrated resource descriptor fixes posted to the Linux ACPI 2556list. This included checks for minimum descriptor length, and 2557support for trailing NULL strings within descriptors that have 2558optional string elements. 2559 2560Code and Data Size: Current and previous core subsystem library 2561sizes are shown below. These are the code and data sizes for the 2562acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2563these values do not include any ACPI driver or OSPM code. The 2564debug version of the code includes the debug output trace 2565mechanism and has a much larger code and data size. Note that 2566these values will vary depending on the efficiency of the 2567compiler 2568and the compiler options used during generation. 2569 2570 Previous Release (20030918): 2571 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 2572 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 2573 Current Release: 2574 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 2575 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 2576 2577 25782) iASL Compiler: 2579 2580Implemented detection of non-ASCII characters within the input 2581source ASL file. This catches attempts to compile binary (AML) 2582files early in the compile, with an informative error message. 2583 2584Fixed a problem where the disassembler would fault if the output 2585filename could not be generated or if the output file could not 2586be 2587opened. 2588 2589---------------------------------------- 259018 September 2003. Summary of changes for version 20030918: 2591 2592 25931) ACPI CA Core Subsystem: 2594 2595Found and fixed a longstanding problem with the late execution of 2596the various deferred AML opcodes (such as Operation Regions, 2597Buffer Fields, Buffers, and Packages). If the name string 2598specified for the name of the new object placed the object in a 2599scope other than the current scope, the initialization/execution 2600of the opcode failed. The solution to this problem was to 2601implement a mechanism where the late execution of such opcodes 2602does not attempt to lookup/create the name a second time in an 2603incorrect scope. This fixes the "region size computed 2604incorrectly" problem. 2605 2606Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing 2607a 2608Global Lock AE_BAD_PARAMETER error. 2609 2610Fixed several 64-bit issues with prototypes, casting and data 2611types. 2612 2613Removed duplicate prototype from acdisasm.h 2614 2615Fixed an issue involving EC Operation Region Detach (Shaohua Li) 2616 2617Code and Data Size: Current and previous core subsystem library 2618sizes are shown below. These are the code and data sizes for the 2619acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2620these values do not include any ACPI driver or OSPM code. The 2621debug version of the code includes the debug output trace 2622mechanism and has a much larger code and data size. Note that 2623these values will vary depending on the efficiency of the 2624compiler 2625and the compiler options used during generation. 2626 2627 Previous Release: 2628 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 2629 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 2630 Current Release: 2631 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 2632 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 2633 2634 26352) Linux: 2636 2637Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 2638correct sleep time in seconds. 2639 2640---------------------------------------- 264114 July 2003. Summary of changes for version 20030619: 2642 26431) ACPI CA Core Subsystem: 2644 2645Parse SSDTs in order discovered, as opposed to reverse order 2646(Hrvoje Habjanic) 2647 2648Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 2649Klausner, 2650 Nate Lawson) 2651 2652 26532) Linux: 2654 2655Dynamically allocate SDT list (suggested by Andi Kleen) 2656 2657proc function return value cleanups (Andi Kleen) 2658 2659Correctly handle NMI watchdog during long stalls (Andrew Morton) 2660 2661Make it so acpismp=force works (reported by Andrew Morton) 2662 2663 2664---------------------------------------- 266519 June 2003. Summary of changes for version 20030619: 2666 26671) ACPI CA Core Subsystem: 2668 2669Fix To/FromBCD, eliminating the need for an arch-specific 2670#define. 2671 2672Do not acquire a semaphore in the S5 shutdown path. 2673 2674Fix ex_digits_needed for 0. (Takayoshi Kochi) 2675 2676Fix sleep/stall code reversal. (Andi Kleen) 2677 2678Revert a change having to do with control method calling 2679semantics. 2680 26812) Linux: 2682 2683acpiphp update (Takayoshi Kochi) 2684 2685Export acpi_disabled for sonypi (Stelian Pop) 2686 2687Mention acpismp=force in config help 2688 2689Re-add acpitable.c and acpismp=force. This improves backwards 2690compatibility and also cleans up the code to a significant 2691degree. 2692 2693Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 2694 2695---------------------------------------- 269622 May 2003. Summary of changes for version 20030522: 2697 26981) ACPI CA Core Subsystem: 2699 2700Found and fixed a reported problem where an AE_NOT_FOUND error 2701occurred occasionally during _BST evaluation. This turned out to 2702be an Owner ID allocation issue where a called method did not get 2703a new ID assigned to it. Eventually, (after 64k calls), the 2704Owner 2705ID UINT16 would wraparound so that the ID would be the same as 2706the 2707caller's and the called method would delete the caller's 2708namespace. 2709 2710Implemented extended error reporting for control methods that are 2711aborted due to a run-time exception. Output includes the exact 2712AML instruction that caused the method abort, a dump of the 2713method 2714locals and arguments at the time of the abort, and a trace of all 2715nested control method calls. 2716 2717Modified the interpreter to allow the creation of buffers of zero 2718length from the AML code. Implemented new code to ensure that no 2719attempt is made to actually allocate a memory buffer (of length 2720zero) - instead, a simple buffer object with a NULL buffer 2721pointer 2722and length zero is created. A warning is no longer issued when 2723the AML attempts to create a zero-length buffer. 2724 2725Implemented a workaround for the "leading asterisk issue" in 2726_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 2727asterisk is automatically removed if present in any HID, UID, or 2728CID strings. The iASL compiler will still flag this asterisk as 2729an error, however. 2730 2731Implemented full support for _CID methods that return a package 2732of 2733multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() 2734interface 2735now additionally returns a device _CID list if present. This 2736required a change to the external interface in order to pass an 2737ACPI_BUFFER object as a parameter since the _CID list is of 2738variable length. 2739 2740Fixed a problem with the new AE_SAME_HANDLER exception where 2741handler initialization code did not know about this exception. 2742 2743Code and Data Size: Current and previous core subsystem library 2744sizes are shown below. These are the code and data sizes for the 2745acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2746these values do not include any ACPI driver or OSPM code. The 2747debug version of the code includes the debug output trace 2748mechanism and has a much larger code and data size. Note that 2749these values will vary depending on the efficiency of the 2750compiler 2751and the compiler options used during generation. 2752 2753 Previous Release (20030509): 2754 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 2755 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 2756 Current Release: 2757 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 2758 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 2759 2760 27612) Linux: 2762 2763Fixed a bug in which we would reinitialize the ACPI interrupt 2764after it was already working, thus disabling all ACPI and the 2765IRQs 2766for any other device sharing the interrupt. (Thanks to Stian 2767Jordet) 2768 2769Toshiba driver update (John Belmonte) 2770 2771Return only 0 or 1 for our interrupt handler status (Andrew 2772Morton) 2773 2774 27753) iASL Compiler: 2776 2777Fixed a reported problem where multiple (nested) ElseIf() 2778statements were not handled correctly by the compiler, resulting 2779in incorrect warnings and incorrect AML code. This was a problem 2780in both the ASL parser and the code generator. 2781 2782 27834) Documentation: 2784 2785Added changes to existing interfaces, new exception codes, and 2786new 2787text concerning reference count object management versus garbage 2788collection. 2789 2790---------------------------------------- 279109 May 2003. Summary of changes for version 20030509. 2792 2793 27941) ACPI CA Core Subsystem: 2795 2796Changed the subsystem initialization sequence to hold off 2797installation of address space handlers until the hardware has 2798been 2799initialized and the system has entered ACPI mode. This is 2800because 2801the installation of space handlers can cause _REG methods to be 2802run. Previously, the _REG methods could potentially be run 2803before 2804ACPI mode was enabled. 2805 2806Fixed some memory leak issues related to address space handler 2807and 2808notify handler installation. There were some problems with the 2809reference count mechanism caused by the fact that the handler 2810objects are shared across several namespace objects. 2811 2812Fixed a reported problem where reference counts within the 2813namespace were not properly updated when named objects created by 2814method execution were deleted. 2815 2816Fixed a reported problem where multiple SSDTs caused a deletion 2817issue during subsystem termination. Restructured the table data 2818structures to simplify the linked lists and the related code. 2819 2820Fixed a problem where the table ID associated with secondary 2821tables (SSDTs) was not being propagated into the namespace 2822objects 2823created by those tables. This would only present a problem for 2824tables that are unloaded at run-time, however. 2825 2826Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 2827type as the length parameter (instead of UINT32). 2828 2829Solved a long-standing problem where an ALREADY_EXISTS error 2830appears on various systems. This problem could happen when there 2831are multiple PCI_Config operation regions under a single PCI root 2832bus. This doesn't happen very frequently, but there are some 2833systems that do this in the ASL. 2834 2835Fixed a reported problem where the internal DeleteNode function 2836was incorrectly handling the case where a namespace node was the 2837first in the parent's child list, and had additional peers (not 2838the only child, but first in the list of children.) 2839 2840Code and Data Size: Current core subsystem library sizes are 2841shown 2842below. These are the code and data sizes for the acpica.lib 2843produced by the Microsoft Visual C++ 6.0 compiler, and these 2844values do not include any ACPI driver or OSPM code. The debug 2845version of the code includes the debug output trace mechanism and 2846has a much larger code and data size. Note that these values 2847will 2848vary depending on the efficiency of the compiler and the compiler 2849options used during generation. 2850 2851 Previous Release 2852 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 2853 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 2854 Current Release: 2855 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 2856 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 2857 2858 28592) Linux: 2860 2861Allow ":" in OS override string (Ducrot Bruno) 2862 2863Kobject fix (Greg KH) 2864 2865 28663 iASL Compiler/Disassembler: 2867 2868Fixed a problem in the generation of the C source code files (AML 2869is emitted in C source statements for BIOS inclusion) where the 2870Ascii dump that appears within a C comment at the end of each 2871line 2872could cause a compile time error if the AML sequence happens to 2873have an open comment or close comment sequence embedded. 2874 2875 2876---------------------------------------- 287724 April 2003. Summary of changes for version 20030424. 2878 2879 28801) ACPI CA Core Subsystem: 2881 2882Support for big-endian systems has been implemented. Most of the 2883support has been invisibly added behind big-endian versions of 2884the 2885ACPI_MOVE_* macros. 2886 2887Fixed a problem in AcpiHwDisableGpeBlock() and 2888AcpiHwClearGpeBlock() where an incorrect offset was passed to the 2889low level hardware write routine. The offset parameter was 2890actually eliminated from the low level read/write routines 2891because 2892they had become obsolete. 2893 2894Fixed a problem where a handler object was deleted twice during 2895the removal of a fixed event handler. 2896 2897 28982) Linux: 2899 2900A fix for SMP systems with link devices was contributed by 2901Compaq's Dan Zink. 2902 2903(2.5) Return whether we handled the interrupt in our IRQ handler. 2904(Linux ISRs no longer return void, so we can propagate the 2905handler 2906return value from the ACPI CA core back to the OS.) 2907 2908 29093) Documentation: 2910 2911The ACPI CA Programmer Reference has been updated to reflect new 2912interfaces and changes to existing interfaces. 2913 2914---------------------------------------- 291528 March 2003. Summary of changes for version 20030328. 2916 29171) ACPI CA Core Subsystem: 2918 2919The GPE Block Device support has been completed. New interfaces 2920are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 2921interfaces (enable, disable, clear, getstatus) have been split 2922into separate interfaces for Fixed Events and General Purpose 2923Events (GPEs) in order to support GPE Block Devices properly. 2924 2925Fixed a problem where the error message "Failed to acquire 2926semaphore" would appear during operations on the embedded 2927controller (EC). 2928 2929Code and Data Size: Current core subsystem library sizes are 2930shown 2931below. These are the code and data sizes for the acpica.lib 2932produced by the Microsoft Visual C++ 6.0 compiler, and these 2933values do not include any ACPI driver or OSPM code. The debug 2934version of the code includes the debug output trace mechanism and 2935has a much larger code and data size. Note that these values 2936will 2937vary depending on the efficiency of the compiler and the compiler 2938options used during generation. 2939 2940 Previous Release 2941 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 2942 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 2943 Current Release: 2944 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 2945 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 2946 2947 2948---------------------------------------- 294928 February 2003. Summary of changes for version 20030228. 2950 2951 29521) ACPI CA Core Subsystem: 2953 2954The GPE handling and dispatch code has been completely overhauled 2955in preparation for support of GPE Block Devices (ID ACPI0006). 2956This affects internal data structures and code only; there should 2957be no differences visible externally. One new file has been 2958added, evgpeblk.c 2959 2960The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 2961fields that are used to determine the GPE block lengths. The 2962REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 2963structures are ignored. This is per the ACPI specification but 2964it 2965isn't very clear. The full 256 Block 0/1 GPEs are now supported 2966(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 2967128). 2968 2969In the SCI interrupt handler, removed the read of the PM1_CONTROL 2970register to look at the SCI_EN bit. On some machines, this read 2971causes an SMI event and greatly slows down SCI events. (This may 2972in fact be the cause of slow battery status response on some 2973systems.) 2974 2975Fixed a problem where a store of a NULL string to a package 2976object 2977could cause the premature deletion of the object. This was seen 2978during execution of the battery _BIF method on some systems, 2979resulting in no battery data being returned. 2980 2981Added AcpiWalkResources interface to simplify parsing of resource 2982lists. 2983 2984Code and Data Size: Current core subsystem library sizes are 2985shown 2986below. These are the code and data sizes for the acpica.lib 2987produced by the Microsoft Visual C++ 6.0 compiler, and these 2988values do not include any ACPI driver or OSPM code. The debug 2989version of the code includes the debug output trace mechanism and 2990has a much larger code and data size. Note that these values 2991will 2992vary depending on the efficiency of the compiler and the compiler 2993options used during generation. 2994 2995 Previous Release 2996 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 2997 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 2998 Current Release: 2999 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 3000 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 3001 3002 30032) Linux 3004 3005S3 fixes (Ole Rohne) 3006 3007Update ACPI PHP driver with to use new acpi_walk_resource API 3008(Bjorn Helgaas) 3009 3010Add S4BIOS support (Pavel Machek) 3011 3012Map in entire table before performing checksum (John Stultz) 3013 3014Expand the mem= cmdline to allow the specification of reserved 3015and 3016ACPI DATA blocks (Pavel Machek) 3017 3018Never use ACPI on VISWS 3019 3020Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 3021 3022Revert a change that allowed P_BLK lengths to be 4 or 5. This is 3023causing us to think that some systems support C2 when they really 3024don't. 3025 3026Do not count processor objects for non-present CPUs (Thanks to 3027Dominik Brodowski) 3028 3029 30303) iASL Compiler: 3031 3032Fixed a problem where ASL include files could not be found and 3033opened. 3034 3035Added support for the _PDC reserved name. 3036 3037 3038---------------------------------------- 303922 January 2003. Summary of changes for version 20030122. 3040 3041 30421) ACPI CA Core Subsystem: 3043 3044Added a check for constructs of the form: Store (Local0, Local0) 3045where Local0 is not initialized. Apparently, some BIOS 3046programmers believe that this is a NOOP. Since this store 3047doesn't 3048do anything anyway, the new prototype behavior will ignore this 3049error. This is a case where we can relax the strict checking in 3050the interpreter in the name of compatibility. 3051 3052 30532) Linux 3054 3055The AcpiSrc Source Conversion Utility has been released with the 3056Linux package for the first time. This is the utility that is 3057used to convert the ACPI CA base source code to the Linux 3058version. 3059 3060(Both) Handle P_BLK lengths shorter than 6 more gracefully 3061 3062(Both) Move more headers to include/acpi, and delete an unused 3063header. 3064 3065(Both) Move drivers/acpi/include directory to include/acpi 3066 3067(Both) Boot functions don't use cmdline, so don't pass it around 3068 3069(Both) Remove include of unused header (Adrian Bunk) 3070 3071(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 3072the 3073former now also includes the latter, acpiphp.h only needs the 3074one, 3075now. 3076 3077(2.5) Make it possible to select method of bios restoring after 3078S3 3079resume. [=> no more ugly ifdefs] (Pavel Machek) 3080 3081(2.5) Make proc write interfaces work (Pavel Machek) 3082 3083(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 3084 3085(2.5) Break out ACPI Perf code into its own module, under cpufreq 3086(Dominik Brodowski) 3087 3088(2.4) S4BIOS support (Ducrot Bruno) 3089 3090(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 3091Visinoni) 3092 3093 30943) iASL Compiler: 3095 3096Added support to disassemble SSDT and PSDTs. 3097 3098Implemented support to obtain SSDTs from the Windows registry if 3099available. 3100 3101 3102---------------------------------------- 310309 January 2003. Summary of changes for version 20030109. 3104 31051) ACPI CA Core Subsystem: 3106 3107Changed the behavior of the internal Buffer-to-String conversion 3108function. The current ACPI specification states that the 3109contents 3110of the buffer are "converted to a string of two-character 3111hexadecimal numbers, each separated by a space". Unfortunately, 3112this definition is not backwards compatible with existing ACPI 31131.0 3114implementations (although the behavior was not defined in the 3115ACPI 31161.0 specification). The new behavior simply copies data from the 3117buffer to the string until a null character is found or the end 3118of 3119the buffer is reached. The new String object is always null 3120terminated. This problem was seen during the generation of _BIF 3121battery data where incorrect strings were returned for battery 3122type, etc. This will also require an errata to the ACPI 3123specification. 3124 3125Renamed all instances of NATIVE_UINT and NATIVE_INT to 3126ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 3127 3128Copyright in all module headers (both Linux and non-Linux) has be 3129updated to 2003. 3130 3131Code and Data Size: Current core subsystem library sizes are 3132shown 3133below. These are the code and data sizes for the acpica.lib 3134produced by the Microsoft Visual C++ 6.0 compiler, and these 3135values do not include any ACPI driver or OSPM code. The debug 3136version of the code includes the debug output trace mechanism and 3137has a much larger code and data size. Note that these values 3138will 3139vary depending on the efficiency of the compiler and the compiler 3140options used during generation. 3141 3142 Previous Release 3143 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 3144 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 3145 Current Release: 3146 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 3147 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 3148 3149 31502) Linux 3151 3152Fixed an oops on module insertion/removal (Matthew Tippett) 3153 3154(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 3155 3156(2.5) Replace pr_debug (Randy Dunlap) 3157 3158(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 3159 3160(Both) Eliminate spawning of thread from timer callback, in favor 3161of schedule_work() 3162 3163(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 3164 3165(Both) Added define for Fixed Function HW region (Matthew Wilcox) 3166 3167(Both) Add missing statics to button.c (Pavel Machek) 3168 3169Several changes have been made to the source code translation 3170utility that generates the Linux Code in order to make the code 3171more "Linux-like": 3172 3173All typedefs on structs and unions have been removed in keeping 3174with the Linux coding style. 3175 3176Removed the non-Linux SourceSafe module revision number from each 3177module header. 3178 3179Completed major overhaul of symbols to be lowercased for linux. 3180Doubled the number of symbols that are lowercased. 3181 3182Fixed a problem where identifiers within procedure headers and 3183within quotes were not fully lower cased (they were left with a 3184starting capital.) 3185 3186Some C macros whose only purpose is to allow the generation of 16- 3187bit code are now completely removed in the Linux code, increasing 3188readability and maintainability. 3189 3190---------------------------------------- 3191 319212 December 2002. Summary of changes for version 20021212. 3193 3194 31951) ACPI CA Core Subsystem: 3196 3197Fixed a problem where the creation of a zero-length AML Buffer 3198would cause a fault. 3199 3200Fixed a problem where a Buffer object that pointed to a static 3201AML 3202buffer (in an ACPI table) could inadvertently be deleted, causing 3203memory corruption. 3204 3205Fixed a problem where a user buffer (passed in to the external 3206ACPI CA interfaces) could be overwritten if the buffer was too 3207small to complete the operation, causing memory corruption. 3208 3209Fixed a problem in the Buffer-to-String conversion code where a 3210string of length one was always returned, regardless of the size 3211of the input Buffer object. 3212 3213Removed the NATIVE_CHAR data type across the entire source due to 3214lack of need and lack of consistent use. 3215 3216Code and Data Size: Current core subsystem library sizes are 3217shown 3218below. These are the code and data sizes for the acpica.lib 3219produced by the Microsoft Visual C++ 6.0 compiler, and these 3220values do not include any ACPI driver or OSPM code. The debug 3221version of the code includes the debug output trace mechanism and 3222has a much larger code and data size. Note that these values 3223will 3224vary depending on the efficiency of the compiler and the compiler 3225options used during generation. 3226 3227 Previous Release 3228 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 3229 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 3230 Current Release: 3231 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 3232 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 3233 3234 3235---------------------------------------- 323605 December 2002. Summary of changes for version 20021205. 3237 32381) ACPI CA Core Subsystem: 3239 3240Fixed a problem where a store to a String or Buffer object could 3241cause corruption of the DSDT if the object type being stored was 3242the same as the target object type and the length of the object 3243being stored was equal to or smaller than the original (existing) 3244target object. This was seen to cause corruption of battery _BIF 3245buffers if the _BIF method modified the buffer on the fly. 3246 3247Fixed a problem where an internal error was generated if a 3248control 3249method invocation was used in an OperationRegion, Buffer, or 3250Package declaration. This was caused by the deferred parsing of 3251the control method and thus the deferred creation of the internal 3252method object. The solution to this problem was to create the 3253internal method object at the moment the method is encountered in 3254the first pass - so that subsequent references to the method will 3255able to obtain the required parameter count and thus properly 3256parse the method invocation. This problem presented itself as an 3257AE_AML_INTERNAL during the pass 1 parse phase during table load. 3258 3259Fixed a problem where the internal String object copy routine did 3260not always allocate sufficient memory for the target String 3261object 3262and caused memory corruption. This problem was seen to cause 3263"Allocation already present in list!" errors as memory allocation 3264became corrupted. 3265 3266Implemented a new function for the evaluation of namespace 3267objects 3268that allows the specification of the allowable return object 3269types. This simplifies a lot of code that checks for a return 3270object of one or more specific objects returned from the 3271evaluation (such as _STA, etc.) This may become and external 3272function if it would be useful to ACPI-related drivers. 3273 3274Completed another round of prefixing #defines with "ACPI_" for 3275clarity. 3276 3277Completed additional code restructuring to allow more modular 3278linking for iASL compiler and AcpiExec. Several files were split 3279creating new files. New files: nsparse.c dsinit.c evgpe.c 3280 3281Implemented an abort mechanism to terminate an executing control 3282method via the AML debugger. This feature is useful for 3283debugging 3284control methods that depend (wait) for specific hardware 3285responses. 3286 3287Code and Data Size: Current core subsystem library sizes are 3288shown 3289below. These are the code and data sizes for the acpica.lib 3290produced by the Microsoft Visual C++ 6.0 compiler, and these 3291values do not include any ACPI driver or OSPM code. The debug 3292version of the code includes the debug output trace mechanism and 3293has a much larger code and data size. Note that these values 3294will 3295vary depending on the efficiency of the compiler and the compiler 3296options used during generation. 3297 3298 Previous Release 3299 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 3300 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 3301 Current Release: 3302 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 3303 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 3304 3305 33062) iASL Compiler/Disassembler 3307 3308Fixed a compiler code generation problem for "Interrupt" Resource 3309Descriptors. If specified in the ASL, the optional "Resource 3310Source Index" and "Resource Source" fields were not inserted into 3311the correct location within the AML resource descriptor, creating 3312an invalid descriptor. 3313 3314Fixed a disassembler problem for "Interrupt" resource 3315descriptors. 3316The optional "Resource Source Index" and "Resource Source" fields 3317were ignored. 3318 3319 3320---------------------------------------- 332122 November 2002. Summary of changes for version 20021122. 3322 3323 33241) ACPI CA Core Subsystem: 3325 3326Fixed a reported problem where an object stored to a Method Local 3327or Arg was not copied to a new object during the store - the 3328object pointer was simply copied to the Local/Arg. This caused 3329all subsequent operations on the Local/Arg to also affect the 3330original source of the store operation. 3331 3332Fixed a problem where a store operation to a Method Local or Arg 3333was not completed properly if the Local/Arg contained a reference 3334(from RefOf) to a named field. The general-purpose store-to- 3335namespace-node code is now used so that this case is handled 3336automatically. 3337 3338Fixed a problem where the internal object copy routine would 3339cause 3340a protection fault if the object being copied was a Package and 3341contained either 1) a NULL package element or 2) a nested sub- 3342package. 3343 3344Fixed a problem with the GPE initialization that resulted from an 3345ambiguity in the ACPI specification. One section of the 3346specification states that both the address and length of the GPE 3347block must be zero if the block is not supported. Another 3348section 3349implies that only the address need be zero if the block is not 3350supported. The code has been changed so that both the address 3351and 3352the length must be non-zero to indicate a valid GPE block (i.e., 3353if either the address or the length is zero, the GPE block is 3354invalid.) 3355 3356Code and Data Size: Current core subsystem library sizes are 3357shown 3358below. These are the code and data sizes for the acpica.lib 3359produced by the Microsoft Visual C++ 6.0 compiler, and these 3360values do not include any ACPI driver or OSPM code. The debug 3361version of the code includes the debug output trace mechanism and 3362has a much larger code and data size. Note that these values 3363will 3364vary depending on the efficiency of the compiler and the compiler 3365options used during generation. 3366 3367 Previous Release 3368 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 3369 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 3370 Current Release: 3371 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 3372 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 3373 3374 33752) Linux 3376 3377Cleaned up EC driver. Exported an external EC read/write 3378interface. By going through this, other drivers (most notably 3379sonypi) will be able to serialize access to the EC. 3380 3381 33823) iASL Compiler/Disassembler 3383 3384Implemented support to optionally generate include files for both 3385ASM and C (the -i switch). This simplifies BIOS development by 3386automatically creating include files that contain external 3387declarations for the symbols that are created within the 3388(optionally generated) ASM and C AML source files. 3389 3390 3391---------------------------------------- 339215 November 2002. Summary of changes for version 20021115. 3393 33941) ACPI CA Core Subsystem: 3395 3396Fixed a memory leak problem where an error during resolution of 3397method arguments during a method invocation from another method 3398failed to cleanup properly by deleting all successfully resolved 3399argument objects. 3400 3401Fixed a problem where the target of the Index() operator was not 3402correctly constructed if the source object was a package. This 3403problem has not been detected because the use of a target operand 3404with Index() is very rare. 3405 3406Fixed a problem with the Index() operator where an attempt was 3407made to delete the operand objects twice. 3408 3409Fixed a problem where an attempt was made to delete an operand 3410twice during execution of the CondRefOf() operator if the target 3411did not exist. 3412 3413Implemented the first of perhaps several internal create object 3414functions that create and initialize a specific object type. 3415This 3416consolidates duplicated code wherever the object is created, thus 3417shrinking the size of the subsystem. 3418 3419Implemented improved debug/error messages for errors that occur 3420during nested method invocations. All executing method pathnames 3421are displayed (with the error) as the call stack is unwound - 3422thus 3423simplifying debug. 3424 3425Fixed a problem introduced in the 10/02 release that caused 3426premature deletion of a buffer object if a buffer was used as an 3427ASL operand where an integer operand is required (Thus causing an 3428implicit object conversion from Buffer to Integer.) The change 3429in 3430the 10/02 release was attempting to fix a memory leak (albeit 3431incorrectly.) 3432 3433Code and Data Size: Current core subsystem library sizes are 3434shown 3435below. These are the code and data sizes for the acpica.lib 3436produced by the Microsoft Visual C++ 6.0 compiler, and these 3437values do not include any ACPI driver or OSPM code. The debug 3438version of the code includes the debug output trace mechanism and 3439has a much larger code and data size. Note that these values 3440will 3441vary depending on the efficiency of the compiler and the compiler 3442options used during generation. 3443 3444 Previous Release 3445 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 3446 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 3447 Current Release: 3448 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 3449 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 3450 3451 34522) Linux 3453 3454Changed the implementation of the ACPI semaphores to use down() 3455instead of down_interruptable(). It is important that the 3456execution of ACPI control methods not be interrupted by signals. 3457Methods must run to completion, or the system may be left in an 3458unknown/unstable state. 3459 3460Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not 3461set. 3462(Shawn Starr) 3463 3464 34653) iASL Compiler/Disassembler 3466 3467 3468Changed the default location of output files. All output files 3469are now placed in the current directory by default instead of in 3470the directory of the source file. This change may affect some 3471existing makefiles, but it brings the behavior of the compiler in 3472line with other similar tools. The location of the output files 3473can be overridden with the -p command line switch. 3474 3475 3476---------------------------------------- 347711 November 2002. Summary of changes for version 20021111. 3478 3479 34800) ACPI Specification 2.0B is released and is now available at: 3481http://www.acpi.info/index.html 3482 3483 34841) ACPI CA Core Subsystem: 3485 3486Implemented support for the ACPI 2.0 SMBus Operation Regions. 3487This includes the early detection and handoff of the request to 3488the SMBus region handler (avoiding all of the complex field 3489support code), and support for the bidirectional return packet 3490from an SMBus write operation. This paves the way for the 3491development of SMBus drivers in each host operating system. 3492 3493Fixed a problem where the semaphore WAIT_FOREVER constant was 3494defined as 32 bits, but must be 16 bits according to the ACPI 3495specification. This had the side effect of causing ASL 3496Mutex/Event timeouts even though the ASL code requested a wait 3497forever. Changed all internal references to the ACPI timeout 3498parameter to 16 bits to prevent future problems. Changed the 3499name 3500of WAIT_FOREVER to ACPI_WAIT_FOREVER. 3501 3502Code and Data Size: Current core subsystem library sizes are 3503shown 3504below. These are the code and data sizes for the acpica.lib 3505produced by the Microsoft Visual C++ 6.0 compiler, and these 3506values do not include any ACPI driver or OSPM code. The debug 3507version of the code includes the debug output trace mechanism and 3508has a much larger code and data size. Note that these values 3509will 3510vary depending on the efficiency of the compiler and the compiler 3511options used during generation. 3512 3513 Previous Release 3514 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 3515 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 3516 Current Release: 3517 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 3518 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 3519 3520 35212) Linux 3522 3523Module loading/unloading fixes (John Cagle) 3524 3525 35263) iASL Compiler/Disassembler 3527 3528Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 3529 3530Implemented support for the disassembly of all SMBus protocol 3531keywords (SMBQuick, SMBWord, etc.) 3532 3533---------------------------------------- 353401 November 2002. Summary of changes for version 20021101. 3535 3536 35371) ACPI CA Core Subsystem: 3538 3539Fixed a problem where platforms that have a GPE1 block but no 3540GPE0 3541block were not handled correctly. This resulted in a "GPE 3542overlap" error message. GPE0 is no longer required. 3543 3544Removed code added in the previous release that inserted nodes 3545into the namespace in alphabetical order. This caused some side- 3546effects on various machines. The root cause of the problem is 3547still under investigation since in theory, the internal ordering 3548of the namespace nodes should not matter. 3549 3550 3551Enhanced error reporting for the case where a named object is not 3552found during control method execution. The full ACPI namepath 3553(name reference) of the object that was not found is displayed in 3554this case. 3555 3556Note: as a result of the overhaul of the namespace object types 3557in 3558the previous release, the namespace nodes for the predefined 3559scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 3560instead of ACPI_TYPE_ANY. This simplifies the namespace 3561management code but may affect code that walks the namespace tree 3562looking for specific object types. 3563 3564Code and Data Size: Current core subsystem library sizes are 3565shown 3566below. These are the code and data sizes for the acpica.lib 3567produced by the Microsoft Visual C++ 6.0 compiler, and these 3568values do not include any ACPI driver or OSPM code. The debug 3569version of the code includes the debug output trace mechanism and 3570has a much larger code and data size. Note that these values 3571will 3572vary depending on the efficiency of the compiler and the compiler 3573options used during generation. 3574 3575 Previous Release 3576 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 3577 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 3578 Current Release: 3579 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 3580 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 3581 3582 35832) Linux 3584 3585Fixed a problem introduced in the previous release where the 3586Processor and Thermal objects were not recognized and installed 3587in 3588/proc. This was related to the scope type change described 3589above. 3590 3591 35923) iASL Compiler/Disassembler 3593 3594Implemented the -g option to get all of the required ACPI tables 3595from the registry and save them to files (Windows version of the 3596compiler only.) The required tables are the FADT, FACS, and 3597DSDT. 3598 3599Added ACPI table checksum validation during table disassembly in 3600order to catch corrupted tables. 3601 3602 3603---------------------------------------- 360422 October 2002. Summary of changes for version 20021022. 3605 36061) ACPI CA Core Subsystem: 3607 3608Implemented a restriction on the Scope operator that the target 3609must already exist in the namespace at the time the operator is 3610encountered (during table load or method execution). In other 3611words, forward references are not allowed and Scope() cannot 3612create a new object. This changes the previous behavior where the 3613interpreter would create the name if not found. This new 3614behavior 3615correctly enables the search-to-root algorithm during namespace 3616lookup of the target name. Because of this upsearch, this fixes 3617the known Compaq _SB_.OKEC problem and makes both the AML 3618interpreter and iASL compiler compatible with other ACPI 3619implementations. 3620 3621Completed a major overhaul of the internal ACPI object types for 3622the ACPI Namespace and the associated operand objects. Many of 3623these types had become obsolete with the introduction of the two- 3624pass namespace load. This cleanup simplifies the code and makes 3625the entire namespace load mechanism much clearer and easier to 3626understand. 3627 3628Improved debug output for tracking scope opening/closing to help 3629diagnose scoping issues. The old scope name as well as the new 3630scope name are displayed. Also improved error messages for 3631problems with ASL Mutex objects and error messages for GPE 3632problems. 3633 3634Cleaned up the namespace dump code, removed obsolete code. 3635 3636All string output (for all namespace/object dumps) now uses the 3637common ACPI string output procedure which handles escapes 3638properly 3639and does not emit non-printable characters. 3640 3641Fixed some issues with constants in the 64-bit version of the 3642local C library (utclib.c) 3643 3644 36452) Linux 3646 3647EC Driver: No longer attempts to acquire the Global Lock at 3648interrupt level. 3649 3650 36513) iASL Compiler/Disassembler 3652 3653Implemented ACPI 2.0B grammar change that disallows all Type 1 3654and 36552 opcodes outside of a control method. This means that the 3656"executable" operators (versus the "namespace" operators) cannot 3657be used at the table level; they can only be used within a 3658control 3659method. 3660 3661Implemented the restriction on the Scope() operator where the 3662target must already exist in the namespace at the time the 3663operator is encountered (during ASL compilation). In other words, 3664forward references are not allowed and Scope() cannot create a 3665new 3666object. This makes the iASL compiler compatible with other ACPI 3667implementations and makes the Scope() implementation adhere to 3668the 3669ACPI specification. 3670 3671Fixed a problem where namepath optimization for the Alias 3672operator 3673was optimizing the wrong path (of the two namepaths.) This 3674caused 3675a "Missing alias link" error message. 3676 3677Fixed a problem where an "unknown reserved name" warning could be 3678incorrectly generated for names like "_SB" when the trailing 3679underscore is not used in the original ASL. 3680 3681Fixed a problem where the reserved name check did not handle 3682NamePaths with multiple NameSegs correctly. The first nameseg of 3683the NamePath was examined instead of the last NameSeg. 3684 3685 3686---------------------------------------- 3687 368802 October 2002. Summary of changes for this release. 3689 3690 36911) ACPI CA Core Subsystem version 20021002: 3692 3693Fixed a problem where a store/copy of a string to an existing 3694string did not always set the string length properly in the 3695String 3696object. 3697 3698Fixed a reported problem with the ToString operator where the 3699behavior was identical to the ToHexString operator instead of 3700just 3701simply converting a raw buffer to a string data type. 3702 3703Fixed a problem where CopyObject and the other "explicit" 3704conversion operators were not updating the internal namespace 3705node 3706type as part of the store operation. 3707 3708Fixed a memory leak during implicit source operand conversion 3709where the original object was not deleted if it was converted to 3710a 3711new object of a different type. 3712 3713Enhanced error messages for all problems associated with 3714namespace 3715lookups. Common procedure generates and prints the lookup name 3716as 3717well as the formatted status. 3718 3719Completed implementation of a new design for the Alias support 3720within the namespace. The existing design did not handle the 3721case 3722where a new object was assigned to one of the two names due to 3723the 3724use of an explicit conversion operator, resulting in the two 3725names 3726pointing to two different objects. The new design simply points 3727the Alias name to the original name node - not to the object. 3728This results in a level of indirection that must be handled in 3729the 3730name resolution mechanism. 3731 3732Code and Data Size: Current core subsystem library sizes are 3733shown 3734below. These are the code and data sizes for the acpica.lib 3735produced by the Microsoft Visual C++ 6.0 compiler, and these 3736values do not include any ACPI driver or OSPM code. The debug 3737version of the code includes the debug output trace mechanism and 3738has a larger code and data size. Note that these values will 3739vary 3740depending on the efficiency of the compiler and the compiler 3741options used during generation. 3742 3743 Previous Release 3744 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 3745 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 3746 Current Release: 3747 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 3748 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 3749 3750 37512) Linux 3752 3753Initialize thermal driver's timer before it is used. (Knut 3754Neumann) 3755 3756Allow handling negative celsius values. (Kochi Takayoshi) 3757 3758Fix thermal management and make trip points. R/W (Pavel Machek) 3759 3760Fix /proc/acpi/sleep. (P. Christeas) 3761 3762IA64 fixes. (David Mosberger) 3763 3764Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 3765 3766Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 3767Brodowski) 3768 3769 37703) iASL Compiler/Disassembler 3771 3772Clarified some warning/error messages. 3773 3774 3775---------------------------------------- 377618 September 2002. Summary of changes for this release. 3777 3778 37791) ACPI CA Core Subsystem version 20020918: 3780 3781Fixed a reported problem with reference chaining (via the Index() 3782and RefOf() operators) in the ObjectType() and SizeOf() 3783operators. 3784The definition of these operators includes the dereferencing of 3785all chained references to return information on the base object. 3786 3787Fixed a problem with stores to indexed package elements - the 3788existing code would not complete the store if an "implicit 3789conversion" was not performed. In other words, if the existing 3790object (package element) was to be replaced completely, the code 3791didn't handle this case. 3792 3793Relaxed typechecking on the ASL "Scope" operator to allow the 3794target name to refer to an object of type Integer, String, or 3795Buffer, in addition to the scoping object types (Device, 3796predefined Scopes, Processor, PowerResource, and ThermalZone.) 3797This allows existing AML code that has workarounds for a bug in 3798Windows to function properly. A warning is issued, however. 3799This 3800affects both the AML interpreter and the iASL compiler. Below is 3801an example of this type of ASL code: 3802 3803 Name(DEB,0x00) 3804 Scope(DEB) 3805 { 3806 3807Fixed some reported problems with 64-bit integer support in the 3808local implementation of C library functions (clib.c) 3809 3810 38112) Linux 3812 3813Use ACPI fix map region instead of IOAPIC region, since it is 3814undefined in non-SMP. 3815 3816Ensure that the SCI has the proper polarity and trigger, even on 3817systems that do not have an interrupt override entry in the MADT. 3818 38192.5 big driver reorganization (Pat Mochel) 3820 3821Use early table mapping code from acpitable.c (Andi Kleen) 3822 3823New blacklist entries (Andi Kleen) 3824 3825Blacklist improvements. Split blacklist code out into a separate 3826file. Move checking the blacklist to very early. Previously, we 3827would use ACPI tables, and then halfway through init, check the 3828blacklist -- too late. Now, it's early enough to completely fall- 3829back to non-ACPI. 3830 3831 38323) iASL Compiler/Disassembler version 20020918: 3833 3834Fixed a problem where the typechecking code didn't know that an 3835alias could point to a method. In other words, aliases were not 3836being dereferenced during typechecking. 3837 3838 3839---------------------------------------- 384029 August 2002. Summary of changes for this release. 3841 38421) ACPI CA Core Subsystem Version 20020829: 3843 3844If the target of a Scope() operator already exists, it must be an 3845object type that actually opens a scope -- such as a Device, 3846Method, Scope, etc. This is a fatal runtime error. Similar 3847error 3848check has been added to the iASL compiler also. 3849 3850Tightened up the namespace load to disallow multiple names in the 3851same scope. This previously was allowed if both objects were of 3852the same type. (i.e., a lookup was the same as entering a new 3853name). 3854 3855 38562) Linux 3857 3858Ensure that the ACPI interrupt has the proper trigger and 3859polarity. 3860 3861local_irq_disable is extraneous. (Matthew Wilcox) 3862 3863Make "acpi=off" actually do what it says, and not use the ACPI 3864interpreter *or* the tables. 3865 3866Added arch-neutral support for parsing SLIT and SRAT tables 3867(Kochi 3868Takayoshi) 3869 3870 38713) iASL Compiler/Disassembler Version 20020829: 3872 3873Implemented namepath optimization for name declarations. For 3874example, a declaration like "Method (\_SB_.ABCD)" would get 3875optimized to "Method (ABCD)" if the declaration is within the 3876\_SB_ scope. This optimization is in addition to the named 3877reference path optimization first released in the previous 3878version. This would seem to complete all possible optimizations 3879for namepaths within the ASL/AML. 3880 3881If the target of a Scope() operator already exists, it must be an 3882object type that actually opens a scope -- such as a Device, 3883Method, Scope, etc. 3884 3885Implemented a check and warning for unreachable code in the same 3886block below a Return() statement. 3887 3888Fixed a problem where the listing file was not generated if the 3889compiler aborted if the maximum error count was exceeded (200). 3890 3891Fixed a problem where the typechecking of method return values 3892was 3893broken. This includes the check for a return value when the 3894method is invoked as a TermArg (a return value is expected.) 3895 3896Fixed a reported problem where EOF conditions during a quoted 3897string or comment caused a fault. 3898 3899 3900---------------------------------------- 390115 August 2002. Summary of changes for this release. 3902 39031) ACPI CA Core Subsystem Version 20020815: 3904 3905Fixed a reported problem where a Store to a method argument that 3906contains a reference did not perform the indirect store 3907correctly. 3908This problem was created during the conversion to the new 3909reference object model - the indirect store to a method argument 3910code was not updated to reflect the new model. 3911 3912Reworked the ACPI mode change code to better conform to ACPI 2.0, 3913handle corner cases, and improve code legibility (Kochi 3914Takayoshi) 3915 3916Fixed a problem with the pathname parsing for the carat (^) 3917prefix. The heavy use of the carat operator by the new namepath 3918optimization in the iASL compiler uncovered a problem with the 3919AML 3920interpreter handling of this prefix. In the case where one or 3921more carats precede a single nameseg, the nameseg was treated as 3922standalone and the search rule (to root) was inadvertently 3923applied. This could cause both the iASL compiler and the 3924interpreter to find the wrong object or to miss the error that 3925should occur if the object does not exist at that exact pathname. 3926 3927Found and fixed the problem where the HP Pavilion DSDT would not 3928load. This was a relatively minor tweak to the table loading 3929code 3930(a problem caused by the unexpected encounter with a method 3931invocation not within a control method), but it does not solve 3932the 3933overall issue of the execution of AML code at the table level. 3934This investigation is still ongoing. 3935 3936Code and Data Size: Current core subsystem library sizes are 3937shown 3938below. These are the code and data sizes for the acpica.lib 3939produced by the Microsoft Visual C++ 6.0 compiler, and these 3940values do not include any ACPI driver or OSPM code. The debug 3941version of the code includes the debug output trace mechanism and 3942has a larger code and data size. Note that these values will 3943vary 3944depending on the efficiency of the compiler and the compiler 3945options used during generation. 3946 3947 Previous Release 3948 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 3949 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 3950 Current Release: 3951 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 3952 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 3953 3954 39552) Linux 3956 3957Remove redundant slab.h include (Brad Hards) 3958 3959Fix several bugs in thermal.c (Herbert Nachtnebel) 3960 3961Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 3962 3963Change acpi_system_suspend to use updated irq functions (Pavel 3964Machek) 3965 3966Export acpi_get_firmware_table (Matthew Wilcox) 3967 3968Use proper root proc entry for ACPI (Kochi Takayoshi) 3969 3970Fix early-boot table parsing (Bjorn Helgaas) 3971 3972 39733) iASL Compiler/Disassembler 3974 3975Reworked the compiler options to make them more consistent and to 3976use two-letter options where appropriate. We were running out of 3977sensible letters. This may break some makefiles, so check the 3978current options list by invoking the compiler with no parameters. 3979 3980Completed the design and implementation of the ASL namepath 3981optimization option for the compiler. This option optimizes all 3982references to named objects to the shortest possible path. The 3983first attempt tries to utilize a single nameseg (4 characters) 3984and 3985the "search-to-root" algorithm used by the interpreter. If that 3986cannot be used (because either the name is not in the search path 3987or there is a conflict with another object with the same name), 3988the pathname is optimized using the carat prefix (usually a 3989shorter string than specifying the entire path from the root.) 3990 3991Implemented support to obtain the DSDT from the Windows registry 3992(when the disassembly option is specified with no input file). 3993Added this code as the implementation for AcpiOsTableOverride in 3994the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 3995utility) to scan memory for the DSDT to the AcpiOsTableOverride 3996function in the DOS OSL to make the disassembler truly OS 3997independent. 3998 3999Implemented a new option to disassemble and compile in one step. 4000When used without an input filename, this option will grab the 4001DSDT from the local machine, disassemble it, and compile it in 4002one 4003step. 4004 4005Added a warning message for invalid escapes (a backslash followed 4006by any character other than the allowable escapes). This catches 4007the quoted string error "\_SB_" (which should be "\\_SB_" ). 4008Also, there are numerous instances in the ACPI specification 4009where 4010this error occurs. 4011 4012Added a compiler option to disable all optimizations. This is 4013basically the "compatibility mode" because by using this option, 4014the AML code will come out exactly the same as other ASL 4015compilers. 4016 4017Added error messages for incorrectly ordered dependent resource 4018functions. This includes: missing EndDependentFn macro at end of 4019dependent resource list, nested dependent function macros (both 4020start and end), and missing StartDependentFn macro. These are 4021common errors that should be caught at compile time. 4022 4023Implemented _OSI support for the disassembler and compiler. _OSI 4024must be included in the namespace for proper disassembly (because 4025the disassembler must know the number of arguments.) 4026 4027Added an "optimization" message type that is optional (off by 4028default). This message is used for all optimizations - including 4029constant folding, integer optimization, and namepath 4030optimization. 4031 4032---------------------------------------- 403325 July 2002. Summary of changes for this release. 4034 4035 40361) ACPI CA Core Subsystem Version 20020725: 4037 4038The AML Disassembler has been enhanced to produce compilable ASL 4039code and has been integrated into the iASL compiler (see below) 4040as 4041well as the single-step disassembly for the AML debugger and the 4042disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 4043resource templates and macros are fully supported. The 4044disassembler has been tested on over 30 different AML files, 4045producing identical AML when the resulting disassembled ASL file 4046is recompiled with the same ASL compiler. 4047 4048Modified the Resource Manager to allow zero interrupts and zero 4049dma channels during the GetCurrentResources call. This was 4050causing problems on some platforms. 4051 4052Added the AcpiOsRedirectOutput interface to the OSL to simplify 4053output redirection for the AcpiOsPrintf and AcpiOsVprintf 4054interfaces. 4055 4056Code and Data Size: Current core subsystem library sizes are 4057shown 4058below. These are the code and data sizes for the acpica.lib 4059produced by the Microsoft Visual C++ 6.0 compiler, and these 4060values do not include any ACPI driver or OSPM code. The debug 4061version of the code includes the debug output trace mechanism and 4062has a larger code and data size. Note that these values will 4063vary 4064depending on the efficiency of the compiler and the compiler 4065options used during generation. 4066 4067 Previous Release 4068 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 4069 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 4070 Current Release: 4071 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 4072 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 4073 4074 40752) Linux 4076 4077Fixed a panic in the EC driver (Dominik Brodowski) 4078 4079Implemented checksum of the R/XSDT itself during Linux table scan 4080(Richard Schaal) 4081 4082 40833) iASL compiler 4084 4085The AML disassembler is integrated into the compiler. The "-d" 4086option invokes the disassembler to completely disassemble an 4087input AML file, producing as output a text ASL file with the 4088extension ".dsl" (to avoid name collisions with existing .asl 4089source files.) A future enhancement will allow the disassembler 4090to obtain the BIOS DSDT from the registry under Windows. 4091 4092Fixed a problem with the VendorShort and VendorLong resource 4093descriptors where an invalid AML sequence was created. 4094 4095Implemented a fix for BufferData term in the ASL parser. It was 4096inadvertently defined twice, allowing invalid syntax to pass and 4097causing reduction conflicts. 4098 4099Fixed a problem where the Ones opcode could get converted to a 4100value of zero if "Ones" was used where a byte, word or dword 4101value 4102was expected. The 64-bit value is now truncated to the correct 4103size with the correct value. 4104 4105 4106---------------------------------------- 410702 July 2002. Summary of changes for this release. 4108 4109 41101) ACPI CA Core Subsystem Version 20020702: 4111 4112The Table Manager code has been restructured to add several new 4113features. Tables that are not required by the core subsystem 4114(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 4115validated in any way and are returned from AcpiGetFirmwareTable 4116if 4117requested. The AcpiOsTableOverride interface is now called for 4118each table that is loaded by the subsystem in order to allow the 4119host to override any table it chooses. Previously, only the DSDT 4120could be overridden. Added one new files, tbrsdt.c and 4121tbgetall.c. 4122 4123Fixed a problem with the conversion of internal package objects 4124to 4125external objects (when a package is returned from a control 4126method.) The return buffer length was set to zero instead of the 4127proper length of the package object. 4128 4129Fixed a reported problem with the use of the RefOf and DeRefOf 4130operators when passing reference arguments to control methods. A 4131new type of Reference object is used internally for references 4132produced by the RefOf operator. 4133 4134Added additional error messages in the Resource Manager to 4135explain 4136AE_BAD_DATA errors when they occur during resource parsing. 4137 4138Split the AcpiEnableSubsystem into two primitives to enable a 4139finer granularity initialization sequence. These two calls 4140should 4141be called in this order: AcpiEnableSubsystem (flags), 4142AcpiInitializeObjects (flags). The flags parameter remains the 4143same. 4144 4145 41462) Linux 4147 4148Updated the ACPI utilities module to understand the new style of 4149fully resolved package objects that are now returned from the 4150core 4151subsystem. This eliminates errors of the form: 4152 4153 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 4154 acpi_utils-0430 [145] acpi_evaluate_reference: 4155 Invalid element in package (not a device reference) 4156 4157The method evaluation utility uses the new buffer allocation 4158scheme instead of calling AcpiEvaluate Object twice. 4159 4160Added support for ECDT. This allows the use of the Embedded 4161Controller before the namespace has been fully initialized, which 4162is necessary for ACPI 2.0 support, and for some laptops to 4163initialize properly. (Laptops using ECDT are still rare, so only 4164limited testing was performed of the added functionality.) 4165 4166Fixed memory leaks in the EC driver. 4167 4168Eliminated a brittle code structure in acpi_bus_init(). 4169 4170Eliminated the acpi_evaluate() helper function in utils.c. It is 4171no longer needed since acpi_evaluate_object can optionally 4172allocate memory for the return object. 4173 4174Implemented fix for keyboard hang when getting battery readings 4175on 4176some systems (Stephen White) 4177 4178PCI IRQ routing update (Dominik Brodowski) 4179 4180Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 4181support 4182 4183---------------------------------------- 418411 June 2002. Summary of changes for this release. 4185 4186 41871) ACPI CA Core Subsystem Version 20020611: 4188 4189Fixed a reported problem where constants such as Zero and One 4190appearing within _PRT packages were not handled correctly within 4191the resource manager code. Originally reported against the ASL 4192compiler because the code generator now optimizes integers to 4193their minimal AML representation (i.e. AML constants if 4194possible.) 4195The _PRT code now handles all AML constant opcodes correctly 4196(Zero, One, Ones, Revision). 4197 4198Fixed a problem with the Concatenate operator in the AML 4199interpreter where a buffer result object was incorrectly marked 4200as 4201not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 4202 4203All package sub-objects are now fully resolved before they are 4204returned from the external ACPI interfaces. This means that name 4205strings are resolved to object handles, and constant operators 4206(Zero, One, Ones, Revision) are resolved to Integers. 4207 4208Implemented immediate resolution of the AML Constant opcodes 4209(Zero, One, Ones, Revision) to Integer objects upon detection 4210within the AML stream. This has simplified and reduced the 4211generated code size of the subsystem by eliminating about 10 4212switch statements for these constants (which previously were 4213contained in Reference objects.) The complicating issues are 4214that 4215the Zero opcode is used as a "placeholder" for unspecified 4216optional target operands and stores to constants are defined to 4217be 4218no-ops. 4219 4220Code and Data Size: Current core subsystem library sizes are 4221shown 4222below. These are the code and data sizes for the acpica.lib 4223produced by the Microsoft Visual C++ 6.0 compiler, and these 4224values do not include any ACPI driver or OSPM code. The debug 4225version of the code includes the debug output trace mechanism and 4226has a larger code and data size. Note that these values will 4227vary 4228depending on the efficiency of the compiler and the compiler 4229options used during generation. 4230 4231 Previous Release 4232 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 4233 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 4234 Current Release: 4235 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 4236 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 4237 4238 42392) Linux 4240 4241Added preliminary support for obtaining _TRA data for PCI root 4242bridges (Bjorn Helgaas). 4243 4244 42453) iASL Compiler Version X2046: 4246 4247Fixed a problem where the "_DDN" reserved name was defined to be 4248a 4249control method with one argument. There are no arguments, and 4250_DDN does not have to be a control method. 4251 4252Fixed a problem with the Linux version of the compiler where the 4253source lines printed with error messages were the wrong lines. 4254This turned out to be the "LF versus CR/LF" difference between 4255Windows and Unix. This appears to be the longstanding issue 4256concerning listing output and error messages. 4257 4258Fixed a problem with the Linux version of compiler where opcode 4259names within error messages were wrong. This was caused by a 4260slight difference in the output of the Flex tool on Linux versus 4261Windows. 4262 4263Fixed a problem with the Linux compiler where the hex output 4264files 4265contained some garbage data caused by an internal buffer overrun. 4266 4267 4268---------------------------------------- 426917 May 2002. Summary of changes for this release. 4270 4271 42721) ACPI CA Core Subsystem Version 20020517: 4273 4274Implemented a workaround to an BIOS bug discovered on the HP 4275OmniBook where the FADT revision number and the table size are 4276inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The 4277new 4278behavior is to fallback to using only the ACPI 1.0 fields of the 4279FADT if the table is too small to be a ACPI 2.0 table as claimed 4280by the revision number. Although this is a BIOS bug, this is a 4281case where the workaround is simple enough and with no side 4282effects, so it seemed prudent to add it. A warning message is 4283issued, however. 4284 4285Implemented minimum size checks for the fixed-length ACPI tables 4286- 4287- the FADT and FACS, as well as consistency checks between the 4288revision number and the table size. 4289 4290Fixed a reported problem in the table override support where the 4291new table pointer was incorrectly treated as a physical address 4292instead of a logical address. 4293 4294Eliminated the use of the AE_AML_ERROR exception and replaced it 4295with more descriptive codes. 4296 4297Fixed a problem where an exception would occur if an ASL Field 4298was 4299defined with no named Field Units underneath it (used by some 4300index fields). 4301 4302Code and Data Size: Current core subsystem library sizes are 4303shown 4304below. These are the code and data sizes for the acpica.lib 4305produced by the Microsoft Visual C++ 6.0 compiler, and these 4306values do not include any ACPI driver or OSPM code. The debug 4307version of the code includes the debug output trace mechanism and 4308has a larger code and data size. Note that these values will 4309vary 4310depending on the efficiency of the compiler and the compiler 4311options used during generation. 4312 4313 Previous Release 4314 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 4315 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 4316 Current Release: 4317 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 4318 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 4319 4320 4321 43222) Linux 4323 4324Much work done on ACPI init (MADT and PCI IRQ routing support). 4325(Paul D. and Dominik Brodowski) 4326 4327Fix PCI IRQ-related panic on boot (Sam Revitch) 4328 4329Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 4330 4331Fix "MHz" typo (Dominik Brodowski) 4332 4333Fix RTC year 2000 issue (Dominik Brodowski) 4334 4335Preclude multiple button proc entries (Eric Brunet) 4336 4337Moved arch-specific code out of include/platform/aclinux.h 4338 43393) iASL Compiler Version X2044: 4340 4341Implemented error checking for the string used in the EISAID 4342macro 4343(Usually used in the definition of the _HID object.) The code 4344now 4345strictly enforces the PnP format - exactly 7 characters, 3 4346uppercase letters and 4 hex digits. 4347 4348If a raw string is used in the definition of the _HID object 4349(instead of the EISAID macro), the string must contain all 4350alphanumeric characters (e.g., "*PNP0011" is not allowed because 4351of the asterisk.) 4352 4353Implemented checking for invalid use of ACPI reserved names for 4354most of the name creation operators (Name, Device, Event, Mutex, 4355OperationRegion, PowerResource, Processor, and ThermalZone.) 4356Previously, this check was only performed for control methods. 4357 4358Implemented an additional check on the Name operator to emit an 4359error if a reserved name that must be implemented in ASL as a 4360control method is used. We know that a reserved name must be a 4361method if it is defined with input arguments. 4362 4363The warning emitted when a namespace object reference is not 4364found 4365during the cross reference phase has been changed into an error. 4366The "External" directive should be used for names defined in 4367other 4368modules. 4369 4370 43714) Tools and Utilities 4372 4373The 16-bit tools (adump16 and aexec16) have been regenerated and 4374tested. 4375 4376Fixed a problem with the output of both acpidump and adump16 4377where 4378the indentation of closing parentheses and brackets was not 4379aligned properly with the parent block. 4380 4381 4382---------------------------------------- 438303 May 2002. Summary of changes for this release. 4384 4385 43861) ACPI CA Core Subsystem Version 20020503: 4387 4388Added support a new OSL interface that allows the host operating 4389system software to override the DSDT found in the firmware - 4390AcpiOsTableOverride. With this interface, the OSL can examine 4391the 4392version of the firmware DSDT and replace it with a different one 4393if desired. 4394 4395Added new external interfaces for accessing ACPI registers from 4396device drivers and other system software - AcpiGetRegister and 4397AcpiSetRegister. This was simply an externalization of the 4398existing AcpiHwBitRegister interfaces. 4399 4400Fixed a regression introduced in the previous build where the 4401ASL/AML CreateField operator always returned an error, 4402"destination must be a NS Node". 4403 4404Extended the maximum time (before failure) to successfully enable 4405ACPI mode to 3 seconds. 4406 4407Code and Data Size: Current core subsystem library sizes are 4408shown 4409below. These are the code and data sizes for the acpica.lib 4410produced by the Microsoft Visual C++ 6.0 compiler, and these 4411values do not include any ACPI driver or OSPM code. The debug 4412version of the code includes the debug output trace mechanism and 4413has a larger code and data size. Note that these values will 4414vary 4415depending on the efficiency of the compiler and the compiler 4416options used during generation. 4417 4418 Previous Release 4419 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 4420 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 4421 Current Release: 4422 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 4423 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 4424 4425 44262) Linux 4427 4428Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 4429free. While 3 out of 4 of our in-house systems work fine, the 4430last 4431one still hangs when testing the LAPIC timer. 4432 4433Renamed many files in 2.5 kernel release to omit "acpi_" from the 4434name. 4435 4436Added warning on boot for Presario 711FR. 4437 4438Sleep improvements (Pavel Machek) 4439 4440ACPI can now be built without CONFIG_PCI enabled. 4441 4442IA64: Fixed memory map functions (JI Lee) 4443 4444 44453) iASL Compiler Version X2043: 4446 4447Added support to allow the compiler to be integrated into the MS 4448VC++ development environment for one-button compilation of single 4449files or entire projects -- with error-to-source-line mapping. 4450 4451Implemented support for compile-time constant folding for the 4452Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 4453specification. This allows the ASL writer to use expressions 4454instead of Integer/Buffer/String constants in terms that must 4455evaluate to constants at compile time and will also simplify the 4456emitted AML in any such sub-expressions that can be folded 4457(evaluated at compile-time.) This increases the size of the 4458compiler significantly because a portion of the ACPI CA AML 4459interpreter is included within the compiler in order to pre- 4460evaluate constant expressions. 4461 4462 4463Fixed a problem with the "Unicode" ASL macro that caused the 4464compiler to fault. (This macro is used in conjunction with the 4465_STR reserved name.) 4466 4467Implemented an AML opcode optimization to use the Zero, One, and 4468Ones opcodes where possible to further reduce the size of integer 4469constants and thus reduce the overall size of the generated AML 4470code. 4471 4472Implemented error checking for new reserved terms for ACPI 4473version 44742.0A. 4475 4476Implemented the -qr option to display the current list of ACPI 4477reserved names known to the compiler. 4478 4479Implemented the -qc option to display the current list of ASL 4480operators that are allowed within constant expressions and can 4481therefore be folded at compile time if the operands are 4482constants. 4483 4484 44854) Documentation 4486 4487Updated the Programmer's Reference for new interfaces, data 4488types, 4489and memory allocation model options. 4490 4491Updated the iASL Compiler User Reference to apply new format and 4492add information about new features and options. 4493 4494---------------------------------------- 449519 April 2002. Summary of changes for this release. 4496 44971) ACPI CA Core Subsystem Version 20020419: 4498 4499The source code base for the Core Subsystem has been completely 4500cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 4501versions. The Lint option files used are included in the 4502/acpi/generate/lint directory. 4503 4504Implemented enhanced status/error checking across the entire 4505Hardware manager subsystem. Any hardware errors (reported from 4506the OSL) are now bubbled up and will abort a running control 4507method. 4508 4509Fixed a problem where the per-ACPI-table integer width (32 or 64) 4510was stored only with control method nodes, causing a fault when 4511non-control method code was executed during table loading. The 4512solution implemented uses a global variable to indicate table 4513width across the entire ACPI subsystem. Therefore, ACPI CA does 4514not support mixed integer widths across different ACPI tables 4515(DSDT, SSDT). 4516 4517Fixed a problem where NULL extended fields (X fields) in an ACPI 45182.0 ACPI FADT caused the table load to fail. Although the 4519existing ACPI specification is a bit fuzzy on this topic, the new 4520behavior is to fall back on a ACPI 1.0 field if the corresponding 4521ACPI 2.0 X field is zero (even though the table revision 4522indicates 4523a full ACPI 2.0 table.) The ACPI specification will be updated 4524to 4525clarify this issue. 4526 4527Fixed a problem with the SystemMemory operation region handler 4528where memory was always accessed byte-wise even if the AML- 4529specified access width was larger than a byte. This caused 4530problems on systems with memory-mapped I/O. Memory is now 4531accessed with the width specified. On systems that do not 4532support 4533non-aligned transfers, a check is made to guarantee proper 4534address 4535alignment before proceeding in order to avoid an AML-caused 4536alignment fault within the kernel. 4537 4538 4539Fixed a problem with the ExtendedIrq resource where only one byte 4540of the 4-byte Irq field was extracted. 4541 4542Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 4543function was out of date and required a rewrite. 4544 4545Code and Data Size: Current core subsystem library sizes are 4546shown 4547below. These are the code and data sizes for the acpica.lib 4548produced by the Microsoft Visual C++ 6.0 compiler, and these 4549values do not include any ACPI driver or OSPM code. The debug 4550version of the code includes the debug output trace mechanism and 4551has a larger code and data size. Note that these values will 4552vary 4553depending on the efficiency of the compiler and the compiler 4554options used during generation. 4555 4556 Previous Release 4557 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 4558 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 4559 Current Release: 4560 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 4561 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 4562 4563 45642) Linux 4565 4566PCI IRQ routing fixes (Dominik Brodowski) 4567 4568 45693) iASL Compiler Version X2042: 4570 4571Implemented an additional compile-time error check for a field 4572unit whose size + minimum access width would cause a run-time 4573access beyond the end-of-region. Previously, only the field size 4574itself was checked. 4575 4576The Core subsystem and iASL compiler now share a common parse 4577object in preparation for compile-time evaluation of the type 45783/4/5 ASL operators. 4579 4580 4581---------------------------------------- 4582Summary of changes for this release: 03_29_02 4583 45841) ACPI CA Core Subsystem Version 20020329: 4585 4586Implemented support for late evaluation of TermArg operands to 4587Buffer and Package objects. This allows complex expressions to 4588be 4589used in the declarations of these object types. 4590 4591Fixed an ACPI 1.0 compatibility issue when reading Fields. In 4592ACPI 45931.0, if the field was larger than 32 bits, it was returned as a 4594buffer - otherwise it was returned as an integer. In ACPI 2.0, 4595the field is returned as a buffer only if the field is larger 4596than 459764 bits. The TableRevision is now considered when making this 4598conversion to avoid incompatibility with existing ASL code. 4599 4600Implemented logical addressing for AcpiOsGetRootPointer. This 4601allows an RSDP with either a logical or physical address. With 4602this support, the host OS can now override all ACPI tables with 4603one logical RSDP. Includes implementation of "typed" pointer 4604support to allow a common data type for both physical and logical 4605pointers internally. This required a change to the 4606AcpiOsGetRootPointer interface. 4607 4608Implemented the use of ACPI 2.0 Generic Address Structures for 4609all 4610GPE, Fixed Event, and PM Timer I/O. This allows the use of 4611memory 4612mapped I/O for these ACPI features. 4613 4614Initialization now ignores not only non-required tables (All 4615tables other than the FADT, FACS, DSDT, and SSDTs), but also does 4616not validate the table headers of unrecognized tables. 4617 4618Fixed a problem where a notify handler could only be 4619installed/removed on an object of type Device. All "notify" 4620objects are now supported -- Devices, Processor, Power, and 4621Thermal. 4622 4623Removed most verbosity from the ACPI_DB_INFO debug level. Only 4624critical information is returned when this debug level is 4625enabled. 4626 4627Code and Data Size: Current core subsystem library sizes are 4628shown 4629below. These are the code and data sizes for the acpica.lib 4630produced by the Microsoft Visual C++ 6.0 compiler, and these 4631values do not include any ACPI driver or OSPM code. The debug 4632version of the code includes the debug output trace mechanism and 4633has a larger code and data size. Note that these values will 4634vary 4635depending on the efficiency of the compiler and the compiler 4636options used during generation. 4637 4638 Previous Release 4639 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 4640 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 4641 Current Release: 4642 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 4643 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 4644 4645 46462) Linux: 4647 4648The processor driver (acpi_processor.c) now fully supports ACPI 46492.0-based processor performance control (e.g. Intel(R) 4650SpeedStep(TM) technology) Note that older laptops that only have 4651the Intel "applet" interface are not supported through this. The 4652'limit' and 'performance' interface (/proc) are fully functional. 4653[Note that basic policy for controlling performance state 4654transitions will be included in the next version of ospmd.] The 4655idle handler was modified to more aggressively use C2, and PIIX4 4656errata handling underwent a complete overhaul (big thanks to 4657Dominik Brodowski). 4658 4659Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 4660based devices in the ACPI namespace are now dynamically bound 4661(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 4662This allows, among other things, ACPI to resolve bus numbers for 4663subordinate PCI bridges. 4664 4665Enhanced PCI IRQ routing to get the proper bus number for _PRT 4666entries defined underneath PCI bridges. 4667 4668Added IBM 600E to bad bios list due to invalid _ADR value for 4669PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 4670 4671In the process of adding full MADT support (e.g. IOAPIC) for IA32 4672(acpi.c, mpparse.c) -- stay tuned. 4673 4674Added back visual differentiation between fixed-feature and 4675control-method buttons in dmesg. Buttons are also subtyped (e.g. 4676button/power/PWRF) to simplify button identification. 4677 4678We no longer use -Wno-unused when compiling debug. Please ignore 4679any "_THIS_MODULE defined but not used" messages. 4680 4681Can now shut down the system using "magic sysrq" key. 4682 4683 46843) iASL Compiler version 2041: 4685 4686Fixed a problem where conversion errors for hex/octal/decimal 4687constants were not reported. 4688 4689Implemented a fix for the General Register template Address 4690field. 4691This field was 8 bits when it should be 64. 4692 4693Fixed a problem where errors/warnings were no longer being 4694emitted 4695within the listing output file. 4696 4697Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 4698exactly 4 characters, alphanumeric only. 4699 4700 4701 4702 4703---------------------------------------- 4704Summary of changes for this release: 03_08_02 4705 4706 47071) ACPI CA Core Subsystem Version 20020308: 4708 4709Fixed a problem with AML Fields where the use of the "AccessAny" 4710keyword could cause an interpreter error due to attempting to 4711read 4712or write beyond the end of the parent Operation Region. 4713 4714Fixed a problem in the SystemMemory Operation Region handler 4715where 4716an attempt was made to map memory beyond the end of the region. 4717This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 4718errors on some Linux systems. 4719 4720Fixed a problem where the interpreter/namespace "search to root" 4721algorithm was not functioning for some object types. Relaxed the 4722internal restriction on the search to allow upsearches for all 4723external object types as well as most internal types. 4724 4725 47262) Linux: 4727 4728We now use safe_halt() macro versus individual calls to sti | 4729hlt. 4730 4731Writing to the processor limit interface should now work. "echo 47321" 4733will increase the limit, 2 will decrease, and 0 will reset to the 4734default. 4735 4736 47373) ASL compiler: 4738 4739Fixed segfault on Linux version. 4740 4741 4742---------------------------------------- 4743Summary of changes for this release: 02_25_02 4744 47451) ACPI CA Core Subsystem: 4746 4747 4748Fixed a problem where the GPE bit masks were not initialized 4749properly, causing erratic GPE behavior. 4750 4751Implemented limited support for multiple calling conventions. 4752The 4753code can be generated with either the VPL (variable parameter 4754list, or "C") convention, or the FPL (fixed parameter list, or 4755"Pascal") convention. The core subsystem is about 3.4% smaller 4756when generated with FPL. 4757 4758 47592) Linux 4760 4761Re-add some /proc/acpi/event functionality that was lost during 4762the rewrite 4763 4764Resolved issue with /proc events for fixed-feature buttons 4765showing 4766up as the system device. 4767 4768Fixed checks on C2/C3 latencies to be inclusive of maximum 4769values. 4770 4771Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 4772 4773Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 4774 4775Fixed limit interface & usage to fix bugs with passive cooling 4776hysterisis. 4777 4778Restructured PRT support. 4779 4780 4781---------------------------------------- 4782Summary of changes for this label: 02_14_02 4783 4784 47851) ACPI CA Core Subsystem: 4786 4787Implemented support in AcpiLoadTable to allow loading of FACS and 4788FADT tables. 4789 4790Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 4791been removed. All 64-bit platforms should be migrated to the 4792ACPI 47932.0 tables. The actbl71.h header has been removed from the 4794source 4795tree. 4796 4797All C macros defined within the subsystem have been prefixed with 4798"ACPI_" to avoid collision with other system include files. 4799 4800Removed the return value for the two AcpiOsPrint interfaces, 4801since 4802it is never used and causes lint warnings for ignoring the return 4803value. 4804 4805Added error checking to all internal mutex acquire and release 4806calls. Although a failure from one of these interfaces is 4807probably a fatal system error, these checks will cause the 4808immediate abort of the currently executing method or interface. 4809 4810Fixed a problem where the AcpiSetCurrentResources interface could 4811fault. This was a side effect of the deployment of the new 4812memory 4813allocation model. 4814 4815Fixed a couple of problems with the Global Lock support 4816introduced 4817in the last major build. The "common" (1.0/2.0) internal FACS 4818was 4819being overwritten with the FACS signature and clobbering the 4820Global Lock pointer. Also, the actual firmware FACS was being 4821unmapped after construction of the "common" FACS, preventing 4822access to the actual Global Lock field within it. The "common" 4823internal FACS is no longer installed as an actual ACPI table; it 4824is used simply as a global. 4825 4826Code and Data Size: Current core subsystem library sizes are 4827shown 4828below. These are the code and data sizes for the acpica.lib 4829produced by the Microsoft Visual C++ 6.0 compiler, and these 4830values do not include any ACPI driver or OSPM code. The debug 4831version of the code includes the debug output trace mechanism and 4832has a larger code and data size. Note that these values will 4833vary 4834depending on the efficiency of the compiler and the compiler 4835options used during generation. 4836 4837 Previous Release (02_07_01) 4838 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 4839 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 4840 Current Release: 4841 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 4842 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 4843 4844 48452) Linux 4846 4847Updated Linux-specific code for core macro and OSL interface 4848changes described above. 4849 4850Improved /proc/acpi/event. It now can be opened only once and has 4851proper poll functionality. 4852 4853Fixed and restructured power management (acpi_bus). 4854 4855Only create /proc "view by type" when devices of that class 4856exist. 4857 4858Fixed "charging/discharging" bug (and others) in acpi_battery. 4859 4860Improved thermal zone code. 4861 4862 48633) ASL Compiler, version X2039: 4864 4865 4866Implemented the new compiler restriction on ASL String hex/octal 4867escapes to non-null, ASCII values. An error results if an 4868invalid 4869value is used. (This will require an ACPI 2.0 specification 4870change.) 4871 4872AML object labels that are output to the optional C and ASM 4873source 4874are now prefixed with both the ACPI table signature and table ID 4875to help guarantee uniqueness within a large BIOS project. 4876 4877 4878---------------------------------------- 4879Summary of changes for this label: 02_01_02 4880 48811) ACPI CA Core Subsystem: 4882 4883ACPI 2.0 support is complete in the entire Core Subsystem and the 4884ASL compiler. All new ACPI 2.0 operators are implemented and all 4885other changes for ACPI 2.0 support are complete. With 4886simultaneous code and data optimizations throughout the 4887subsystem, 4888ACPI 2.0 support has been implemented with almost no additional 4889cost in terms of code and data size. 4890 4891Implemented a new mechanism for allocation of return buffers. If 4892the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 4893be allocated on behalf of the caller. Consolidated all return 4894buffer validation and allocation to a common procedure. Return 4895buffers will be allocated via the primary OSL allocation 4896interface 4897since it appears that a separate pool is not needed by most 4898users. 4899If a separate pool is required for these buffers, the caller can 4900still use the original mechanism and pre-allocate the buffer(s). 4901 4902Implemented support for string operands within the DerefOf 4903operator. 4904 4905Restructured the Hardware and Event managers to be table driven, 4906simplifying the source code and reducing the amount of generated 4907code. 4908 4909Split the common read/write low-level ACPI register bitfield 4910procedure into a separate read and write, simplifying the code 4911considerably. 4912 4913Obsoleted the AcpiOsCallocate OSL interface. This interface was 4914used only a handful of times and didn't have enough critical mass 4915for a separate interface. Replaced with a common calloc 4916procedure 4917in the core. 4918 4919Fixed a reported problem with the GPE number mapping mechanism 4920that allows GPE1 numbers to be non-contiguous with GPE0. 4921Reorganized the GPE information and shrunk a large array that was 4922originally large enough to hold info for all possible GPEs (256) 4923to simply large enough to hold all GPEs up to the largest GPE 4924number on the machine. 4925 4926Fixed a reported problem with resource structure alignment on 64- 4927bit platforms. 4928 4929Changed the AcpiEnableEvent and AcpiDisableEvent external 4930interfaces to not require any flags for the common case of 4931enabling/disabling a GPE. 4932 4933Implemented support to allow a "Notify" on a Processor object. 4934 4935Most TBDs in comments within the source code have been resolved 4936and eliminated. 4937 4938Fixed a problem in the interpreter where a standalone parent 4939prefix (^) was not handled correctly in the interpreter and 4940debugger. 4941 4942Removed obsolete and unnecessary GPE save/restore code. 4943 4944Implemented Field support in the ASL Load operator. This allows 4945a 4946table to be loaded from a named field, in addition to loading a 4947table directly from an Operation Region. 4948 4949Implemented timeout and handle support in the external Global 4950Lock 4951interfaces. 4952 4953Fixed a problem in the AcpiDump utility where pathnames were no 4954longer being generated correctly during the dump of named 4955objects. 4956 4957Modified the AML debugger to give a full display of if/while 4958predicates instead of just one AML opcode at a time. (The 4959predicate can have several nested ASL statements.) The old 4960method 4961was confusing during single stepping. 4962 4963Code and Data Size: Current core subsystem library sizes are 4964shown 4965below. These are the code and data sizes for the acpica.lib 4966produced by the Microsoft Visual C++ 6.0 compiler, and these 4967values do not include any ACPI driver or OSPM code. The debug 4968version of the code includes the debug output trace mechanism and 4969has a larger code and data size. Note that these values will 4970vary 4971depending on the efficiency of the compiler and the compiler 4972options used during generation. 4973 4974 Previous Release (12_18_01) 4975 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 4976 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 4977 Current Release: 4978 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 4979 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 4980 49812) Linux 4982 4983 Implemented fix for PIIX reverse throttling errata (Processor 4984driver) 4985 4986Added new Limit interface (Processor and Thermal drivers) 4987 4988New thermal policy (Thermal driver) 4989 4990Many updates to /proc 4991 4992Battery "low" event support (Battery driver) 4993 4994Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 4995 4996IA32 - IA64 initialization unification, no longer experimental 4997 4998Menuconfig options redesigned 4999 50003) ASL Compiler, version X2037: 5001 5002Implemented several new output features to simplify integration 5003of 5004AML code into firmware: 1) Output the AML in C source code with 5005labels for each named ASL object. The original ASL source 5006code 5007is interleaved as C comments. 2) Output the AML in ASM source 5008code 5009with labels and interleaved ASL source. 3) Output the AML in 5010raw hex table form, in either C or ASM. 5011 5012Implemented support for optional string parameters to the 5013LoadTable operator. 5014 5015Completed support for embedded escape sequences within string 5016literals. The compiler now supports all single character escapes 5017as well as the Octal and Hex escapes. Note: the insertion of a 5018null byte into a string literal (via the hex/octal escape) causes 5019the string to be immediately terminated. A warning is issued. 5020 5021Fixed a problem where incorrect AML was generated for the case 5022where an ASL namepath consists of a single parent prefix ( 5023 5024) with no trailing name segments. 5025 5026The compiler has been successfully generated with a 64-bit C 5027compiler. 5028 5029 5030 5031 5032---------------------------------------- 5033Summary of changes for this label: 12_18_01 5034 50351) Linux 5036 5037Enhanced blacklist with reason and severity fields. Any table's 5038signature may now be used to identify a blacklisted system. 5039 5040Call _PIC control method to inform the firmware which interrupt 5041model the OS is using. Turn on any disabled link devices. 5042 5043Cleaned up busmgr /proc error handling (Andreas Dilger) 5044 5045 2) ACPI CA Core Subsystem: 5046 5047Implemented ACPI 2.0 semantics for the "Break" operator (Exit 5048from 5049while loop) 5050 5051Completed implementation of the ACPI 2.0 "Continue", 5052"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 5053operators. All new ACPI 2.0 operators are now implemented in 5054both 5055the ASL compiler and the AML interpreter. The only remaining 5056ACPI 50572.0 task is support for the String data type in the DerefOf 5058operator. Fixed a problem with AcquireMutex where the status 5059code 5060was lost if the caller had to actually wait for the mutex. 5061 5062Increased the maximum ASL Field size from 64K bits to 4G bits. 5063 5064Completed implementation of the external Global Lock interfaces - 5065- 5066AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 5067Handler parameters were added. 5068 5069Completed another pass at removing warnings and issues when 5070compiling with 64-bit compilers. The code now compiles cleanly 5071with the Intel 64-bit C/C++ compiler. Most notably, the pointer 5072add and subtract (diff) macros have changed considerably. 5073 5074Created and deployed a new ACPI_SIZE type that is 64-bits wide on 507564-bit platforms, 32-bits on all others. This type is used 5076wherever memory allocation and/or the C sizeof() operator is 5077used, 5078and affects the OSL memory allocation interfaces AcpiOsAllocate 5079and AcpiOsCallocate. 5080 5081Implemented sticky user breakpoints in the AML debugger. 5082 5083Code and Data Size: Current core subsystem library sizes are 5084shown 5085below. These are the code and data sizes for the acpica.lib 5086produced by the Microsoft Visual C++ 6.0 compiler, and these 5087values do not include any ACPI driver or OSPM code. The debug 5088version of the code includes the debug output trace mechanism and 5089has a larger code and data size. Note that these values will vary 5090depending on the efficiency of the compiler and the compiler 5091options used during generation. 5092 5093 Previous Release (12_05_01) 5094 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 5095 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 5096 Current Release: 5097 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 5098 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 5099 5100 3) ASL Compiler, version X2034: 5101 5102Now checks for (and generates an error if detected) the use of a 5103Break or Continue statement without an enclosing While statement. 5104 5105Successfully generated the compiler with the Intel 64-bit C 5106compiler. 5107 5108 ---------------------------------------- 5109Summary of changes for this label: 12_05_01 5110 5111 1) ACPI CA Core Subsystem: 5112 5113The ACPI 2.0 CopyObject operator is fully implemented. This 5114operator creates a new copy of an object (and is also used to 5115bypass the "implicit conversion" mechanism of the Store 5116operator.) 5117 5118The ACPI 2.0 semantics for the SizeOf operator are fully 5119implemented. The change is that performing a SizeOf on a 5120reference object causes an automatic dereference of the object to 5121tha actual value before the size is evaluated. This behavior was 5122undefined in ACPI 1.0. 5123 5124The ACPI 2.0 semantics for the Extended IRQ resource descriptor 5125have been implemented. The interrupt polarity and mode are now 5126independently set. 5127 5128Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 5129appearing in Package objects were not properly converted to 5130integers when the internal Package was converted to an external 5131object (via the AcpiEvaluateObject interface.) 5132 5133Fixed a problem with the namespace object deletion mechanism for 5134objects created by control methods. There were two parts to this 5135problem: 1) Objects created during the initialization phase 5136method 5137parse were not being deleted, and 2) The object owner ID 5138mechanism 5139to track objects was broken. 5140 5141Fixed a problem where the use of the ASL Scope operator within a 5142control method would result in an invalid opcode exception. 5143 5144Fixed a problem introduced in the previous label where the buffer 5145length required for the _PRT structure was not being returned 5146correctly. 5147 5148Code and Data Size: Current core subsystem library sizes are 5149shown 5150below. These are the code and data sizes for the acpica.lib 5151produced by the Microsoft Visual C++ 6.0 compiler, and these 5152values do not include any ACPI driver or OSPM code. The debug 5153version of the code includes the debug output trace mechanism and 5154has a larger code and data size. Note that these values will 5155vary 5156depending on the efficiency of the compiler and the compiler 5157options used during generation. 5158 5159 Previous Release (11_20_01) 5160 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 5161 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 5162 5163 Current Release: 5164 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 5165 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 5166 5167 2) Linux: 5168 5169Updated all files to apply cleanly against 2.4.16. 5170 5171Added basic PCI Interrupt Routing Table (PRT) support for IA32 5172(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 5173version supports both static and dyanmic PRT entries, but dynamic 5174entries are treated as if they were static (not yet 5175reconfigurable). Architecture- specific code to use this data is 5176absent on IA32 but should be available shortly. 5177 5178Changed the initialization sequence to start the ACPI interpreter 5179(acpi_init) prior to initialization of the PCI driver (pci_init) 5180in init/main.c. This ordering is required to support PRT and 5181facilitate other (future) enhancement. A side effect is that the 5182ACPI bus driver and certain device drivers can no longer be 5183loaded 5184as modules. 5185 5186Modified the 'make menuconfig' options to allow PCI Interrupt 5187Routing support to be included without the ACPI Bus and other 5188device drivers. 5189 5190 3) ASL Compiler, version X2033: 5191 5192Fixed some issues with the use of the new CopyObject and 5193DataTableRegion operators. Both are fully functional. 5194 5195 ---------------------------------------- 5196Summary of changes for this label: 11_20_01 5197 5198 20 November 2001. Summary of changes for this release. 5199 5200 1) ACPI CA Core Subsystem: 5201 5202Updated Index support to match ACPI 2.0 semantics. Storing a 5203Integer, String, or Buffer to an Index of a Buffer will store 5204only 5205the least-significant byte of the source to the Indexed buffer 5206byte. Multiple writes are not performed. 5207 5208Fixed a problem where the access type used in an AccessAs ASL 5209operator was not recorded correctly into the field object. 5210 5211Fixed a problem where ASL Event objects were created in a 5212signalled state. Events are now created in an unsignalled state. 5213 5214The internal object cache is now purged after table loading and 5215initialization to reduce the use of dynamic kernel memory -- on 5216the assumption that object use is greatest during the parse phase 5217of the entire table (versus the run-time use of individual 5218control 5219methods.) 5220 5221ACPI 2.0 variable-length packages are now fully operational. 5222 5223Code and Data Size: Code and Data optimizations have permitted 5224new 5225feature development with an actual reduction in the library size. 5226Current core subsystem library sizes are shown below. These are 5227the code and data sizes for the acpica.lib produced by the 5228Microsoft Visual C++ 6.0 compiler, and these values do not 5229include 5230any ACPI driver or OSPM code. The debug version of the code 5231includes the debug output trace mechanism and has a larger code 5232and data size. Note that these values will vary depending on the 5233efficiency of the compiler and the compiler options used during 5234generation. 5235 5236 Previous Release (11_09_01): 5237 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 5238 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 5239 5240 Current Release: 5241 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 5242 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 5243 5244 2) Linux: 5245 5246Enhanced the ACPI boot-time initialization code to allow the use 5247of Local APIC tables for processor enumeration on IA-32, and to 5248pave the way for a fully MPS-free boot (on SMP systems) in the 5249near future. This functionality replaces 5250arch/i386/kernel/acpitables.c, which was introduced in an earlier 52512.4.15-preX release. To enable this feature you must add 5252"acpi_boot=on" to the kernel command line -- see the help entry 5253for CONFIG_ACPI_BOOT for more information. An IA-64 release is 5254in 5255the works... 5256 5257Restructured the configuration options to allow boot-time table 5258parsing support without inclusion of the ACPI Interpreter (and 5259other) code. 5260 5261NOTE: This release does not include fixes for the reported 5262events, 5263power-down, and thermal passive cooling issues (coming soon). 5264 5265 3) ASL Compiler: 5266 5267Added additional typechecking for Fields within restricted access 5268Operation Regions. All fields within EC and CMOS regions must be 5269declared with ByteAcc. All fields withing SMBus regions must be 5270declared with the BufferAcc access type. 5271 5272Fixed a problem where the listing file output of control methods 5273no longer interleaved the actual AML code with the ASL source 5274code. 5275 5276 5277 5278---------------------------------------- 5279Summary of changes for this label: 11_09_01 5280 52811) ACPI CA Core Subsystem: 5282 5283Implemented ACPI 2.0-defined support for writes to fields with a 5284Buffer, String, or Integer source operand that is smaller than 5285the 5286target field. In these cases, the source operand is zero-extended 5287to fill the target field. 5288 5289Fixed a problem where a Field starting bit offset (within the 5290parent operation region) was calculated incorrectly if the 5291alignment of the field differed from the access width. This 5292affected CreateWordField, CreateDwordField, CreateQwordField, and 5293possibly other fields that use the "AccessAny" keyword. 5294 5295Fixed a problem introduced in the 11_02_01 release where indirect 5296stores through method arguments did not operate correctly. 5297 52982) Linux: 5299 5300Implemented boot-time ACPI table parsing support 5301(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 5302facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 5303legacy BIOS interfaces (e.g. MPS) for the configuration of system 5304processors, memory, and interrupts during setup_arch(). Note 5305that 5306this patch does not include the required architecture-specific 5307changes required to apply this information -- subsequent patches 5308will be posted for both IA32 and IA64 to achieve this. 5309 5310Added low-level sleep support for IA32 platforms, courtesy of Pat 5311Mochel. This allows IA32 systems to transition to/from various 5312sleeping states (e.g. S1, S3), although the lack of a centralized 5313driver model and power-manageable drivers will prevent its 5314(successful) use on most systems. 5315 5316Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 5317submenu, unified IA32 and IA64 options, added new "Boot using 5318ACPI 5319tables" option, etc. 5320 5321Increased the default timeout for the EC driver from 1ms to 10ms 5322(1000 cycles of 10us) to try to address AE_TIME errors during EC 5323transactions. 5324 5325 ---------------------------------------- 5326Summary of changes for this label: 11_02_01 5327 53281) ACPI CA Core Subsystem: 5329 5330ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 5331(QWordAcc keyword). All ACPI 2.0 64-bit support is now 5332implemented. 5333 5334OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 5335changes to support ACPI 2.0 Qword field access. Read/Write 5336PciConfiguration(), Read/Write Memory(), and Read/Write Port() 5337now 5338accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 5339the value parameter for the address space handler interface is 5340now 5341an ACPI_INTEGER. OSL implementations of these interfaces must 5342now 5343handle the case where the Width parameter is 64. 5344 5345Index Fields: Fixed a problem where unaligned bit assembly and 5346disassembly for IndexFields was not supported correctly. 5347 5348Index and Bank Fields: Nested Index and Bank Fields are now 5349supported. During field access, a check is performed to ensure 5350that the value written to an Index or Bank register is not out of 5351the range of the register. The Index (or Bank) register is 5352written before each access to the field data. Future support will 5353include allowing individual IndexFields to be wider than the 5354DataRegister width. 5355 5356Fields: Fixed a problem where the AML interpreter was incorrectly 5357attempting to write beyond the end of a Field/OpRegion. This was 5358a boundary case that occurred when a DWORD field was written to a 5359BYTE access OpRegion, forcing multiple writes and causing the 5360interpreter to write one datum too many. 5361 5362Fields: Fixed a problem with Field/OpRegion access where the 5363starting bit address of a field was incorrectly calculated if the 5364current access type was wider than a byte (WordAcc, DwordAcc, or 5365QwordAcc). 5366 5367Fields: Fixed a problem where forward references to individual 5368FieldUnits (individual Field names within a Field definition) 5369were 5370not resolved during the AML table load. 5371 5372Fields: Fixed a problem where forward references from a Field 5373definition to the parent Operation Region definition were not 5374resolved during the AML table load. 5375 5376Fields: Duplicate FieldUnit names within a scope are now detected 5377during AML table load. 5378 5379Acpi Interfaces: Fixed a problem where the AcpiGetName() 5380interface 5381returned an incorrect name for the root node. 5382 5383Code and Data Size: Code and Data optimizations have permitted 5384new 5385feature development with an actual reduction in the library size. 5386Current core subsystem library sizes are shown below. These are 5387the code and data sizes for the acpica.lib produced by the 5388Microsoft Visual C++ 6.0 compiler, and these values do not 5389include 5390any ACPI driver or OSPM code. The debug version of the code 5391includes the debug output trace mechanism and has a larger code 5392and data size. Note that these values will vary depending on the 5393efficiency of the compiler and the compiler options used during 5394generation. 5395 5396 Previous Release (10_18_01): 5397 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 5398 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 5399 5400 Current Release: 5401 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 5402 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 5403 5404 2) Linux: 5405 5406Improved /proc processor output (Pavel Machek) Re-added 5407MODULE_LICENSE("GPL") to all modules. 5408 5409 3) ASL Compiler version X2030: 5410 5411Duplicate FieldUnit names within a scope are now detected and 5412flagged as errors. 5413 5414 4) Documentation: 5415 5416Programmer Reference updated to reflect OSL and address space 5417handler interface changes described above. 5418 5419---------------------------------------- 5420Summary of changes for this label: 10_18_01 5421 5422ACPI CA Core Subsystem: 5423 5424Fixed a problem with the internal object reference count 5425mechanism 5426that occasionally caused premature object deletion. This resolves 5427all of the outstanding problem reports where an object is deleted 5428in the middle of an interpreter evaluation. Although this 5429problem 5430only showed up in rather obscure cases, the solution to the 5431problem involved an adjustment of all reference counts involving 5432objects attached to namespace nodes. 5433 5434Fixed a problem with Field support in the interpreter where 5435writing to an aligned field whose length is an exact multiple (2 5436or greater) of the field access granularity would cause an 5437attempt 5438to write beyond the end of the field. 5439 5440The top level AML opcode execution functions within the 5441interpreter have been renamed with a more meaningful and 5442consistent naming convention. The modules exmonad.c and 5443exdyadic.c were eliminated. New modules are exoparg1.c, 5444exoparg2.c, exoparg3.c, and exoparg6.c. 5445 5446Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 5447 5448Fixed a problem where the AML debugger was causing some internal 5449objects to not be deleted during subsystem termination. 5450 5451Fixed a problem with the external AcpiEvaluateObject interface 5452where the subsystem would fault if the named object to be 5453evaluated refered to a constant such as Zero, Ones, etc. 5454 5455Fixed a problem with IndexFields and BankFields where the 5456subsystem would fault if the index, data, or bank registers were 5457not defined in the same scope as the field itself. 5458 5459Added printf format string checking for compilers that support 5460this feature. Corrected more than 50 instances of issues with 5461format specifiers within invocations of ACPI_DEBUG_PRINT 5462throughout the core subsystem code. 5463 5464The ASL "Revision" operator now returns the ACPI support level 5465implemented in the core - the value "2" since the ACPI 2.0 5466support 5467is more than 50% implemented. 5468 5469Enhanced the output of the AML debugger "dump namespace" command 5470to output in a more human-readable form. 5471 5472Current core subsystem library code sizes are shown below. These 5473are the code and data sizes for the acpica.lib produced by the 5474Microsoft Visual C++ 6.0 compiler, and these values do not 5475include 5476any ACPI driver or OSPM code. The debug version of the code 5477includes the full debug trace mechanism -- leading to a much 5478larger code and data size. Note that these values will vary 5479depending on the efficiency of the compiler and the compiler 5480options used during generation. 5481 5482 Previous Label (09_20_01): 5483 Non-Debug Version: 65K Code, 5K Data, 70K Total 5484 Debug Version: 138K Code, 58K Data, 196K Total 5485 5486 This Label: 5487 5488 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 5489 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 5490 5491Linux: 5492 5493Implemented a "Bad BIOS Blacklist" to track machines that have 5494known ASL/AML problems. 5495 5496Enhanced the /proc interface for the thermal zone driver and 5497added 5498support for _HOT (the critical suspend trip point). The 'info' 5499file now includes threshold/policy information, and allows 5500setting 5501of _SCP (cooling preference) and _TZP (polling frequency) values 5502to the 'info' file. Examples: "echo tzp=5 > info" sets the 5503polling 5504frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 5505preference to the passive/quiet mode (if supported by the ASL). 5506 5507Implemented a workaround for a gcc bug that resuted in an OOPs 5508when loading the control method battery driver. 5509 5510 ---------------------------------------- 5511Summary of changes for this label: 09_20_01 5512 5513 ACPI CA Core Subsystem: 5514 5515The AcpiEnableEvent and AcpiDisableEvent interfaces have been 5516modified to allow individual GPE levels to be flagged as wake- 5517enabled (i.e., these GPEs are to remain enabled when the platform 5518sleeps.) 5519 5520The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 5521support wake-enabled GPEs. This means that upon entering the 5522sleep state, all GPEs that are not wake-enabled are disabled. 5523When leaving the sleep state, these GPEs are reenabled. 5524 5525A local double-precision divide/modulo module has been added to 5526enhance portability to OS kernels where a 64-bit math library is 5527not available. The new module is "utmath.c". 5528 5529Several optimizations have been made to reduce the use of CPU 5530stack. Originally over 2K, the maximum stack usage is now below 55312K at 1860 bytes (1.82k) 5532 5533Fixed a problem with the AcpiGetFirmwareTable interface where the 5534root table pointer was not mapped into a logical address 5535properly. 5536 5537Fixed a problem where a NULL pointer was being dereferenced in 5538the 5539interpreter code for the ASL Notify operator. 5540 5541Fixed a problem where the use of the ASL Revision operator 5542returned an error. This operator now returns the current version 5543of the ACPI CA core subsystem. 5544 5545Fixed a problem where objects passed as control method parameters 5546to AcpiEvaluateObject were always deleted at method termination. 5547However, these objects may end up being stored into the namespace 5548by the called method. The object reference count mechanism was 5549applied to these objects instead of a force delete. 5550 5551Fixed a problem where static strings or buffers (contained in the 5552AML code) that are declared as package elements within the ASL 5553code could cause a fault because the interpreter would attempt to 5554delete them. These objects are now marked with the "static 5555object" flag to prevent any attempt to delete them. 5556 5557Implemented an interpreter optimization to use operands directly 5558from the state object instead of extracting the operands to local 5559variables. This reduces stack use and code size, and improves 5560performance. 5561 5562The module exxface.c was eliminated as it was an unnecessary 5563extra 5564layer of code. 5565 5566Current core subsystem library code sizes are shown below. These 5567are the code and data sizes for the acpica.lib produced by the 5568Microsoft Visual C++ 6.0 compiler, and these values do not 5569include 5570any ACPI driver or OSPM code. The debug version of the code 5571includes the full debug trace mechanism -- leading to a much 5572larger code and data size. Note that these values will vary 5573depending on the efficiency of the compiler and the compiler 5574options used during generation. 5575 5576 Non-Debug Version: 65K Code, 5K Data, 70K Total 5577(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 5578Total (Previously 195K) 5579 5580Linux: 5581 5582Support for ACPI 2.0 64-bit integers has been added. All ACPI 5583Integer objects are now 64 bits wide 5584 5585All Acpi data types and structures are now in lower case. Only 5586Acpi macros are upper case for differentiation. 5587 5588 Documentation: 5589 5590Changes to the external interfaces as described above. 5591 5592 ---------------------------------------- 5593Summary of changes for this label: 08_31_01 5594 5595 ACPI CA Core Subsystem: 5596 5597A bug with interpreter implementation of the ASL Divide operator 5598was found and fixed. The implicit function return value (not the 5599explicit store operands) was returning the remainder instead of 5600the quotient. This was a longstanding bug and it fixes several 5601known outstanding issues on various platforms. 5602 5603The ACPI_DEBUG_PRINT and function trace entry/exit macros have 5604been further optimized for size. There are 700 invocations of 5605the 5606DEBUG_PRINT macro alone, so each optimization reduces the size of 5607the debug version of the subsystem significantly. 5608 5609A stack trace mechanism has been implemented. The maximum stack 5610usage is about 2K on 32-bit platforms. The debugger command 5611"stat 5612stack" will display the current maximum stack usage. 5613 5614All public symbols and global variables within the subsystem are 5615now prefixed with the string "Acpi". This keeps all of the 5616symbols grouped together in a kernel map, and avoids conflicts 5617with other kernel subsystems. 5618 5619Most of the internal fixed lookup tables have been moved into the 5620code segment via the const operator. 5621 5622Several enhancements have been made to the interpreter to both 5623reduce the code size and improve performance. 5624 5625Current core subsystem library code sizes are shown below. These 5626are the code and data sizes for the acpica.lib produced by the 5627Microsoft Visual C++ 6.0 compiler, and these values do not 5628include 5629any ACPI driver or OSPM code. The debug version of the code 5630includes the full debug trace mechanism which contains over 700 5631invocations of the DEBUG_PRINT macro, 500 function entry macro 5632invocations, and over 900 function exit macro invocations -- 5633leading to a much larger code and data size. Note that these 5634values will vary depending on the efficiency of the compiler and 5635the compiler options used during generation. 5636 5637 Non-Debug Version: 64K Code, 5K Data, 69K Total 5638Debug Version: 137K Code, 58K Data, 195K Total 5639 5640 Linux: 5641 5642Implemented wbinvd() macro, pending a kernel-wide definition. 5643 5644Fixed /proc/acpi/event to handle poll() and short reads. 5645 5646 ASL Compiler, version X2026: 5647 5648Fixed a problem introduced in the previous label where the AML 5649code emitted for package objects produced packages with zero 5650length. 5651 5652 ---------------------------------------- 5653Summary of changes for this label: 08_16_01 5654 5655ACPI CA Core Subsystem: 5656 5657The following ACPI 2.0 ASL operators have been implemented in the 5658AML interpreter (These are already supported by the Intel ASL 5659compiler): ToDecimalString, ToHexString, ToString, ToInteger, 5660and 5661ToBuffer. Support for 64-bit AML constants is implemented in the 5662AML parser, debugger, and disassembler. 5663 5664The internal memory tracking mechanism (leak detection code) has 5665been upgraded to reduce the memory overhead (a separate tracking 5666block is no longer allocated for each memory allocation), and now 5667supports all of the internal object caches. 5668 5669The data structures and code for the internal object caches have 5670been coelesced and optimized so that there is a single cache and 5671memory list data structure and a single group of functions that 5672implement generic cache management. This has reduced the code 5673size in both the debug and release versions of the subsystem. 5674 5675The DEBUG_PRINT macro(s) have been optimized for size and 5676replaced 5677by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 5678different, because it generates a single call to an internal 5679function. This results in a savings of about 90 bytes per 5680invocation, resulting in an overall code and data savings of 5681about 568216% in the debug version of the subsystem. 5683 5684 Linux: 5685 5686Fixed C3 disk corruption problems and re-enabled C3 on supporting 5687machines. 5688 5689Integrated low-level sleep code by Patrick Mochel. 5690 5691Further tweaked source code Linuxization. 5692 5693Other minor fixes. 5694 5695 ASL Compiler: 5696 5697Support for ACPI 2.0 variable length packages is fixed/completed. 5698 5699Fixed a problem where the optional length parameter for the ACPI 57002.0 ToString operator. 5701 5702Fixed multiple extraneous error messages when a syntax error is 5703detected within the declaration line of a control method. 5704 5705 ---------------------------------------- 5706Summary of changes for this label: 07_17_01 5707 5708ACPI CA Core Subsystem: 5709 5710Added a new interface named AcpiGetFirmwareTable to obtain any 5711ACPI table via the ACPI signature. The interface can be called 5712at 5713any time during kernel initialization, even before the kernel 5714virtual memory manager is initialized and paging is enabled. 5715This 5716allows kernel subsystems to obtain ACPI tables very early, even 5717before the ACPI CA subsystem is initialized. 5718 5719Fixed a problem where Fields defined with the AnyAcc attribute 5720could be resolved to the incorrect address under the following 5721conditions: 1) the field width is larger than 8 bits and 2) the 5722parent operation region is not defined on a DWORD boundary. 5723 5724Fixed a problem where the interpreter is not being locked during 5725namespace initialization (during execution of the _INI control 5726methods), causing an error when an attempt is made to release it 5727later. 5728 5729ACPI 2.0 support in the AML Interpreter has begun and will be 5730ongoing throughout the rest of this year. In this label, The Mod 5731operator is implemented. 5732 5733Added a new data type to contain full PCI addresses named 5734ACPI_PCI_ID. This structure contains the PCI Segment, Bus, 5735Device, 5736and Function values. 5737 5738 Linux: 5739 5740Enhanced the Linux version of the source code to change most 5741capitalized ACPI type names to lowercase. For example, all 5742instances of ACPI_STATUS are changed to acpi_status. This will 5743result in a large diff, but the change is strictly cosmetic and 5744aligns the CA code closer to the Linux coding standard. 5745 5746OSL Interfaces: 5747 5748The interfaces to the PCI configuration space have been changed 5749to 5750add the PCI Segment number and to split the single 32-bit 5751combined 5752DeviceFunction field into two 16-bit fields. This was 5753accomplished by moving the four values that define an address in 5754PCI configuration space (segment, bus, device, and function) to 5755the new ACPI_PCI_ID structure. 5756 5757The changes to the PCI configuration space interfaces led to a 5758reexamination of the complete set of address space access 5759interfaces for PCI, I/O, and Memory. The previously existing 18 5760interfaces have proven difficult to maintain (any small change 5761must be propagated across at least 6 interfaces) and do not 5762easily 5763allow for future expansion to 64 bits if necessary. Also, on 5764some 5765systems, it would not be appropriate to demultiplex the access 5766width (8, 16, 32,or 64) before calling the OSL if the 5767corresponding native OS interfaces contain a similar access width 5768parameter. For these reasons, the 18 address space interfaces 5769have been replaced by these 6 new ones: 5770 5771AcpiOsReadPciConfiguration 5772AcpiOsWritePciConfiguration 5773AcpiOsReadMemory 5774AcpiOsWriteMemory 5775AcpiOsReadPort 5776AcpiOsWritePort 5777 5778Added a new interface named AcpiOsGetRootPointer to allow the OSL 5779to perform the platform and/or OS-specific actions necessary to 5780obtain the ACPI RSDP table pointer. On IA-32 platforms, this 5781interface will simply call down to the CA core to perform the low- 5782memory search for the table. On IA-64, the RSDP is obtained from 5783EFI. Migrating this interface to the OSL allows the CA core to 5784remain OS and platform independent. 5785 5786Added a new interface named AcpiOsSignal to provide a generic 5787"function code and pointer" interface for various miscellaneous 5788signals and notifications that must be made to the host OS. The 5789first such signals are intended to support the ASL Fatal and 5790Breakpoint operators. In the latter case, the AcpiOsBreakpoint 5791interface has been obsoleted. 5792 5793The definition of the AcpiFormatException interface has been 5794changed to simplify its use. The caller no longer must supply a 5795buffer to the call; A pointer to a const string is now returned 5796directly. This allows the call to be easily used in printf 5797statements, etc. since the caller does not have to manage a local 5798buffer. 5799 5800 5801 ASL Compiler, Version X2025: 5802 5803The ACPI 2.0 Switch/Case/Default operators have been implemented 5804and are fully functional. They will work with all ACPI 1.0 5805interpreters, since the operators are simply translated to 5806If/Else 5807pairs. 5808 5809The ACPI 2.0 ElseIf operator is implemented and will also work 5810with 1.0 interpreters, for the same reason. 5811 5812Implemented support for ACPI 2.0 variable-length packages. These 5813packages have a separate opcode, and their size is determined by 5814the interpreter at run-time. 5815 5816Documentation The ACPI CA Programmer Reference has been updated 5817to 5818reflect the new interfaces and changes to existing interfaces. 5819 5820 ------------------------------------------ 5821Summary of changes for this label: 06_15_01 5822 5823 ACPI CA Core Subsystem: 5824 5825Fixed a problem where a DWORD-accessed field within a Buffer 5826object would get its byte address inadvertently rounded down to 5827the nearest DWORD. Buffers are always Byte-accessible. 5828 5829 ASL Compiler, version X2024: 5830 5831Fixed a problem where the Switch() operator would either fault or 5832hang the compiler. Note however, that the AML code for this ACPI 58332.0 operator is not yet implemented. 5834 5835Compiler uses the new AcpiOsGetTimer interface to obtain compile 5836timings. 5837 5838Implementation of the CreateField operator automatically converts 5839a reference to a named field within a resource descriptor from a 5840byte offset to a bit offset if required. 5841 5842Added some missing named fields from the resource descriptor 5843support. These are the names that are automatically created by 5844the 5845compiler to reference fields within a descriptor. They are only 5846valid at compile time and are not passed through to the AML 5847interpreter. 5848 5849Resource descriptor named fields are now typed as Integers and 5850subject to compile-time typechecking when used in expressions. 5851 5852 ------------------------------------------ 5853Summary of changes for this label: 05_18_01 5854 5855 ACPI CA Core Subsystem: 5856 5857Fixed a couple of problems in the Field support code where bits 5858from adjacent fields could be returned along with the proper 5859field 5860bits. Restructured the field support code to improve performance, 5861readability and maintainability. 5862 5863New DEBUG_PRINTP macro automatically inserts the procedure name 5864into the output, saving hundreds of copies of procedure name 5865strings within the source, shrinking the memory footprint of the 5866debug version of the core subsystem. 5867 5868 Source Code Structure: 5869 5870The source code directory tree was restructured to reflect the 5871current organization of the component architecture. Some files 5872and directories have been moved and/or renamed. 5873 5874 Linux: 5875 5876Fixed leaking kacpidpc processes. 5877 5878Fixed queueing event data even when /proc/acpi/event is not 5879opened. 5880 5881 ASL Compiler, version X2020: 5882 5883Memory allocation performance enhancement - over 24X compile time 5884improvement on large ASL files. Parse nodes and namestring 5885buffers are now allocated from a large internal compiler buffer. 5886 5887The temporary .SRC file is deleted unless the "-s" option is 5888specified 5889 5890The "-d" debug output option now sends all output to the .DBG 5891file 5892instead of the console. 5893 5894"External" second parameter is now optional 5895 5896"ElseIf" syntax now properly allows the predicate 5897 5898Last operand to "Load" now recognized as a Target operand 5899 5900Debug object can now be used anywhere as a normal object. 5901 5902ResourceTemplate now returns an object of type BUFFER 5903 5904EISAID now returns an object of type INTEGER 5905 5906"Index" now works with a STRING operand 5907 5908"LoadTable" now accepts optional parameters 5909 5910"ToString" length parameter is now optional 5911 5912"Interrupt (ResourceType," parse error fixed. 5913 5914"Register" with a user-defined region space parse error fixed 5915 5916Escaped backslash at the end of a string ("\\") scan/parse error 5917fixed 5918 5919"Revision" is now an object of type INTEGER. 5920 5921 5922 5923------------------------------------------ 5924Summary of changes for this label: 05_02_01 5925 5926Linux: 5927 5928/proc/acpi/event now blocks properly. 5929 5930Removed /proc/sys/acpi. You can still dump your DSDT from 5931/proc/acpi/dsdt. 5932 5933 ACPI CA Core Subsystem: 5934 5935Fixed a problem introduced in the previous label where some of 5936the 5937"small" resource descriptor types were not recognized. 5938 5939Improved error messages for the case where an ASL Field is 5940outside 5941the range of the parent operation region. 5942 5943 ASL Compiler, version X2018: 5944 5945Added error detection for ASL Fields that extend beyond the 5946length 5947of the parent operation region (only if the length of the region 5948is known at compile time.) This includes fields that have a 5949minimum access width that is smaller than the parent region, and 5950individual field units that are partially or entirely beyond the 5951extent of the parent. 5952 5953 5954 5955------------------------------------------ 5956Summary of changes for this label: 04_27_01 5957 5958 ACPI CA Core Subsystem: 5959 5960Fixed a problem where the namespace mutex could be released at 5961the 5962wrong time during execution of AcpiRemoveAddressSpaceHandler. 5963 5964Added optional thread ID output for debug traces, to simplify 5965debugging of multiple threads. Added context switch notification 5966when the debug code realizes that a different thread is now 5967executing ACPI code. 5968 5969Some additional external data types have been prefixed with the 5970string "ACPI_" for consistency. This may effect existing code. 5971The data types affected are the external callback typedefs - 5972e.g., 5973WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 5974 5975 Linux: 5976 5977Fixed an issue with the OSL semaphore implementation where a 5978thread was waking up with an error from receiving a SIGCHLD 5979signal. 5980 5981Linux version of ACPI CA now uses the system C library for string 5982manipulation routines instead of a local implementation. 5983 5984Cleaned up comments and removed TBDs. 5985 5986 ASL Compiler, version X2017: 5987 5988Enhanced error detection and reporting for all file I/O 5989operations. 5990 5991 Documentation: 5992 5993Programmer Reference updated to version 1.06. 5994 5995 5996 5997------------------------------------------ 5998Summary of changes for this label: 04_13_01 5999 6000 ACPI CA Core Subsystem: 6001 6002Restructured support for BufferFields and RegionFields. 6003BankFields support is now fully operational. All known 32-bit 6004limitations on field sizes have been removed. Both BufferFields 6005and (Operation) RegionFields are now supported by the same field 6006management code. 6007 6008Resource support now supports QWORD address and IO resources. The 600916/32/64 bit address structures and the Extended IRQ structure 6010have been changed to properly handle Source Resource strings. 6011 6012A ThreadId of -1 is now used to indicate a "mutex not acquired" 6013condition internally and must never be returned by 6014AcpiOsThreadId. 6015This reserved value was changed from 0 since Unix systems allow a 6016thread ID of 0. 6017 6018Linux: 6019 6020Driver code reorganized to enhance portability 6021 6022Added a kernel configuration option to control ACPI_DEBUG 6023 6024Fixed the EC driver to honor _GLK. 6025 6026ASL Compiler, version X2016: 6027 6028Fixed support for the "FixedHw" keyword. Previously, the FixedHw 6029address space was set to 0, not 0x7f as it should be. 6030 6031 ------------------------------------------ 6032Summary of changes for this label: 03_13_01 6033 6034 ACPI CA Core Subsystem: 6035 6036During ACPI initialization, the _SB_._INI method is now run if 6037present. 6038 6039Notify handler fix - notifies are deferred until the parent 6040method 6041completes execution. This fixes the "mutex already acquired" 6042issue seen occasionally. 6043 6044Part of the "implicit conversion" rules in ACPI 2.0 have been 6045found to cause compatibility problems with existing ASL/AML. The 6046convert "result-to-target-type" implementation has been removed 6047for stores to method Args and Locals. Source operand conversion 6048is still fully implemented. Possible changes to ACPI 2.0 6049specification pending. 6050 6051Fix to AcpiRsCalculatePciRoutingTableLength to return correct 6052length. 6053 6054Fix for compiler warnings for 64-bit compiles. 6055 6056 Linux: 6057 6058/proc output aligned for easier parsing. 6059 6060Release-version compile problem fixed. 6061 6062New kernel configuration options documented in Configure.help. 6063 6064IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 6065context" message. 6066 6067 OSPM: 6068 6069Power resource driver integrated with bus manager. 6070 6071Fixed kernel fault during active cooling for thermal zones. 6072 6073Source Code: 6074 6075The source code tree has been restructured. 6076 6077 6078 6079------------------------------------------ 6080Summary of changes for this label: 03_02_01 6081 6082 Linux OS Services Layer (OSL): 6083 6084Major revision of all Linux-specific code. 6085 6086Modularized all ACPI-specific drivers. 6087 6088Added new thermal zone and power resource drivers. 6089 6090Revamped /proc interface (new functionality is under /proc/acpi). 6091 6092New kernel configuration options. 6093 6094 Linux known issues: 6095 6096New kernel configuration options not documented in Configure.help 6097yet. 6098 6099 6100Module dependencies not currently implemented. If used, they 6101should be loaded in this order: busmgr, power, ec, system, 6102processor, battery, ac_adapter, button, thermal. 6103 6104Modules will not load if CONFIG_MODVERSION is set. 6105 6106IBM 600E - entering S5 may reboot instead of shutting down. 6107 6108IBM 600E - Sleep button may generate "Invalid <NULL> context" 6109message. 6110 6111Some systems may fail with "execution mutex already acquired" 6112message. 6113 6114 ACPI CA Core Subsystem: 6115 6116Added a new OSL Interface, AcpiOsGetThreadId. This was required 6117for the deadlock detection code. Defined to return a non-zero, 611832- 6119bit thread ID for the currently executing thread. May be a non- 6120zero constant integer on single-thread systems. 6121 6122Implemented deadlock detection for internal subsystem mutexes. 6123We 6124may add conditional compilation for this code (debug only) later. 6125 6126ASL/AML Mutex object semantics are now fully supported. This 6127includes multiple acquires/releases by owner and support for the 6128Mutex SyncLevel parameter. 6129 6130A new "Force Release" mechanism automatically frees all ASL 6131Mutexes that have been acquired but not released when a thread 6132exits the interpreter. This forces conformance to the ACPI spec 6133("All mutexes must be released when an invocation exits") and 6134prevents deadlocked ASL threads. This mechanism can be expanded 6135(later) to monitor other resource acquisitions if OEM ASL code 6136continues to misbehave (which it will). 6137 6138Several new ACPI exception codes have been added for the Mutex 6139support. 6140 6141Recursive method calls are now allowed and supported (the ACPI 6142spec does in fact allow recursive method calls.) The number of 6143recursive calls is subject to the restrictions imposed by the 6144SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 6145parameter. 6146 6147Implemented support for the SyncLevel parameter for control 6148methods (ACPI 2.0 feature) 6149 6150Fixed a deadlock problem when multiple threads attempted to use 6151the interpreter. 6152 6153Fixed a problem where the string length of a String package 6154element was not always set in a package returned from 6155AcpiEvaluateObject. 6156 6157Fixed a problem where the length of a String package element was 6158not always included in the length of the overall package returned 6159from AcpiEvaluateObject. 6160 6161Added external interfaces (Acpi*) to the ACPI debug memory 6162manager. This manager keeps a list of all outstanding 6163allocations, and can therefore detect memory leaks and attempts 6164to 6165free memory blocks more than once. Useful for code such as the 6166power manager, etc. May not be appropriate for device drivers. 6167Performance with the debug code enabled is slow. 6168 6169The ACPI Global Lock is now an optional hardware element. 6170 6171 ASL Compiler Version X2015: 6172 6173Integrated changes to allow the compiler to be generated on 6174multiple platforms. 6175 6176Linux makefile added to generate the compiler on Linux 6177 6178 Source Code: 6179 6180All platform-specific headers have been moved to their own 6181subdirectory, Include/Platform. 6182 6183New source file added, Interpreter/ammutex.c 6184 6185New header file, Include/acstruct.h 6186 6187 Documentation: 6188 6189The programmer reference has been updated for the following new 6190interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 6191 6192 ------------------------------------------ 6193Summary of changes for this label: 02_08_01 6194 6195Core ACPI CA Subsystem: Fixed a problem where an error was 6196incorrectly returned if the return resource buffer was larger 6197than 6198the actual data (in the resource interfaces). 6199 6200References to named objects within packages are resolved to the 6201full pathname string before packages are returned directly (via 6202the AcpiEvaluateObject interface) or indirectly via the resource 6203interfaces. 6204 6205Linux OS Services Layer (OSL): 6206 6207Improved /proc battery interface. 6208 6209 6210Added C-state debugging output and other miscellaneous fixes. 6211 6212ASL Compiler Version X2014: 6213 6214All defined method arguments can now be used as local variables, 6215including the ones that are not actually passed in as parameters. 6216The compiler tracks initialization of the arguments and issues an 6217exception if they are used without prior assignment (just like 6218locals). 6219 6220The -o option now specifies a filename prefix that is used for 6221all 6222output files, including the AML output file. Otherwise, the 6223default behavior is as follows: 1) the AML goes to the file 6224specified in the DSDT. 2) all other output files use the input 6225source filename as the base. 6226 6227 ------------------------------------------ 6228Summary of changes for this label: 01_25_01 6229 6230Core ACPI CA Subsystem: Restructured the implementation of object 6231store support within the interpreter. This includes support for 6232the Store operator as well as any ASL operators that include a 6233target operand. 6234 6235Partially implemented support for Implicit Result-to-Target 6236conversion. This is when a result object is converted on the fly 6237to the type of an existing target object. Completion of this 6238support is pending further analysis of the ACPI specification 6239concerning this matter. 6240 6241CPU-specific code has been removed from the subsystem (hardware 6242directory). 6243 6244New Power Management Timer functions added 6245 6246Linux OS Services Layer (OSL): Moved system state transition code 6247to the core, fixed it, and modified Linux OSL accordingly. 6248 6249Fixed C2 and C3 latency calculations. 6250 6251 6252We no longer use the compilation date for the version message on 6253initialization, but retrieve the version from 6254AcpiGetSystemInfo(). 6255 6256Incorporated for fix Sony VAIO machines. 6257 6258Documentation: The Programmer Reference has been updated and 6259reformatted. 6260 6261 6262ASL Compiler: Version X2013: Fixed a problem where the line 6263numbering and error reporting could get out of sync in the 6264presence of multiple include files. 6265 6266 ------------------------------------------ 6267Summary of changes for this label: 01_15_01 6268 6269Core ACPI CA Subsystem: 6270 6271Implemented support for type conversions in the execution of the 6272ASL Concatenate operator (The second operand is converted to 6273match the type of the first operand before concatenation.) 6274 6275Support for implicit source operand conversion is partially 6276implemented. The ASL source operand types Integer, Buffer, and 6277String are freely interchangeable for most ASL operators and are 6278converted by the interpreter on the fly as required. Implicit 6279Target operand conversion (where the result is converted to the 6280target type before storing) is not yet implemented. 6281 6282Support for 32-bit and 64-bit BCD integers is implemented. 6283 6284Problem fixed where a field read on an aligned field could cause 6285a 6286read past the end of the field. 6287 6288New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 6289does not return a value, but the caller expects one. (The ASL 6290compiler flags this as a warning.) 6291 6292ASL Compiler: 6293 6294Version X2011: 62951. Static typechecking of all operands is implemented. This 6296prevents the use of invalid objects (such as using a Package 6297where 6298an Integer is required) at compile time instead of at interpreter 6299run-time. 63002. The ASL source line is printed with ALL errors and warnings. 63013. Bug fix for source EOF without final linefeed. 63024. Debug option is split into a parse trace and a namespace 6303trace. 63045. Namespace output option (-n) includes initial values for 6305integers and strings. 63066. Parse-only option added for quick syntax checking. 63077. Compiler checks for duplicate ACPI name declarations 6308 6309Version X2012: 63101. Relaxed typechecking to allow interchangeability between 6311strings, integers, and buffers. These types are now converted by 6312the interpreter at runtime. 63132. Compiler reports time taken by each internal subsystem in the 6314debug output file. 6315 6316 6317 ------------------------------------------ 6318Summary of changes for this label: 12_14_00 6319 6320ASL Compiler: 6321 6322This is the first official release of the compiler. Since the 6323compiler requires elements of the Core Subsystem, this label 6324synchronizes everything. 6325 6326------------------------------------------ 6327Summary of changes for this label: 12_08_00 6328 6329 6330Fixed a problem where named references within the ASL definition 6331of both OperationRegions and CreateXXXFields did not work 6332properly. The symptom was an AE_AML_OPERAND_TYPE during 6333initialization of the region/field. This is similar (but not 6334related internally) to the problem that was fixed in the last 6335label. 6336 6337Implemented both 32-bit and 64-bit support for the BCD ASL 6338functions ToBCD and FromBCD. 6339 6340Updated all legal headers to include "2000" in the copyright 6341years. 6342 6343 ------------------------------------------ 6344Summary of changes for this label: 12_01_00 6345 6346Fixed a problem where method invocations within the ASL 6347definition 6348of both OperationRegions and CreateXXXFields did not work 6349properly. The symptom was an AE_AML_OPERAND_TYPE during 6350initialization of the region/field: 6351 6352 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 6353[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 6354(0x3005) 6355 6356Fixed a problem where operators with more than one nested 6357subexpression would fail. The symptoms were varied, by mostly 6358AE_AML_OPERAND_TYPE errors. This was actually a rather serious 6359problem that has gone unnoticed until now. 6360 6361 Subtract (Add (1,2), Multiply (3,4)) 6362 6363Fixed a problem where AcpiGetHandle didn't quite get fixed in the 6364previous build (The prefix part of a relative path was handled 6365incorrectly). 6366 6367Fixed a problem where Operation Region initialization failed if 6368the operation region name was a "namepath" instead of a simple 6369"nameseg". Symptom was an AE_NO_OPERAND error. 6370 6371Fixed a problem where an assignment to a local variable via the 6372indirect RefOf mechanism only worked for the first such 6373assignment. Subsequent assignments were ignored. 6374 6375 ------------------------------------------ 6376Summary of changes for this label: 11_15_00 6377 6378ACPI 2.0 table support with backwards support for ACPI 1.0 and 6379the 63800.71 extensions. Note: although we can read ACPI 2.0 BIOS 6381tables, 6382the AML interpreter does NOT have support for the new 2.0 ASL 6383grammar terms at this time. 6384 6385All ACPI hardware access is via the GAS structures in the ACPI 63862.0 6387FADT. 6388 6389All physical memory addresses across all platforms are now 64 6390bits 6391wide. Logical address width remains dependent on the platform 6392(i.e., "void *"). 6393 6394AcpiOsMapMemory interface changed to a 64-bit physical address. 6395 6396The AML interpreter integer size is now 64 bits, as per the ACPI 63972.0 specification. 6398 6399For backwards compatibility with ACPI 1.0, ACPI tables with a 6400revision number less than 2 use 32-bit integers only. 6401 6402Fixed a problem where the evaluation of OpRegion operands did not 6403always resolve them to numbers properly. 6404 6405------------------------------------------ 6406Summary of changes for this label: 10_20_00 6407 6408Fix for CBN_._STA issue. This fix will allow correct access to 6409CBN_ OpRegions when the _STA returns 0x8. 6410 6411Support to convert ACPI constants (Ones, Zeros, One) to actual 6412values before a package object is returned 6413 6414Fix for method call as predicate to if/while construct causing 6415incorrect if/while behavior 6416 6417Fix for Else block package lengths sometimes calculated wrong (if 6418block > 63 bytes) 6419 6420Fix for Processor object length field, was always zero 6421 6422Table load abort if FACP sanity check fails 6423 6424Fix for problem with Scope(name) if name already exists 6425 6426Warning emitted if a named object referenced cannot be found 6427(resolved) during method execution. 6428 6429 6430 6431 6432 6433------------------------------------------ 6434Summary of changes for this label: 9_29_00 6435 6436New table initialization interfaces: AcpiInitializeSubsystem no 6437longer has any parameters AcpiFindRootPointer - Find the RSDP (if 6438necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 6439>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 6440AcpiLoadTables 6441 6442Note: These interface changes require changes to all existing 6443OSDs 6444 6445The PCI_Config default address space handler is always installed 6446at the root namespace object. 6447 6448------------------------------------------- 6449Summary of changes for this label: 09_15_00 6450 6451The new initialization architecture is implemented. New 6452interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 6453AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 6454(Namespace is automatically loaded when a table is loaded) 6455 6456The ACPI_OPERAND_OBJECT has been optimized to shrink its size 6457from 645852 bytes to 32 bytes. There is usually one of these for every 6459namespace object, so the memory savings is significant. 6460 6461Implemented just-in-time evaluation of the CreateField operators. 6462 6463Bug fixes for IA-64 support have been integrated. 6464 6465Additional code review comments have been implemented 6466 6467The so-called "third pass parse" has been replaced by a final 6468walk 6469through the namespace to initialize all operation regions 6470(address 6471spaces) and fields that have not yet been initialized during the 6472execution of the various _INI and REG methods. 6473 6474New file - namespace/nsinit.c 6475 6476------------------------------------------- 6477Summary of changes for this label: 09_01_00 6478 6479Namespace manager data structures have been reworked to change 6480the 6481primary object from a table to a single object. This has 6482resulted in dynamic memory savings of 3X within the namespace 6483and 64842X overall in the ACPI CA subsystem. 6485 6486Fixed problem where the call to AcpiEvFindPciRootBuses was 6487inadvertently left commented out. 6488 6489Reduced the warning count when generating the source with the GCC 6490compiler. 6491 6492Revision numbers added to each module header showing the 6493SourceSafe version of the file. Please refer to this version 6494number when giving us feedback or comments on individual modules. 6495 6496The main object types within the subsystem have been renamed to 6497clarify their purpose: 6498 6499ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 6500ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 6501ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 6502 6503NOTE: no changes to the initialization sequence are included in 6504this label. 6505 6506------------------------------------------- 6507Summary of changes for this label: 08_23_00 6508 6509Fixed problem where TerminateControlMethod was being called 6510multiple times per method 6511 6512Fixed debugger problem where single stepping caused a semaphore 6513to 6514be oversignalled 6515 6516Improved performance through additional parse object caching - 6517added ACPI_EXTENDED_OP type 6518 6519------------------------------------------- 6520Summary of changes for this label: 08_10_00 6521 6522Parser/Interpreter integration: Eliminated the creation of 6523complete parse trees for ACPI tables and control methods. 6524Instead, parse subtrees are created and then deleted as soon as 6525they are processed (Either entered into the namespace or 6526executed 6527by the interpreter). This reduces the use of dynamic kernel 6528memory significantly. (about 10X) 6529 6530Exception codes broken into classes and renumbered. Be sure to 6531recompile all code that includes acexcep.h. Hopefully we won't 6532have to renumber the codes again now that they are split into 6533classes (environment, programmer, AML code, ACPI table, and 6534internal). 6535 6536Fixed some additional alignment issues in the Resource Manager 6537subcomponent 6538 6539Implemented semaphore tracking in the AcpiExec utility, and fixed 6540several places where mutexes/semaphores were being unlocked 6541without a corresponding lock operation. There are no known 6542semaphore or mutex "leaks" at this time. 6543 6544Fixed the case where an ASL Return operator is used to return an 6545unnamed package. 6546 6547------------------------------------------- 6548Summary of changes for this label: 07_28_00 6549 6550Fixed a problem with the way addresses were calculated in 6551AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 6552manifested itself when a Field was created with WordAccess or 6553DwordAccess, but the field unit defined within the Field was 6554less 6555than a Word or Dword. 6556 6557Fixed a problem in AmlDumpOperands() module's loop to pull 6558operands off of the operand stack to display information. The 6559problem manifested itself as a TLB error on 64-bit systems when 6560accessing an operand stack with two or more operands. 6561 6562Fixed a problem with the PCI configuration space handlers where 6563context was getting confused between accesses. This required a 6564change to the generic address space handler and address space 6565setup definitions. Handlers now get both a global handler 6566context 6567(this is the one passed in by the user when executing 6568AcpiInstallAddressSpaceHandler() and a specific region context 6569that is unique to each region (For example, the _ADR, _SEG and 6570_BBN values associated with a specific region). The generic 6571function definitions have changed to the following: 6572 6573typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 6574UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 6575*HandlerContext, // This used to be void *Context void 6576*RegionContext); // This is an additional parameter 6577 6578typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 6579RegionHandle, UINT32 Function, void *HandlerContext, void 6580**RegionContext); // This used to be **ReturnContext 6581 6582------------------------------------------- 6583Summary of changes for this label: 07_21_00 6584 6585Major file consolidation and rename. All files within the 6586interpreter have been renamed as well as most header files. 6587This 6588was done to prevent collisions with existing files in the host 6589OSs -- filenames such as "config.h" and "global.h" seem to be 6590quite common. The VC project files have been updated. All 6591makefiles will require modification. 6592 6593The parser/interpreter integration continues in Phase 5 with the 6594implementation of a complete 2-pass parse (the AML is parsed 6595twice) for each table; This avoids the construction of a huge 6596parse tree and therefore reduces the amount of dynamic memory 6597required by the subsystem. Greater use of the parse object cache 6598means that performance is unaffected. 6599 6600Many comments from the two code reviews have been rolled in. 6601 6602The 64-bit alignment support is complete. 6603 6604------------------------------------------- 6605Summary of changes for this label: 06_30_00 6606 6607With a nod and a tip of the hat to the technology of yesteryear, 6608we've added support in the source code for 80 column output 6609devices. The code is now mostly constrained to 80 columns or 6610less to support environments and editors that 1) cannot display 6611or print more than 80 characters on a single line, and 2) cannot 6612disable line wrapping. 6613 6614A major restructuring of the namespace data structure has been 6615completed. The result is 1) cleaner and more 6616understandable/maintainable code, and 2) a significant reduction 6617in the dynamic memory requirement for each named ACPI object 6618(almost half). 6619 6620------------------------------------------- 6621Summary of changes for this label: 06_23_00 6622 6623Linux support has been added. In order to obtain approval to get 6624the ACPI CA subsystem into the Linux kernel, we've had to make 6625quite a few changes to the base subsystem that will affect all 6626users (all the changes are generic and OS- independent). The 6627effects of these global changes have been somewhat far reaching. 6628Files have been merged and/or renamed and interfaces have been 6629renamed. The major changes are described below. 6630 6631Osd* interfaces renamed to AcpiOs* to eliminate namespace 6632pollution/confusion within our target kernels. All OSD 6633interfaces must be modified to match the new naming convention. 6634 6635Files merged across the subsystem. A number of the smaller 6636source 6637and header files have been merged to reduce the file count and 6638increase the density of the existing files. There are too many 6639to list here. In general, makefiles that call out individual 6640files will require rebuilding. 6641 6642Interpreter files renamed. All interpreter files now have the 6643prefix am* instead of ie* and is*. 6644 6645Header files renamed: The acapi.h file is now acpixf.h. The 6646acpiosd.h file is now acpiosxf.h. We are removing references to 6647the acronym "API" since it is somewhat windowsy. The new name is 6648"external interface" or xface or xf in the filenames.j 6649 6650 6651All manifest constants have been forced to upper case (some were 6652mixed case.) Also, the string "ACPI_" has been prepended to 6653many 6654(not all) of the constants, typedefs, and structs. 6655 6656The globals "DebugLevel" and "DebugLayer" have been renamed 6657"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 6658 6659All other globals within the subsystem are now prefixed with 6660"AcpiGbl_" Internal procedures within the subsystem are now 6661prefixed with "Acpi" (with only a few exceptions). The original 6662two-letter abbreviation for the subcomponent remains after 6663"Acpi" 6664- for example, CmCallocate became AcpiCmCallocate. 6665 6666Added a source code translation/conversion utility. Used to 6667generate the Linux source code, it can be modified to generate 6668other types of source as well. Can also be used to cleanup 6669existing source by removing extraneous spaces and blank lines. 6670Found in tools/acpisrc/* 6671 6672OsdUnMapMemory was renamed to OsdUnmapMemory and then 6673AcpiOsUnmapMemory. (UnMap became Unmap). 6674 6675A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 6676When set to one, this indicates that the caller wants to use the 6677semaphore as a mutex, not a counting semaphore. ACPI CA uses 6678both types. However, implementers of this call may want to use 6679different OS primitives depending on the type of semaphore 6680requested. For example, some operating systems provide separate 6681"mutex" and "semaphore" interfaces - where the mutex interface 6682is 6683much faster because it doesn't have all the overhead of a full 6684semaphore implementation. 6685 6686Fixed a deadlock problem where a method that accesses the PCI 6687address space can block forever if it is the first access to the 6688space. 6689 6690------------------------------------------- 6691Summary of changes for this label: 06_02_00 6692 6693Support for environments that cannot handle unaligned data 6694accesses (e.g. firmware and OS environments devoid of alignment 6695handler technology namely SAL/EFI and the IA-64 Linux kernel) 6696has 6697been added (via configurable macros) in these three areas: - 6698Transfer of data from the raw AML byte stream is done via byte 6699moves instead of word/dword/qword moves. - External objects 6700are 6701aligned within the user buffer, including package elements (sub- 6702objects). - Conversion of name strings to UINT32 Acpi Names is 6703now 6704done byte-wise. 6705 6706The Store operator was modified to mimic Microsoft's 6707implementation when storing to a Buffer Field. 6708 6709Added a check of the BM_STS bit before entering C3. 6710 6711The methods subdirectory has been obsoleted and removed. A new 6712file, cmeval.c subsumes the functionality. 6713 6714A 16-bit (DOS) version of AcpiExec has been developed. The 6715makefile is under the acpiexec directory. 6716