changes.txt revision 138287
1168515Sgshapiro---------------------------------------- 2168515Sgshapiro19 November 2004. Summary of changes for version 20041119: 3168515Sgshapiro 4132943Sgshapiro1) ACPI CA Core Subsystem: 5266692Sgshapiro 6132943SgshapiroFixed a problem in the internal ConvertToInteger routine where new 7168515Sgshapirointegers were not truncated to 32 bits for 32-bit ACPI tables. This 890792Sgshapiroroutine converts buffers and strings to integers. 9168515Sgshapiro 1090792SgshapiroImplemented support to store a value to an Index() on a String object. 11168515SgshapiroThis is an ACPI 2.0 feature that had not yet been implemented. 12168515Sgshapiro 1390792SgshapiroImplemented new behavior for storing objects to individual package 1490792Sgshapiroelements (via the Index() operator). The previous behavior was to invoke 1590792Sgshapirothe implicit conversion rules if an object was already present at the 1690792Sgshapiroindex. The new behavior is to simply delete any existing object and 1790792Sgshapirodirectly store the new object. Although the ACPI specification seems 1890792Sgshapirounclear on this subject, other ACPI implementations behave in this 19168515Sgshapiromanner. (This is the root of the AE_BAD_HEX_CONSTANT issue.) 2090792Sgshapiro 21168515SgshapiroModified the RSDP memory scan mechanism to support the extended checksum 2290792Sgshapirofor ACPI 2.0 (and above) RSDPs. Note that the search continues until a 2390792Sgshapirovalid RSDP signature is found with a valid checksum. 24168515Sgshapiro 25168515SgshapiroCode and Data Size: Current and previous core subsystem library sizes 26168515Sgshapiroare shown below. These are the code and data sizes for the acpica.lib 27168515Sgshapiroproduced by the Microsoft Visual C++ 6.0 compiler, and these values do 28168515Sgshapironot include any ACPI driver or OSPM code. The debug version of the code 29168515Sgshapiroincludes the debug output trace mechanism and has a much larger code and 30168515Sgshapirodata size. Note that these values will vary depending on the efficiency 31168515Sgshapiroof the compiler and the compiler options used during generation. 32168515Sgshapiro 33168515Sgshapiro Previous Release: 34168515Sgshapiro Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 3590792Sgshapiro Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 3690792Sgshapiro Current Release: 37168515Sgshapiro Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 38168515Sgshapiro Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 39168515Sgshapiro 40168515Sgshapiro 41168515Sgshapiro2) iASL Compiler/Disassembler: 42168515Sgshapiro 43168515SgshapiroFixed a missing semicolon in the aslcompiler.y file. 44168515Sgshapiro 45168515Sgshapiro---------------------------------------- 46168515Sgshapiro05 November 2004. Summary of changes for version 20041105: 47168515Sgshapiro 48168515Sgshapiro1) ACPI CA Core Subsystem: 49168515Sgshapiro 50168515SgshapiroImplemented support for FADT revision 2. This was an interim 51168515Sgshapirotable (between ACPI 1.0 and ACPI 2.0) that adds support for the 5290792SgshapiroFADT reset register. 5390792Sgshapiro 54168515SgshapiroImplemented optional support to allow uninitialized LocalX and 55168515SgshapiroArgX variables in a control method. The variables are 5690792Sgshapiroinitialized to an Integer object with a value of zero. This 57168515Sgshapirosupport is enabled by setting the AcpiGbl_EnableInterpreterSlack 58168515Sgshapiroflag to TRUE. 59168515Sgshapiro 60168515SgshapiroImplemented support for Integer objects for the SizeOf operator. 61168515SgshapiroEither 4 or 8 is returned, depending on the current integer size 62168515Sgshapiro(32-bit or 64-bit, depending on the parent table revision). 63168515Sgshapiro 6490792SgshapiroFixed a problem in the implementation of the SizeOf and 65168515SgshapiroObjectType operators where the operand was resolved to a value 66168515Sgshapirotoo early, causing incorrect return values for some objects. 6790792Sgshapiro 6890792SgshapiroFixed some possible memory leaks during exceptional conditions. 69168515Sgshapiro 70168515SgshapiroCode and Data Size: Current and previous core subsystem library 71168515Sgshapirosizes are shown below. These are the code and data sizes for the 72168515Sgshapiroacpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 73168515Sgshapirothese values do not include any ACPI driver or OSPM code. The 74168515Sgshapirodebug version of the code includes the debug output trace 75168515Sgshapiromechanism and has a much larger code and data size. Note that 76168515Sgshapirothese values will vary depending on the efficiency of the 77168515Sgshapirocompiler and the compiler options used during generation. 78168515Sgshapiro 79168515Sgshapiro Previous Release: 80168515Sgshapiro Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 81168515Sgshapiro Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 82168515Sgshapiro Current Release: 83168515Sgshapiro Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 84168515Sgshapiro Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 85168515Sgshapiro 86168515Sgshapiro 87168515Sgshapiro2) iASL Compiler/Disassembler: 88168515Sgshapiro 89168515SgshapiroImplemented support for all ACPI 3.0 reserved names and methods. 90168515Sgshapiro 91168515SgshapiroImplemented all ACPI 3.0 grammar elements in the front-end, 92168515Sgshapiroincluding support for semicolons. 93203004Sgshapiro 94203004SgshapiroImplemented the ACPI 3.0 Function() and ToUUID() macros 95203004Sgshapiro 96203004SgshapiroFixed a problem in the disassembler where a Scope() operator 97203004Sgshapirowould not be emitted properly if the target of the scope was in 98168515Sgshapiroanother table. 99168515Sgshapiro 100168515Sgshapiro---------------------------------------- 10190792Sgshapiro15 October 2004. Summary of changes for version 20041015: 10298121Sgshapiro 103168515SgshapiroNote: ACPI CA is currently undergoing an in-depth and complete 104168515Sgshapiroformal evaluation to test/verify the following areas. Other 10598121Sgshapirosuggestions are welcome. This will result in an increase in the 106168515Sgshapirofrequency of releases and the number of bug fixes in the next few 107168515Sgshapiromonths. 10898121Sgshapiro - Functional tests for all ASL/AML operators 10998121Sgshapiro - All implicit/explicit type conversions 11098121Sgshapiro - Bit fields and operation regions 11198121Sgshapiro - 64-bit math support and 32-bit-only "truncated" math support 11298121Sgshapiro - Exceptional conditions, both compiler and interpreter 11398121Sgshapiro - Dynamic object deletion and memory leaks 11498121Sgshapiro - ACPI 3.0 support when implemented 115168515Sgshapiro - External interfaces to the ACPI subsystem 116168515Sgshapiro 117168515Sgshapiro 11898121Sgshapiro1) ACPI CA Core Subsystem: 119168515Sgshapiro 12090792SgshapiroFixed two alignment issues on 64-bit platforms - within debug 121168515Sgshapirostatements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed 122168515Sgshapiroreferences to the Address field within the non-aligned ACPI 123261363Sgshapirogeneric address structure. 12490792Sgshapiro 125168515SgshapiroFixed a problem in the Increment and Decrement operators where 12690792Sgshapiroincorrect operand resolution could result in the inadvertent 127112810Sgshapiromodification of the original integer when the integer is passed 128168515Sgshapirointo another method as an argument and the arg is then 129168515Sgshapiroincremented/decremented. 130168515Sgshapiro 131Fixed a problem in the FromBCD operator where the upper 32-bits 132of a 64-bit BCD number were truncated during conversion. 133 134Fixed a problem in the ToDecimal operator where the length of the 135resulting string could be set incorrectly too long if the input 136operand was a Buffer object. 137 138Fixed a problem in the Logical operators (LLess, etc.) where a 139NULL byte (0) within a buffer would prematurely terminate a 140compare between buffer objects. 141 142Added a check for string overflow (>200 characters as per the 143ACPI specification) during the Concatenate operator with two 144string operands. 145 146Code and Data Size: Current and previous core subsystem library 147sizes are shown below. These are the code and data sizes for the 148acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 149these values do not include any ACPI driver or OSPM code. The 150debug version of the code includes the debug output trace 151mechanism and has a much larger code and data size. Note that 152these values will vary depending on the efficiency of the 153compiler and the compiler options used during generation. 154 155 Previous Release: 156 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 157 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 158 Current Release: 159 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 160 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 161 162 1632) iASL Compiler/Disassembler: 164 165Allow the use of the ObjectType operator on uninitialized Locals 166and Args (returns 0 as per the ACPI specification). 167 168Fixed a problem where the compiler would fault if there was a 169syntax error in the FieldName of all of the various 170CreateXXXField operators. 171 172Disallow the use of lower case letters within the EISAID macro, 173as per the ACPI specification. All EISAID strings must be of the 174form "UUUNNNN" Where U is an uppercase letter and N is a hex 175digit. 176 177 178---------------------------------------- 17906 October 2004. Summary of changes for version 20041006: 180 1811) ACPI CA Core Subsystem: 182 183Implemented support for the ACPI 3.0 Timer operator. This ASL 184function implements a 64-bit timer with 100 nanosecond 185granularity. 186 187Defined a new OSL interface, AcpiOsGetTimer. This interface is 188used to implement the ACPI 3.0 Timer operator. This allows the 189host OS to implement the timer with the best clock available. 190Also, it keeps the core subsystem out of the clock handling 191business, since the host OS (usually) performs this function. 192 193Fixed an alignment issue on 64-bit platforms. The 194HwLowLevelRead(Write) functions use a 64-bit address which is 195part of the packed ACPI Generic Address Structure. Since the 196structure is non-aligned, the alignment macros are now used to 197extract the address to a local variable before use. 198 199Fixed a problem where the ToInteger operator assumed all input 200strings were hexadecimal. The operator now handles both decimal 201strings and hex strings (prefixed with "0x"). 202 203Fixed a problem where the string length in the string object 204created as a result of the internal ConvertToString procedure 205could be incorrect. This potentially affected all implicit 206conversions and also the ToDecimalString and ToHexString 207operators. 208 209Fixed two problems in the ToString operator. If the length 210parameter was zero, an incorrect string object was created and 211the value of the input length parameter was inadvertently changed 212from zero to Ones. 213 214Fixed a problem where the optional ResourceSource string in the 215ExtendedIRQ resource macro was ignored. 216 217Simplified the interfaces to the internal division functions, 218reducing code size and complexity. 219 220Code and Data Size: Current and previous core subsystem library 221sizes are shown below. These are the code and data sizes for the 222acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 223these values do not include any ACPI driver or OSPM code. The 224debug version of the code includes the debug output trace 225mechanism and has a much larger code and data size. Note that 226these values will vary depending on the efficiency of the 227compiler and the compiler options used during generation. 228 229 Previous Release: 230 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 231 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 232 Current Release: 233 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 234 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 235 236 2372) iASL Compiler/Disassembler: 238 239Implemented support for the ACPI 3.0 Timer operator. 240 241Fixed a problem where the Default() operator was inadvertently 242ignored in a Switch/Case block. This was a problem in the 243translation of the Switch statement to If...Else pairs. 244 245Added support to allow a standalone Return operator, with no 246parentheses (or operands). 247 248Fixed a problem with code generation for the ElseIf operator 249where the translated Else...If parse tree was improperly 250constructed leading to the loss of some code. 251 252---------------------------------------- 25322 September 2004. Summary of changes for version 20040922: 254 2551) ACPI CA Core Subsystem: 256 257Fixed a problem with the implementation of the LNot() operator 258where "Ones" was not returned for the TRUE case. Changed the code 259to return Ones instead of (!Arg) which was usually 1. This change 260affects iASL constant folding for this operator also. 261 262Fixed a problem in AcpiUtInitializeBuffer where an existing 263buffer was not initialized properly -- Now zero the entire buffer 264in this case where the buffer already exists. 265 266Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 267Milliseconds) to simply (ACPI_INTEGER Milliseconds). This 268simplifies all related code considerably. This will require 269changes/updates to all OS interface layers (OSLs.) 270 271Implemented a new external interface, 272AcpiInstallExceptionHandler, to allow a system exception handler 273to be installed. This handler is invoked upon any run-time 274exception that occurs during control method execution. 275 276Added support for the DSDT in AcpiTbFindTable. This allows the 277DataTableRegion() operator to access the local copy of the DSDT. 278 279Code and Data Size: Current and previous core subsystem library 280sizes are shown below. These are the code and data sizes for the 281acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 282these values do not include any ACPI driver or OSPM code. The 283debug version of the code includes the debug output trace 284mechanism and has a much larger code and data size. Note that 285these values will vary depending on the efficiency of the 286compiler and the compiler options used during generation. 287 288 Previous Release: 289 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 290 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 291 Current Release: 292 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 293 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 294 295 2962) iASL Compiler/Disassembler: 297 298Fixed a problem with constant folding and the LNot operator. LNot 299was returning 1 in the TRUE case, not Ones as per the ACPI 300specification. This could result in the generation of an 301incorrect folded/reduced constant. 302 303End-Of-File is now allowed within a "//"-style comment. A parse 304error no longer occurs if such a comment is at the very end of 305the input ASL source file. 306 307Implemented the "-r" option to override the Revision in the table 308header. The initial use of this option will be to simplify the 309evaluation of the AML interpreter by allowing a single ASL source 310module to be compiled for either 32-bit or 64-bit integers. 311 312 313---------------------------------------- 31427 August 2004. Summary of changes for version 20040827: 315 3161) ACPI CA Core Subsystem: 317 318- Implemented support for implicit object conversion in the non- 319numeric logical operators (LEqual, LGreater, LGreaterEqual, 320LLess, LLessEqual, and LNotEqual.) Any combination of 321Integers/Strings/Buffers may now be used; the second operand is 322implicitly converted on the fly to match the type of the first 323operand. For example: 324 325 LEqual (Source1, Source2) 326 327Source1 and Source2 must each evaluate to an integer, a string, 328or a buffer. The data type of Source1 dictates the required type 329of Source2. Source2 is implicitly converted if necessary to match 330the type of Source1. 331 332- Updated and corrected the behavior of the string conversion 333support. The rules concerning conversion of buffers to strings 334(according to the ACPI specification) are as follows: 335 336ToDecimalString - explicit byte-wise conversion of buffer to 337string of decimal values (0-255) separated by commas. ToHexString 338- explicit byte-wise conversion of buffer to string of hex values 339(0-FF) separated by commas. ToString - explicit byte-wise 340conversion of buffer to string. Byte-by-byte copy with no 341transform except NULL terminated. Any other implicit buffer-to- 342string conversion - byte-wise conversion of buffer to string of 343hex values (0-FF) separated by spaces. 344 345- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 346 347- Fixed a problem in AcpiNsGetPathnameLength where the returned 348length was one byte too short in the case of a node in the root 349scope. This could cause a fault during debug output. 350 351- Code and Data Size: Current and previous core subsystem library 352sizes are shown below. These are the code and data sizes for the 353acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 354these values do not include any ACPI driver or OSPM code. The 355debug version of the code includes the debug output trace 356mechanism and has a much larger code and data size. Note that 357these values will vary depending on the efficiency of the 358compiler and the compiler options used during generation. 359 360 Previous Release: 361 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 362 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 363 Current Release: 364 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 365 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 366 367 3682) iASL Compiler/Disassembler: 369 370- Fixed a Linux generation error. 371 372 373---------------------------------------- 37416 August 2004. Summary of changes for version 20040816: 375 3761) ACPI CA Core Subsystem: 377 378Designed and implemented support within the AML interpreter for 379the so-called "implicit return". This support returns the result 380of the last ASL operation within a control method, in the absence 381of an explicit Return() operator. A few machines depend on this 382behavior, even though it is not explicitly supported by the ASL 383language. It is optional support that can be enabled at runtime 384via the AcpiGbl_EnableInterpeterSlack flag. 385 386Removed support for the PCI_Config address space from the 387internal low level hardware interfaces (AcpiHwLowLevelRead and 388AcpiHwLowLevelWrite). This support was not used internally, and 389would not work correctly anyway because the PCI bus number and 390segment number were not supported. There are separate interfaces 391for PCI configuration space access because of the unique 392interface. 393 394Code and Data Size: Current and previous core subsystem library 395sizes are shown below. These are the code and data sizes for the 396acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 397these values do not include any ACPI driver or OSPM code. The 398debug version of the code includes the debug output trace 399mechanism and has a much larger code and data size. Note that 400these values will vary depending on the efficiency of the 401compiler and the compiler options used during generation. 402 403 Previous Release: 404 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 405 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 406 Current Release: 407 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 408 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 409 410 4112) iASL Compiler/Disassembler: 412 413Fixed a problem where constants in ASL expressions at the root 414level (not within a control method) could be inadvertently 415truncated during code generation. This problem was introduced in 416the 20040715 release. 417 418 419---------------------------------------- 42015 July 2004. Summary of changes for version 20040715: 421 4221) ACPI CA Core Subsystem: 423 424Restructured the internal HW GPE interfaces to pass/track the 425current state of interrupts (enabled/disabled) in order to avoid 426possible deadlock and increase flexibility of the interfaces. 427 428Implemented a "lexicographical compare" for String and Buffer 429objects within the logical operators -- LGreater, LLess, 430LGreaterEqual, and LLessEqual -- as per further clarification to 431the ACPI specification. Behavior is similar to C library 432"strcmp". 433 434Completed a major reduction in CPU stack use for the 435AcpiGetFirmwareTable external function. In the 32-bit non-debug 436case, the stack use has been reduced from 168 bytes to 32 bytes. 437 438Deployed a new run-time configuration flag, 439AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML 440interpreter to forgive certain bad AML constructs. Default 441setting is FALSE. 442 443Implemented the first use of AcpiGbl_EnableInterpreterSlack in 444the Field IO support code. If enabled, it allows field access to 445go beyond the end of a region definition if the field is within 446the region length rounded up to the next access width boundary (a 447common coding error.) 448 449Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and 450OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency 451with other ACPI symbols. Also, these symbols are lowercased by 452the latest version of the AcpiSrc tool. 453 454The prototypes for the PCI interfaces in acpiosxf.h have been 455updated to rename "Register" to simply "Reg" to prevent certain 456compilers from complaining. 457 458Code and Data Size: Current and previous core subsystem library 459sizes are shown below. These are the code and data sizes for the 460acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 461these values do not include any ACPI driver or OSPM code. The 462debug version of the code includes the debug output trace 463mechanism and has a much larger code and data size. Note that 464these values will vary depending on the efficiency of the 465compiler and the compiler options used during generation. 466 467 Previous Release: 468 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 469 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 470 Current Release: 471 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 472 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 473 474 4752) iASL Compiler/Disassembler: 476 477Implemented full support for Package objects within the Case() 478operator. Note: The Break() operator is currently not supported 479within Case blocks (TermLists) as there is some question about 480backward compatibility with ACPI 1.0 interpreters. 481 482Fixed a problem where complex terms were not supported properly 483within the Switch() operator. 484 485Eliminated extraneous warning for compiler-emitted reserved names 486of the form "_T_x". (Used in Switch/Case operators.) 487 488Eliminated optimization messages for "_T_x" objects and small 489constants within the DefinitionBlock operator. 490 491 492---------------------------------------- 49315 June 2004. Summary of changes for version 20040615: 494 4951) ACPI CA Core Subsystem: 496 497Implemented support for Buffer and String objects (as per ACPI 4982.0) for the following ASL operators: LEqual, LGreater, LLess, 499LGreaterEqual, and LLessEqual. 500 501All directory names in the entire source package are lower case, 502as they were in earlier releases. 503 504Implemented "Disassemble" command in the AML debugger that will 505disassemble a single control method. 506 507Code and Data Size: Current and previous core subsystem library 508sizes are shown below. These are the code and data sizes for the 509acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 510these values do not include any ACPI driver or OSPM code. The 511debug version of the code includes the debug output trace 512mechanism and has a much larger code and data size. Note that 513these values will vary depending on the efficiency of the 514compiler and the compiler options used during generation. 515 516 Previous Release: 517 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 518 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 519 Current Release: 520 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 521 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 522 523 5242) iASL Compiler/Disassembler: 525 526Implemented support for Buffer and String objects (as per ACPI 5272.0) for the following ASL operators: LEqual, LGreater, LLess, 528LGreaterEqual, and LLessEqual. 529 530All directory names in the entire source package are lower case, 531as they were in earlier releases. 532 533Fixed a fault when using the -g or -d<nofilename> options if the 534FADT was not found. 535 536Fixed an issue with the Windows version of the compiler where 537later versions of Windows place the FADT in the registry under 538the name "FADT" and not "FACP" as earlier versions did. This 539applies when using the -g or -d<nofilename> options. The 540compiler now looks for both strings as necessary. 541 542Fixed a problem with compiler namepath optimization where a 543namepath within the Scope() operator could not be optimized if 544the namepath was a subpath of the current scope path. 545 546---------------------------------------- 54727 May 2004. Summary of changes for version 20040527: 548 5491) ACPI CA Core Subsystem: 550 551Completed a new design and implementation for EBDA (Extended BIOS 552Data Area) support in the RSDP scan code. The original code 553improperly scanned for the EBDA by simply scanning from memory 554location 0 to 0x400. The correct method is to first obtain the 555EBDA pointer from within the BIOS data area, then scan 1K of 556memory starting at the EBDA pointer. There appear to be few if 557any machines that place the RSDP in the EBDA, however. 558 559Integrated a fix for a possible fault during evaluation of 560BufferField arguments. Obsolete code that was causing the 561problem was removed. 562 563Found and fixed a problem in the Field Support Code where data 564could be corrupted on a bit field read that starts on an aligned 565boundary but does not end on an aligned boundary. Merged the 566read/write "datum length" calculation code into a common 567procedure. 568 569Rolled in a couple of changes to the FreeBSD-specific header. 570 571Code and Data Size: Current and previous core subsystem library 572sizes are shown below. These are the code and data sizes for the 573acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 574these values do not include any ACPI driver or OSPM code. The 575debug version of the code includes the debug output trace 576mechanism and has a much larger code and data size. Note that 577these values will vary depending on the efficiency of the 578compiler and the compiler options used during generation. 579 580 Previous Release: 581 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 582 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 583 Current Release: 584 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 585 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 586 587 5882) iASL Compiler/Disassembler: 589 590Fixed a generation warning produced by some overly-verbose 591compilers for a 64-bit constant. 592 593---------------------------------------- 59414 May 2004. Summary of changes for version 20040514: 595 5961) ACPI CA Core Subsystem: 597 598Fixed a problem where hardware GPE enable bits sometimes not set 599properly during and after GPE method execution. Result of 04/27 600changes. 601 602Removed extra "clear all GPEs" when sleeping/waking. 603 604Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the 605single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the 606functions above to the new AcpiEv* calls as appropriate. 607 608ACPI_OS_NAME was removed from the OS-specific headers. The 609default name is now "Microsoft Windows NT" for maximum 610compatibility. However this can be changed by modifying the 611acconfig.h file. 612 613Allow a single invocation of AcpiInstallNotifyHandler for a 614handler that traps both types of notifies (System, Device). Use 615ACPI_ALL_NOTIFY flag. 616 617Run _INI methods on ThermalZone objects. This is against the 618ACPI specification, but there is apparently ASL code in the field 619that has these _INI methods, and apparently "other" AML 620interpreters execute them. 621 622Performed a full 16/32/64 bit lint that resulted in some small 623changes. 624 625Added a sleep simulation command to the AML debugger to test 626sleep code. 627 628Code and Data Size: Current and previous core subsystem library 629sizes are shown below. These are the code and data sizes for the 630acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 631these values do not include any ACPI driver or OSPM code. The 632debug version of the code includes the debug output trace 633mechanism and has a much larger code and data size. Note that 634these values will vary depending on the efficiency of the 635compiler and the compiler options used during generation. 636 637 Previous Release: 638 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 639 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 640 Current Release: 641 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 642 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 643 644---------------------------------------- 64527 April 2004. Summary of changes for version 20040427: 646 6471) ACPI CA Core Subsystem: 648 649Completed a major overhaul of the GPE handling within ACPI CA. 650There are now three types of GPEs: wake-only, runtime-only, and 651combination wake/run. The only GPEs allowed to be combination 652wake/run are for button-style devices such as a control-method 653power button, control-method sleep button, or a notebook lid 654switch. GPEs that have an _Lxx or _Exx method and are not 655referenced by any _PRW methods are marked for "runtime" and 656hardware enabled. Any GPE that is referenced by a _PRW method is 657marked for "wake" (and disabled at runtime). However, at sleep 658time, only those GPEs that have been specifically enabled for 659wake via the AcpiEnableGpe interface will actually be hardware 660enabled. 661 662A new external interface has been added, AcpiSetGpeType(), that 663is meant to be used by device drivers to force a GPE to a 664particular type. It will be especially useful for the drivers 665for the button devices mentioned above. 666 667Completed restructuring of the ACPI CA initialization sequence so 668that default operation region handlers are installed before GPEs 669are initialized and the _PRW methods are executed. This will 670prevent errors when the _PRW methods attempt to access system 671memory or I/O space. 672 673GPE enable/disable no longer reads the GPE enable register. We 674now keep the enable info for runtime and wake separate and in the 675GPE_EVENT_INFO. We thus no longer depend on the hardware to 676maintain these bits. 677 678Always clear the wake status and fixed/GPE status bits before 679sleep, even for state S5. 680 681Improved the AML debugger output for displaying the GPE blocks 682and their current status. 683 684Added new strings for the _OSI method, of the form "Windows 2001 685SPx" where x = 0,1,2,3,4. 686 687Fixed a problem where the physical address was incorrectly 688calculated when the Load() operator was used to directly load 689from an Operation Region (vs. loading from a Field object.) Also 690added check for minimum table length for this case. 691 692Fix for multiple mutex acquisition. Restore original thread 693SyncLevel on mutex release. 694 695Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 696consistency with the other fields returned. 697 698Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one 699such structure for each GPE in the system, so the size of this 700structure is important. 701 702CPU stack requirement reduction: Cleaned up the method execution 703and object evaluation paths so that now a parameter structure is 704passed, instead of copying the various method parameters over and 705over again. 706 707In evregion.c: Correctly exit and reenter the interpreter region 708if and only if dispatching an operation region request to a user- 709installed handler. Do not exit/reenter when dispatching to a 710default handler (e.g., default system memory or I/O handlers) 711 712 713Notes for updating drivers for the new GPE support. The 714following changes must be made to ACPI-related device drivers 715that are attached to one or more GPEs: (This information will be 716added to the ACPI CA Programmer Reference.) 717 7181) AcpiInstallGpeHandler no longer automatically enables the GPE, 719you must explicitly call AcpiEnableGpe. 7202) There is a new interface called AcpiSetGpeType. This should be 721called before enabling the GPE. Also, this interface will 722automatically disable the GPE if it is currently enabled. 7233) AcpiEnableGpe no longer supports a GPE type flag. 724 725Specific drivers that must be changed: 7261) EC driver: 727 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 728AeGpeHandler, NULL); 729 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 730 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 731 7322) Button Drivers (Power, Lid, Sleep): 733Run _PRW method under parent device 734If _PRW exists: /* This is a control-method button */ 735 Extract GPE number and possibly GpeDevice 736 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 737 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 738 739For all other devices that have _PRWs, we automatically set the 740GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically 741(wake) enabled. This must be done on a selective basis, usually 742requiring some kind of user app to allow the user to pick the 743wake devices. 744 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: 77.0K Code, 11.4K Data, 88.4K Total 757 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 758 Current Release: 759 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 760 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 761 762 763 764---------------------------------------- 76502 April 2004. Summary of changes for version 20040402: 766 7671) ACPI CA Core Subsystem: 768 769Fixed an interpreter problem where an indirect store through an 770ArgX parameter was incorrectly applying the "implicit conversion 771rules" during the store. From the ACPI specification: "If the 772target is a method local or argument (LocalX or ArgX), no 773conversion is performed and the result is stored directly to the 774target". The new behavior is to disable implicit conversion 775during ALL stores to an ArgX. 776 777Changed the behavior of the _PRW method scan to ignore any and 778all errors returned by a given _PRW. This prevents the scan from 779aborting from the failure of any single _PRW. 780 781Moved the runtime configuration parameters from the global init 782procedure to static variables in acglobal.h. This will allow the 783host to override the default values easily. 784 785Code and Data Size: Current and previous core subsystem library 786sizes are shown below. These are the code and data sizes for the 787acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 788these values do not include any ACPI driver or OSPM code. The 789debug version of the code includes the debug output trace 790mechanism and has a much larger code and data size. Note that 791these values will vary depending on the efficiency of the 792compiler and the compiler options used during generation. 793 794 Previous Release: 795 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 796 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 797 Current Release: 798 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 799 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 800 801 8022) iASL Compiler/Disassembler: 803 804iASL now fully disassembles SSDTs. However, External() 805statements are not generated automatically for unresolved symbols 806at this time. This is a planned feature for future 807implementation. 808 809Fixed a scoping problem in the disassembler that occurs when the 810type of the target of a Scope() operator is overridden. This 811problem caused an incorrectly nested internal namespace to be 812constructed. 813 814Any warnings or errors that are emitted during disassembly are 815now commented out automatically so that the resulting file can be 816recompiled without any hand editing. 817 818---------------------------------------- 81926 March 2004. Summary of changes for version 20040326: 820 8211) ACPI CA Core Subsystem: 822 823Implemented support for "wake" GPEs via interaction between GPEs 824and the _PRW methods. Every GPE that is pointed to by one or 825more _PRWs is identified as a WAKE GPE and by default will no 826longer be enabled at runtime. Previously, we were blindly 827enabling all GPEs with a corresponding _Lxx or _Exx method - but 828most of these turn out to be WAKE GPEs anyway. We believe this 829has been the cause of thousands of "spurious" GPEs on some 830systems. 831 832This new GPE behavior is can be reverted to the original behavior 833(enable ALL GPEs at runtime) via a runtime flag. 834 835Fixed a problem where aliased control methods could not access 836objects properly. The proper scope within the namespace was not 837initialized (transferred to the target of the aliased method) 838before executing the target method. 839 840Fixed a potential race condition on internal object deletion on 841the return object in AcpiEvaluateObject. 842 843Integrated a fix for resource descriptors where both _MEM and 844_MTP were being extracted instead of just _MEM. (i.e. bitmask 845was incorrectly too wide, 0x0F instead of 0x03.) 846 847Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 848preventing a fault in some cases. 849 850Updated Notify() values for debug statements in evmisc.c 851 852Return proper status from AcpiUtMutexInitialize, not just simply 853AE_OK. 854 855Code and Data Size: Current and previous core subsystem library 856sizes are shown below. These are the code and data sizes for the 857acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 858these values do not include any ACPI driver or OSPM code. The 859debug version of the code includes the debug output trace 860mechanism and has a much larger code and data size. Note that 861these values will vary depending on the efficiency of the 862compiler and the compiler options used during generation. 863 864 Previous Release: 865 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 866 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 867 Current Release: 868 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 869 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 870 871---------------------------------------- 87211 March 2004. Summary of changes for version 20040311: 873 8741) ACPI CA Core Subsystem: 875 876Fixed a problem where errors occurring during the parse phase of 877control method execution did not abort cleanly. For example, 878objects created and installed in the namespace were not deleted. 879This caused all subsequent invocations of the method to return 880the AE_ALREADY_EXISTS exception. 881 882Implemented a mechanism to force a control method to "Serialized" 883execution if the method attempts to create namespace objects. 884(The root of the AE_ALREADY_EXISTS problem.) 885 886Implemented support for the predefined _OSI "internal" control 887method. Initial supported strings are "Linux", "Windows 2000", 888"Windows 2001", and "Windows 2001.1", and can be easily upgraded 889for new strings as necessary. This feature will allow "other" 890operating systems to execute the fully tested, "Windows" code 891path through the ASL code 892 893Global Lock Support: Now allows multiple acquires and releases 894with any internal thread. Removed concept of "owning thread" for 895this special mutex. 896 897Fixed two functions that were inappropriately declaring large 898objects on the CPU stack: PsParseLoop, NsEvaluateRelative. 899Reduces the stack usage during method execution considerably. 900 901Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where 902the S4Bios_f field was incorrectly defined as UINT32 instead of 903UINT32_BIT. 904 905Fixed a problem where AcpiEvGpeDetect would fault if there were 906no GPEs defined on the machine. 907 908Implemented two runtime options: One to force all control method 909execution to "Serialized" to mimic Windows behavior, another to 910disable _OSI support if it causes problems on a given machine. 911 912Code and Data Size: Current and previous core subsystem library 913sizes are shown below. These are the code and data sizes for the 914acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 915these values do not include any ACPI driver or OSPM code. The 916debug version of the code includes the debug output trace 917mechanism and has a much larger code and data size. Note that 918these values will vary depending on the efficiency of the 919compiler and the compiler options used during generation. 920 921 Previous Release: 922 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 923 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 924 Current Release: 925 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 926 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 927 9282) iASL Compiler/Disassembler: 929 930Fixed an array size problem for FreeBSD that would cause the 931compiler to fault. 932 933---------------------------------------- 93420 February 2004. Summary of changes for version 20040220: 935 9361) ACPI CA Core Subsystem: 937 938Implemented execution of _SxD methods for Device objects in the 939GetObjectInfo interface. 940 941Fixed calls to _SST method to pass the correct arguments. 942 943Added a call to _SST on wake to restore to "working" state. 944 945Check for End-Of-Buffer failure case in the WalkResources 946interface. 947 948Integrated fix for 64-bit alignment issue in acglobal.h by moving 949two structures to the beginning of the file. 950 951After wake, clear GPE status register(s) before enabling GPEs. 952 953After wake, clear/enable power button. (Perhaps we should 954clear/enable all fixed events upon wake.) 955 956Fixed a couple of possible memory leaks in the Namespace manager. 957 958Integrated latest acnetbsd.h file. 959 960---------------------------------------- 96111 February 2004. Summary of changes for version 20040211: 962 9631) ACPI CA Core Subsystem: 964 965Completed investigation and implementation of the call-by- 966reference mechanism for control method arguments. 967 968Fixed a problem where a store of an object into an indexed 969package could fail if the store occurs within a different method 970than the method that created the package. 971 972Fixed a problem where the ToDecimal operator could return 973incorrect results. 974 975Fixed a problem where the CopyObject operator could fail on some 976of the more obscure objects (e.g., Reference objects.) 977 978Improved the output of the Debug object to display buffer, 979package, and index objects. 980 981Fixed a problem where constructs of the form "RefOf (ArgX)" did 982not return the expected result. 983 984Added permanent ACPI_REPORT_ERROR macros for all instances of the 985ACPI_AML_INTERNAL exception. 986 987Integrated latest version of acfreebsd.h 988 989---------------------------------------- 99016 January 2004. Summary of changes for version 20040116: 991 992The purpose of this release is primarily to update the copyright 993years in each module, thus causing a huge number of diffs. There 994are a few small functional changes, however. 995 9961) ACPI CA Core Subsystem: 997 998Improved error messages when there is a problem finding one or 999more of the required base ACPI tables 1000 1001Reintroduced the definition of APIC_HEADER in actbl.h 1002 1003Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 1004 1005Removed extraneous reference to NewObj in dsmthdat.c 1006 10072) iASL compiler 1008 1009Fixed a problem introduced in December that disabled the correct 1010disassembly of Resource Templates 1011 1012 1013---------------------------------------- 101403 December 2003. Summary of changes for version 20031203: 1015 10161) ACPI CA Core Subsystem: 1017 1018Changed the initialization of Operation Regions during subsystem 1019init to perform two entire walks of the ACPI namespace; The first 1020to initialize the regions themselves, the second to execute the 1021_REG methods. This fixed some interdependencies across _REG 1022methods found on some machines. 1023 1024Fixed a problem where a Store(Local0, Local1) could simply update 1025the object reference count, and not create a new copy of the 1026object if the Local1 is uninitialized. 1027 1028Implemented support for the _SST reserved method during sleep 1029transitions. 1030 1031Implemented support to clear the SLP_TYP and SLP_EN bits when 1032waking up, this is apparently required by some machines. 1033 1034When sleeping, clear the wake status only if SleepState is not 1035S5. 1036 1037Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 1038pointer arithmetic advanced a string pointer too far. 1039 1040Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 1041could be returned if the requested table has not been loaded. 1042 1043Within the support for IRQ resources, restructured the handling 1044of 1045the active and edge/level bits. 1046 1047Fixed a few problems in AcpiPsxExecute() where memory could be 1048leaked under certain error conditions. 1049 1050Improved error messages for the cases where the ACPI mode could 1051not be entered. 1052 1053Code and Data Size: Current and previous core subsystem library 1054sizes are shown below. These are the code and data sizes for the 1055acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1056these values do not include any ACPI driver or OSPM code. The 1057debug version of the code includes the debug output trace 1058mechanism and has a much larger code and data size. Note that 1059these values will vary depending on the efficiency of the 1060compiler 1061and the compiler options used during generation. 1062 1063 Previous Release (20031029): 1064 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 1065 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 1066 Current Release: 1067 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 1068 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 1069 10702) iASL Compiler/Disassembler: 1071 1072Implemented a fix for the iASL disassembler where a bad index was 1073generated. This was most noticeable on 64-bit platforms 1074 1075 1076---------------------------------------- 107729 October 2003. Summary of changes for version 20031029: 1078 10791) ACPI CA Core Subsystem: 1080 1081Fixed a problem where a level-triggered GPE with an associated 1082_Lxx control method was incorrectly cleared twice. 1083 1084Fixed a problem with the Field support code where an access can 1085occur beyond the end-of-region if the field is non-aligned but 1086extends to the very end of the parent region (resulted in an 1087AE_AML_REGION_LIMIT exception.) 1088 1089Fixed a problem with ACPI Fixed Events where an RT Clock handler 1090would not get invoked on an RTC event. The RTC event bitmasks 1091for 1092the PM1 registers were not being initialized properly. 1093 1094Implemented support for executing _STA and _INI methods for 1095Processor objects. Although this is currently not part of the 1096ACPI specification, there is existing ASL code that depends on 1097the 1098init-time execution of these methods. 1099 1100Implemented and deployed a GetDescriptorName function to decode 1101the various types of internal descriptors. Guards against null 1102descriptors during debug output also. 1103 1104Implemented and deployed a GetNodeName function to extract the 4- 1105character namespace node name. This function simplifies the 1106debug 1107and error output, as well as guarding against null pointers 1108during 1109output. 1110 1111Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 1112simplify the debug and error output of 64-bit integers. This 1113macro replaces the HIDWORD and LODWORD macros for dumping these 1114integers. 1115 1116Updated the implementation of the Stall() operator to only call 1117AcpiOsStall(), and also return an error if the operand is larger 1118than 255. This preserves the required behavior of not 1119relinquishing the processor, as would happen if AcpiOsSleep() was 1120called for "long stalls". 1121 1122Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 1123initialized are now treated as NOOPs. 1124 1125Cleaned up a handful of warnings during 64-bit generation. 1126 1127Fixed a reported error where and incorrect GPE number was passed 1128to the GPE dispatch handler. This value is only used for error 1129output, however. Used this opportunity to clean up and 1130streamline 1131the GPE dispatch code. 1132 1133Code and Data Size: Current and previous core subsystem library 1134sizes are shown below. These are the code and data sizes for the 1135acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1136these values do not include any ACPI driver or OSPM code. The 1137debug version of the code includes the debug output trace 1138mechanism and has a much larger code and data size. Note that 1139these values will vary depending on the efficiency of the 1140compiler 1141and the compiler options used during generation. 1142 1143 Previous Release (20031002): 1144 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 1145 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 1146 Current Release: 1147 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 1148 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 1149 1150 11512) iASL Compiler/Disassembler: 1152 1153Updated the iASL compiler to return an error if the operand to 1154the 1155Stall() operator is larger than 255. 1156 1157 1158---------------------------------------- 115902 October 2003. Summary of changes for version 20031002: 1160 1161 11621) ACPI CA Core Subsystem: 1163 1164Fixed a problem with Index Fields where the index was not 1165incremented for fields that require multiple writes to the 1166index/data registers (Fields that are wider than the data 1167register.) 1168 1169Fixed a problem with all Field objects where a write could go 1170beyond the end-of-field if the field was larger than the access 1171granularity and therefore required multiple writes to complete 1172the 1173request. An extra write beyond the end of the field could happen 1174inadvertently. 1175 1176Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 1177would incorrectly be returned if the width of the Data Register 1178was larger than the specified field access width. 1179 1180Completed fixes for LoadTable() and Unload() and verified their 1181operation. Implemented full support for the "DdbHandle" object 1182throughout the ACPI CA subsystem. 1183 1184Implemented full support for the MADT and ECDT tables in the ACPI 1185CA header files. Even though these tables are not directly 1186consumed by ACPI CA, the header definitions are useful for ACPI 1187device drivers. 1188 1189Integrated resource descriptor fixes posted to the Linux ACPI 1190list. This included checks for minimum descriptor length, and 1191support for trailing NULL strings within descriptors that have 1192optional string elements. 1193 1194Code and Data Size: Current and previous core subsystem library 1195sizes are shown below. These are the code and data sizes for the 1196acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1197these values do not include any ACPI driver or OSPM code. The 1198debug version of the code includes the debug output trace 1199mechanism and has a much larger code and data size. Note that 1200these values will vary depending on the efficiency of the 1201compiler 1202and the compiler options used during generation. 1203 1204 Previous Release (20030918): 1205 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 1206 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 1207 Current Release: 1208 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 1209 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 1210 1211 12122) iASL Compiler: 1213 1214Implemented detection of non-ASCII characters within the input 1215source ASL file. This catches attempts to compile binary (AML) 1216files early in the compile, with an informative error message. 1217 1218Fixed a problem where the disassembler would fault if the output 1219filename could not be generated or if the output file could not 1220be 1221opened. 1222 1223---------------------------------------- 122418 September 2003. Summary of changes for version 20030918: 1225 1226 12271) ACPI CA Core Subsystem: 1228 1229Found and fixed a longstanding problem with the late execution of 1230the various deferred AML opcodes (such as Operation Regions, 1231Buffer Fields, Buffers, and Packages). If the name string 1232specified for the name of the new object placed the object in a 1233scope other than the current scope, the initialization/execution 1234of the opcode failed. The solution to this problem was to 1235implement a mechanism where the late execution of such opcodes 1236does not attempt to lookup/create the name a second time in an 1237incorrect scope. This fixes the "region size computed 1238incorrectly" problem. 1239 1240Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing 1241a 1242Global Lock AE_BAD_PARAMETER error. 1243 1244Fixed several 64-bit issues with prototypes, casting and data 1245types. 1246 1247Removed duplicate prototype from acdisasm.h 1248 1249Fixed an issue involving EC Operation Region Detach (Shaohua Li) 1250 1251Code and Data Size: Current and previous core subsystem library 1252sizes are shown below. These are the code and data sizes for the 1253acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1254these values do not include any ACPI driver or OSPM code. The 1255debug version of the code includes the debug output trace 1256mechanism and has a much larger code and data size. Note that 1257these values will vary depending on the efficiency of the 1258compiler 1259and the compiler options used during generation. 1260 1261 Previous Release: 1262 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 1263 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 1264 Current Release: 1265 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 1266 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 1267 1268 12692) Linux: 1270 1271Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 1272correct sleep time in seconds. 1273 1274---------------------------------------- 127514 July 2003. Summary of changes for version 20030619: 1276 12771) ACPI CA Core Subsystem: 1278 1279Parse SSDTs in order discovered, as opposed to reverse order 1280(Hrvoje Habjanic) 1281 1282Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 1283Klausner, 1284 Nate Lawson) 1285 1286 12872) Linux: 1288 1289Dynamically allocate SDT list (suggested by Andi Kleen) 1290 1291proc function return value cleanups (Andi Kleen) 1292 1293Correctly handle NMI watchdog during long stalls (Andrew Morton) 1294 1295Make it so acpismp=force works (reported by Andrew Morton) 1296 1297 1298---------------------------------------- 129919 June 2003. Summary of changes for version 20030619: 1300 13011) ACPI CA Core Subsystem: 1302 1303Fix To/FromBCD, eliminating the need for an arch-specific 1304#define. 1305 1306Do not acquire a semaphore in the S5 shutdown path. 1307 1308Fix ex_digits_needed for 0. (Takayoshi Kochi) 1309 1310Fix sleep/stall code reversal. (Andi Kleen) 1311 1312Revert a change having to do with control method calling 1313semantics. 1314 13152) Linux: 1316 1317acpiphp update (Takayoshi Kochi) 1318 1319Export acpi_disabled for sonypi (Stelian Pop) 1320 1321Mention acpismp=force in config help 1322 1323Re-add acpitable.c and acpismp=force. This improves backwards 1324compatibility and also cleans up the code to a significant 1325degree. 1326 1327Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 1328 1329---------------------------------------- 133022 May 2003. Summary of changes for version 20030522: 1331 13321) ACPI CA Core Subsystem: 1333 1334Found and fixed a reported problem where an AE_NOT_FOUND error 1335occurred occasionally during _BST evaluation. This turned out to 1336be an Owner ID allocation issue where a called method did not get 1337a new ID assigned to it. Eventually, (after 64k calls), the 1338Owner 1339ID UINT16 would wraparound so that the ID would be the same as 1340the 1341caller's and the called method would delete the caller's 1342namespace. 1343 1344Implemented extended error reporting for control methods that are 1345aborted due to a run-time exception. Output includes the exact 1346AML instruction that caused the method abort, a dump of the 1347method 1348locals and arguments at the time of the abort, and a trace of all 1349nested control method calls. 1350 1351Modified the interpreter to allow the creation of buffers of zero 1352length from the AML code. Implemented new code to ensure that no 1353attempt is made to actually allocate a memory buffer (of length 1354zero) - instead, a simple buffer object with a NULL buffer 1355pointer 1356and length zero is created. A warning is no longer issued when 1357the AML attempts to create a zero-length buffer. 1358 1359Implemented a workaround for the "leading asterisk issue" in 1360_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 1361asterisk is automatically removed if present in any HID, UID, or 1362CID strings. The iASL compiler will still flag this asterisk as 1363an error, however. 1364 1365Implemented full support for _CID methods that return a package 1366of 1367multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() 1368interface 1369now additionally returns a device _CID list if present. This 1370required a change to the external interface in order to pass an 1371ACPI_BUFFER object as a parameter since the _CID list is of 1372variable length. 1373 1374Fixed a problem with the new AE_SAME_HANDLER exception where 1375handler initialization code did not know about this exception. 1376 1377Code and Data Size: Current and previous core subsystem library 1378sizes are shown below. These are the code and data sizes for the 1379acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1380these values do not include any ACPI driver or OSPM code. The 1381debug version of the code includes the debug output trace 1382mechanism and has a much larger code and data size. Note that 1383these values will vary depending on the efficiency of the 1384compiler 1385and the compiler options used during generation. 1386 1387 Previous Release (20030509): 1388 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 1389 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 1390 Current Release: 1391 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 1392 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 1393 1394 13952) Linux: 1396 1397Fixed a bug in which we would reinitialize the ACPI interrupt 1398after it was already working, thus disabling all ACPI and the 1399IRQs 1400for any other device sharing the interrupt. (Thanks to Stian 1401Jordet) 1402 1403Toshiba driver update (John Belmonte) 1404 1405Return only 0 or 1 for our interrupt handler status (Andrew 1406Morton) 1407 1408 14093) iASL Compiler: 1410 1411Fixed a reported problem where multiple (nested) ElseIf() 1412statements were not handled correctly by the compiler, resulting 1413in incorrect warnings and incorrect AML code. This was a problem 1414in both the ASL parser and the code generator. 1415 1416 14174) Documentation: 1418 1419Added changes to existing interfaces, new exception codes, and 1420new 1421text concerning reference count object management versus garbage 1422collection. 1423 1424---------------------------------------- 142509 May 2003. Summary of changes for version 20030509. 1426 1427 14281) ACPI CA Core Subsystem: 1429 1430Changed the subsystem initialization sequence to hold off 1431installation of address space handlers until the hardware has 1432been 1433initialized and the system has entered ACPI mode. This is 1434because 1435the installation of space handlers can cause _REG methods to be 1436run. Previously, the _REG methods could potentially be run 1437before 1438ACPI mode was enabled. 1439 1440Fixed some memory leak issues related to address space handler 1441and 1442notify handler installation. There were some problems with the 1443reference count mechanism caused by the fact that the handler 1444objects are shared across several namespace objects. 1445 1446Fixed a reported problem where reference counts within the 1447namespace were not properly updated when named objects created by 1448method execution were deleted. 1449 1450Fixed a reported problem where multiple SSDTs caused a deletion 1451issue during subsystem termination. Restructured the table data 1452structures to simplify the linked lists and the related code. 1453 1454Fixed a problem where the table ID associated with secondary 1455tables (SSDTs) was not being propagated into the namespace 1456objects 1457created by those tables. This would only present a problem for 1458tables that are unloaded at run-time, however. 1459 1460Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 1461type as the length parameter (instead of UINT32). 1462 1463Solved a long-standing problem where an ALREADY_EXISTS error 1464appears on various systems. This problem could happen when there 1465are multiple PCI_Config operation regions under a single PCI root 1466bus. This doesn't happen very frequently, but there are some 1467systems that do this in the ASL. 1468 1469Fixed a reported problem where the internal DeleteNode function 1470was incorrectly handling the case where a namespace node was the 1471first in the parent's child list, and had additional peers (not 1472the only child, but first in the list of children.) 1473 1474Code and Data Size: Current core subsystem library sizes are 1475shown 1476below. These are the code and data sizes for the acpica.lib 1477produced by the Microsoft Visual C++ 6.0 compiler, and these 1478values do not include any ACPI driver or OSPM code. The debug 1479version of the code includes the debug output trace mechanism and 1480has a much larger code and data size. Note that these values 1481will 1482vary depending on the efficiency of the compiler and the compiler 1483options used during generation. 1484 1485 Previous Release 1486 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 1487 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 1488 Current Release: 1489 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 1490 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 1491 1492 14932) Linux: 1494 1495Allow ":" in OS override string (Ducrot Bruno) 1496 1497Kobject fix (Greg KH) 1498 1499 15003 iASL Compiler/Disassembler: 1501 1502Fixed a problem in the generation of the C source code files (AML 1503is emitted in C source statements for BIOS inclusion) where the 1504Ascii dump that appears within a C comment at the end of each 1505line 1506could cause a compile time error if the AML sequence happens to 1507have an open comment or close comment sequence embedded. 1508 1509 1510---------------------------------------- 151124 April 2003. Summary of changes for version 20030424. 1512 1513 15141) ACPI CA Core Subsystem: 1515 1516Support for big-endian systems has been implemented. Most of the 1517support has been invisibly added behind big-endian versions of 1518the 1519ACPI_MOVE_* macros. 1520 1521Fixed a problem in AcpiHwDisableGpeBlock() and 1522AcpiHwClearGpeBlock() where an incorrect offset was passed to the 1523low level hardware write routine. The offset parameter was 1524actually eliminated from the low level read/write routines 1525because 1526they had become obsolete. 1527 1528Fixed a problem where a handler object was deleted twice during 1529the removal of a fixed event handler. 1530 1531 15322) Linux: 1533 1534A fix for SMP systems with link devices was contributed by 1535Compaq's Dan Zink. 1536 1537(2.5) Return whether we handled the interrupt in our IRQ handler. 1538(Linux ISRs no longer return void, so we can propagate the 1539handler 1540return value from the ACPI CA core back to the OS.) 1541 1542 15433) Documentation: 1544 1545The ACPI CA Programmer Reference has been updated to reflect new 1546interfaces and changes to existing interfaces. 1547 1548---------------------------------------- 154928 March 2003. Summary of changes for version 20030328. 1550 15511) ACPI CA Core Subsystem: 1552 1553The GPE Block Device support has been completed. New interfaces 1554are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 1555interfaces (enable, disable, clear, getstatus) have been split 1556into separate interfaces for Fixed Events and General Purpose 1557Events (GPEs) in order to support GPE Block Devices properly. 1558 1559Fixed a problem where the error message "Failed to acquire 1560semaphore" would appear during operations on the embedded 1561controller (EC). 1562 1563Code and Data Size: Current core subsystem library sizes are 1564shown 1565below. These are the code and data sizes for the acpica.lib 1566produced by the Microsoft Visual C++ 6.0 compiler, and these 1567values do not include any ACPI driver or OSPM code. The debug 1568version of the code includes the debug output trace mechanism and 1569has a much larger code and data size. Note that these values 1570will 1571vary depending on the efficiency of the compiler and the compiler 1572options used during generation. 1573 1574 Previous Release 1575 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 1576 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 1577 Current Release: 1578 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 1579 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 1580 1581 1582---------------------------------------- 158328 February 2003. Summary of changes for version 20030228. 1584 1585 15861) ACPI CA Core Subsystem: 1587 1588The GPE handling and dispatch code has been completely overhauled 1589in preparation for support of GPE Block Devices (ID ACPI0006). 1590This affects internal data structures and code only; there should 1591be no differences visible externally. One new file has been 1592added, evgpeblk.c 1593 1594The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 1595fields that are used to determine the GPE block lengths. The 1596REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 1597structures are ignored. This is per the ACPI specification but 1598it 1599isn't very clear. The full 256 Block 0/1 GPEs are now supported 1600(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 1601128). 1602 1603In the SCI interrupt handler, removed the read of the PM1_CONTROL 1604register to look at the SCI_EN bit. On some machines, this read 1605causes an SMI event and greatly slows down SCI events. (This may 1606in fact be the cause of slow battery status response on some 1607systems.) 1608 1609Fixed a problem where a store of a NULL string to a package 1610object 1611could cause the premature deletion of the object. This was seen 1612during execution of the battery _BIF method on some systems, 1613resulting in no battery data being returned. 1614 1615Added AcpiWalkResources interface to simplify parsing of resource 1616lists. 1617 1618Code and Data Size: Current core subsystem library sizes are 1619shown 1620below. These are the code and data sizes for the acpica.lib 1621produced by the Microsoft Visual C++ 6.0 compiler, and these 1622values do not include any ACPI driver or OSPM code. The debug 1623version of the code includes the debug output trace mechanism and 1624has a much larger code and data size. Note that these values 1625will 1626vary depending on the efficiency of the compiler and the compiler 1627options used during generation. 1628 1629 Previous Release 1630 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1631 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1632 Current Release: 1633 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 1634 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 1635 1636 16372) Linux 1638 1639S3 fixes (Ole Rohne) 1640 1641Update ACPI PHP driver with to use new acpi_walk_resource API 1642(Bjorn Helgaas) 1643 1644Add S4BIOS support (Pavel Machek) 1645 1646Map in entire table before performing checksum (John Stultz) 1647 1648Expand the mem= cmdline to allow the specification of reserved 1649and 1650ACPI DATA blocks (Pavel Machek) 1651 1652Never use ACPI on VISWS 1653 1654Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 1655 1656Revert a change that allowed P_BLK lengths to be 4 or 5. This is 1657causing us to think that some systems support C2 when they really 1658don't. 1659 1660Do not count processor objects for non-present CPUs (Thanks to 1661Dominik Brodowski) 1662 1663 16643) iASL Compiler: 1665 1666Fixed a problem where ASL include files could not be found and 1667opened. 1668 1669Added support for the _PDC reserved name. 1670 1671 1672---------------------------------------- 167322 January 2003. Summary of changes for version 20030122. 1674 1675 16761) ACPI CA Core Subsystem: 1677 1678Added a check for constructs of the form: Store (Local0, Local0) 1679where Local0 is not initialized. Apparently, some BIOS 1680programmers believe that this is a NOOP. Since this store 1681doesn't 1682do anything anyway, the new prototype behavior will ignore this 1683error. This is a case where we can relax the strict checking in 1684the interpreter in the name of compatibility. 1685 1686 16872) Linux 1688 1689The AcpiSrc Source Conversion Utility has been released with the 1690Linux package for the first time. This is the utility that is 1691used to convert the ACPI CA base source code to the Linux 1692version. 1693 1694(Both) Handle P_BLK lengths shorter than 6 more gracefully 1695 1696(Both) Move more headers to include/acpi, and delete an unused 1697header. 1698 1699(Both) Move drivers/acpi/include directory to include/acpi 1700 1701(Both) Boot functions don't use cmdline, so don't pass it around 1702 1703(Both) Remove include of unused header (Adrian Bunk) 1704 1705(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 1706the 1707former now also includes the latter, acpiphp.h only needs the 1708one, 1709now. 1710 1711(2.5) Make it possible to select method of bios restoring after 1712S3 1713resume. [=> no more ugly ifdefs] (Pavel Machek) 1714 1715(2.5) Make proc write interfaces work (Pavel Machek) 1716 1717(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 1718 1719(2.5) Break out ACPI Perf code into its own module, under cpufreq 1720(Dominik Brodowski) 1721 1722(2.4) S4BIOS support (Ducrot Bruno) 1723 1724(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 1725Visinoni) 1726 1727 17283) iASL Compiler: 1729 1730Added support to disassemble SSDT and PSDTs. 1731 1732Implemented support to obtain SSDTs from the Windows registry if 1733available. 1734 1735 1736---------------------------------------- 173709 January 2003. Summary of changes for version 20030109. 1738 17391) ACPI CA Core Subsystem: 1740 1741Changed the behavior of the internal Buffer-to-String conversion 1742function. The current ACPI specification states that the 1743contents 1744of the buffer are "converted to a string of two-character 1745hexadecimal numbers, each separated by a space". Unfortunately, 1746this definition is not backwards compatible with existing ACPI 17471.0 1748implementations (although the behavior was not defined in the 1749ACPI 17501.0 specification). The new behavior simply copies data from the 1751buffer to the string until a null character is found or the end 1752of 1753the buffer is reached. The new String object is always null 1754terminated. This problem was seen during the generation of _BIF 1755battery data where incorrect strings were returned for battery 1756type, etc. This will also require an errata to the ACPI 1757specification. 1758 1759Renamed all instances of NATIVE_UINT and NATIVE_INT to 1760ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 1761 1762Copyright in all module headers (both Linux and non-Linux) has be 1763updated to 2003. 1764 1765Code and Data Size: Current core subsystem library sizes are 1766shown 1767below. These are the code and data sizes for the acpica.lib 1768produced by the Microsoft Visual C++ 6.0 compiler, and these 1769values do not include any ACPI driver or OSPM code. The debug 1770version of the code includes the debug output trace mechanism and 1771has a much larger code and data size. Note that these values 1772will 1773vary depending on the efficiency of the compiler and the compiler 1774options used during generation. 1775 1776 Previous Release 1777 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1778 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1779 Current Release: 1780 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1781 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1782 1783 17842) Linux 1785 1786Fixed an oops on module insertion/removal (Matthew Tippett) 1787 1788(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 1789 1790(2.5) Replace pr_debug (Randy Dunlap) 1791 1792(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 1793 1794(Both) Eliminate spawning of thread from timer callback, in favor 1795of schedule_work() 1796 1797(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 1798 1799(Both) Added define for Fixed Function HW region (Matthew Wilcox) 1800 1801(Both) Add missing statics to button.c (Pavel Machek) 1802 1803Several changes have been made to the source code translation 1804utility that generates the Linux Code in order to make the code 1805more "Linux-like": 1806 1807All typedefs on structs and unions have been removed in keeping 1808with the Linux coding style. 1809 1810Removed the non-Linux SourceSafe module revision number from each 1811module header. 1812 1813Completed major overhaul of symbols to be lowercased for linux. 1814Doubled the number of symbols that are lowercased. 1815 1816Fixed a problem where identifiers within procedure headers and 1817within quotes were not fully lower cased (they were left with a 1818starting capital.) 1819 1820Some C macros whose only purpose is to allow the generation of 16- 1821bit code are now completely removed in the Linux code, increasing 1822readability and maintainability. 1823 1824---------------------------------------- 1825 182612 December 2002. Summary of changes for version 20021212. 1827 1828 18291) ACPI CA Core Subsystem: 1830 1831Fixed a problem where the creation of a zero-length AML Buffer 1832would cause a fault. 1833 1834Fixed a problem where a Buffer object that pointed to a static 1835AML 1836buffer (in an ACPI table) could inadvertently be deleted, causing 1837memory corruption. 1838 1839Fixed a problem where a user buffer (passed in to the external 1840ACPI CA interfaces) could be overwritten if the buffer was too 1841small to complete the operation, causing memory corruption. 1842 1843Fixed a problem in the Buffer-to-String conversion code where a 1844string of length one was always returned, regardless of the size 1845of the input Buffer object. 1846 1847Removed the NATIVE_CHAR data type across the entire source due to 1848lack of need and lack of consistent use. 1849 1850Code and Data Size: Current core subsystem library sizes are 1851shown 1852below. These are the code and data sizes for the acpica.lib 1853produced by the Microsoft Visual C++ 6.0 compiler, and these 1854values do not include any ACPI driver or OSPM code. The debug 1855version of the code includes the debug output trace mechanism and 1856has a much larger code and data size. Note that these values 1857will 1858vary depending on the efficiency of the compiler and the compiler 1859options used during generation. 1860 1861 Previous Release 1862 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 1863 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 1864 Current Release: 1865 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 1866 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 1867 1868 1869---------------------------------------- 187005 December 2002. Summary of changes for version 20021205. 1871 18721) ACPI CA Core Subsystem: 1873 1874Fixed a problem where a store to a String or Buffer object could 1875cause corruption of the DSDT if the object type being stored was 1876the same as the target object type and the length of the object 1877being stored was equal to or smaller than the original (existing) 1878target object. This was seen to cause corruption of battery _BIF 1879buffers if the _BIF method modified the buffer on the fly. 1880 1881Fixed a problem where an internal error was generated if a 1882control 1883method invocation was used in an OperationRegion, Buffer, or 1884Package declaration. This was caused by the deferred parsing of 1885the control method and thus the deferred creation of the internal 1886method object. The solution to this problem was to create the 1887internal method object at the moment the method is encountered in 1888the first pass - so that subsequent references to the method will 1889able to obtain the required parameter count and thus properly 1890parse the method invocation. This problem presented itself as an 1891AE_AML_INTERNAL during the pass 1 parse phase during table load. 1892 1893Fixed a problem where the internal String object copy routine did 1894not always allocate sufficient memory for the target String 1895object 1896and caused memory corruption. This problem was seen to cause 1897"Allocation already present in list!" errors as memory allocation 1898became corrupted. 1899 1900Implemented a new function for the evaluation of namespace 1901objects 1902that allows the specification of the allowable return object 1903types. This simplifies a lot of code that checks for a return 1904object of one or more specific objects returned from the 1905evaluation (such as _STA, etc.) This may become and external 1906function if it would be useful to ACPI-related drivers. 1907 1908Completed another round of prefixing #defines with "ACPI_" for 1909clarity. 1910 1911Completed additional code restructuring to allow more modular 1912linking for iASL compiler and AcpiExec. Several files were split 1913creating new files. New files: nsparse.c dsinit.c evgpe.c 1914 1915Implemented an abort mechanism to terminate an executing control 1916method via the AML debugger. This feature is useful for 1917debugging 1918control methods that depend (wait) for specific hardware 1919responses. 1920 1921Code and Data Size: Current core subsystem library sizes are 1922shown 1923below. These are the code and data sizes for the acpica.lib 1924produced by the Microsoft Visual C++ 6.0 compiler, and these 1925values do not include any ACPI driver or OSPM code. The debug 1926version of the code includes the debug output trace mechanism and 1927has a much larger code and data size. Note that these values 1928will 1929vary depending on the efficiency of the compiler and the compiler 1930options used during generation. 1931 1932 Previous Release 1933 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 1934 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 1935 Current Release: 1936 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 1937 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 1938 1939 19402) iASL Compiler/Disassembler 1941 1942Fixed a compiler code generation problem for "Interrupt" Resource 1943Descriptors. If specified in the ASL, the optional "Resource 1944Source Index" and "Resource Source" fields were not inserted into 1945the correct location within the AML resource descriptor, creating 1946an invalid descriptor. 1947 1948Fixed a disassembler problem for "Interrupt" resource 1949descriptors. 1950The optional "Resource Source Index" and "Resource Source" fields 1951were ignored. 1952 1953 1954---------------------------------------- 195522 November 2002. Summary of changes for version 20021122. 1956 1957 19581) ACPI CA Core Subsystem: 1959 1960Fixed a reported problem where an object stored to a Method Local 1961or Arg was not copied to a new object during the store - the 1962object pointer was simply copied to the Local/Arg. This caused 1963all subsequent operations on the Local/Arg to also affect the 1964original source of the store operation. 1965 1966Fixed a problem where a store operation to a Method Local or Arg 1967was not completed properly if the Local/Arg contained a reference 1968(from RefOf) to a named field. The general-purpose store-to- 1969namespace-node code is now used so that this case is handled 1970automatically. 1971 1972Fixed a problem where the internal object copy routine would 1973cause 1974a protection fault if the object being copied was a Package and 1975contained either 1) a NULL package element or 2) a nested sub- 1976package. 1977 1978Fixed a problem with the GPE initialization that resulted from an 1979ambiguity in the ACPI specification. One section of the 1980specification states that both the address and length of the GPE 1981block must be zero if the block is not supported. Another 1982section 1983implies that only the address need be zero if the block is not 1984supported. The code has been changed so that both the address 1985and 1986the length must be non-zero to indicate a valid GPE block (i.e., 1987if either the address or the length is zero, the GPE block is 1988invalid.) 1989 1990Code and Data Size: Current core subsystem library sizes are 1991shown 1992below. These are the code and data sizes for the acpica.lib 1993produced by the Microsoft Visual C++ 6.0 compiler, and these 1994values do not include any ACPI driver or OSPM code. The debug 1995version of the code includes the debug output trace mechanism and 1996has a much larger code and data size. Note that these values 1997will 1998vary depending on the efficiency of the compiler and the compiler 1999options used during generation. 2000 2001 Previous Release 2002 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 2003 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 2004 Current Release: 2005 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 2006 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 2007 2008 20092) Linux 2010 2011Cleaned up EC driver. Exported an external EC read/write 2012interface. By going through this, other drivers (most notably 2013sonypi) will be able to serialize access to the EC. 2014 2015 20163) iASL Compiler/Disassembler 2017 2018Implemented support to optionally generate include files for both 2019ASM and C (the -i switch). This simplifies BIOS development by 2020automatically creating include files that contain external 2021declarations for the symbols that are created within the 2022(optionally generated) ASM and C AML source files. 2023 2024 2025---------------------------------------- 202615 November 2002. Summary of changes for version 20021115. 2027 20281) ACPI CA Core Subsystem: 2029 2030Fixed a memory leak problem where an error during resolution of 2031method arguments during a method invocation from another method 2032failed to cleanup properly by deleting all successfully resolved 2033argument objects. 2034 2035Fixed a problem where the target of the Index() operator was not 2036correctly constructed if the source object was a package. This 2037problem has not been detected because the use of a target operand 2038with Index() is very rare. 2039 2040Fixed a problem with the Index() operator where an attempt was 2041made to delete the operand objects twice. 2042 2043Fixed a problem where an attempt was made to delete an operand 2044twice during execution of the CondRefOf() operator if the target 2045did not exist. 2046 2047Implemented the first of perhaps several internal create object 2048functions that create and initialize a specific object type. 2049This 2050consolidates duplicated code wherever the object is created, thus 2051shrinking the size of the subsystem. 2052 2053Implemented improved debug/error messages for errors that occur 2054during nested method invocations. All executing method pathnames 2055are displayed (with the error) as the call stack is unwound - 2056thus 2057simplifying debug. 2058 2059Fixed a problem introduced in the 10/02 release that caused 2060premature deletion of a buffer object if a buffer was used as an 2061ASL operand where an integer operand is required (Thus causing an 2062implicit object conversion from Buffer to Integer.) The change 2063in 2064the 10/02 release was attempting to fix a memory leak (albeit 2065incorrectly.) 2066 2067Code and Data Size: Current core subsystem library sizes are 2068shown 2069below. These are the code and data sizes for the acpica.lib 2070produced by the Microsoft Visual C++ 6.0 compiler, and these 2071values do not include any ACPI driver or OSPM code. The debug 2072version of the code includes the debug output trace mechanism and 2073has a much larger code and data size. Note that these values 2074will 2075vary depending on the efficiency of the compiler and the compiler 2076options used during generation. 2077 2078 Previous Release 2079 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 2080 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 2081 Current Release: 2082 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 2083 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 2084 2085 20862) Linux 2087 2088Changed the implementation of the ACPI semaphores to use down() 2089instead of down_interruptable(). It is important that the 2090execution of ACPI control methods not be interrupted by signals. 2091Methods must run to completion, or the system may be left in an 2092unknown/unstable state. 2093 2094Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not 2095set. 2096(Shawn Starr) 2097 2098 20993) iASL Compiler/Disassembler 2100 2101 2102Changed the default location of output files. All output files 2103are now placed in the current directory by default instead of in 2104the directory of the source file. This change may affect some 2105existing makefiles, but it brings the behavior of the compiler in 2106line with other similar tools. The location of the output files 2107can be overridden with the -p command line switch. 2108 2109 2110---------------------------------------- 211111 November 2002. Summary of changes for version 20021111. 2112 2113 21140) ACPI Specification 2.0B is released and is now available at: 2115http://www.acpi.info/index.html 2116 2117 21181) ACPI CA Core Subsystem: 2119 2120Implemented support for the ACPI 2.0 SMBus Operation Regions. 2121This includes the early detection and handoff of the request to 2122the SMBus region handler (avoiding all of the complex field 2123support code), and support for the bidirectional return packet 2124from an SMBus write operation. This paves the way for the 2125development of SMBus drivers in each host operating system. 2126 2127Fixed a problem where the semaphore WAIT_FOREVER constant was 2128defined as 32 bits, but must be 16 bits according to the ACPI 2129specification. This had the side effect of causing ASL 2130Mutex/Event timeouts even though the ASL code requested a wait 2131forever. Changed all internal references to the ACPI timeout 2132parameter to 16 bits to prevent future problems. Changed the 2133name 2134of WAIT_FOREVER to ACPI_WAIT_FOREVER. 2135 2136Code and Data Size: Current core subsystem library sizes are 2137shown 2138below. These are the code and data sizes for the acpica.lib 2139produced by the Microsoft Visual C++ 6.0 compiler, and these 2140values do not include any ACPI driver or OSPM code. The debug 2141version of the code includes the debug output trace mechanism and 2142has a much larger code and data size. Note that these values 2143will 2144vary depending on the efficiency of the compiler and the compiler 2145options used during generation. 2146 2147 Previous Release 2148 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 2149 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 2150 Current Release: 2151 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 2152 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 2153 2154 21552) Linux 2156 2157Module loading/unloading fixes (John Cagle) 2158 2159 21603) iASL Compiler/Disassembler 2161 2162Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 2163 2164Implemented support for the disassembly of all SMBus protocol 2165keywords (SMBQuick, SMBWord, etc.) 2166 2167---------------------------------------- 216801 November 2002. Summary of changes for version 20021101. 2169 2170 21711) ACPI CA Core Subsystem: 2172 2173Fixed a problem where platforms that have a GPE1 block but no 2174GPE0 2175block were not handled correctly. This resulted in a "GPE 2176overlap" error message. GPE0 is no longer required. 2177 2178Removed code added in the previous release that inserted nodes 2179into the namespace in alphabetical order. This caused some side- 2180effects on various machines. The root cause of the problem is 2181still under investigation since in theory, the internal ordering 2182of the namespace nodes should not matter. 2183 2184 2185Enhanced error reporting for the case where a named object is not 2186found during control method execution. The full ACPI namepath 2187(name reference) of the object that was not found is displayed in 2188this case. 2189 2190Note: as a result of the overhaul of the namespace object types 2191in 2192the previous release, the namespace nodes for the predefined 2193scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 2194instead of ACPI_TYPE_ANY. This simplifies the namespace 2195management code but may affect code that walks the namespace tree 2196looking for specific object types. 2197 2198Code and Data Size: Current core subsystem library sizes are 2199shown 2200below. These are the code and data sizes for the acpica.lib 2201produced by the Microsoft Visual C++ 6.0 compiler, and these 2202values do not include any ACPI driver or OSPM code. The debug 2203version of the code includes the debug output trace mechanism and 2204has a much larger code and data size. Note that these values 2205will 2206vary depending on the efficiency of the compiler and the compiler 2207options used during generation. 2208 2209 Previous Release 2210 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 2211 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 2212 Current Release: 2213 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 2214 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 2215 2216 22172) Linux 2218 2219Fixed a problem introduced in the previous release where the 2220Processor and Thermal objects were not recognized and installed 2221in 2222/proc. This was related to the scope type change described 2223above. 2224 2225 22263) iASL Compiler/Disassembler 2227 2228Implemented the -g option to get all of the required ACPI tables 2229from the registry and save them to files (Windows version of the 2230compiler only.) The required tables are the FADT, FACS, and 2231DSDT. 2232 2233Added ACPI table checksum validation during table disassembly in 2234order to catch corrupted tables. 2235 2236 2237---------------------------------------- 223822 October 2002. Summary of changes for version 20021022. 2239 22401) ACPI CA Core Subsystem: 2241 2242Implemented a restriction on the Scope operator that the target 2243must already exist in the namespace at the time the operator is 2244encountered (during table load or method execution). In other 2245words, forward references are not allowed and Scope() cannot 2246create a new object. This changes the previous behavior where the 2247interpreter would create the name if not found. This new 2248behavior 2249correctly enables the search-to-root algorithm during namespace 2250lookup of the target name. Because of this upsearch, this fixes 2251the known Compaq _SB_.OKEC problem and makes both the AML 2252interpreter and iASL compiler compatible with other ACPI 2253implementations. 2254 2255Completed a major overhaul of the internal ACPI object types for 2256the ACPI Namespace and the associated operand objects. Many of 2257these types had become obsolete with the introduction of the two- 2258pass namespace load. This cleanup simplifies the code and makes 2259the entire namespace load mechanism much clearer and easier to 2260understand. 2261 2262Improved debug output for tracking scope opening/closing to help 2263diagnose scoping issues. The old scope name as well as the new 2264scope name are displayed. Also improved error messages for 2265problems with ASL Mutex objects and error messages for GPE 2266problems. 2267 2268Cleaned up the namespace dump code, removed obsolete code. 2269 2270All string output (for all namespace/object dumps) now uses the 2271common ACPI string output procedure which handles escapes 2272properly 2273and does not emit non-printable characters. 2274 2275Fixed some issues with constants in the 64-bit version of the 2276local C library (utclib.c) 2277 2278 22792) Linux 2280 2281EC Driver: No longer attempts to acquire the Global Lock at 2282interrupt level. 2283 2284 22853) iASL Compiler/Disassembler 2286 2287Implemented ACPI 2.0B grammar change that disallows all Type 1 2288and 22892 opcodes outside of a control method. This means that the 2290"executable" operators (versus the "namespace" operators) cannot 2291be used at the table level; they can only be used within a 2292control 2293method. 2294 2295Implemented the restriction on the Scope() operator where the 2296target must already exist in the namespace at the time the 2297operator is encountered (during ASL compilation). In other words, 2298forward references are not allowed and Scope() cannot create a 2299new 2300object. This makes the iASL compiler compatible with other ACPI 2301implementations and makes the Scope() implementation adhere to 2302the 2303ACPI specification. 2304 2305Fixed a problem where namepath optimization for the Alias 2306operator 2307was optimizing the wrong path (of the two namepaths.) This 2308caused 2309a "Missing alias link" error message. 2310 2311Fixed a problem where an "unknown reserved name" warning could be 2312incorrectly generated for names like "_SB" when the trailing 2313underscore is not used in the original ASL. 2314 2315Fixed a problem where the reserved name check did not handle 2316NamePaths with multiple NameSegs correctly. The first nameseg of 2317the NamePath was examined instead of the last NameSeg. 2318 2319 2320---------------------------------------- 2321 232202 October 2002. Summary of changes for this release. 2323 2324 23251) ACPI CA Core Subsystem version 20021002: 2326 2327Fixed a problem where a store/copy of a string to an existing 2328string did not always set the string length properly in the 2329String 2330object. 2331 2332Fixed a reported problem with the ToString operator where the 2333behavior was identical to the ToHexString operator instead of 2334just 2335simply converting a raw buffer to a string data type. 2336 2337Fixed a problem where CopyObject and the other "explicit" 2338conversion operators were not updating the internal namespace 2339node 2340type as part of the store operation. 2341 2342Fixed a memory leak during implicit source operand conversion 2343where the original object was not deleted if it was converted to 2344a 2345new object of a different type. 2346 2347Enhanced error messages for all problems associated with 2348namespace 2349lookups. Common procedure generates and prints the lookup name 2350as 2351well as the formatted status. 2352 2353Completed implementation of a new design for the Alias support 2354within the namespace. The existing design did not handle the 2355case 2356where a new object was assigned to one of the two names due to 2357the 2358use of an explicit conversion operator, resulting in the two 2359names 2360pointing to two different objects. The new design simply points 2361the Alias name to the original name node - not to the object. 2362This results in a level of indirection that must be handled in 2363the 2364name resolution mechanism. 2365 2366Code and Data Size: Current core subsystem library sizes are 2367shown 2368below. These are the code and data sizes for the acpica.lib 2369produced by the Microsoft Visual C++ 6.0 compiler, and these 2370values do not include any ACPI driver or OSPM code. The debug 2371version of the code includes the debug output trace mechanism and 2372has a larger code and data size. Note that these values will 2373vary 2374depending on the efficiency of the compiler and the compiler 2375options used during generation. 2376 2377 Previous Release 2378 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 2379 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 2380 Current Release: 2381 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 2382 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 2383 2384 23852) Linux 2386 2387Initialize thermal driver's timer before it is used. (Knut 2388Neumann) 2389 2390Allow handling negative celsius values. (Kochi Takayoshi) 2391 2392Fix thermal management and make trip points. R/W (Pavel Machek) 2393 2394Fix /proc/acpi/sleep. (P. Christeas) 2395 2396IA64 fixes. (David Mosberger) 2397 2398Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 2399 2400Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 2401Brodowski) 2402 2403 24043) iASL Compiler/Disassembler 2405 2406Clarified some warning/error messages. 2407 2408 2409---------------------------------------- 241018 September 2002. Summary of changes for this release. 2411 2412 24131) ACPI CA Core Subsystem version 20020918: 2414 2415Fixed a reported problem with reference chaining (via the Index() 2416and RefOf() operators) in the ObjectType() and SizeOf() 2417operators. 2418The definition of these operators includes the dereferencing of 2419all chained references to return information on the base object. 2420 2421Fixed a problem with stores to indexed package elements - the 2422existing code would not complete the store if an "implicit 2423conversion" was not performed. In other words, if the existing 2424object (package element) was to be replaced completely, the code 2425didn't handle this case. 2426 2427Relaxed typechecking on the ASL "Scope" operator to allow the 2428target name to refer to an object of type Integer, String, or 2429Buffer, in addition to the scoping object types (Device, 2430predefined Scopes, Processor, PowerResource, and ThermalZone.) 2431This allows existing AML code that has workarounds for a bug in 2432Windows to function properly. A warning is issued, however. 2433This 2434affects both the AML interpreter and the iASL compiler. Below is 2435an example of this type of ASL code: 2436 2437 Name(DEB,0x00) 2438 Scope(DEB) 2439 { 2440 2441Fixed some reported problems with 64-bit integer support in the 2442local implementation of C library functions (clib.c) 2443 2444 24452) Linux 2446 2447Use ACPI fix map region instead of IOAPIC region, since it is 2448undefined in non-SMP. 2449 2450Ensure that the SCI has the proper polarity and trigger, even on 2451systems that do not have an interrupt override entry in the MADT. 2452 24532.5 big driver reorganization (Pat Mochel) 2454 2455Use early table mapping code from acpitable.c (Andi Kleen) 2456 2457New blacklist entries (Andi Kleen) 2458 2459Blacklist improvements. Split blacklist code out into a separate 2460file. Move checking the blacklist to very early. Previously, we 2461would use ACPI tables, and then halfway through init, check the 2462blacklist -- too late. Now, it's early enough to completely fall- 2463back to non-ACPI. 2464 2465 24663) iASL Compiler/Disassembler version 20020918: 2467 2468Fixed a problem where the typechecking code didn't know that an 2469alias could point to a method. In other words, aliases were not 2470being dereferenced during typechecking. 2471 2472 2473---------------------------------------- 247429 August 2002. Summary of changes for this release. 2475 24761) ACPI CA Core Subsystem Version 20020829: 2477 2478If the target of a Scope() operator already exists, it must be an 2479object type that actually opens a scope -- such as a Device, 2480Method, Scope, etc. This is a fatal runtime error. Similar 2481error 2482check has been added to the iASL compiler also. 2483 2484Tightened up the namespace load to disallow multiple names in the 2485same scope. This previously was allowed if both objects were of 2486the same type. (i.e., a lookup was the same as entering a new 2487name). 2488 2489 24902) Linux 2491 2492Ensure that the ACPI interrupt has the proper trigger and 2493polarity. 2494 2495local_irq_disable is extraneous. (Matthew Wilcox) 2496 2497Make "acpi=off" actually do what it says, and not use the ACPI 2498interpreter *or* the tables. 2499 2500Added arch-neutral support for parsing SLIT and SRAT tables 2501(Kochi 2502Takayoshi) 2503 2504 25053) iASL Compiler/Disassembler Version 20020829: 2506 2507Implemented namepath optimization for name declarations. For 2508example, a declaration like "Method (\_SB_.ABCD)" would get 2509optimized to "Method (ABCD)" if the declaration is within the 2510\_SB_ scope. This optimization is in addition to the named 2511reference path optimization first released in the previous 2512version. This would seem to complete all possible optimizations 2513for namepaths within the ASL/AML. 2514 2515If the target of a Scope() operator already exists, it must be an 2516object type that actually opens a scope -- such as a Device, 2517Method, Scope, etc. 2518 2519Implemented a check and warning for unreachable code in the same 2520block below a Return() statement. 2521 2522Fixed a problem where the listing file was not generated if the 2523compiler aborted if the maximum error count was exceeded (200). 2524 2525Fixed a problem where the typechecking of method return values 2526was 2527broken. This includes the check for a return value when the 2528method is invoked as a TermArg (a return value is expected.) 2529 2530Fixed a reported problem where EOF conditions during a quoted 2531string or comment caused a fault. 2532 2533 2534---------------------------------------- 253515 August 2002. Summary of changes for this release. 2536 25371) ACPI CA Core Subsystem Version 20020815: 2538 2539Fixed a reported problem where a Store to a method argument that 2540contains a reference did not perform the indirect store 2541correctly. 2542This problem was created during the conversion to the new 2543reference object model - the indirect store to a method argument 2544code was not updated to reflect the new model. 2545 2546Reworked the ACPI mode change code to better conform to ACPI 2.0, 2547handle corner cases, and improve code legibility (Kochi 2548Takayoshi) 2549 2550Fixed a problem with the pathname parsing for the carat (^) 2551prefix. The heavy use of the carat operator by the new namepath 2552optimization in the iASL compiler uncovered a problem with the 2553AML 2554interpreter handling of this prefix. In the case where one or 2555more carats precede a single nameseg, the nameseg was treated as 2556standalone and the search rule (to root) was inadvertently 2557applied. This could cause both the iASL compiler and the 2558interpreter to find the wrong object or to miss the error that 2559should occur if the object does not exist at that exact pathname. 2560 2561Found and fixed the problem where the HP Pavilion DSDT would not 2562load. This was a relatively minor tweak to the table loading 2563code 2564(a problem caused by the unexpected encounter with a method 2565invocation not within a control method), but it does not solve 2566the 2567overall issue of the execution of AML code at the table level. 2568This investigation is still ongoing. 2569 2570Code and Data Size: Current core subsystem library sizes are 2571shown 2572below. These are the code and data sizes for the acpica.lib 2573produced by the Microsoft Visual C++ 6.0 compiler, and these 2574values do not include any ACPI driver or OSPM code. The debug 2575version of the code includes the debug output trace mechanism and 2576has a larger code and data size. Note that these values will 2577vary 2578depending on the efficiency of the compiler and the compiler 2579options used during generation. 2580 2581 Previous Release 2582 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 2583 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 2584 Current Release: 2585 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 2586 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 2587 2588 25892) Linux 2590 2591Remove redundant slab.h include (Brad Hards) 2592 2593Fix several bugs in thermal.c (Herbert Nachtnebel) 2594 2595Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 2596 2597Change acpi_system_suspend to use updated irq functions (Pavel 2598Machek) 2599 2600Export acpi_get_firmware_table (Matthew Wilcox) 2601 2602Use proper root proc entry for ACPI (Kochi Takayoshi) 2603 2604Fix early-boot table parsing (Bjorn Helgaas) 2605 2606 26073) iASL Compiler/Disassembler 2608 2609Reworked the compiler options to make them more consistent and to 2610use two-letter options where appropriate. We were running out of 2611sensible letters. This may break some makefiles, so check the 2612current options list by invoking the compiler with no parameters. 2613 2614Completed the design and implementation of the ASL namepath 2615optimization option for the compiler. This option optimizes all 2616references to named objects to the shortest possible path. The 2617first attempt tries to utilize a single nameseg (4 characters) 2618and 2619the "search-to-root" algorithm used by the interpreter. If that 2620cannot be used (because either the name is not in the search path 2621or there is a conflict with another object with the same name), 2622the pathname is optimized using the carat prefix (usually a 2623shorter string than specifying the entire path from the root.) 2624 2625Implemented support to obtain the DSDT from the Windows registry 2626(when the disassembly option is specified with no input file). 2627Added this code as the implementation for AcpiOsTableOverride in 2628the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 2629utility) to scan memory for the DSDT to the AcpiOsTableOverride 2630function in the DOS OSL to make the disassembler truly OS 2631independent. 2632 2633Implemented a new option to disassemble and compile in one step. 2634When used without an input filename, this option will grab the 2635DSDT from the local machine, disassemble it, and compile it in 2636one 2637step. 2638 2639Added a warning message for invalid escapes (a backslash followed 2640by any character other than the allowable escapes). This catches 2641the quoted string error "\_SB_" (which should be "\\_SB_" ). 2642Also, there are numerous instances in the ACPI specification 2643where 2644this error occurs. 2645 2646Added a compiler option to disable all optimizations. This is 2647basically the "compatibility mode" because by using this option, 2648the AML code will come out exactly the same as other ASL 2649compilers. 2650 2651Added error messages for incorrectly ordered dependent resource 2652functions. This includes: missing EndDependentFn macro at end of 2653dependent resource list, nested dependent function macros (both 2654start and end), and missing StartDependentFn macro. These are 2655common errors that should be caught at compile time. 2656 2657Implemented _OSI support for the disassembler and compiler. _OSI 2658must be included in the namespace for proper disassembly (because 2659the disassembler must know the number of arguments.) 2660 2661Added an "optimization" message type that is optional (off by 2662default). This message is used for all optimizations - including 2663constant folding, integer optimization, and namepath 2664optimization. 2665 2666---------------------------------------- 266725 July 2002. Summary of changes for this release. 2668 2669 26701) ACPI CA Core Subsystem Version 20020725: 2671 2672The AML Disassembler has been enhanced to produce compilable ASL 2673code and has been integrated into the iASL compiler (see below) 2674as 2675well as the single-step disassembly for the AML debugger and the 2676disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 2677resource templates and macros are fully supported. The 2678disassembler has been tested on over 30 different AML files, 2679producing identical AML when the resulting disassembled ASL file 2680is recompiled with the same ASL compiler. 2681 2682Modified the Resource Manager to allow zero interrupts and zero 2683dma channels during the GetCurrentResources call. This was 2684causing problems on some platforms. 2685 2686Added the AcpiOsRedirectOutput interface to the OSL to simplify 2687output redirection for the AcpiOsPrintf and AcpiOsVprintf 2688interfaces. 2689 2690Code and Data Size: Current core subsystem library sizes are 2691shown 2692below. These are the code and data sizes for the acpica.lib 2693produced by the Microsoft Visual C++ 6.0 compiler, and these 2694values do not include any ACPI driver or OSPM code. The debug 2695version of the code includes the debug output trace mechanism and 2696has a larger code and data size. Note that these values will 2697vary 2698depending on the efficiency of the compiler and the compiler 2699options used during generation. 2700 2701 Previous Release 2702 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 2703 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 2704 Current Release: 2705 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 2706 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 2707 2708 27092) Linux 2710 2711Fixed a panic in the EC driver (Dominik Brodowski) 2712 2713Implemented checksum of the R/XSDT itself during Linux table scan 2714(Richard Schaal) 2715 2716 27173) iASL compiler 2718 2719The AML disassembler is integrated into the compiler. The "-d" 2720option invokes the disassembler to completely disassemble an 2721input AML file, producing as output a text ASL file with the 2722extension ".dsl" (to avoid name collisions with existing .asl 2723source files.) A future enhancement will allow the disassembler 2724to obtain the BIOS DSDT from the registry under Windows. 2725 2726Fixed a problem with the VendorShort and VendorLong resource 2727descriptors where an invalid AML sequence was created. 2728 2729Implemented a fix for BufferData term in the ASL parser. It was 2730inadvertently defined twice, allowing invalid syntax to pass and 2731causing reduction conflicts. 2732 2733Fixed a problem where the Ones opcode could get converted to a 2734value of zero if "Ones" was used where a byte, word or dword 2735value 2736was expected. The 64-bit value is now truncated to the correct 2737size with the correct value. 2738 2739 2740---------------------------------------- 274102 July 2002. Summary of changes for this release. 2742 2743 27441) ACPI CA Core Subsystem Version 20020702: 2745 2746The Table Manager code has been restructured to add several new 2747features. Tables that are not required by the core subsystem 2748(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 2749validated in any way and are returned from AcpiGetFirmwareTable 2750if 2751requested. The AcpiOsTableOverride interface is now called for 2752each table that is loaded by the subsystem in order to allow the 2753host to override any table it chooses. Previously, only the DSDT 2754could be overridden. Added one new files, tbrsdt.c and 2755tbgetall.c. 2756 2757Fixed a problem with the conversion of internal package objects 2758to 2759external objects (when a package is returned from a control 2760method.) The return buffer length was set to zero instead of the 2761proper length of the package object. 2762 2763Fixed a reported problem with the use of the RefOf and DeRefOf 2764operators when passing reference arguments to control methods. A 2765new type of Reference object is used internally for references 2766produced by the RefOf operator. 2767 2768Added additional error messages in the Resource Manager to 2769explain 2770AE_BAD_DATA errors when they occur during resource parsing. 2771 2772Split the AcpiEnableSubsystem into two primitives to enable a 2773finer granularity initialization sequence. These two calls 2774should 2775be called in this order: AcpiEnableSubsystem (flags), 2776AcpiInitializeObjects (flags). The flags parameter remains the 2777same. 2778 2779 27802) Linux 2781 2782Updated the ACPI utilities module to understand the new style of 2783fully resolved package objects that are now returned from the 2784core 2785subsystem. This eliminates errors of the form: 2786 2787 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 2788 acpi_utils-0430 [145] acpi_evaluate_reference: 2789 Invalid element in package (not a device reference) 2790 2791The method evaluation utility uses the new buffer allocation 2792scheme instead of calling AcpiEvaluate Object twice. 2793 2794Added support for ECDT. This allows the use of the Embedded 2795Controller before the namespace has been fully initialized, which 2796is necessary for ACPI 2.0 support, and for some laptops to 2797initialize properly. (Laptops using ECDT are still rare, so only 2798limited testing was performed of the added functionality.) 2799 2800Fixed memory leaks in the EC driver. 2801 2802Eliminated a brittle code structure in acpi_bus_init(). 2803 2804Eliminated the acpi_evaluate() helper function in utils.c. It is 2805no longer needed since acpi_evaluate_object can optionally 2806allocate memory for the return object. 2807 2808Implemented fix for keyboard hang when getting battery readings 2809on 2810some systems (Stephen White) 2811 2812PCI IRQ routing update (Dominik Brodowski) 2813 2814Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 2815support 2816 2817---------------------------------------- 281811 June 2002. Summary of changes for this release. 2819 2820 28211) ACPI CA Core Subsystem Version 20020611: 2822 2823Fixed a reported problem where constants such as Zero and One 2824appearing within _PRT packages were not handled correctly within 2825the resource manager code. Originally reported against the ASL 2826compiler because the code generator now optimizes integers to 2827their minimal AML representation (i.e. AML constants if 2828possible.) 2829The _PRT code now handles all AML constant opcodes correctly 2830(Zero, One, Ones, Revision). 2831 2832Fixed a problem with the Concatenate operator in the AML 2833interpreter where a buffer result object was incorrectly marked 2834as 2835not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 2836 2837All package sub-objects are now fully resolved before they are 2838returned from the external ACPI interfaces. This means that name 2839strings are resolved to object handles, and constant operators 2840(Zero, One, Ones, Revision) are resolved to Integers. 2841 2842Implemented immediate resolution of the AML Constant opcodes 2843(Zero, One, Ones, Revision) to Integer objects upon detection 2844within the AML stream. This has simplified and reduced the 2845generated code size of the subsystem by eliminating about 10 2846switch statements for these constants (which previously were 2847contained in Reference objects.) The complicating issues are 2848that 2849the Zero opcode is used as a "placeholder" for unspecified 2850optional target operands and stores to constants are defined to 2851be 2852no-ops. 2853 2854Code and Data Size: Current core subsystem library sizes are 2855shown 2856below. These are the code and data sizes for the acpica.lib 2857produced by the Microsoft Visual C++ 6.0 compiler, and these 2858values do not include any ACPI driver or OSPM code. The debug 2859version of the code includes the debug output trace mechanism and 2860has a larger code and data size. Note that these values will 2861vary 2862depending on the efficiency of the compiler and the compiler 2863options used during generation. 2864 2865 Previous Release 2866 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 2867 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 2868 Current Release: 2869 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 2870 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 2871 2872 28732) Linux 2874 2875Added preliminary support for obtaining _TRA data for PCI root 2876bridges (Bjorn Helgaas). 2877 2878 28793) iASL Compiler Version X2046: 2880 2881Fixed a problem where the "_DDN" reserved name was defined to be 2882a 2883control method with one argument. There are no arguments, and 2884_DDN does not have to be a control method. 2885 2886Fixed a problem with the Linux version of the compiler where the 2887source lines printed with error messages were the wrong lines. 2888This turned out to be the "LF versus CR/LF" difference between 2889Windows and Unix. This appears to be the longstanding issue 2890concerning listing output and error messages. 2891 2892Fixed a problem with the Linux version of compiler where opcode 2893names within error messages were wrong. This was caused by a 2894slight difference in the output of the Flex tool on Linux versus 2895Windows. 2896 2897Fixed a problem with the Linux compiler where the hex output 2898files 2899contained some garbage data caused by an internal buffer overrun. 2900 2901 2902---------------------------------------- 290317 May 2002. Summary of changes for this release. 2904 2905 29061) ACPI CA Core Subsystem Version 20020517: 2907 2908Implemented a workaround to an BIOS bug discovered on the HP 2909OmniBook where the FADT revision number and the table size are 2910inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The 2911new 2912behavior is to fallback to using only the ACPI 1.0 fields of the 2913FADT if the table is too small to be a ACPI 2.0 table as claimed 2914by the revision number. Although this is a BIOS bug, this is a 2915case where the workaround is simple enough and with no side 2916effects, so it seemed prudent to add it. A warning message is 2917issued, however. 2918 2919Implemented minimum size checks for the fixed-length ACPI tables 2920- 2921- the FADT and FACS, as well as consistency checks between the 2922revision number and the table size. 2923 2924Fixed a reported problem in the table override support where the 2925new table pointer was incorrectly treated as a physical address 2926instead of a logical address. 2927 2928Eliminated the use of the AE_AML_ERROR exception and replaced it 2929with more descriptive codes. 2930 2931Fixed a problem where an exception would occur if an ASL Field 2932was 2933defined with no named Field Units underneath it (used by some 2934index fields). 2935 2936Code and Data Size: Current core subsystem library sizes are 2937shown 2938below. These are the code and data sizes for the acpica.lib 2939produced by the Microsoft Visual C++ 6.0 compiler, and these 2940values do not include any ACPI driver or OSPM code. The debug 2941version of the code includes the debug output trace mechanism and 2942has a larger code and data size. Note that these values will 2943vary 2944depending on the efficiency of the compiler and the compiler 2945options used during generation. 2946 2947 Previous Release 2948 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 2949 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 2950 Current Release: 2951 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 2952 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 2953 2954 2955 29562) Linux 2957 2958Much work done on ACPI init (MADT and PCI IRQ routing support). 2959(Paul D. and Dominik Brodowski) 2960 2961Fix PCI IRQ-related panic on boot (Sam Revitch) 2962 2963Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 2964 2965Fix "MHz" typo (Dominik Brodowski) 2966 2967Fix RTC year 2000 issue (Dominik Brodowski) 2968 2969Preclude multiple button proc entries (Eric Brunet) 2970 2971Moved arch-specific code out of include/platform/aclinux.h 2972 29733) iASL Compiler Version X2044: 2974 2975Implemented error checking for the string used in the EISAID 2976macro 2977(Usually used in the definition of the _HID object.) The code 2978now 2979strictly enforces the PnP format - exactly 7 characters, 3 2980uppercase letters and 4 hex digits. 2981 2982If a raw string is used in the definition of the _HID object 2983(instead of the EISAID macro), the string must contain all 2984alphanumeric characters (e.g., "*PNP0011" is not allowed because 2985of the asterisk.) 2986 2987Implemented checking for invalid use of ACPI reserved names for 2988most of the name creation operators (Name, Device, Event, Mutex, 2989OperationRegion, PowerResource, Processor, and ThermalZone.) 2990Previously, this check was only performed for control methods. 2991 2992Implemented an additional check on the Name operator to emit an 2993error if a reserved name that must be implemented in ASL as a 2994control method is used. We know that a reserved name must be a 2995method if it is defined with input arguments. 2996 2997The warning emitted when a namespace object reference is not 2998found 2999during the cross reference phase has been changed into an error. 3000The "External" directive should be used for names defined in 3001other 3002modules. 3003 3004 30054) Tools and Utilities 3006 3007The 16-bit tools (adump16 and aexec16) have been regenerated and 3008tested. 3009 3010Fixed a problem with the output of both acpidump and adump16 3011where 3012the indentation of closing parentheses and brackets was not 3013aligned properly with the parent block. 3014 3015 3016---------------------------------------- 301703 May 2002. Summary of changes for this release. 3018 3019 30201) ACPI CA Core Subsystem Version 20020503: 3021 3022Added support a new OSL interface that allows the host operating 3023system software to override the DSDT found in the firmware - 3024AcpiOsTableOverride. With this interface, the OSL can examine 3025the 3026version of the firmware DSDT and replace it with a different one 3027if desired. 3028 3029Added new external interfaces for accessing ACPI registers from 3030device drivers and other system software - AcpiGetRegister and 3031AcpiSetRegister. This was simply an externalization of the 3032existing AcpiHwBitRegister interfaces. 3033 3034Fixed a regression introduced in the previous build where the 3035ASL/AML CreateField operator always returned an error, 3036"destination must be a NS Node". 3037 3038Extended the maximum time (before failure) to successfully enable 3039ACPI mode to 3 seconds. 3040 3041Code and Data Size: Current core subsystem library sizes are 3042shown 3043below. These are the code and data sizes for the acpica.lib 3044produced by the Microsoft Visual C++ 6.0 compiler, and these 3045values do not include any ACPI driver or OSPM code. The debug 3046version of the code includes the debug output trace mechanism and 3047has a larger code and data size. Note that these values will 3048vary 3049depending on the efficiency of the compiler and the compiler 3050options used during generation. 3051 3052 Previous Release 3053 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 3054 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 3055 Current Release: 3056 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 3057 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 3058 3059 30602) Linux 3061 3062Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 3063free. While 3 out of 4 of our in-house systems work fine, the 3064last 3065one still hangs when testing the LAPIC timer. 3066 3067Renamed many files in 2.5 kernel release to omit "acpi_" from the 3068name. 3069 3070Added warning on boot for Presario 711FR. 3071 3072Sleep improvements (Pavel Machek) 3073 3074ACPI can now be built without CONFIG_PCI enabled. 3075 3076IA64: Fixed memory map functions (JI Lee) 3077 3078 30793) iASL Compiler Version X2043: 3080 3081Added support to allow the compiler to be integrated into the MS 3082VC++ development environment for one-button compilation of single 3083files or entire projects -- with error-to-source-line mapping. 3084 3085Implemented support for compile-time constant folding for the 3086Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 3087specification. This allows the ASL writer to use expressions 3088instead of Integer/Buffer/String constants in terms that must 3089evaluate to constants at compile time and will also simplify the 3090emitted AML in any such sub-expressions that can be folded 3091(evaluated at compile-time.) This increases the size of the 3092compiler significantly because a portion of the ACPI CA AML 3093interpreter is included within the compiler in order to pre- 3094evaluate constant expressions. 3095 3096 3097Fixed a problem with the "Unicode" ASL macro that caused the 3098compiler to fault. (This macro is used in conjunction with the 3099_STR reserved name.) 3100 3101Implemented an AML opcode optimization to use the Zero, One, and 3102Ones opcodes where possible to further reduce the size of integer 3103constants and thus reduce the overall size of the generated AML 3104code. 3105 3106Implemented error checking for new reserved terms for ACPI 3107version 31082.0A. 3109 3110Implemented the -qr option to display the current list of ACPI 3111reserved names known to the compiler. 3112 3113Implemented the -qc option to display the current list of ASL 3114operators that are allowed within constant expressions and can 3115therefore be folded at compile time if the operands are 3116constants. 3117 3118 31194) Documentation 3120 3121Updated the Programmer's Reference for new interfaces, data 3122types, 3123and memory allocation model options. 3124 3125Updated the iASL Compiler User Reference to apply new format and 3126add information about new features and options. 3127 3128---------------------------------------- 312919 April 2002. Summary of changes for this release. 3130 31311) ACPI CA Core Subsystem Version 20020419: 3132 3133The source code base for the Core Subsystem has been completely 3134cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 3135versions. The Lint option files used are included in the 3136/acpi/generate/lint directory. 3137 3138Implemented enhanced status/error checking across the entire 3139Hardware manager subsystem. Any hardware errors (reported from 3140the OSL) are now bubbled up and will abort a running control 3141method. 3142 3143Fixed a problem where the per-ACPI-table integer width (32 or 64) 3144was stored only with control method nodes, causing a fault when 3145non-control method code was executed during table loading. The 3146solution implemented uses a global variable to indicate table 3147width across the entire ACPI subsystem. Therefore, ACPI CA does 3148not support mixed integer widths across different ACPI tables 3149(DSDT, SSDT). 3150 3151Fixed a problem where NULL extended fields (X fields) in an ACPI 31522.0 ACPI FADT caused the table load to fail. Although the 3153existing ACPI specification is a bit fuzzy on this topic, the new 3154behavior is to fall back on a ACPI 1.0 field if the corresponding 3155ACPI 2.0 X field is zero (even though the table revision 3156indicates 3157a full ACPI 2.0 table.) The ACPI specification will be updated 3158to 3159clarify this issue. 3160 3161Fixed a problem with the SystemMemory operation region handler 3162where memory was always accessed byte-wise even if the AML- 3163specified access width was larger than a byte. This caused 3164problems on systems with memory-mapped I/O. Memory is now 3165accessed with the width specified. On systems that do not 3166support 3167non-aligned transfers, a check is made to guarantee proper 3168address 3169alignment before proceeding in order to avoid an AML-caused 3170alignment fault within the kernel. 3171 3172 3173Fixed a problem with the ExtendedIrq resource where only one byte 3174of the 4-byte Irq field was extracted. 3175 3176Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 3177function was out of date and required a rewrite. 3178 3179Code and Data Size: Current core subsystem library sizes are 3180shown 3181below. These are the code and data sizes for the acpica.lib 3182produced by the Microsoft Visual C++ 6.0 compiler, and these 3183values do not include any ACPI driver or OSPM code. The debug 3184version of the code includes the debug output trace mechanism and 3185has a larger code and data size. Note that these values will 3186vary 3187depending on the efficiency of the compiler and the compiler 3188options used during generation. 3189 3190 Previous Release 3191 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 3192 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 3193 Current Release: 3194 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 3195 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 3196 3197 31982) Linux 3199 3200PCI IRQ routing fixes (Dominik Brodowski) 3201 3202 32033) iASL Compiler Version X2042: 3204 3205Implemented an additional compile-time error check for a field 3206unit whose size + minimum access width would cause a run-time 3207access beyond the end-of-region. Previously, only the field size 3208itself was checked. 3209 3210The Core subsystem and iASL compiler now share a common parse 3211object in preparation for compile-time evaluation of the type 32123/4/5 ASL operators. 3213 3214 3215---------------------------------------- 3216Summary of changes for this release: 03_29_02 3217 32181) ACPI CA Core Subsystem Version 20020329: 3219 3220Implemented support for late evaluation of TermArg operands to 3221Buffer and Package objects. This allows complex expressions to 3222be 3223used in the declarations of these object types. 3224 3225Fixed an ACPI 1.0 compatibility issue when reading Fields. In 3226ACPI 32271.0, if the field was larger than 32 bits, it was returned as a 3228buffer - otherwise it was returned as an integer. In ACPI 2.0, 3229the field is returned as a buffer only if the field is larger 3230than 323164 bits. The TableRevision is now considered when making this 3232conversion to avoid incompatibility with existing ASL code. 3233 3234Implemented logical addressing for AcpiOsGetRootPointer. This 3235allows an RSDP with either a logical or physical address. With 3236this support, the host OS can now override all ACPI tables with 3237one logical RSDP. Includes implementation of "typed" pointer 3238support to allow a common data type for both physical and logical 3239pointers internally. This required a change to the 3240AcpiOsGetRootPointer interface. 3241 3242Implemented the use of ACPI 2.0 Generic Address Structures for 3243all 3244GPE, Fixed Event, and PM Timer I/O. This allows the use of 3245memory 3246mapped I/O for these ACPI features. 3247 3248Initialization now ignores not only non-required tables (All 3249tables other than the FADT, FACS, DSDT, and SSDTs), but also does 3250not validate the table headers of unrecognized tables. 3251 3252Fixed a problem where a notify handler could only be 3253installed/removed on an object of type Device. All "notify" 3254objects are now supported -- Devices, Processor, Power, and 3255Thermal. 3256 3257Removed most verbosity from the ACPI_DB_INFO debug level. Only 3258critical information is returned when this debug level is 3259enabled. 3260 3261Code and Data Size: Current core subsystem library sizes are 3262shown 3263below. These are the code and data sizes for the acpica.lib 3264produced by the Microsoft Visual C++ 6.0 compiler, and these 3265values do not include any ACPI driver or OSPM code. The debug 3266version of the code includes the debug output trace mechanism and 3267has a larger code and data size. Note that these values will 3268vary 3269depending on the efficiency of the compiler and the compiler 3270options used during generation. 3271 3272 Previous Release 3273 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 3274 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 3275 Current Release: 3276 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 3277 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 3278 3279 32802) Linux: 3281 3282The processor driver (acpi_processor.c) now fully supports ACPI 32832.0-based processor performance control (e.g. Intel(R) 3284SpeedStep(TM) technology) Note that older laptops that only have 3285the Intel "applet" interface are not supported through this. The 3286'limit' and 'performance' interface (/proc) are fully functional. 3287[Note that basic policy for controlling performance state 3288transitions will be included in the next version of ospmd.] The 3289idle handler was modified to more aggressively use C2, and PIIX4 3290errata handling underwent a complete overhaul (big thanks to 3291Dominik Brodowski). 3292 3293Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 3294based devices in the ACPI namespace are now dynamically bound 3295(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 3296This allows, among other things, ACPI to resolve bus numbers for 3297subordinate PCI bridges. 3298 3299Enhanced PCI IRQ routing to get the proper bus number for _PRT 3300entries defined underneath PCI bridges. 3301 3302Added IBM 600E to bad bios list due to invalid _ADR value for 3303PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 3304 3305In the process of adding full MADT support (e.g. IOAPIC) for IA32 3306(acpi.c, mpparse.c) -- stay tuned. 3307 3308Added back visual differentiation between fixed-feature and 3309control-method buttons in dmesg. Buttons are also subtyped (e.g. 3310button/power/PWRF) to simplify button identification. 3311 3312We no longer use -Wno-unused when compiling debug. Please ignore 3313any "_THIS_MODULE defined but not used" messages. 3314 3315Can now shut down the system using "magic sysrq" key. 3316 3317 33183) iASL Compiler version 2041: 3319 3320Fixed a problem where conversion errors for hex/octal/decimal 3321constants were not reported. 3322 3323Implemented a fix for the General Register template Address 3324field. 3325This field was 8 bits when it should be 64. 3326 3327Fixed a problem where errors/warnings were no longer being 3328emitted 3329within the listing output file. 3330 3331Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 3332exactly 4 characters, alphanumeric only. 3333 3334 3335 3336 3337---------------------------------------- 3338Summary of changes for this release: 03_08_02 3339 3340 33411) ACPI CA Core Subsystem Version 20020308: 3342 3343Fixed a problem with AML Fields where the use of the "AccessAny" 3344keyword could cause an interpreter error due to attempting to 3345read 3346or write beyond the end of the parent Operation Region. 3347 3348Fixed a problem in the SystemMemory Operation Region handler 3349where 3350an attempt was made to map memory beyond the end of the region. 3351This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 3352errors on some Linux systems. 3353 3354Fixed a problem where the interpreter/namespace "search to root" 3355algorithm was not functioning for some object types. Relaxed the 3356internal restriction on the search to allow upsearches for all 3357external object types as well as most internal types. 3358 3359 33602) Linux: 3361 3362We now use safe_halt() macro versus individual calls to sti | 3363hlt. 3364 3365Writing to the processor limit interface should now work. "echo 33661" 3367will increase the limit, 2 will decrease, and 0 will reset to the 3368default. 3369 3370 33713) ASL compiler: 3372 3373Fixed segfault on Linux version. 3374 3375 3376---------------------------------------- 3377Summary of changes for this release: 02_25_02 3378 33791) ACPI CA Core Subsystem: 3380 3381 3382Fixed a problem where the GPE bit masks were not initialized 3383properly, causing erratic GPE behavior. 3384 3385Implemented limited support for multiple calling conventions. 3386The 3387code can be generated with either the VPL (variable parameter 3388list, or "C") convention, or the FPL (fixed parameter list, or 3389"Pascal") convention. The core subsystem is about 3.4% smaller 3390when generated with FPL. 3391 3392 33932) Linux 3394 3395Re-add some /proc/acpi/event functionality that was lost during 3396the rewrite 3397 3398Resolved issue with /proc events for fixed-feature buttons 3399showing 3400up as the system device. 3401 3402Fixed checks on C2/C3 latencies to be inclusive of maximum 3403values. 3404 3405Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 3406 3407Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 3408 3409Fixed limit interface & usage to fix bugs with passive cooling 3410hysterisis. 3411 3412Restructured PRT support. 3413 3414 3415---------------------------------------- 3416Summary of changes for this label: 02_14_02 3417 3418 34191) ACPI CA Core Subsystem: 3420 3421Implemented support in AcpiLoadTable to allow loading of FACS and 3422FADT tables. 3423 3424Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 3425been removed. All 64-bit platforms should be migrated to the 3426ACPI 34272.0 tables. The actbl71.h header has been removed from the 3428source 3429tree. 3430 3431All C macros defined within the subsystem have been prefixed with 3432"ACPI_" to avoid collision with other system include files. 3433 3434Removed the return value for the two AcpiOsPrint interfaces, 3435since 3436it is never used and causes lint warnings for ignoring the return 3437value. 3438 3439Added error checking to all internal mutex acquire and release 3440calls. Although a failure from one of these interfaces is 3441probably a fatal system error, these checks will cause the 3442immediate abort of the currently executing method or interface. 3443 3444Fixed a problem where the AcpiSetCurrentResources interface could 3445fault. This was a side effect of the deployment of the new 3446memory 3447allocation model. 3448 3449Fixed a couple of problems with the Global Lock support 3450introduced 3451in the last major build. The "common" (1.0/2.0) internal FACS 3452was 3453being overwritten with the FACS signature and clobbering the 3454Global Lock pointer. Also, the actual firmware FACS was being 3455unmapped after construction of the "common" FACS, preventing 3456access to the actual Global Lock field within it. The "common" 3457internal FACS is no longer installed as an actual ACPI table; it 3458is used simply as a global. 3459 3460Code and Data Size: Current core subsystem library sizes are 3461shown 3462below. These are the code and data sizes for the acpica.lib 3463produced by the Microsoft Visual C++ 6.0 compiler, and these 3464values do not include any ACPI driver or OSPM code. The debug 3465version of the code includes the debug output trace mechanism and 3466has a larger code and data size. Note that these values will 3467vary 3468depending on the efficiency of the compiler and the compiler 3469options used during generation. 3470 3471 Previous Release (02_07_01) 3472 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 3473 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 3474 Current Release: 3475 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 3476 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 3477 3478 34792) Linux 3480 3481Updated Linux-specific code for core macro and OSL interface 3482changes described above. 3483 3484Improved /proc/acpi/event. It now can be opened only once and has 3485proper poll functionality. 3486 3487Fixed and restructured power management (acpi_bus). 3488 3489Only create /proc "view by type" when devices of that class 3490exist. 3491 3492Fixed "charging/discharging" bug (and others) in acpi_battery. 3493 3494Improved thermal zone code. 3495 3496 34973) ASL Compiler, version X2039: 3498 3499 3500Implemented the new compiler restriction on ASL String hex/octal 3501escapes to non-null, ASCII values. An error results if an 3502invalid 3503value is used. (This will require an ACPI 2.0 specification 3504change.) 3505 3506AML object labels that are output to the optional C and ASM 3507source 3508are now prefixed with both the ACPI table signature and table ID 3509to help guarantee uniqueness within a large BIOS project. 3510 3511 3512---------------------------------------- 3513Summary of changes for this label: 02_01_02 3514 35151) ACPI CA Core Subsystem: 3516 3517ACPI 2.0 support is complete in the entire Core Subsystem and the 3518ASL compiler. All new ACPI 2.0 operators are implemented and all 3519other changes for ACPI 2.0 support are complete. With 3520simultaneous code and data optimizations throughout the 3521subsystem, 3522ACPI 2.0 support has been implemented with almost no additional 3523cost in terms of code and data size. 3524 3525Implemented a new mechanism for allocation of return buffers. If 3526the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 3527be allocated on behalf of the caller. Consolidated all return 3528buffer validation and allocation to a common procedure. Return 3529buffers will be allocated via the primary OSL allocation 3530interface 3531since it appears that a separate pool is not needed by most 3532users. 3533If a separate pool is required for these buffers, the caller can 3534still use the original mechanism and pre-allocate the buffer(s). 3535 3536Implemented support for string operands within the DerefOf 3537operator. 3538 3539Restructured the Hardware and Event managers to be table driven, 3540simplifying the source code and reducing the amount of generated 3541code. 3542 3543Split the common read/write low-level ACPI register bitfield 3544procedure into a separate read and write, simplifying the code 3545considerably. 3546 3547Obsoleted the AcpiOsCallocate OSL interface. This interface was 3548used only a handful of times and didn't have enough critical mass 3549for a separate interface. Replaced with a common calloc 3550procedure 3551in the core. 3552 3553Fixed a reported problem with the GPE number mapping mechanism 3554that allows GPE1 numbers to be non-contiguous with GPE0. 3555Reorganized the GPE information and shrunk a large array that was 3556originally large enough to hold info for all possible GPEs (256) 3557to simply large enough to hold all GPEs up to the largest GPE 3558number on the machine. 3559 3560Fixed a reported problem with resource structure alignment on 64- 3561bit platforms. 3562 3563Changed the AcpiEnableEvent and AcpiDisableEvent external 3564interfaces to not require any flags for the common case of 3565enabling/disabling a GPE. 3566 3567Implemented support to allow a "Notify" on a Processor object. 3568 3569Most TBDs in comments within the source code have been resolved 3570and eliminated. 3571 3572Fixed a problem in the interpreter where a standalone parent 3573prefix (^) was not handled correctly in the interpreter and 3574debugger. 3575 3576Removed obsolete and unnecessary GPE save/restore code. 3577 3578Implemented Field support in the ASL Load operator. This allows 3579a 3580table to be loaded from a named field, in addition to loading a 3581table directly from an Operation Region. 3582 3583Implemented timeout and handle support in the external Global 3584Lock 3585interfaces. 3586 3587Fixed a problem in the AcpiDump utility where pathnames were no 3588longer being generated correctly during the dump of named 3589objects. 3590 3591Modified the AML debugger to give a full display of if/while 3592predicates instead of just one AML opcode at a time. (The 3593predicate can have several nested ASL statements.) The old 3594method 3595was confusing during single stepping. 3596 3597Code and Data Size: Current core subsystem library sizes are 3598shown 3599below. These are the code and data sizes for the acpica.lib 3600produced by the Microsoft Visual C++ 6.0 compiler, and these 3601values do not include any ACPI driver or OSPM code. The debug 3602version of the code includes the debug output trace mechanism and 3603has a larger code and data size. Note that these values will 3604vary 3605depending on the efficiency of the compiler and the compiler 3606options used during generation. 3607 3608 Previous Release (12_18_01) 3609 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 3610 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 3611 Current Release: 3612 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 3613 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 3614 36152) Linux 3616 3617 Implemented fix for PIIX reverse throttling errata (Processor 3618driver) 3619 3620Added new Limit interface (Processor and Thermal drivers) 3621 3622New thermal policy (Thermal driver) 3623 3624Many updates to /proc 3625 3626Battery "low" event support (Battery driver) 3627 3628Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 3629 3630IA32 - IA64 initialization unification, no longer experimental 3631 3632Menuconfig options redesigned 3633 36343) ASL Compiler, version X2037: 3635 3636Implemented several new output features to simplify integration 3637of 3638AML code into firmware: 1) Output the AML in C source code with 3639labels for each named ASL object. The original ASL source 3640code 3641is interleaved as C comments. 2) Output the AML in ASM source 3642code 3643with labels and interleaved ASL source. 3) Output the AML in 3644raw hex table form, in either C or ASM. 3645 3646Implemented support for optional string parameters to the 3647LoadTable operator. 3648 3649Completed support for embedded escape sequences within string 3650literals. The compiler now supports all single character escapes 3651as well as the Octal and Hex escapes. Note: the insertion of a 3652null byte into a string literal (via the hex/octal escape) causes 3653the string to be immediately terminated. A warning is issued. 3654 3655Fixed a problem where incorrect AML was generated for the case 3656where an ASL namepath consists of a single parent prefix ( 3657 3658) with no trailing name segments. 3659 3660The compiler has been successfully generated with a 64-bit C 3661compiler. 3662 3663 3664 3665 3666---------------------------------------- 3667Summary of changes for this label: 12_18_01 3668 36691) Linux 3670 3671Enhanced blacklist with reason and severity fields. Any table's 3672signature may now be used to identify a blacklisted system. 3673 3674Call _PIC control method to inform the firmware which interrupt 3675model the OS is using. Turn on any disabled link devices. 3676 3677Cleaned up busmgr /proc error handling (Andreas Dilger) 3678 3679 2) ACPI CA Core Subsystem: 3680 3681Implemented ACPI 2.0 semantics for the "Break" operator (Exit 3682from 3683while loop) 3684 3685Completed implementation of the ACPI 2.0 "Continue", 3686"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 3687operators. All new ACPI 2.0 operators are now implemented in 3688both 3689the ASL compiler and the AML interpreter. The only remaining 3690ACPI 36912.0 task is support for the String data type in the DerefOf 3692operator. Fixed a problem with AcquireMutex where the status 3693code 3694was lost if the caller had to actually wait for the mutex. 3695 3696Increased the maximum ASL Field size from 64K bits to 4G bits. 3697 3698Completed implementation of the external Global Lock interfaces - 3699- 3700AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 3701Handler parameters were added. 3702 3703Completed another pass at removing warnings and issues when 3704compiling with 64-bit compilers. The code now compiles cleanly 3705with the Intel 64-bit C/C++ compiler. Most notably, the pointer 3706add and subtract (diff) macros have changed considerably. 3707 3708Created and deployed a new ACPI_SIZE type that is 64-bits wide on 370964-bit platforms, 32-bits on all others. This type is used 3710wherever memory allocation and/or the C sizeof() operator is 3711used, 3712and affects the OSL memory allocation interfaces AcpiOsAllocate 3713and AcpiOsCallocate. 3714 3715Implemented sticky user breakpoints in the AML debugger. 3716 3717Code and Data Size: Current core subsystem library sizes are 3718shown 3719below. These are the code and data sizes for the acpica.lib 3720produced by the Microsoft Visual C++ 6.0 compiler, and these 3721values do not include any ACPI driver or OSPM code. The debug 3722version of the code includes the debug output trace mechanism and 3723has a larger code and data size. Note that these values will vary 3724depending on the efficiency of the compiler and the compiler 3725options used during generation. 3726 3727 Previous Release (12_05_01) 3728 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 3729 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 3730 Current Release: 3731 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 3732 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 3733 3734 3) ASL Compiler, version X2034: 3735 3736Now checks for (and generates an error if detected) the use of a 3737Break or Continue statement without an enclosing While statement. 3738 3739Successfully generated the compiler with the Intel 64-bit C 3740compiler. 3741 3742 ---------------------------------------- 3743Summary of changes for this label: 12_05_01 3744 3745 1) ACPI CA Core Subsystem: 3746 3747The ACPI 2.0 CopyObject operator is fully implemented. This 3748operator creates a new copy of an object (and is also used to 3749bypass the "implicit conversion" mechanism of the Store 3750operator.) 3751 3752The ACPI 2.0 semantics for the SizeOf operator are fully 3753implemented. The change is that performing a SizeOf on a 3754reference object causes an automatic dereference of the object to 3755tha actual value before the size is evaluated. This behavior was 3756undefined in ACPI 1.0. 3757 3758The ACPI 2.0 semantics for the Extended IRQ resource descriptor 3759have been implemented. The interrupt polarity and mode are now 3760independently set. 3761 3762Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 3763appearing in Package objects were not properly converted to 3764integers when the internal Package was converted to an external 3765object (via the AcpiEvaluateObject interface.) 3766 3767Fixed a problem with the namespace object deletion mechanism for 3768objects created by control methods. There were two parts to this 3769problem: 1) Objects created during the initialization phase 3770method 3771parse were not being deleted, and 2) The object owner ID 3772mechanism 3773to track objects was broken. 3774 3775Fixed a problem where the use of the ASL Scope operator within a 3776control method would result in an invalid opcode exception. 3777 3778Fixed a problem introduced in the previous label where the buffer 3779length required for the _PRT structure was not being returned 3780correctly. 3781 3782Code and Data Size: Current core subsystem library sizes are 3783shown 3784below. These are the code and data sizes for the acpica.lib 3785produced by the Microsoft Visual C++ 6.0 compiler, and these 3786values do not include any ACPI driver or OSPM code. The debug 3787version of the code includes the debug output trace mechanism and 3788has a larger code and data size. Note that these values will 3789vary 3790depending on the efficiency of the compiler and the compiler 3791options used during generation. 3792 3793 Previous Release (11_20_01) 3794 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 3795 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 3796 3797 Current Release: 3798 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 3799 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 3800 3801 2) Linux: 3802 3803Updated all files to apply cleanly against 2.4.16. 3804 3805Added basic PCI Interrupt Routing Table (PRT) support for IA32 3806(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 3807version supports both static and dyanmic PRT entries, but dynamic 3808entries are treated as if they were static (not yet 3809reconfigurable). Architecture- specific code to use this data is 3810absent on IA32 but should be available shortly. 3811 3812Changed the initialization sequence to start the ACPI interpreter 3813(acpi_init) prior to initialization of the PCI driver (pci_init) 3814in init/main.c. This ordering is required to support PRT and 3815facilitate other (future) enhancement. A side effect is that the 3816ACPI bus driver and certain device drivers can no longer be 3817loaded 3818as modules. 3819 3820Modified the 'make menuconfig' options to allow PCI Interrupt 3821Routing support to be included without the ACPI Bus and other 3822device drivers. 3823 3824 3) ASL Compiler, version X2033: 3825 3826Fixed some issues with the use of the new CopyObject and 3827DataTableRegion operators. Both are fully functional. 3828 3829 ---------------------------------------- 3830Summary of changes for this label: 11_20_01 3831 3832 20 November 2001. Summary of changes for this release. 3833 3834 1) ACPI CA Core Subsystem: 3835 3836Updated Index support to match ACPI 2.0 semantics. Storing a 3837Integer, String, or Buffer to an Index of a Buffer will store 3838only 3839the least-significant byte of the source to the Indexed buffer 3840byte. Multiple writes are not performed. 3841 3842Fixed a problem where the access type used in an AccessAs ASL 3843operator was not recorded correctly into the field object. 3844 3845Fixed a problem where ASL Event objects were created in a 3846signalled state. Events are now created in an unsignalled state. 3847 3848The internal object cache is now purged after table loading and 3849initialization to reduce the use of dynamic kernel memory -- on 3850the assumption that object use is greatest during the parse phase 3851of the entire table (versus the run-time use of individual 3852control 3853methods.) 3854 3855ACPI 2.0 variable-length packages are now fully operational. 3856 3857Code and Data Size: Code and Data optimizations have permitted 3858new 3859feature development with an actual reduction in the library size. 3860Current core subsystem library sizes are shown below. These are 3861the code and data sizes for the acpica.lib produced by the 3862Microsoft Visual C++ 6.0 compiler, and these values do not 3863include 3864any ACPI driver or OSPM code. The debug version of the code 3865includes the debug output trace mechanism and has a larger code 3866and data size. Note that these values will vary depending on the 3867efficiency of the compiler and the compiler options used during 3868generation. 3869 3870 Previous Release (11_09_01): 3871 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 3872 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 3873 3874 Current Release: 3875 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 3876 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 3877 3878 2) Linux: 3879 3880Enhanced the ACPI boot-time initialization code to allow the use 3881of Local APIC tables for processor enumeration on IA-32, and to 3882pave the way for a fully MPS-free boot (on SMP systems) in the 3883near future. This functionality replaces 3884arch/i386/kernel/acpitables.c, which was introduced in an earlier 38852.4.15-preX release. To enable this feature you must add 3886"acpi_boot=on" to the kernel command line -- see the help entry 3887for CONFIG_ACPI_BOOT for more information. An IA-64 release is 3888in 3889the works... 3890 3891Restructured the configuration options to allow boot-time table 3892parsing support without inclusion of the ACPI Interpreter (and 3893other) code. 3894 3895NOTE: This release does not include fixes for the reported 3896events, 3897power-down, and thermal passive cooling issues (coming soon). 3898 3899 3) ASL Compiler: 3900 3901Added additional typechecking for Fields within restricted access 3902Operation Regions. All fields within EC and CMOS regions must be 3903declared with ByteAcc. All fields withing SMBus regions must be 3904declared with the BufferAcc access type. 3905 3906Fixed a problem where the listing file output of control methods 3907no longer interleaved the actual AML code with the ASL source 3908code. 3909 3910 3911 3912---------------------------------------- 3913Summary of changes for this label: 11_09_01 3914 39151) ACPI CA Core Subsystem: 3916 3917Implemented ACPI 2.0-defined support for writes to fields with a 3918Buffer, String, or Integer source operand that is smaller than 3919the 3920target field. In these cases, the source operand is zero-extended 3921to fill the target field. 3922 3923Fixed a problem where a Field starting bit offset (within the 3924parent operation region) was calculated incorrectly if the 3925alignment of the field differed from the access width. This 3926affected CreateWordField, CreateDwordField, CreateQwordField, and 3927possibly other fields that use the "AccessAny" keyword. 3928 3929Fixed a problem introduced in the 11_02_01 release where indirect 3930stores through method arguments did not operate correctly. 3931 39322) Linux: 3933 3934Implemented boot-time ACPI table parsing support 3935(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 3936facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 3937legacy BIOS interfaces (e.g. MPS) for the configuration of system 3938processors, memory, and interrupts during setup_arch(). Note 3939that 3940this patch does not include the required architecture-specific 3941changes required to apply this information -- subsequent patches 3942will be posted for both IA32 and IA64 to achieve this. 3943 3944Added low-level sleep support for IA32 platforms, courtesy of Pat 3945Mochel. This allows IA32 systems to transition to/from various 3946sleeping states (e.g. S1, S3), although the lack of a centralized 3947driver model and power-manageable drivers will prevent its 3948(successful) use on most systems. 3949 3950Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 3951submenu, unified IA32 and IA64 options, added new "Boot using 3952ACPI 3953tables" option, etc. 3954 3955Increased the default timeout for the EC driver from 1ms to 10ms 3956(1000 cycles of 10us) to try to address AE_TIME errors during EC 3957transactions. 3958 3959 ---------------------------------------- 3960Summary of changes for this label: 11_02_01 3961 39621) ACPI CA Core Subsystem: 3963 3964ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 3965(QWordAcc keyword). All ACPI 2.0 64-bit support is now 3966implemented. 3967 3968OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 3969changes to support ACPI 2.0 Qword field access. Read/Write 3970PciConfiguration(), Read/Write Memory(), and Read/Write Port() 3971now 3972accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 3973the value parameter for the address space handler interface is 3974now 3975an ACPI_INTEGER. OSL implementations of these interfaces must 3976now 3977handle the case where the Width parameter is 64. 3978 3979Index Fields: Fixed a problem where unaligned bit assembly and 3980disassembly for IndexFields was not supported correctly. 3981 3982Index and Bank Fields: Nested Index and Bank Fields are now 3983supported. During field access, a check is performed to ensure 3984that the value written to an Index or Bank register is not out of 3985the range of the register. The Index (or Bank) register is 3986written before each access to the field data. Future support will 3987include allowing individual IndexFields to be wider than the 3988DataRegister width. 3989 3990Fields: Fixed a problem where the AML interpreter was incorrectly 3991attempting to write beyond the end of a Field/OpRegion. This was 3992a boundary case that occurred when a DWORD field was written to a 3993BYTE access OpRegion, forcing multiple writes and causing the 3994interpreter to write one datum too many. 3995 3996Fields: Fixed a problem with Field/OpRegion access where the 3997starting bit address of a field was incorrectly calculated if the 3998current access type was wider than a byte (WordAcc, DwordAcc, or 3999QwordAcc). 4000 4001Fields: Fixed a problem where forward references to individual 4002FieldUnits (individual Field names within a Field definition) 4003were 4004not resolved during the AML table load. 4005 4006Fields: Fixed a problem where forward references from a Field 4007definition to the parent Operation Region definition were not 4008resolved during the AML table load. 4009 4010Fields: Duplicate FieldUnit names within a scope are now detected 4011during AML table load. 4012 4013Acpi Interfaces: Fixed a problem where the AcpiGetName() 4014interface 4015returned an incorrect name for the root node. 4016 4017Code and Data Size: Code and Data optimizations have permitted 4018new 4019feature development with an actual reduction in the library size. 4020Current core subsystem library sizes are shown below. These are 4021the code and data sizes for the acpica.lib produced by the 4022Microsoft Visual C++ 6.0 compiler, and these values do not 4023include 4024any ACPI driver or OSPM code. The debug version of the code 4025includes the debug output trace mechanism and has a larger code 4026and data size. Note that these values will vary depending on the 4027efficiency of the compiler and the compiler options used during 4028generation. 4029 4030 Previous Release (10_18_01): 4031 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 4032 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 4033 4034 Current Release: 4035 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 4036 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 4037 4038 2) Linux: 4039 4040Improved /proc processor output (Pavel Machek) Re-added 4041MODULE_LICENSE("GPL") to all modules. 4042 4043 3) ASL Compiler version X2030: 4044 4045Duplicate FieldUnit names within a scope are now detected and 4046flagged as errors. 4047 4048 4) Documentation: 4049 4050Programmer Reference updated to reflect OSL and address space 4051handler interface changes described above. 4052 4053---------------------------------------- 4054Summary of changes for this label: 10_18_01 4055 4056ACPI CA Core Subsystem: 4057 4058Fixed a problem with the internal object reference count 4059mechanism 4060that occasionally caused premature object deletion. This resolves 4061all of the outstanding problem reports where an object is deleted 4062in the middle of an interpreter evaluation. Although this 4063problem 4064only showed up in rather obscure cases, the solution to the 4065problem involved an adjustment of all reference counts involving 4066objects attached to namespace nodes. 4067 4068Fixed a problem with Field support in the interpreter where 4069writing to an aligned field whose length is an exact multiple (2 4070or greater) of the field access granularity would cause an 4071attempt 4072to write beyond the end of the field. 4073 4074The top level AML opcode execution functions within the 4075interpreter have been renamed with a more meaningful and 4076consistent naming convention. The modules exmonad.c and 4077exdyadic.c were eliminated. New modules are exoparg1.c, 4078exoparg2.c, exoparg3.c, and exoparg6.c. 4079 4080Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 4081 4082Fixed a problem where the AML debugger was causing some internal 4083objects to not be deleted during subsystem termination. 4084 4085Fixed a problem with the external AcpiEvaluateObject interface 4086where the subsystem would fault if the named object to be 4087evaluated refered to a constant such as Zero, Ones, etc. 4088 4089Fixed a problem with IndexFields and BankFields where the 4090subsystem would fault if the index, data, or bank registers were 4091not defined in the same scope as the field itself. 4092 4093Added printf format string checking for compilers that support 4094this feature. Corrected more than 50 instances of issues with 4095format specifiers within invocations of ACPI_DEBUG_PRINT 4096throughout the core subsystem code. 4097 4098The ASL "Revision" operator now returns the ACPI support level 4099implemented in the core - the value "2" since the ACPI 2.0 4100support 4101is more than 50% implemented. 4102 4103Enhanced the output of the AML debugger "dump namespace" command 4104to output in a more human-readable form. 4105 4106Current core subsystem library code sizes are shown below. These 4107are the code and data sizes for the acpica.lib produced by the 4108Microsoft Visual C++ 6.0 compiler, and these values do not 4109include 4110any ACPI driver or OSPM code. The debug version of the code 4111includes the full debug trace mechanism -- leading to a much 4112larger code and data size. Note that these values will vary 4113depending on the efficiency of the compiler and the compiler 4114options used during generation. 4115 4116 Previous Label (09_20_01): 4117 Non-Debug Version: 65K Code, 5K Data, 70K Total 4118 Debug Version: 138K Code, 58K Data, 196K Total 4119 4120 This Label: 4121 4122 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 4123 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 4124 4125Linux: 4126 4127Implemented a "Bad BIOS Blacklist" to track machines that have 4128known ASL/AML problems. 4129 4130Enhanced the /proc interface for the thermal zone driver and 4131added 4132support for _HOT (the critical suspend trip point). The 'info' 4133file now includes threshold/policy information, and allows 4134setting 4135of _SCP (cooling preference) and _TZP (polling frequency) values 4136to the 'info' file. Examples: "echo tzp=5 > info" sets the 4137polling 4138frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 4139preference to the passive/quiet mode (if supported by the ASL). 4140 4141Implemented a workaround for a gcc bug that resuted in an OOPs 4142when loading the control method battery driver. 4143 4144 ---------------------------------------- 4145Summary of changes for this label: 09_20_01 4146 4147 ACPI CA Core Subsystem: 4148 4149The AcpiEnableEvent and AcpiDisableEvent interfaces have been 4150modified to allow individual GPE levels to be flagged as wake- 4151enabled (i.e., these GPEs are to remain enabled when the platform 4152sleeps.) 4153 4154The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 4155support wake-enabled GPEs. This means that upon entering the 4156sleep state, all GPEs that are not wake-enabled are disabled. 4157When leaving the sleep state, these GPEs are reenabled. 4158 4159A local double-precision divide/modulo module has been added to 4160enhance portability to OS kernels where a 64-bit math library is 4161not available. The new module is "utmath.c". 4162 4163Several optimizations have been made to reduce the use of CPU 4164stack. Originally over 2K, the maximum stack usage is now below 41652K at 1860 bytes (1.82k) 4166 4167Fixed a problem with the AcpiGetFirmwareTable interface where the 4168root table pointer was not mapped into a logical address 4169properly. 4170 4171Fixed a problem where a NULL pointer was being dereferenced in 4172the 4173interpreter code for the ASL Notify operator. 4174 4175Fixed a problem where the use of the ASL Revision operator 4176returned an error. This operator now returns the current version 4177of the ACPI CA core subsystem. 4178 4179Fixed a problem where objects passed as control method parameters 4180to AcpiEvaluateObject were always deleted at method termination. 4181However, these objects may end up being stored into the namespace 4182by the called method. The object reference count mechanism was 4183applied to these objects instead of a force delete. 4184 4185Fixed a problem where static strings or buffers (contained in the 4186AML code) that are declared as package elements within the ASL 4187code could cause a fault because the interpreter would attempt to 4188delete them. These objects are now marked with the "static 4189object" flag to prevent any attempt to delete them. 4190 4191Implemented an interpreter optimization to use operands directly 4192from the state object instead of extracting the operands to local 4193variables. This reduces stack use and code size, and improves 4194performance. 4195 4196The module exxface.c was eliminated as it was an unnecessary 4197extra 4198layer of code. 4199 4200Current core subsystem library code sizes are shown below. These 4201are the code and data sizes for the acpica.lib produced by the 4202Microsoft Visual C++ 6.0 compiler, and these values do not 4203include 4204any ACPI driver or OSPM code. The debug version of the code 4205includes the full debug trace mechanism -- leading to a much 4206larger code and data size. Note that these values will vary 4207depending on the efficiency of the compiler and the compiler 4208options used during generation. 4209 4210 Non-Debug Version: 65K Code, 5K Data, 70K Total 4211(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 4212Total (Previously 195K) 4213 4214Linux: 4215 4216Support for ACPI 2.0 64-bit integers has been added. All ACPI 4217Integer objects are now 64 bits wide 4218 4219All Acpi data types and structures are now in lower case. Only 4220Acpi macros are upper case for differentiation. 4221 4222 Documentation: 4223 4224Changes to the external interfaces as described above. 4225 4226 ---------------------------------------- 4227Summary of changes for this label: 08_31_01 4228 4229 ACPI CA Core Subsystem: 4230 4231A bug with interpreter implementation of the ASL Divide operator 4232was found and fixed. The implicit function return value (not the 4233explicit store operands) was returning the remainder instead of 4234the quotient. This was a longstanding bug and it fixes several 4235known outstanding issues on various platforms. 4236 4237The ACPI_DEBUG_PRINT and function trace entry/exit macros have 4238been further optimized for size. There are 700 invocations of 4239the 4240DEBUG_PRINT macro alone, so each optimization reduces the size of 4241the debug version of the subsystem significantly. 4242 4243A stack trace mechanism has been implemented. The maximum stack 4244usage is about 2K on 32-bit platforms. The debugger command 4245"stat 4246stack" will display the current maximum stack usage. 4247 4248All public symbols and global variables within the subsystem are 4249now prefixed with the string "Acpi". This keeps all of the 4250symbols grouped together in a kernel map, and avoids conflicts 4251with other kernel subsystems. 4252 4253Most of the internal fixed lookup tables have been moved into the 4254code segment via the const operator. 4255 4256Several enhancements have been made to the interpreter to both 4257reduce the code size and improve performance. 4258 4259Current core subsystem library code sizes are shown below. These 4260are the code and data sizes for the acpica.lib produced by the 4261Microsoft Visual C++ 6.0 compiler, and these values do not 4262include 4263any ACPI driver or OSPM code. The debug version of the code 4264includes the full debug trace mechanism which contains over 700 4265invocations of the DEBUG_PRINT macro, 500 function entry macro 4266invocations, and over 900 function exit macro invocations -- 4267leading to a much larger code and data size. Note that these 4268values will vary depending on the efficiency of the compiler and 4269the compiler options used during generation. 4270 4271 Non-Debug Version: 64K Code, 5K Data, 69K Total 4272Debug Version: 137K Code, 58K Data, 195K Total 4273 4274 Linux: 4275 4276Implemented wbinvd() macro, pending a kernel-wide definition. 4277 4278Fixed /proc/acpi/event to handle poll() and short reads. 4279 4280 ASL Compiler, version X2026: 4281 4282Fixed a problem introduced in the previous label where the AML 4283code emitted for package objects produced packages with zero 4284length. 4285 4286 ---------------------------------------- 4287Summary of changes for this label: 08_16_01 4288 4289ACPI CA Core Subsystem: 4290 4291The following ACPI 2.0 ASL operators have been implemented in the 4292AML interpreter (These are already supported by the Intel ASL 4293compiler): ToDecimalString, ToHexString, ToString, ToInteger, 4294and 4295ToBuffer. Support for 64-bit AML constants is implemented in the 4296AML parser, debugger, and disassembler. 4297 4298The internal memory tracking mechanism (leak detection code) has 4299been upgraded to reduce the memory overhead (a separate tracking 4300block is no longer allocated for each memory allocation), and now 4301supports all of the internal object caches. 4302 4303The data structures and code for the internal object caches have 4304been coelesced and optimized so that there is a single cache and 4305memory list data structure and a single group of functions that 4306implement generic cache management. This has reduced the code 4307size in both the debug and release versions of the subsystem. 4308 4309The DEBUG_PRINT macro(s) have been optimized for size and 4310replaced 4311by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 4312different, because it generates a single call to an internal 4313function. This results in a savings of about 90 bytes per 4314invocation, resulting in an overall code and data savings of 4315about 431616% in the debug version of the subsystem. 4317 4318 Linux: 4319 4320Fixed C3 disk corruption problems and re-enabled C3 on supporting 4321machines. 4322 4323Integrated low-level sleep code by Patrick Mochel. 4324 4325Further tweaked source code Linuxization. 4326 4327Other minor fixes. 4328 4329 ASL Compiler: 4330 4331Support for ACPI 2.0 variable length packages is fixed/completed. 4332 4333Fixed a problem where the optional length parameter for the ACPI 43342.0 ToString operator. 4335 4336Fixed multiple extraneous error messages when a syntax error is 4337detected within the declaration line of a control method. 4338 4339 ---------------------------------------- 4340Summary of changes for this label: 07_17_01 4341 4342ACPI CA Core Subsystem: 4343 4344Added a new interface named AcpiGetFirmwareTable to obtain any 4345ACPI table via the ACPI signature. The interface can be called 4346at 4347any time during kernel initialization, even before the kernel 4348virtual memory manager is initialized and paging is enabled. 4349This 4350allows kernel subsystems to obtain ACPI tables very early, even 4351before the ACPI CA subsystem is initialized. 4352 4353Fixed a problem where Fields defined with the AnyAcc attribute 4354could be resolved to the incorrect address under the following 4355conditions: 1) the field width is larger than 8 bits and 2) the 4356parent operation region is not defined on a DWORD boundary. 4357 4358Fixed a problem where the interpreter is not being locked during 4359namespace initialization (during execution of the _INI control 4360methods), causing an error when an attempt is made to release it 4361later. 4362 4363ACPI 2.0 support in the AML Interpreter has begun and will be 4364ongoing throughout the rest of this year. In this label, The Mod 4365operator is implemented. 4366 4367Added a new data type to contain full PCI addresses named 4368ACPI_PCI_ID. This structure contains the PCI Segment, Bus, 4369Device, 4370and Function values. 4371 4372 Linux: 4373 4374Enhanced the Linux version of the source code to change most 4375capitalized ACPI type names to lowercase. For example, all 4376instances of ACPI_STATUS are changed to acpi_status. This will 4377result in a large diff, but the change is strictly cosmetic and 4378aligns the CA code closer to the Linux coding standard. 4379 4380OSL Interfaces: 4381 4382The interfaces to the PCI configuration space have been changed 4383to 4384add the PCI Segment number and to split the single 32-bit 4385combined 4386DeviceFunction field into two 16-bit fields. This was 4387accomplished by moving the four values that define an address in 4388PCI configuration space (segment, bus, device, and function) to 4389the new ACPI_PCI_ID structure. 4390 4391The changes to the PCI configuration space interfaces led to a 4392reexamination of the complete set of address space access 4393interfaces for PCI, I/O, and Memory. The previously existing 18 4394interfaces have proven difficult to maintain (any small change 4395must be propagated across at least 6 interfaces) and do not 4396easily 4397allow for future expansion to 64 bits if necessary. Also, on 4398some 4399systems, it would not be appropriate to demultiplex the access 4400width (8, 16, 32,or 64) before calling the OSL if the 4401corresponding native OS interfaces contain a similar access width 4402parameter. For these reasons, the 18 address space interfaces 4403have been replaced by these 6 new ones: 4404 4405AcpiOsReadPciConfiguration 4406AcpiOsWritePciConfiguration 4407AcpiOsReadMemory 4408AcpiOsWriteMemory 4409AcpiOsReadPort 4410AcpiOsWritePort 4411 4412Added a new interface named AcpiOsGetRootPointer to allow the OSL 4413to perform the platform and/or OS-specific actions necessary to 4414obtain the ACPI RSDP table pointer. On IA-32 platforms, this 4415interface will simply call down to the CA core to perform the low- 4416memory search for the table. On IA-64, the RSDP is obtained from 4417EFI. Migrating this interface to the OSL allows the CA core to 4418remain OS and platform independent. 4419 4420Added a new interface named AcpiOsSignal to provide a generic 4421"function code and pointer" interface for various miscellaneous 4422signals and notifications that must be made to the host OS. The 4423first such signals are intended to support the ASL Fatal and 4424Breakpoint operators. In the latter case, the AcpiOsBreakpoint 4425interface has been obsoleted. 4426 4427The definition of the AcpiFormatException interface has been 4428changed to simplify its use. The caller no longer must supply a 4429buffer to the call; A pointer to a const string is now returned 4430directly. This allows the call to be easily used in printf 4431statements, etc. since the caller does not have to manage a local 4432buffer. 4433 4434 4435 ASL Compiler, Version X2025: 4436 4437The ACPI 2.0 Switch/Case/Default operators have been implemented 4438and are fully functional. They will work with all ACPI 1.0 4439interpreters, since the operators are simply translated to 4440If/Else 4441pairs. 4442 4443The ACPI 2.0 ElseIf operator is implemented and will also work 4444with 1.0 interpreters, for the same reason. 4445 4446Implemented support for ACPI 2.0 variable-length packages. These 4447packages have a separate opcode, and their size is determined by 4448the interpreter at run-time. 4449 4450Documentation The ACPI CA Programmer Reference has been updated 4451to 4452reflect the new interfaces and changes to existing interfaces. 4453 4454 ------------------------------------------ 4455Summary of changes for this label: 06_15_01 4456 4457 ACPI CA Core Subsystem: 4458 4459Fixed a problem where a DWORD-accessed field within a Buffer 4460object would get its byte address inadvertently rounded down to 4461the nearest DWORD. Buffers are always Byte-accessible. 4462 4463 ASL Compiler, version X2024: 4464 4465Fixed a problem where the Switch() operator would either fault or 4466hang the compiler. Note however, that the AML code for this ACPI 44672.0 operator is not yet implemented. 4468 4469Compiler uses the new AcpiOsGetTimer interface to obtain compile 4470timings. 4471 4472Implementation of the CreateField operator automatically converts 4473a reference to a named field within a resource descriptor from a 4474byte offset to a bit offset if required. 4475 4476Added some missing named fields from the resource descriptor 4477support. These are the names that are automatically created by 4478the 4479compiler to reference fields within a descriptor. They are only 4480valid at compile time and are not passed through to the AML 4481interpreter. 4482 4483Resource descriptor named fields are now typed as Integers and 4484subject to compile-time typechecking when used in expressions. 4485 4486 ------------------------------------------ 4487Summary of changes for this label: 05_18_01 4488 4489 ACPI CA Core Subsystem: 4490 4491Fixed a couple of problems in the Field support code where bits 4492from adjacent fields could be returned along with the proper 4493field 4494bits. Restructured the field support code to improve performance, 4495readability and maintainability. 4496 4497New DEBUG_PRINTP macro automatically inserts the procedure name 4498into the output, saving hundreds of copies of procedure name 4499strings within the source, shrinking the memory footprint of the 4500debug version of the core subsystem. 4501 4502 Source Code Structure: 4503 4504The source code directory tree was restructured to reflect the 4505current organization of the component architecture. Some files 4506and directories have been moved and/or renamed. 4507 4508 Linux: 4509 4510Fixed leaking kacpidpc processes. 4511 4512Fixed queueing event data even when /proc/acpi/event is not 4513opened. 4514 4515 ASL Compiler, version X2020: 4516 4517Memory allocation performance enhancement - over 24X compile time 4518improvement on large ASL files. Parse nodes and namestring 4519buffers are now allocated from a large internal compiler buffer. 4520 4521The temporary .SRC file is deleted unless the "-s" option is 4522specified 4523 4524The "-d" debug output option now sends all output to the .DBG 4525file 4526instead of the console. 4527 4528"External" second parameter is now optional 4529 4530"ElseIf" syntax now properly allows the predicate 4531 4532Last operand to "Load" now recognized as a Target operand 4533 4534Debug object can now be used anywhere as a normal object. 4535 4536ResourceTemplate now returns an object of type BUFFER 4537 4538EISAID now returns an object of type INTEGER 4539 4540"Index" now works with a STRING operand 4541 4542"LoadTable" now accepts optional parameters 4543 4544"ToString" length parameter is now optional 4545 4546"Interrupt (ResourceType," parse error fixed. 4547 4548"Register" with a user-defined region space parse error fixed 4549 4550Escaped backslash at the end of a string ("\\") scan/parse error 4551fixed 4552 4553"Revision" is now an object of type INTEGER. 4554 4555 4556 4557------------------------------------------ 4558Summary of changes for this label: 05_02_01 4559 4560Linux: 4561 4562/proc/acpi/event now blocks properly. 4563 4564Removed /proc/sys/acpi. You can still dump your DSDT from 4565/proc/acpi/dsdt. 4566 4567 ACPI CA Core Subsystem: 4568 4569Fixed a problem introduced in the previous label where some of 4570the 4571"small" resource descriptor types were not recognized. 4572 4573Improved error messages for the case where an ASL Field is 4574outside 4575the range of the parent operation region. 4576 4577 ASL Compiler, version X2018: 4578 4579Added error detection for ASL Fields that extend beyond the 4580length 4581of the parent operation region (only if the length of the region 4582is known at compile time.) This includes fields that have a 4583minimum access width that is smaller than the parent region, and 4584individual field units that are partially or entirely beyond the 4585extent of the parent. 4586 4587 4588 4589------------------------------------------ 4590Summary of changes for this label: 04_27_01 4591 4592 ACPI CA Core Subsystem: 4593 4594Fixed a problem where the namespace mutex could be released at 4595the 4596wrong time during execution of AcpiRemoveAddressSpaceHandler. 4597 4598Added optional thread ID output for debug traces, to simplify 4599debugging of multiple threads. Added context switch notification 4600when the debug code realizes that a different thread is now 4601executing ACPI code. 4602 4603Some additional external data types have been prefixed with the 4604string "ACPI_" for consistency. This may effect existing code. 4605The data types affected are the external callback typedefs - 4606e.g., 4607WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 4608 4609 Linux: 4610 4611Fixed an issue with the OSL semaphore implementation where a 4612thread was waking up with an error from receiving a SIGCHLD 4613signal. 4614 4615Linux version of ACPI CA now uses the system C library for string 4616manipulation routines instead of a local implementation. 4617 4618Cleaned up comments and removed TBDs. 4619 4620 ASL Compiler, version X2017: 4621 4622Enhanced error detection and reporting for all file I/O 4623operations. 4624 4625 Documentation: 4626 4627Programmer Reference updated to version 1.06. 4628 4629 4630 4631------------------------------------------ 4632Summary of changes for this label: 04_13_01 4633 4634 ACPI CA Core Subsystem: 4635 4636Restructured support for BufferFields and RegionFields. 4637BankFields support is now fully operational. All known 32-bit 4638limitations on field sizes have been removed. Both BufferFields 4639and (Operation) RegionFields are now supported by the same field 4640management code. 4641 4642Resource support now supports QWORD address and IO resources. The 464316/32/64 bit address structures and the Extended IRQ structure 4644have been changed to properly handle Source Resource strings. 4645 4646A ThreadId of -1 is now used to indicate a "mutex not acquired" 4647condition internally and must never be returned by 4648AcpiOsThreadId. 4649This reserved value was changed from 0 since Unix systems allow a 4650thread ID of 0. 4651 4652Linux: 4653 4654Driver code reorganized to enhance portability 4655 4656Added a kernel configuration option to control ACPI_DEBUG 4657 4658Fixed the EC driver to honor _GLK. 4659 4660ASL Compiler, version X2016: 4661 4662Fixed support for the "FixedHw" keyword. Previously, the FixedHw 4663address space was set to 0, not 0x7f as it should be. 4664 4665 ------------------------------------------ 4666Summary of changes for this label: 03_13_01 4667 4668 ACPI CA Core Subsystem: 4669 4670During ACPI initialization, the _SB_._INI method is now run if 4671present. 4672 4673Notify handler fix - notifies are deferred until the parent 4674method 4675completes execution. This fixes the "mutex already acquired" 4676issue seen occasionally. 4677 4678Part of the "implicit conversion" rules in ACPI 2.0 have been 4679found to cause compatibility problems with existing ASL/AML. The 4680convert "result-to-target-type" implementation has been removed 4681for stores to method Args and Locals. Source operand conversion 4682is still fully implemented. Possible changes to ACPI 2.0 4683specification pending. 4684 4685Fix to AcpiRsCalculatePciRoutingTableLength to return correct 4686length. 4687 4688Fix for compiler warnings for 64-bit compiles. 4689 4690 Linux: 4691 4692/proc output aligned for easier parsing. 4693 4694Release-version compile problem fixed. 4695 4696New kernel configuration options documented in Configure.help. 4697 4698IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 4699context" message. 4700 4701 OSPM: 4702 4703Power resource driver integrated with bus manager. 4704 4705Fixed kernel fault during active cooling for thermal zones. 4706 4707Source Code: 4708 4709The source code tree has been restructured. 4710 4711 4712 4713------------------------------------------ 4714Summary of changes for this label: 03_02_01 4715 4716 Linux OS Services Layer (OSL): 4717 4718Major revision of all Linux-specific code. 4719 4720Modularized all ACPI-specific drivers. 4721 4722Added new thermal zone and power resource drivers. 4723 4724Revamped /proc interface (new functionality is under /proc/acpi). 4725 4726New kernel configuration options. 4727 4728 Linux known issues: 4729 4730New kernel configuration options not documented in Configure.help 4731yet. 4732 4733 4734Module dependencies not currently implemented. If used, they 4735should be loaded in this order: busmgr, power, ec, system, 4736processor, battery, ac_adapter, button, thermal. 4737 4738Modules will not load if CONFIG_MODVERSION is set. 4739 4740IBM 600E - entering S5 may reboot instead of shutting down. 4741 4742IBM 600E - Sleep button may generate "Invalid <NULL> context" 4743message. 4744 4745Some systems may fail with "execution mutex already acquired" 4746message. 4747 4748 ACPI CA Core Subsystem: 4749 4750Added a new OSL Interface, AcpiOsGetThreadId. This was required 4751for the deadlock detection code. Defined to return a non-zero, 475232- 4753bit thread ID for the currently executing thread. May be a non- 4754zero constant integer on single-thread systems. 4755 4756Implemented deadlock detection for internal subsystem mutexes. 4757We 4758may add conditional compilation for this code (debug only) later. 4759 4760ASL/AML Mutex object semantics are now fully supported. This 4761includes multiple acquires/releases by owner and support for the 4762Mutex SyncLevel parameter. 4763 4764A new "Force Release" mechanism automatically frees all ASL 4765Mutexes that have been acquired but not released when a thread 4766exits the interpreter. This forces conformance to the ACPI spec 4767("All mutexes must be released when an invocation exits") and 4768prevents deadlocked ASL threads. This mechanism can be expanded 4769(later) to monitor other resource acquisitions if OEM ASL code 4770continues to misbehave (which it will). 4771 4772Several new ACPI exception codes have been added for the Mutex 4773support. 4774 4775Recursive method calls are now allowed and supported (the ACPI 4776spec does in fact allow recursive method calls.) The number of 4777recursive calls is subject to the restrictions imposed by the 4778SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 4779parameter. 4780 4781Implemented support for the SyncLevel parameter for control 4782methods (ACPI 2.0 feature) 4783 4784Fixed a deadlock problem when multiple threads attempted to use 4785the interpreter. 4786 4787Fixed a problem where the string length of a String package 4788element was not always set in a package returned from 4789AcpiEvaluateObject. 4790 4791Fixed a problem where the length of a String package element was 4792not always included in the length of the overall package returned 4793from AcpiEvaluateObject. 4794 4795Added external interfaces (Acpi*) to the ACPI debug memory 4796manager. This manager keeps a list of all outstanding 4797allocations, and can therefore detect memory leaks and attempts 4798to 4799free memory blocks more than once. Useful for code such as the 4800power manager, etc. May not be appropriate for device drivers. 4801Performance with the debug code enabled is slow. 4802 4803The ACPI Global Lock is now an optional hardware element. 4804 4805 ASL Compiler Version X2015: 4806 4807Integrated changes to allow the compiler to be generated on 4808multiple platforms. 4809 4810Linux makefile added to generate the compiler on Linux 4811 4812 Source Code: 4813 4814All platform-specific headers have been moved to their own 4815subdirectory, Include/Platform. 4816 4817New source file added, Interpreter/ammutex.c 4818 4819New header file, Include/acstruct.h 4820 4821 Documentation: 4822 4823The programmer reference has been updated for the following new 4824interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 4825 4826 ------------------------------------------ 4827Summary of changes for this label: 02_08_01 4828 4829Core ACPI CA Subsystem: Fixed a problem where an error was 4830incorrectly returned if the return resource buffer was larger 4831than 4832the actual data (in the resource interfaces). 4833 4834References to named objects within packages are resolved to the 4835full pathname string before packages are returned directly (via 4836the AcpiEvaluateObject interface) or indirectly via the resource 4837interfaces. 4838 4839Linux OS Services Layer (OSL): 4840 4841Improved /proc battery interface. 4842 4843 4844Added C-state debugging output and other miscellaneous fixes. 4845 4846ASL Compiler Version X2014: 4847 4848All defined method arguments can now be used as local variables, 4849including the ones that are not actually passed in as parameters. 4850The compiler tracks initialization of the arguments and issues an 4851exception if they are used without prior assignment (just like 4852locals). 4853 4854The -o option now specifies a filename prefix that is used for 4855all 4856output files, including the AML output file. Otherwise, the 4857default behavior is as follows: 1) the AML goes to the file 4858specified in the DSDT. 2) all other output files use the input 4859source filename as the base. 4860 4861 ------------------------------------------ 4862Summary of changes for this label: 01_25_01 4863 4864Core ACPI CA Subsystem: Restructured the implementation of object 4865store support within the interpreter. This includes support for 4866the Store operator as well as any ASL operators that include a 4867target operand. 4868 4869Partially implemented support for Implicit Result-to-Target 4870conversion. This is when a result object is converted on the fly 4871to the type of an existing target object. Completion of this 4872support is pending further analysis of the ACPI specification 4873concerning this matter. 4874 4875CPU-specific code has been removed from the subsystem (hardware 4876directory). 4877 4878New Power Management Timer functions added 4879 4880Linux OS Services Layer (OSL): Moved system state transition code 4881to the core, fixed it, and modified Linux OSL accordingly. 4882 4883Fixed C2 and C3 latency calculations. 4884 4885 4886We no longer use the compilation date for the version message on 4887initialization, but retrieve the version from 4888AcpiGetSystemInfo(). 4889 4890Incorporated for fix Sony VAIO machines. 4891 4892Documentation: The Programmer Reference has been updated and 4893reformatted. 4894 4895 4896ASL Compiler: Version X2013: Fixed a problem where the line 4897numbering and error reporting could get out of sync in the 4898presence of multiple include files. 4899 4900 ------------------------------------------ 4901Summary of changes for this label: 01_15_01 4902 4903Core ACPI CA Subsystem: 4904 4905Implemented support for type conversions in the execution of the 4906ASL Concatenate operator (The second operand is converted to 4907match the type of the first operand before concatenation.) 4908 4909Support for implicit source operand conversion is partially 4910implemented. The ASL source operand types Integer, Buffer, and 4911String are freely interchangeable for most ASL operators and are 4912converted by the interpreter on the fly as required. Implicit 4913Target operand conversion (where the result is converted to the 4914target type before storing) is not yet implemented. 4915 4916Support for 32-bit and 64-bit BCD integers is implemented. 4917 4918Problem fixed where a field read on an aligned field could cause 4919a 4920read past the end of the field. 4921 4922New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 4923does not return a value, but the caller expects one. (The ASL 4924compiler flags this as a warning.) 4925 4926ASL Compiler: 4927 4928Version X2011: 49291. Static typechecking of all operands is implemented. This 4930prevents the use of invalid objects (such as using a Package 4931where 4932an Integer is required) at compile time instead of at interpreter 4933run-time. 49342. The ASL source line is printed with ALL errors and warnings. 49353. Bug fix for source EOF without final linefeed. 49364. Debug option is split into a parse trace and a namespace 4937trace. 49385. Namespace output option (-n) includes initial values for 4939integers and strings. 49406. Parse-only option added for quick syntax checking. 49417. Compiler checks for duplicate ACPI name declarations 4942 4943Version X2012: 49441. Relaxed typechecking to allow interchangeability between 4945strings, integers, and buffers. These types are now converted by 4946the interpreter at runtime. 49472. Compiler reports time taken by each internal subsystem in the 4948debug output file. 4949 4950 4951 ------------------------------------------ 4952Summary of changes for this label: 12_14_00 4953 4954ASL Compiler: 4955 4956This is the first official release of the compiler. Since the 4957compiler requires elements of the Core Subsystem, this label 4958synchronizes everything. 4959 4960------------------------------------------ 4961Summary of changes for this label: 12_08_00 4962 4963 4964Fixed a problem where named references within the ASL definition 4965of both OperationRegions and CreateXXXFields did not work 4966properly. The symptom was an AE_AML_OPERAND_TYPE during 4967initialization of the region/field. This is similar (but not 4968related internally) to the problem that was fixed in the last 4969label. 4970 4971Implemented both 32-bit and 64-bit support for the BCD ASL 4972functions ToBCD and FromBCD. 4973 4974Updated all legal headers to include "2000" in the copyright 4975years. 4976 4977 ------------------------------------------ 4978Summary of changes for this label: 12_01_00 4979 4980Fixed a problem where method invocations within the ASL 4981definition 4982of both OperationRegions and CreateXXXFields did not work 4983properly. The symptom was an AE_AML_OPERAND_TYPE during 4984initialization of the region/field: 4985 4986 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 4987[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 4988(0x3005) 4989 4990Fixed a problem where operators with more than one nested 4991subexpression would fail. The symptoms were varied, by mostly 4992AE_AML_OPERAND_TYPE errors. This was actually a rather serious 4993problem that has gone unnoticed until now. 4994 4995 Subtract (Add (1,2), Multiply (3,4)) 4996 4997Fixed a problem where AcpiGetHandle didn't quite get fixed in the 4998previous build (The prefix part of a relative path was handled 4999incorrectly). 5000 5001Fixed a problem where Operation Region initialization failed if 5002the operation region name was a "namepath" instead of a simple 5003"nameseg". Symptom was an AE_NO_OPERAND error. 5004 5005Fixed a problem where an assignment to a local variable via the 5006indirect RefOf mechanism only worked for the first such 5007assignment. Subsequent assignments were ignored. 5008 5009 ------------------------------------------ 5010Summary of changes for this label: 11_15_00 5011 5012ACPI 2.0 table support with backwards support for ACPI 1.0 and 5013the 50140.71 extensions. Note: although we can read ACPI 2.0 BIOS 5015tables, 5016the AML interpreter does NOT have support for the new 2.0 ASL 5017grammar terms at this time. 5018 5019All ACPI hardware access is via the GAS structures in the ACPI 50202.0 5021FADT. 5022 5023All physical memory addresses across all platforms are now 64 5024bits 5025wide. Logical address width remains dependent on the platform 5026(i.e., "void *"). 5027 5028AcpiOsMapMemory interface changed to a 64-bit physical address. 5029 5030The AML interpreter integer size is now 64 bits, as per the ACPI 50312.0 specification. 5032 5033For backwards compatibility with ACPI 1.0, ACPI tables with a 5034revision number less than 2 use 32-bit integers only. 5035 5036Fixed a problem where the evaluation of OpRegion operands did not 5037always resolve them to numbers properly. 5038 5039------------------------------------------ 5040Summary of changes for this label: 10_20_00 5041 5042Fix for CBN_._STA issue. This fix will allow correct access to 5043CBN_ OpRegions when the _STA returns 0x8. 5044 5045Support to convert ACPI constants (Ones, Zeros, One) to actual 5046values before a package object is returned 5047 5048Fix for method call as predicate to if/while construct causing 5049incorrect if/while behavior 5050 5051Fix for Else block package lengths sometimes calculated wrong (if 5052block > 63 bytes) 5053 5054Fix for Processor object length field, was always zero 5055 5056Table load abort if FACP sanity check fails 5057 5058Fix for problem with Scope(name) if name already exists 5059 5060Warning emitted if a named object referenced cannot be found 5061(resolved) during method execution. 5062 5063 5064 5065 5066 5067------------------------------------------ 5068Summary of changes for this label: 9_29_00 5069 5070New table initialization interfaces: AcpiInitializeSubsystem no 5071longer has any parameters AcpiFindRootPointer - Find the RSDP (if 5072necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 5073>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 5074AcpiLoadTables 5075 5076Note: These interface changes require changes to all existing 5077OSDs 5078 5079The PCI_Config default address space handler is always installed 5080at the root namespace object. 5081 5082------------------------------------------- 5083Summary of changes for this label: 09_15_00 5084 5085The new initialization architecture is implemented. New 5086interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 5087AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 5088(Namespace is automatically loaded when a table is loaded) 5089 5090The ACPI_OPERAND_OBJECT has been optimized to shrink its size 5091from 509252 bytes to 32 bytes. There is usually one of these for every 5093namespace object, so the memory savings is significant. 5094 5095Implemented just-in-time evaluation of the CreateField operators. 5096 5097Bug fixes for IA-64 support have been integrated. 5098 5099Additional code review comments have been implemented 5100 5101The so-called "third pass parse" has been replaced by a final 5102walk 5103through the namespace to initialize all operation regions 5104(address 5105spaces) and fields that have not yet been initialized during the 5106execution of the various _INI and REG methods. 5107 5108New file - namespace/nsinit.c 5109 5110------------------------------------------- 5111Summary of changes for this label: 09_01_00 5112 5113Namespace manager data structures have been reworked to change 5114the 5115primary object from a table to a single object. This has 5116resulted in dynamic memory savings of 3X within the namespace 5117and 51182X overall in the ACPI CA subsystem. 5119 5120Fixed problem where the call to AcpiEvFindPciRootBuses was 5121inadvertently left commented out. 5122 5123Reduced the warning count when generating the source with the GCC 5124compiler. 5125 5126Revision numbers added to each module header showing the 5127SourceSafe version of the file. Please refer to this version 5128number when giving us feedback or comments on individual modules. 5129 5130The main object types within the subsystem have been renamed to 5131clarify their purpose: 5132 5133ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 5134ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 5135ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 5136 5137NOTE: no changes to the initialization sequence are included in 5138this label. 5139 5140------------------------------------------- 5141Summary of changes for this label: 08_23_00 5142 5143Fixed problem where TerminateControlMethod was being called 5144multiple times per method 5145 5146Fixed debugger problem where single stepping caused a semaphore 5147to 5148be oversignalled 5149 5150Improved performance through additional parse object caching - 5151added ACPI_EXTENDED_OP type 5152 5153------------------------------------------- 5154Summary of changes for this label: 08_10_00 5155 5156Parser/Interpreter integration: Eliminated the creation of 5157complete parse trees for ACPI tables and control methods. 5158Instead, parse subtrees are created and then deleted as soon as 5159they are processed (Either entered into the namespace or 5160executed 5161by the interpreter). This reduces the use of dynamic kernel 5162memory significantly. (about 10X) 5163 5164Exception codes broken into classes and renumbered. Be sure to 5165recompile all code that includes acexcep.h. Hopefully we won't 5166have to renumber the codes again now that they are split into 5167classes (environment, programmer, AML code, ACPI table, and 5168internal). 5169 5170Fixed some additional alignment issues in the Resource Manager 5171subcomponent 5172 5173Implemented semaphore tracking in the AcpiExec utility, and fixed 5174several places where mutexes/semaphores were being unlocked 5175without a corresponding lock operation. There are no known 5176semaphore or mutex "leaks" at this time. 5177 5178Fixed the case where an ASL Return operator is used to return an 5179unnamed package. 5180 5181------------------------------------------- 5182Summary of changes for this label: 07_28_00 5183 5184Fixed a problem with the way addresses were calculated in 5185AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 5186manifested itself when a Field was created with WordAccess or 5187DwordAccess, but the field unit defined within the Field was 5188less 5189than a Word or Dword. 5190 5191Fixed a problem in AmlDumpOperands() module's loop to pull 5192operands off of the operand stack to display information. The 5193problem manifested itself as a TLB error on 64-bit systems when 5194accessing an operand stack with two or more operands. 5195 5196Fixed a problem with the PCI configuration space handlers where 5197context was getting confused between accesses. This required a 5198change to the generic address space handler and address space 5199setup definitions. Handlers now get both a global handler 5200context 5201(this is the one passed in by the user when executing 5202AcpiInstallAddressSpaceHandler() and a specific region context 5203that is unique to each region (For example, the _ADR, _SEG and 5204_BBN values associated with a specific region). The generic 5205function definitions have changed to the following: 5206 5207typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 5208UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 5209*HandlerContext, // This used to be void *Context void 5210*RegionContext); // This is an additional parameter 5211 5212typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 5213RegionHandle, UINT32 Function, void *HandlerContext, void 5214**RegionContext); // This used to be **ReturnContext 5215 5216------------------------------------------- 5217Summary of changes for this label: 07_21_00 5218 5219Major file consolidation and rename. All files within the 5220interpreter have been renamed as well as most header files. 5221This 5222was done to prevent collisions with existing files in the host 5223OSs -- filenames such as "config.h" and "global.h" seem to be 5224quite common. The VC project files have been updated. All 5225makefiles will require modification. 5226 5227The parser/interpreter integration continues in Phase 5 with the 5228implementation of a complete 2-pass parse (the AML is parsed 5229twice) for each table; This avoids the construction of a huge 5230parse tree and therefore reduces the amount of dynamic memory 5231required by the subsystem. Greater use of the parse object cache 5232means that performance is unaffected. 5233 5234Many comments from the two code reviews have been rolled in. 5235 5236The 64-bit alignment support is complete. 5237 5238------------------------------------------- 5239Summary of changes for this label: 06_30_00 5240 5241With a nod and a tip of the hat to the technology of yesteryear, 5242we've added support in the source code for 80 column output 5243devices. The code is now mostly constrained to 80 columns or 5244less to support environments and editors that 1) cannot display 5245or print more than 80 characters on a single line, and 2) cannot 5246disable line wrapping. 5247 5248A major restructuring of the namespace data structure has been 5249completed. The result is 1) cleaner and more 5250understandable/maintainable code, and 2) a significant reduction 5251in the dynamic memory requirement for each named ACPI object 5252(almost half). 5253 5254------------------------------------------- 5255Summary of changes for this label: 06_23_00 5256 5257Linux support has been added. In order to obtain approval to get 5258the ACPI CA subsystem into the Linux kernel, we've had to make 5259quite a few changes to the base subsystem that will affect all 5260users (all the changes are generic and OS- independent). The 5261effects of these global changes have been somewhat far reaching. 5262Files have been merged and/or renamed and interfaces have been 5263renamed. The major changes are described below. 5264 5265Osd* interfaces renamed to AcpiOs* to eliminate namespace 5266pollution/confusion within our target kernels. All OSD 5267interfaces must be modified to match the new naming convention. 5268 5269Files merged across the subsystem. A number of the smaller 5270source 5271and header files have been merged to reduce the file count and 5272increase the density of the existing files. There are too many 5273to list here. In general, makefiles that call out individual 5274files will require rebuilding. 5275 5276Interpreter files renamed. All interpreter files now have the 5277prefix am* instead of ie* and is*. 5278 5279Header files renamed: The acapi.h file is now acpixf.h. The 5280acpiosd.h file is now acpiosxf.h. We are removing references to 5281the acronym "API" since it is somewhat windowsy. The new name is 5282"external interface" or xface or xf in the filenames.j 5283 5284 5285All manifest constants have been forced to upper case (some were 5286mixed case.) Also, the string "ACPI_" has been prepended to 5287many 5288(not all) of the constants, typedefs, and structs. 5289 5290The globals "DebugLevel" and "DebugLayer" have been renamed 5291"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 5292 5293All other globals within the subsystem are now prefixed with 5294"AcpiGbl_" Internal procedures within the subsystem are now 5295prefixed with "Acpi" (with only a few exceptions). The original 5296two-letter abbreviation for the subcomponent remains after 5297"Acpi" 5298- for example, CmCallocate became AcpiCmCallocate. 5299 5300Added a source code translation/conversion utility. Used to 5301generate the Linux source code, it can be modified to generate 5302other types of source as well. Can also be used to cleanup 5303existing source by removing extraneous spaces and blank lines. 5304Found in tools/acpisrc/* 5305 5306OsdUnMapMemory was renamed to OsdUnmapMemory and then 5307AcpiOsUnmapMemory. (UnMap became Unmap). 5308 5309A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 5310When set to one, this indicates that the caller wants to use the 5311semaphore as a mutex, not a counting semaphore. ACPI CA uses 5312both types. However, implementers of this call may want to use 5313different OS primitives depending on the type of semaphore 5314requested. For example, some operating systems provide separate 5315"mutex" and "semaphore" interfaces - where the mutex interface 5316is 5317much faster because it doesn't have all the overhead of a full 5318semaphore implementation. 5319 5320Fixed a deadlock problem where a method that accesses the PCI 5321address space can block forever if it is the first access to the 5322space. 5323 5324------------------------------------------- 5325Summary of changes for this label: 06_02_00 5326 5327Support for environments that cannot handle unaligned data 5328accesses (e.g. firmware and OS environments devoid of alignment 5329handler technology namely SAL/EFI and the IA-64 Linux kernel) 5330has 5331been added (via configurable macros) in these three areas: - 5332Transfer of data from the raw AML byte stream is done via byte 5333moves instead of word/dword/qword moves. - External objects 5334are 5335aligned within the user buffer, including package elements (sub- 5336objects). - Conversion of name strings to UINT32 Acpi Names is 5337now 5338done byte-wise. 5339 5340The Store operator was modified to mimic Microsoft's 5341implementation when storing to a Buffer Field. 5342 5343Added a check of the BM_STS bit before entering C3. 5344 5345The methods subdirectory has been obsoleted and removed. A new 5346file, cmeval.c subsumes the functionality. 5347 5348A 16-bit (DOS) version of AcpiExec has been developed. The 5349makefile is under the acpiexec directory. 5350