1---------------------------------------- 205 January 2021. Summary of changes for version 20210105: 3 4This release is available at https://acpica.org/downloads 5 6 71) ACPICA kernel-resident subsystem: 8 9Updated all copyrights to 2021. This affects all ACPICA source code 10modules. 11 122) iASL Compiler/Disassembler and ACPICA tools: 13 14ASL test suite (ASLTS): Updated all copyrights to 2021. 15 16Tools and utilities: Updated all signon copyrights to 2021. 17 18iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 19MTMR. Al Stone. 20 21 22---------------------------------------- 2317 December 2020. Summary of changes for version 20201217: 24 25This release is available at https://acpica.org/downloads 26 27 281) ACPICA kernel-resident subsystem: 29 30Note: The implementation of ACPI 6.4 is underway, and is expected to be 31mostly finished next month, when ACPI 6.4 is released. 32 33From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 34several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 35enable this. 36 37AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 38These included a few casts, as well as a null pointer check. 39 40Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 41implicit fallthrough, as well as __attribute__((__fallthrough__)) and 42comments to explicitly denote that cases of fallthrough were intentional. 43Clang also supports this warning and statement attribute, but not the 44comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 45of GCC. With assistance from @nickdesaulniers. 46 472) iASL Compiler/Disassembler and ACPICA tools: 48 49Added improvement to method call analysis by saving the return type and 50relaxing certain cases of type checking. 51 52iASL Table Compiler: Improved info messages. Added a message to the -T 53option for when the default template (DSDT) is used. 54Also added a note for when multiple SSDTs are created with a DSDT that 55the SSDTs are created in the same file as the DSDT. 56 57 58---------------------------------------- 59 6013 November 2020. Summary of changes for version 20201113: 61 62This release is available at https://acpica.org/downloads 63 64 651) ACPICA kernel-resident subsystem: 66 67Interpreter: fixed a memory leak by using use existing buffer in _HID 68repair. There was a memory leak that occurred when a _CID object is 69defined as a package containing string objects. When _CID is checked for 70any possible repairs, it calls a helper function to repair _HID (because 71_CID basically contains multiple _HID entries). The _HID repair function 72assumes that string objects are standalone objects that are not contained 73inside of any packages. The _HID repair function replaced the string 74object with a brand new object and attempted to delete the old object by 75decrementing the reference count of the old object. Strings inside of 76packages have a reference count of 2 so the _HID repair function leaves 77this object in a dangling state and causes a memory leak. Instead of 78allocating a brand new object and removing the old object, use the 79existing object when repairing the _HID object. 80 81Added function trace macros to improve namespace debugging. The namespace 82repair mechanism does not have function tracing macros. Add several trace 83macros to improve debuggability. 84 85Handle "orphan" _REG methods for GPIO OpRegions. Before this change 86AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 87matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 88Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 89The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 90UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 91to potential issues with checks for OpRegion availability, or in other 92words checks if _REG has been called for the OpRegion which the ACPI code 93wants to use. Except for the "orphan" EC handling, ACPICA core does not 94call _REG on an ACPI node which does not define an OpRegion matching the 95type being registered; and the reference design DSDT, from which most 96Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 97UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 98were assigned ACPI controlled functions in the reference design. Together 99this leads to the perfect storm, at least on the Cherry Trail based 100Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 101and has added the Cherry Trail specific UserDefined(0x93) opregion to its 102GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 103availability check for the standard GeneralPurposeIo OpRegion. This 104clearly is a bug in the DSDT, but this does work under Windows. This 105issue leads to the intel vbtn driver reporting the device always being in 106tablet-mode at boot, even if it is in laptop mode. Which in turn causes 107userspace to ignore touchpad events. So in other words, this issue causes 108the touchpad to not work at boot. This change fixes this by extending the 109"orphan" _REG method handling to also apply to GPIO address-space 110handlers. 111 112 1132) iASL Compiler/Disassembler and ACPICA tools: 114 115iASL: Added more info to namespace dump file (-ln option). In a separate 116section of the dump file (after the main namespace dump), emit the full 117pathname for each namespace node, its type, and the ASL filename and line 118number where it is declared. 119 120AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 121x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 122is omitted, all iASL exceptions are displayed. 123 124iASL: Use StringLiteral instead of StringData for some ASL macros. The 125use of the stringData rule allows for some "string" oriented opcodes 126(Such as ToString, ToHexString, etc.) None of which make sense with the 127macros in question. This change modifies the StringData part of the rule 128for these macros to a simple string literal - thus disallowing the use 129of ToString, ToHexString, etc. 130The following ASL operators (macros) are affected: 131EisaId 132Fprintf 133Printf 134ToUuid 135Unicode 136Note: The MS compiler requires the use of string literals for these 137operators also. 138 139iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 140the list of "known" UUIDs for the input to the ToUUID macro. 141 142Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 143NFIT table. 144 145 146---------------------------------------- 147 14825 September 2020. Summary of changes for version 20200925: 149 150This release is available at https://acpica.org/downloads 151 152 1531) ACPICA kernel-resident subsystem: 154 155Preserve memory opregion mappings. The ACPICA's strategy with respect to 156the handling of memory mappings associated with memory operation regions 157is to avoid mapping the entire region at once which may be problematic at 158least in principle (for example, it may lead to conflicts with 159overlapping mappings having different attributes created by drivers). It 160may also be wasteful, because memory opregions on some systems take up 161vastchunks of address space while the fields in those regions actually 162accessed by AML are sparsely distributed. 163 164For this reason, a one-page "window" is mapped for a given opregion on 165the first memory access through it and if that "window" does not cover an 166address range accessed through that opregion subsequently, it is unmapped 167and a new "window" is mapped to replace it. Next, if the new "window" is 168not sufficient to access memory through the opregion in question in the 169future, it will be replaced with yet another "window" and so on. That 170may lead to a suboptimal sequence of memory mapping and unmapping 171operations, for example if two fields in one opregion separated from each 172other by a sufficiently wide chunk of unused address space are accessed 173in an alternating pattern. 174 175Added support for 64 bit risc-v compilation. Useful for acpica tools and 176incorporating ACPICA into the Firmware Test Suite. Colin Ian King 177<colin.king@canonical.com>. 178 179Added support for SMBus predefined names (from SMBus Control Method 180Interface Specification, Version 1.0, December 10, 1999. New predefined 181names: 182 _SBA 183 _SBI 184 _SBR 185 _SBT 186 _SBW 187 188AML Disassembler: Added a new command, "All <NameSeg>". This command will 189evaluate all objects in the current namespace whose NameString contains 190the input NameSeg as the last element of the NameString. Useful for 191debugging. 192 193 1942) iASL Compiler/Disassembler and ACPICA tools: 195 196iASL: fixed a crash that occurred when predefined objects return packages 197with lengths that exceed the initializer list. 198 199iASL: added more detail to external resolution error message when 200compiling multiple definition blocks. 201 202iASL: added a remark for an attempt to create a nameseg or namestring 203containing lower-case letters. This should prevent declaring multiple 204namesegs or namestrings in an attempt to refer to different objects (with 205different cases), but actually refer to the same object(s). 206 207iASL: improve alias analysis by saving object type. If the alias is a 208method type, the parameter count is also recorded. 209 210AcpiExec: Increase the default loop timeout value. Was 1 second, is now 21110 seconds. Prevents unnecessary timeouts when executing control methods 212from the command line. 213 214AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 215list. Includes: 216 Memory Device 217 Generic Buttons Device 218 NVDIMM Root Device 219 Control Method Battery 220 Device Graphs for _DSD method 221 Hierarchical Data Extension 222....ARM CoreSight Graph 223 224---------------------------------------- 225 226 22717 July 2020. Summary of changes for version 20200717: 228 229This release is available at https://acpica.org/downloads 230 231 2321) ACPICA kernel-resident subsystem: 233 234Do not increment OperationRegion reference counts for field units. Recent 235server firmware has revealed that this reference count can overflow on 236large servers that declare many field units (thousands) under the same 237OperationRegion. This occurs because each field unit declaration will add 238a reference count to the source OperationRegion. This release solves the 239reference count overflow for OperationRegion objects by preventing 240fieldUnits from incrementing their parent OperationRegion's reference 241count. 242 243Replaced one-element arrays with flexible-arrays, which were introduced 244in C99. 245 246Restored the readme file containing the directions for generation of 247ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 248located at: generate/msvc2017/readme.txt 249 2502) iASL Compiler/Disassembler and ACPICA tools: 251 252iASL: Fixed a regression found in version 20200214. Prevent iASL from 253emitting an extra byte of garbage data when control methods declared a 254single parameter type without using braces. This extra byte is known to 255cause a blue screen on the Windows AML interpreter. 256 257iASL: Made a change to allow external declarations to specify the type of 258a named object even when some name segments are not defined. 259This change allows the following ASL code to compile (When DEV0 is not 260defined or not defined yet): 261 262 External (\_SB.DEV0.OBJ1, IntObj) 263 External (\_SB.DEV0, DeviceObj) 264 265iASL: Fixed a problem where method names in "Alias ()" statement could be 266misinterpreted. They are now interpreted correctly as method invocations. 267 268iASL: capture a method parameter count (Within the Method info segment, 269as well as the argument node) when using parameter type lists. 270 271---------------------------------------- 272 273 27428 May 2020. Summary of changes for version 20200528: 275 276 2771) ACPICA kernel-resident subsystem: 278 279Removed old/obsolete Visual Studio files which were used to build the 280Windows versions of the ACPICA tools. Since we have moved to Visual 281Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 282project files. The new subdirectory and solution file are located at: 283 284 acpica/generate/msvc2017/AcpiComponents.sln 285 286 2872) iASL Compiler/Disassembler and ACPICA tools: 288 289iASL: added support for a new OperationRegion Address Space (subtype): 290PlatformRtMechanism. Support for this new keyword is being released for 291early prototyping. It will appear in the next release of the ACPI 292specification. 293 294iASL: do not optimize the NameString parameter of the CondRefOf operator. 295In the previous iASL compiler release, the NameString parameter of the 296CondRefOf was optimized. There is evidence that some implementations of 297the AML interpreter do not perform the recursive search-to-parent search 298during the execution of the CondRefOf operator. Therefore, the CondRefOf 299operator behaves differently when the NameString parameter is a single 300name segment (a NameSeg) as opposed to a full NamePath (starting at the 301root scope) or a NameString containing parent prefixes. 302 303iASL: Prevent an inadvertent remark message. This change prevents a 304remark if within a control method the following exist: 3051) An Operation Region is defined, and 3062) A Field operator is defined that refers to the region. 307This happens because at the top level, the Field operator does not 308actually create a new named object, it simply references the operation 309region. 310 311Removed support for the acpinames utility. The acpinames was a simple 312utility used to populate and display the ACPI namespace without executing 313any AML code. However, ACPICA now supports executable opcodes outside of 314control methods. This means that executable AML opcodes such as If and 315Store opcodes need to be executed during table load. Therefore, acpinames 316would need to be updated to match the same behavior as the acpiexec 317utility and since acpiexec can already dump the entire namespace (via the 318'namespace' command), we no longer have the need to maintain acpinames. 319 320 In order to dump the contents of the ACPI namespace using acpiexec, 321execute the following command from the command line: 322 323 acpiexec -b "n" [aml files] 324 325---------------------------------------- 326 327 32830 April 2020. Summary of changes for version 20200430: 329 3301) ACPICA kernel-resident subsystem: 331 332Cleaned up the coding style of a couple of global variables 333(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 334AcpiProtocolLengths was made static, and the definition of 335AcpiGbl_NextCmdNum was moved to acglobal.h. 336 337 3382) iASL Compiler/Disassembler and ACPICA tools: 339 340iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 341associated with a field. 342 343Disassembler: has been made more resilient so that it will continue to 344parse AML even if the AML generates ACPI namespace errors. This enables 345iASL to disassemble some AML that may have been compiled using older 346versions of iASL that no longer compile with newer versions of iASL. 347 348iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 349was a mixup where _NIG required one parameter and _NIH required zero 350parameters. This change swaps these parameter requirements. Now it is 351required that _NIH must be called with one parameter and _NIG requires 352zero parameters. 353 354iASL: Allow use of undefined externals as long as they are protected by 355an if (CondRefOf (...)) block when compiling multiple definition blocks. 356 357iASL: Fixed the type override behavior of named objects that are declared 358as External. External declarations will no longer override the type of 359the actual definition if it already exists. 360 361AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 362command line wildcard support on Windows. Note: the AcpiNames utility is 363essentially redundant with the AcpiExec utility (using the "namespace" 364command) and is therefore deprecated. It will be removed in future 365releases of ACPICA. 366 367Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 368operators. The disassembler is intended to emit existing ASL code as-is. 369Therefore, error messages emitted during disassembly should be ignored or 370handled in a way such that the disassembler can continue to parse the 371AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 372parsing for create operators in order to complete parsing ASL termlists. 373 374iASL DataTable Compiler: IVRS table: fix potentially uninitialized 375variable warning. Some compilers catch potential uninitialized variables. 376This is done by examining branches of if/else statements. This change 377replaces an "else if" with an "else" to fix the uninitialized variable 378warning. 379 380 381---------------------------------------- 38226 March 2020. Summary of changes for version 20200326: 383 384 3851) ACPICA kernel-resident subsystem: 386 387Performed a code clean-up to prevent build errors on early versions of 388GCC-10. 389 390Added the NHLT table signature. iASL data table compiler/disassembler 391support for this table is coming soon. 392 393 3942) iASL Compiler/Disassembler and ACPICA tools: 395 396AcpiExec: Fixed several problems with the namespace initialization file 397(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 398errors, several seg faults, and enhancements to line parsing within the 399init file. In addition, each object found in the init file and it's new 400value is displayed, as well as any such entries that do not have a 401corresponding name in the namespace. For reference, the syntax for the 402various supported data types are presented below: 403 PCHG 0x777788889999BBBB // Integer 404 \DEV1.STR1 "XYZ" // String 405 BUF1 (88 99 AA) // Buffer 406 PKG1 [0x1111 0x2222] // Package 407 \BF1 0x7980 // BufferField 408 RCRV 0x0123456789ABCDEF // Field Unit 409 410iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 411can be used anywhere in a given ASL file to configure iASL to expect an 412iASL compiler error code on the line where this macro was placed. If the 413error code does not exist, an error is generated. This is intended to be 414used for ACPICA's ASL test suite, but can be used by ASL developers as 415well. 416 417iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 418IVRS table parsing supported only IVHD type 10h structures. Parsing an 419IVHD type 11h caused the iasl to report unknown subtable type. Add 420necessary structure definition for IVHD type 11h and apply correct 421parsing method based on subtable type. Micha? ?ygowski. 422 423iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 424According to AMD IOMMU Specification Revision 3.05 the reserved field 425should be IOMMU Feature Reporting. Change the name of the field to the 426correct one. Micha? ?ygowski. 427 428acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 429based on suggestions by David Seifert and Benjamin Berg. 430 431iASL: table compiler: removed an unused variable (DtCompilerParserResult) 432causing linking errors. Patch based on suggestions by David Seifert and 433Benjamin Berg. 434 435iASL: table compiler: make LexBuffer static to avoid linking errors in 436newer compilers. Patch based on suggestions by David Seifert and Benjamin 437Berg. 438 439iASL: fixed type matching between External and Named objects. External 440object types can only be expressed with ACPI object type values that are 441defined in the ACPI spec. However, iASL uses ACPI object type values that 442are local to ACPICA in addition to the values defined in the ACPI spec. 443This change implements type matching to map some object type values 444specific to ACPICA to ones that are defined in the ACPI spec. 445 446iASL: Dropped the type mismatch compiler error that can arise from 447External declarations to a warning. This warning can occur when there is 448a type difference between the external declaration and the actual object 449declaration (when compiling multiple files/modules simultaneously). 450 451iASL: removed an incorrect error message regarding externals. This change 452removes an incorrect error that is emitted when a duplicate external 453declaration does not contain a type that opens a scope. This is incorrect 454because the duplicate external with conflicting types are already caught 455by iASL and it doesn't make any sense to enforce what this conflicting 456type should be. 457 458AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 459surrounded by parens. Otherwise, a logical statement that applies a 460logical not operator to this macro could result in a computation that 461applies the operator to the left side of the logical and but not the 462right. Reported-by: John Levon <john.levon@joyent.com> 463 464Fixed a problem with the local version of sprint(): On 32-bit, the 465provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 466String + Size will wrap, meaning End < Start, and 467AcpiUtBoundStringOutput() will never output anything as a result. The 468symptom seen of this was acpixtract failing to output anything -- with a 469custom build that included utprint.c. Signed-off-by: John Levon 470<john.levon@joyent.com> 471 472iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 473ACPI specification. 474 475 476---------------------------------------- 47714 February 2020. Summary of changes for version 20200214: 478 479 4801) ACPICA kernel-resident subsystem: 481 482Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 483in a guest when it receives a sleep trigger from the hypervisor. When the 484guest resumes from this power state, it does not see the SleepEnabled 485bit. In other words, the sleepHibernation (S4) is triggered in a guest 486when it receives a sleep trigger from the hypervisor. When the guest 487resumes from this power state, it does not see the SleepEnabled bit. In 488other words, the sleep button is not enabled on waking from an S4 state. 489This causes subsequent invocation of sleep state to fail since the 490guest.button is not enabled on waking from an S4 state. This causes 491subsequent invocation of sleep state to fail in the guest. Fix this 492problem by enabling the sleep button in ACPI legacy wake. From Anchal 493Agarwal <anchalag@amazon.com>. 494 495Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 496for checking the status bits of all enabled GPEs in one go. It is needed 497to distinguish spurious SCIs from genuine ones when deciding whether or 498not to wake up the system from suspend-to-idle. 499 500Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 501using HOST in their environment to represent the host name for their 502machines. Avoid this problem by renaming this variable from HOST to 503ACPI_HOST. 504 505MSVC 2017 project files: Enable multiprocessor generation to improve 506build performance. 507 508Added a macro to get the byte width of a Generic Address structure. New 509ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 510ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 511 512 5132) iASL Compiler/Disassembler and ACPICA tools: 514 515iASL: Implemented full support for the (optional, rarely used) ReturnType 516and ParameterTypesList for the Method, Function, and External operators. 517For Method declarations, the number of individual ParameterTypes must 518match the declaration of the number of arguments (NumArgs). This also 519Fixes a problem with the External operator where extra/extraneous bytes 520were emitted in the AML code if the optional ReturnType/ParameterTypes 521were specified for a MethodObj declaration. 522New error message: 5231) Method NumArgs count does not match length of ParameterTypes list 524 525iASL: Implemented detection of type mismatches between External 526declarations and named object declarations. Also, detect type mismatches 527between multiple External declarations of the same Name. 528New error messages: 5291) Type mismatch between external declaration and actual object 530declaration detected 5312) Type mismatch between multiple external declarations detected 532 533iASL: Implemented new error messages for External operators that specify 534a ReturnType and/or ParameterTypesList for any object type other than 535control methods (MethodObj). 536New error messages: 5371) Return type is only allowed for Externals declared as MethodObj 5382) Parameter type is only allowed for Externals declared as MethodObj 539 540iASL: Implemented two new remark/warning messages for ASL code that 541creates named objects from within a control method. This is very 542inefficient since the named object must be created and deleted each time 543the method is executed. 544New messages: 5451) Creation of named objects within a method is highly inefficient, use 546globals or method local variables instead (remark) 5472) Static OperationRegion should be declared outside control method 548(warning) 549 550iASL: Improved illegal forward reference detection by adding support to 551detect forward-reference method invocations. 552 553iASL: Detect and issue an error message for NameStrings that contain too 554many individual NameSegs (>255). This is an AML limitation that is 555defined in the ACPI specification. 556New message: 5571) NameString contains too many NameSegs (>255) 558 559acpidump: windows: use GetSystemFirmwareTable API for all tables except 560SSDT. By using this API, acpidump is able to get all tables in the XSDT 561 562iASL: Removed unused parser file and updated msvc2017 project files. 563Removed the obsolete AslCompiler.y from the repository. 564 565iASL: msvc2017: Fixed macros in the file dependency list to prevent 566unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 567 568Disassembler: Prevent spilling error messages to the output file. All 569errors are directed to the console instead. These error messages 570prevented re-compilation of the resulting disassembled ASL output file 571(.DSL). 572 573 574---------------------------------------- 57510 January 2020. Summary of changes for version 20200110: 576 577 5781) ACPICA kernel-resident subsystem: 579 580Updated all copyrights to 2020. This affects all ACPICA source code 581modules. 582 583 5842) iASL Compiler/Disassembler and ACPICA tools: 585 586ASL test suite (ASLTS): Updated all copyrights to 2020. 587 588Tools and utilities: Updated all signon copyrights to 2020. 589 590iASL: fix forward reference analysis for field declarations. Fixes 591forward reference analysis for field declarations by searching the 592parent scope for the named object when the object is not present in 593the current scope. 594 595iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 596full pathname of the name that already exists is printed. 597 598iASL: Enhance duplicate Case() detection for buffers. Add check for 599buffers with no initializer list (these buffers will be filled with 600zeros at runtime.) 601 602 603---------------------------------------- 60413 December 2019. Summary of changes for version 20191213: 605 606 6071) ACPICA kernel-resident subsystem: 608 609Return a Buffer object for all fields created via the CreateField 610operator. Previously, an Integer would be returned if the size of 611the field was less than or equal to the current size of an Integer. 612Although this goes against the ACPI specification, it provides 613compatibility with other ACPI implementations. Also updated the 614ASLTS test suite to reflect this new behavior. 615 6162) iASL Compiler/Disassembler and ACPICA tools: 617 618iASL: Implemented detection of (and throw an error for) duplicate 619values for Case statements within a single Switch statement. Duplicate 620Integers, Strings, and Buffers are supported. 621 622iASL: Fix error logging issue during multiple file compilation -- 623Switch to the correct input file during error node creation. 624 625iASL: For duplicate named object creation, now emit an error instead 626of a warning - since this will cause a runtime error. 627 628AcpiSrc: Add unix line-ending support for non-Windows builds. 629 630iASL: Add an error condition for an attempt to create a NameString 631with > 255 NameSegs (the max allowable via the AML definition). 632 633 634---------------------------------------- 63518 October 2019. Summary of changes for version 20191018: 636 637 6381) ACPICA kernel-resident subsystem: 639 640Debugger: added a new command: ?Fields [address space ID]?. This command 641dumps the contents of all field units that are defined within the 642namespace with a particular address space ID. 643 644Modified the external interface AcpiLoadTable() to return a table index. 645This table index can be used for unloading a table for debugging. 646 ACPI_STATUS 647 AcpiLoadTable ( 648 ACPI_TABLE_HEADER *Table, 649 UINT32 *TableIndex)) 650 651Implemented a new external interface: AcpiUnloadTable() This new function 652takes a table index as an argument and unloads the table. Useful for 653debugging only. 654 ACPI_STATUS 655 AcpiUnloadTable ( 656 UINT32 TableIndex)) 657 658Ported the AcpiNames utility to use the new table initialization 659sequence. The utility was broken before this change. Also, it was 660required to include most of the AML interpreter into the utility in order 661to process table initialization (module-level code execution.) 662 663Update for results from running Clang V8.0.1. This fixes all "dead 664assignment" warnings. There are still several "Dereference of NULL 665pointer" warnings, but these have been found to be false positive 666warnings. 667 668 6692) iASL Compiler/Disassembler and ACPICA tools: 670 671iASL: numerous table compiler changes to ensure that the usage of 672yacc/bison syntax is POSIX-compliant. 673 674iASL/disassembler: several simple bug fixes in the data table 675disassembler. 676 677Acpiexec: expanded the initialization file (the -fi option) to initialize 678strings, buffers, packages, and field units. 679 680 681---------------------------------------- 68216 August 2019. Summary of changes for version 20190816: 683 684This release is available at https://acpica.org/downloads 685 686 6871) ACPICA kernel-resident subsystem: 688 689Modified the OwnerId mechanism to allow for more Owner Ids. The previous 690limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 691exceptions on machines with a large number of initialization threads, 692many CPU cores and nested initialization control methods. 693 694Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 695checking if the given GPE (as represented by a GPE device handle and a 696GPE number) is currently active and dispatching it (if that's the case) 697outside of interrupt context. 698 699Table load: exit the interpreter before initializing objects within the 700new table This prevents re-acquiring the interpreter lock when loading 701tables 702 703Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 704uk Kim 705 706Macros: removed pointer math on a null pointer. Causes warnings on some 707compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 708instead of using arithmetic. 709 710Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 711across all "printf-like" internal functions. Also, cleanup all calls to 712such functions (both in 32-bit mode and 64-bit mode) now that they are 713analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 714 715 7162) iASL Compiler/Disassembler and ACPICA tools: 717 718iASL: implemented a new data table compiler flex/bison front-end. This 719change is internal and is not intended to result in changes to the 720compiled code. This new compiler front-end can be invoked using the -tp 721option for now, until the old mechanism is removed. 722 723ASLTS: Implemented a new data table compiler test suite. This test suite 724generates all table templates and compile/disassemble/re-compile/binary- 725compare each file. 726 727iASL: return -1 if AML files were not generated due to compiler errors 728 729iASL: added a warning on use of the now-legacy ASL Processor () keyword. 730 731iASL: added an error on _UID object declaration that returns a String 732within a Processor () declaration. A _UID for a processor must be an 733Integer. 734 735iASL: added a null terminator to name strings that consist only of 736multiple parent prefixes (^) 737 738iASL: added support to compile both ASL and data table files in a single 739command. 740 741Updated the tool generation project files that were recently migrated to 742MSVC 2017 to eliminate all new warnings. The new project files appear in 743the directory \acpica\generate\msvc2017. This change effectively 744deprecates the older project files in \acpica\generate\msvc9. 745 746 747---------------------------------------- 74803 July 2019. Summary of changes for version 20190703: 749 750 7511) ACPICA kernel-resident subsystem: 752 753Remove legacy module-level support code. There were still some remnants 754of the legacy module-level code executions. Since we no longer support 755this option, this is essentially dead code and has been removed from the 756ACPICA source. 757 758iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 759scope. If these named objects are declared outside the root scope, they 760will not be invoked by any host Operating System. 761 762Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 763one) can be enabled in two situations. First, the GPEs with existing _Lxx 764and _Exx methods are enabled implicitly by ACPICA during system 765initialization. Second, the GPEs without these methods (like GPEs listed 766by _PRW objects for wakeup devices) need to be enabled directly by the 767code that is going to use them (e.g. ACPI power management or device 768drivers). 769 770In the former case, if the status of a given GPE is set to start with, 771its handler method (either _Lxx or _Exx) needs to be invoked to take care 772of the events (possibly) signaled before the GPE was enabled. In the 773latter case, however, the first caller of AcpiEnableGpe() for a given GPE 774should not be expected to care about any events that might be signaled 775through it earlier. In that case, it is better to clear the status of 776the GPE before enabling it, to prevent stale events from triggering 777unwanted actions (like spurious system resume, for example). 778 779For this reason, modify AcpiEvAddGpeReference() to take an additional 780boolean argument indicating whether or not the GPE status needs to be 781cleared when its reference counter changes from zero to one and make 782AcpiEnableGpe() pass TRUE to it through that new argument. 783 784 7852) iASL Compiler/Disassembler and ACPICA tools: 786 787The tool generation process has been migrated to MSVC 2017, and all 788project files have been upgraded. The new project files appear in the 789directory \acpica\generate\msvc2017. This change effectively deprecates 790the older project files in \acpica\generate\msvc9. 791 792iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 793scope. If these named objects are declared outside the root scope, they 794will not be invoked by any host Operating System 795 796---------------------------------------- 79709 May 2019. Summary of changes for version 20190509: 798 799 8001) ACPICA kernel-resident subsystem: 801 802Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 803them") that causes problems with Thunderbolt controllers to occur if a 804dock device is connected at init time (the xhci_hcd and thunderbolt 805modules crash which prevents peripherals connected through them from 806working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 807Dispatch active GPEs at init time") to get undone, so the problem 808addressed by commit ecc1165b8b74 appears again as a result of it. 809 810 8112) iASL Compiler/Disassembler and ACPICA tools: 812 813Reverted iASL: Additional forward reference detection. This change 814reverts forward reference detection for field declarations. The feature 815unintentionally emitted AML bytecode with incorrect package lengths for 816some ASL code related to Fields and OperationRegions. This malformed AML 817can cause systems to crash 818during boot. The malformed AML bytecode is emitted in iASL version 81920190329 and 20190405. 820 821iASL: improve forward reference detection. This change improves forward 822reference detection for named objects inside of scopes. If a parse object 823has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 824a named object that is declared later in the AML bytecode. This is 825allowed if the reference is inside of a method and the declaration is 826outside of a method like so: 827 828DefinitionBlock(...) 829{ 830 Method (TEST) 831 { 832 Return (NUM0) 833 } 834 Name (NUM0,0) 835} 836 837However, if the declaration and reference are both in the same method or 838outside any methods, this is a forward reference and should be marked as 839an error because it would result in runtime errors. 840 841DefinitionBlock(...) 842{ 843 Name (BUFF, Buffer (NUM0) {}) // Forward reference 844 Name (NUM0, 0x0) 845 846 Method (TEST) 847 { 848 Local0 = NUM1 849 Name (NUM1, 0x1) // Forward reference 850 return (Local0) 851 } 852} 853 854iASL: Implemented additional buffer overflow analysis for BufferField 855declarations. Check if a buffer index argument to a create buffer field 856operation is beyond the end of the target buffer. 857 858This affects these AML operators: 859 860 AML_CREATE_FIELD_OP 861 AML_CREATE_BIT_FIELD_OP 862 AML_CREATE_BYTE_FIELD_OP 863 AML_CREATE_WORD_FIELD_OP 864 AML_CREATE_DWORD_FIELD_OP 865 AML_CREATE_QWORD_FIELD_OP 866 867 There are three conditions that must be satisfied in order to allow this 868validation at compile time: 869 870 1) The length of the target buffer must be an integer constant 871 2) The index specified in the create* must be an integer constant 872 3) For CreateField, the bit length argument must be non-zero. 873 874Example: 875 Name (BUF1, Buffer() {1,2}) 876 CreateField (BUF1, 7, 9, CF03) // 3: ERR 877 878dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 879Error 6165 - ^ Buffer index beyond end of 880target buffer 881 882 883---------------------------------------- 88405 April 2019. Summary of changes for version 20190405: 885 886 8871) ACPICA kernel-resident subsystem: 888 889Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 890unconditionally clearing ACPI IRQs during suspend/resume") was added 891earlier to stop clearing of event status bits unconditionally on suspend 892and resume paths. Though this change fixed an issue on suspend path, it 893introduced regressions on several resume paths. In the case of S0ix, 894events are enabled as part of device suspend path. If status bits for the 895events are set when they are enabled, it could result in premature wake 896from S0ix. If status is cleared for any event that is being enabled so 897that any stale events are cleared out. In case of S0ix, events are 898enabled as part of device suspend path. If status bits for the events are 899set when they are enabled, it could result in premature wake from S0ix. 900 901This change ensures that status is cleared for any event that is being 902enabled so that any stale events are cleared out. 903 904 9052) iASL Compiler/Disassembler and ACPICA tools: 906 907iASL: Implemented an enhanced multiple file compilation that combines 908named objects from all input files to a single namespace. With this 909feature, any unresolved external declarations as well as duplicate named 910object declarations can be detected during compilation rather than 911generating errors much later at runtime. The following commands are 912examples that utilize this feature: 913 iasl dsdt.asl ssdt.asl 914 iasl dsdt.asl ssdt1.asl ssdt2.asl 915 iasl dsdt.asl ssdt*.asl 916 917---------------------------------------- 91829 March 2019. Summary of changes for version 20190329: 919 920 9211) ACPICA kernel-resident subsystem: 922 923Namespace support: Remove the address nodes from global list after method 924termination. The global address list contains pointers to namespace nodes 925that represent Operation Regions. This change properly removes Operation 926Region namespace nodes that are declared dynamically during method 927execution. 928 929Linux: Use a different debug default than ACPICA. There was a divergence 930between Linux and the ACPICA codebases. In order to resolve this 931divergence, Linux now declares its own debug default in aclinux.h 932 933Renamed some internal macros to improve code understanding and 934maintenance. The macros below all operate on single 4-character ACPI 935NameSegs, not generic strings (old -> new): 936 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 937 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 938 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 939 940Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 941table. 942 943Test suite: Update makefiles, add PCC operation region support 944 945 9462) iASL Compiler/Disassembler and Tools: 947 948iASL: Implemented additional illegal forward reference detection. Now 949detect and emit an error upon detection of a forward reference from a 950Field to an Operation Region. This will fail at runtime if allowed to 951pass the compiler. 952 953AcpiExec: Add an address list check for dynamic Operation Regions. This 954feature performs a sanity test for each node the global address list. 955This is done in order to ensure that all dynamic operation regions are 956properly removed from the global address list and no dangling pointers 957are left behind. 958 959Disassembler: Improved generation of resource pathnames. This change 960improves the code that generates resource descriptor and resource tag 961pathnames. The original code used a bunch of str* C library functions 962that caused warnings on some compilers. 963 964iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 965function can overwrite buffers if the calling code is not very careful. 966In the case of generating a module/table header, use of memmove is a 967better implementation. 968 969 9703) Status of new features that have not been completed at this time: 971 972iASL: Implementing an enhanced multiple file compilation into a single 973namespace feature (Status): This feature will be released soon, and 974allows multiple ASL files to be compiled into the same single namespace. 975By doing so, any unresolved external declarations as well as duplicate 976named object declarations can be detected during compilation (rather than 977later during runtime). The following commands are examples that utilize 978this feature: 979 iasl dsdt.asl ssdt.asl 980 iasl dsdt.asl ssdt1.asl ssdt2.asl 981 iasl dsdt.asl ssdt*.asl 982 983ASL tutorial status: Feedback is being gathered internally and the 984current plan is to publish this tutorial on the ACPICA website after a 985final review by a tech writer. 986 987---------------------------------------- 98815 February 2019. Summary of changes for version 20190215: 989 990 9910) Support for ACPI specification version 6.3: 992 993Add PCC operation region support for the AML interpreter. This adds PCC 994operation region support in the AML interpreter and a default handler for 995acpiexec. The change also renames the PCC region address space keyword to 996PlatformCommChannel. 997 998Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 999These methods provide OSPM with health information and device boot 1000status. 1001 1002PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1003defines if the trigger needs to be invoked by OSPM before or at the end 1004of kernel crash dump processing/handling operation. 1005 1006SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1007is used for describing devices such as heterogeneous processors, 1008accelerators, GPUs, and IO devices with integrated compute or DMA 1009engines. 1010 1011MADT: Add support for statistical profiling in GICC. Statistical 1012profiling extension (SPE) is an architecture-specific feature for ARM. 1013 1014MADT: Add online capable flag. If this bit is set, system hardware 1015supports enabling this processor during OS runtime. 1016 1017New Error Disconnect Recover Notification value. There are a number of 1018scenarios where system Firmware in collaboration with hardware may 1019disconnect one or more devices from the rest of the system for purposes 1020of error containment. Firmware can use this new notification value to 1021alert OSPM of such a removal. 1022 1023PPTT: New additional fields in Processor Structure Flags. These flags 1024provide more information about processor topology. 1025 1026NFIT/Disassembler: Change a field name from "Address Range" to "Region 1027Type". 1028 1029HMAT updates: make several existing fields to be reserved as well as 1030rename subtable 0 to "memory proximity domain attributes". 1031 1032GTDT: Add support for new GTDT Revision 3. This revision adds information 1033for the EL2 timer. 1034 1035iASL: Update the HMAT example template for new fields. 1036 1037iASL: Add support for the new revision of the GTDT (Rev 3). 1038 1039 10401) ACPICA kernel-resident subsystem: 1041 1042AML Parser: fix the main AML parse loop to correctly skip erroneous 1043extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1044byte extended opcodes. If an error occurs during an AML table load, the 1045AML parser will continue loading the table by skipping the offending 1046opcode. This implements a "load table at any cost" philosophy. 1047 1048 10492) iASL Compiler/Disassembler and Tools: 1050 1051iASL: Add checks for illegal object references, such as a reference 1052outside of method to an object within a method. Such an object is only 1053temporary. 1054 1055iASL: Emit error for creation of a zero-length operation region. Such a 1056region is rather pointless. If encountered, a runtime error is also 1057implemented in the interpreter. 1058 1059Debugger: Fix a possible fault with the "test objects" command. 1060 1061iASL: Makefile: support parent directory filenames containing embedded 1062spaces. 1063 1064iASL: Update the TPM2 template to revision 4. 1065 1066iASL: Add the ability to report specific warnings or remarks as errors. 1067 1068Disassembler: Disassemble OEMx tables as actual AML byte code. 1069Previously, these tables were treated as "unknown table". 1070 1071iASL: Add definition and disassembly for TPM2 revision 3. 1072 1073iASL: Add support for TPM2 rev 3 compilation. 1074 1075 1076---------------------------------------- 107708 January 2019. Summary of changes for version 20190108: 1078 1079 10801) ACPICA kernel-resident subsystem: 1081 1082Updated all copyrights to 2019. This affects all source code modules. 1083 1084 10852) iASL Compiler/Disassembler and Tools: 1086 1087ASL test suite (ASLTS): Updated all copyrights to 2019. 1088 1089Tools: Updated all signon copyrights to 2019. 1090 1091AcpiExec: Added a new option to dump extra information concerning any 1092memory leaks detected by the internal object/cache tracking mechanism. - 1093va 1094 1095iASL: Updated the table template for the TPM2 table to the newest version 1096of the table (Revision 4) 1097 1098 1099---------------------------------------- 110013 December 2018. Summary of changes for version 20181213: 1101 1102 11031) ACPICA Kernel-resident Subsystem: 1104 1105Fixed some buffer length issues with the GenericSerialBus, related to two 1106of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1107which are rarely seen in the field. For these, the LEN field of the ASL 1108buffer is now ignored. Hans de Goede 1109 1110Implemented a new object evaluation trace mechanism for control methods 1111and data objects. This includes nested control methods. It is 1112particularly useful for examining the ACPI execution during system 1113initialization since the output is relatively terse. The flag below 1114enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1115 #define ACPI_LV_EVALUATION 0x00080000 1116 1117Examples: 1118 Enter evaluation : _SB.PCI0._INI (Method) 1119 Exit evaluation : _SB.PCI0._INI 1120 Enter evaluation : _OSI (Method) 1121 Exit evaluation : _OSI 1122 Enter evaluation : _SB.PCI0.TEST (Method) 1123 Nested method call : _SB.PCI0.NST1 1124 Exit nested method : _SB.PCI0.NST1 1125 Exit evaluation : _SB.PCI0.TEST 1126 1127Added two recently-defined _OSI strings. See 1128https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1129osi. 1130 "Windows 2018" 1131 "Windows 2018.2" 1132 1133Update for buffer-to-string conversions via the ToHexString ASL operator. 1134A "0x" is now prepended to each of the hex values in the output string. 1135This provides compatibility with other ACPI implementations. The ACPI 1136specification is somewhat vague on this issue. 1137 Example output string after conversion: 1138"0x01,0x02,0x03,0x04,0x05,0x06" 1139 1140Return a run-time error for TermArg expressions within individual package 1141elements. Although this is technically supported by the ASL grammar, 1142other ACPI implementations do not support this either. Also, this fixes a 1143fault if this type of construct is ever encountered (it never has been). 1144 1145 11462) iASL Compiler/Disassembler and Tools: 1147 1148iASL: Implemented a new compile option (-ww) that will promote individual 1149warnings and remarks to errors. This is intended to enhance the firmware 1150build process. 1151 1152AcpiExec: Implemented a new command-line option (-eo) to support the new 1153object evaluation trace mechanism described above. 1154 1155Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1156instead of a "unknown table" message. 1157 1158AcpiHelp: Improved support for the "special" predefined names such as 1159_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1160used for "xx" and "x". 1161 1162---------------------------------------- 116331 October 2018. Summary of changes for version 20181031: 1164 1165 1166An Operation Region regression was fixed by properly adding address 1167ranges to a global list during initialization. This allows OS to 1168accurately check for overlapping regions between native devices (such as 1169PCI) and Operation regions as well as checking for region conflicts 1170between two Operation Regions. 1171 1172Added support for the 2-byte extended opcodes in the code/feature that 1173attempts to continue parsing during the table load phase. Skip parsing 1174Device declarations (and other extended opcodes) when an error occurs 1175during parsing. Previously, only single-byte opcodes were supported. 1176 1177Cleanup: Simplified the module-level code support by eliminating a 1178useless global variable (AcpiGbl_GroupModuleLeveCode). 1179 1180 11812) iASL Compiler/Disassembler and Tools: 1182 1183iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1184could cause a fault in the preprocessor. This was an inadvertent side- 1185effect from moving more allocations/frees to the local cache/memory 1186mechanism. 1187 1188iASL: Enhanced error detection by validating that all NameSeg elements 1189within a NamePatch actually exist. The previous behavior was spotty at 1190best, and such errors could be improperly ignored at compiler time (never 1191at runtime, however. There are two new error messages, as shown in the 1192examples below: 1193 1194dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1195Error 6161 - ^ One or more objects within 1196the Pathname do not exist (TTTT.BXXX) 1197 1198dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1199Error 6160 - One or more prefix Scopes do not exist ^ 1200(BBBB.CBF1) 1201 1202iASL: Disassembler/table-compiler: Added support for the static data 1203table TPM2 revision 3 (an older version of TPM2). The support has been 1204added for the compiler and the disassembler. 1205 1206Fixed compilation of DOS format data table file on Unix/Linux systems. 1207iASL now properly detects line continuations (\) for DOS format data 1208table definition language files on when executing on Unix/Linux. 1209 1210---------------------------------------- 121103 October 2018. Summary of changes for version 20181003: 1212 1213 12142) iASL Compiler/Disassembler and Tools: 1215 1216Fixed a regression introduced in version 20180927 that could cause the 1217compiler to fault, especially with NamePaths containing one or more 1218carats (^). Such as: ^^_SB_PCI0 1219 1220Added a new remark for the Sleep() operator when the sleep time operand 1221is larger than one second. This is a very long time for the ASL/BIOS code 1222and may not be what was intended by the ASL writer. 1223 1224---------------------------------------- 122527 September 2018. Summary of changes for version 20180927: 1226 1227 12281) ACPICA kernel-resident subsystem: 1229 1230Updated the GPE support to clear the status of all ACPI events when 1231entering any/all sleep states in order to avoid premature wakeups. In 1232theory, this may cause some wakeup events to be missed, but the 1233likelihood of this is small. This change restores the original behavior 1234of the ACPICA code in order to fix a regression seen from the previous 1235"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1236This regression could cause some systems to incorrectly wake immediately. 1237 1238Updated the execution of the _REG methods during initialization and 1239namespace loading to bring the behavior into closer conformance to the 1240ACPI specification and other ACPI implementations: 1241 1242From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1243 "Control methods must assume all operation regions are inaccessible 1244until the _REG(RegionSpace, 1) method is executed" 1245 1246 "The exceptions to this rule are: 12471. OSPM must guarantee that the following operation regions are always 1248accessible: 1249 SystemIO operation regions. 1250 SystemMemory operation regions when accessing memory returned by the 1251System Address Map reporting interfaces." 1252 1253Since the state of both the SystemIO and SystemMemory address spaces are 1254defined by the specification to never change, this ACPICA change ensures 1255that now _REG is never called on them. This solves some problems seen in 1256the field and provides compatibility with other ACPI implementations. An 1257update to the upcoming new version of the ACPI specification will help 1258clarify this behavior. 1259 1260Updated the implementation of support for the Generic Serial Bus. For the 1261"bidirectional" protocols, the internal implementation now automatically 1262creates a return data buffer of the maximum size (255). This handles the 1263worst-case for data that is returned from the serial bus handler, and 1264fixes some problems seen in the field. This new buffer is directly 1265returned to the ASL. As such, there is no true "bidirectional" buffer, 1266which matches the ACPI specification. This is the reason for the "double 1267store" seen in the example ASL code in the specification, shown below: 1268 1269Word Process Call (AttribProcessCall): 1270 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1271 Field(TOP1, BufferAcc, NoLock, Preserve) 1272 { 1273 FLD1, 8, // Virtual register at command value 1. 1274 } 1275 1276 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1277 // as BUFF 1278 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1279 1280 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1281 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1282transaction 1283 // This is the "double store". The write to 1284 // FLD1 returns a new buffer, which is stored 1285 // back into BUFF with the second Store. 1286 1287 12882) iASL Compiler/Disassembler and Tools: 1289 1290iASL: Implemented detection of extraneous/redundant uses of the Offset() 1291operator within a Field Unit list. A remark is now issued for these. For 1292example, the first two of the Offset() operators below are extraneous. 1293Because both the compiler and the interpreter track the offsets 1294automatically, these Offsets simply refer to the current offset and are 1295unnecessary. Note, when optimization is enabled, the iASL compiler will 1296in fact remove the redundant Offset operators and will not emit any AML 1297code for them. 1298 1299 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1300 Field (OPR1) 1301 { 1302 Offset (0), // Never needed 1303 FLD1, 32, 1304 Offset (4), // Redundant, offset is already 4 (bytes) 1305 FLD2, 8, 1306 Offset (64), // OK use of Offset. 1307 FLD3, 16, 1308 } 1309dsdt.asl 14: Offset (0), 1310Remark 2158 - ^ Unnecessary/redundant use of Offset 1311operator 1312 1313dsdt.asl 16: Offset (4), 1314Remark 2158 - ^ Unnecessary/redundant use of Offset 1315operator 1316 1317---------------------------------------- 131810 August 2018. Summary of changes for version 20180810: 1319 1320 13211) ACPICA kernel-resident subsystem: 1322 1323Initial ACPI table loading: Attempt to continue loading ACPI tables 1324regardless of malformed AML. Since migrating table initialization to the 1325new module-level code support, the AML interpreter rejected tables upon 1326any ACPI error encountered during table load. This is a problem because 1327non-serious ACPI errors during table load do not necessarily mean that 1328the entire definition block (DSDT or SSDT) is invalid. This change 1329improves the table loading by ignoring some types of errors that can be 1330generated by incorrect AML. This can range from object type errors, scope 1331errors, and index errors. 1332 1333Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1334during suspend/resume. The status of ACPI events is no longer cleared 1335when entering the ACPI S5 system state (power off) which caused some 1336systems to power up immediately after turning off power in certain 1337situations. This was a functional regression. It was fixed by clearing 1338the status of all ACPI events again when entering S5 (for system-wide 1339suspend or hibernation the clearing of the status of all events is not 1340desirable, as it might cause the kernel to miss wakeup events sometimes). 1341Rafael Wysocki. 1342 1343 13442) iASL Compiler/Disassembler and Tools: 1345 1346AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1347elements listed in the initialization file were previously initialized 1348after the table load and before executing module-level code blocks. 1349Recent changes in the module-level code support means that the table load 1350becomes a large control method execution. If fields are used within 1351module-level code and we are executing with the -fi option, the 1352initialization values were used to initialize the namespace object(s) 1353only after the table was finished loading. This change Provides an early 1354initialization of objects specified in the initialization file so that 1355field unit values are populated during the table load (not after the 1356load). 1357 1358AcpiExec: Fixed a small memory leak regression that could result in 1359warnings during exit of the utility. These warnings were similar to 1360these: 1361 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1362 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1363 1364---------------------------------------- 136529 June 2018. Summary of changes for version 20180629: 1366 1367 13681) iASL Compiler/Disassembler and Tools: 1369 1370iASL: Fixed a regression related to the use of the ASL External 1371statement. Error checking for the use of the External() statement has 1372been relaxed. Previously, a restriction on the use of External meant that 1373the referenced named object was required to be defined in a different 1374table (an SSDT). Thus it would be an error to declare an object as an 1375external and then define the same named object in the same table. For 1376example: 1377 DefinitionBlock (...) 1378 { 1379 External (DEV1) 1380 Device (DEV1){...} // This was an error 1381 } 1382However, this behavior has caused regressions in some existing ASL code, 1383because there is code that depends on named objects and externals (with 1384the same name) being declared in the same table. This change will allow 1385the ASL code above to compile without errors or warnings. 1386 1387iASL: Implemented ASL language extensions for four operators to make some 1388of their arguments optional instead of required: 1389 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1390 2) BankField (RegionName, BankName, BankValue, 1391 AccessType, LockRule, UpdateRule) 1392 3) IndexField (IndexName, DataName, 1393 AccessType, LockRule, UpdateRule) 1394For the Field operators above, the AccessType, LockRule, and UpdateRule 1395are now optional arguments. The default values are: 1396 AccessType: AnyAcc 1397 LockRule: NoLock 1398 UpdateRule: Preserve 1399 4) Mutex (MutexName, SyncLevel) 1400For this operator, the SyncLevel argument is now optional. This argument 1401is rarely used in any meaningful way by ASL code, and thus it makes sense 1402to make it optional. The default value is: 1403 SyncLevel: 0 1404 1405iASL: Attempted use of the ASL Unload() operator now results in the 1406following warning: 1407 "Unload is not supported by all operating systems" 1408This is in fact very true, and the Unload operator may be completely 1409deprecated in the near future. 1410 1411AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1412file. Recent changes in the ACPICA module-level code support altered the 1413table load/initialization sequence . This means that the table load has 1414become a large method execution of the table itself. If Operation Region 1415Fields are used within any module-level code and the -fi option was 1416specified, the initialization values were populated only after the table 1417had completely finished loading (and thus the module-level code had 1418already been executed). This change moves the initialization of objects 1419listed in the initialization file to before the table is executed as a 1420method. Field unit values are now initialized before the table execution 1421is performed. 1422 1423---------------------------------------- 142431 May 2018. Summary of changes for version 20180531: 1425 1426 14271) ACPICA kernel-resident Subsystem: 1428 1429Implemented additional support to help ensure that a DSDT or SSDT is 1430fully loaded even if errors are incurred during the load. The majority of 1431the problems that are seen is the failure of individual AML operators 1432that occur during execution of any module-level code (MLC) existing in 1433the table. This support adds a mechanism to abort the current ASL 1434statement (AML opcode), emit an error message, and to simply move on to 1435the next opcode -- instead of aborting the entire table load. This is 1436different than the execution of a control method where the entire method 1437is aborted upon any error. The goal is to perform a very "best effort" to 1438load the ACPI tables. The most common MLC errors that have been seen in 1439the field are direct references to unresolved ASL/AML symbols (referenced 1440directly without the use of the CondRefOf operator to validate the 1441symbol). This new ACPICA behavior is now compatible with other ACPI 1442implementations. 1443 1444Interpreter: The Unload AML operator is no longer supported for the 1445reasons below. An AE_NOT_IMPLEMENTED exception is returned. 14461) A correct implementation on at least some hosts may not be possible. 14472) Other ACPI implementations do not correctly/fully support it. 14483) It requires host device driver support which is not known to exist. 1449 (To properly support namespace unload out from underneath.) 14504) This AML operator has never been seen in the field. 1451 1452Parser: Added a debug option to dump AML parse sub-trees as they are 1453being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1454ACPI_DB_PARSE_TREES. 1455 1456Debugger: Reduced the verbosity for errors incurred during table load and 1457module-level code execution. 1458 1459Completed an investigation into adding a namespace node "owner list" 1460instead of the current "owner ID" associated with namespace nodes. This 1461list would link together all nodes that are owned by an individual 1462control method. The purpose would be to enhance control method execution 1463by speeding up cleanup during method exit (all namespace nodes created by 1464a method are deleted upon method termination.) Currently, the entire 1465namespace must be searched for matching owner IDs if (and only if) the 1466method creates named objects outside of the local scope. However, by far 1467the most common case is that methods create objects locally, not outside 1468the method scope. There is already an ACPICA optimization in place that 1469only searches the entire namespace in the rare case of a method creating 1470objects elsewhere in the namespace. Therefore, it is felt that the 1471overhead of adding an additional pointer to each namespace node to 1472implement the owner list makes this feature unnecessary. 1473 1474 14752) iASL Compiler/Disassembler and Tools: 1476 1477iASL, Disassembler, and Template generator: Implemented support for 1478Revision D of the IORT table. Adds a new subtable that is used to specify 1479SMMUv3 PMCGs. rmurphy-arm. 1480 1481Disassembler: Restored correct table header validation for the "special" 1482ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1483table header and must be special-cased. This was a regression that has 1484been present for apparently a long time. 1485 1486AcpiExec: Reduced verbosity of the local exception handler implemented 1487within acpiexec. This handler is invoked by ACPICA upon any exceptions 1488generated during control method execution. A new option was added: -vh 1489restores the original verbosity level if desired. 1490 1491AcpiExec: Changed the default base from decimal to hex for the -x option 1492(set debug level). This simplifies the use of this option and matches the 1493behavior of the corresponding iASL -x option. 1494 1495AcpiExec: Restored a force-exit on multiple control-c (sigint) 1496interrupts. This allows program termination even if other issues cause 1497the control-c to fail. 1498 1499ASL test suite (ASLTS): Added tests for the recently implemented package 1500element resolution mechanism that allows forward references to named 1501objects from individual package elements (this mechanism provides 1502compatibility with other ACPI implementations.) 1503 1504 1505---------------------------------------- 15068 May 2018. Summary of changes for version 20180508: 1507 1508 15091) ACPICA kernel-resident subsystem: 1510 1511Completed the new (recently deployed) package resolution mechanism for 1512the Load and LoadTable ASL/AML operators. This fixes a regression that 1513was introduced in version 20180209 that could result in an 1514AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1515(SSDT) that contains package objects. 1516 1517 15182) iASL Compiler/Disassembler and Tools: 1519 1520AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 15211 MB. This change allows for table offsets within the acpidump file to be 1522up to 8 characters. These changes are backwards compatible with existing 1523acpidump files. 1524 1525 1526---------------------------------------- 152727 April 2018. Summary of changes for version 20180427: 1528 1529 15301) ACPICA kernel-resident subsystem: 1531 1532Debugger: Added support for Package objects in the "Test Objects" 1533command. This command walks the entire namespace and evaluates all named 1534data objects (Integers, Strings, Buffers, and now Packages). 1535 1536Improved error messages for the namespace root node. Originally, the root 1537was referred to by the confusing string "\___". This has been replaced by 1538"Namespace Root" for clarification. 1539 1540Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1541Ian King <colin.king@canonical.com>. 1542 1543 15442) iASL Compiler/Disassembler and Tools: 1545 1546iASL: Implemented support to detect and flag illegal forward references. 1547For compatibility with other ACPI implementations, these references are 1548now illegal at the root level of the DSDT or SSDTs. Forward references 1549have always been illegal within control methods. This change should not 1550affect existing ASL/AML code because of the fact that these references 1551have always been illegal in the other ACPI implementation. 1552 1553iASL: Added error messages for the case where a table OEM ID and OEM 1554TABLE ID strings are longer than the ACPI-defined length. Previously, 1555these strings were simply silently truncated. 1556 1557iASL: Enhanced the -tc option (which creates an AML hex file in C, 1558suitable for import into a firmware project): 1559 1) Create a unique name for the table, to simplify use of multiple 1560SSDTs. 1561 2) Add a protection #ifdef in the file, similar to a .h header file. 1562With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1563evan.lloyd@arm.com 1564 1565AcpiExec: Added a new option, -df, to disable the local fault handler. 1566This is useful during debugging, where it may be desired to drop into a 1567debugger on a fault. 1568 1569---------------------------------------- 157013 March 2018. Summary of changes for version 20180313: 1571 1572 15731) ACPICA kernel-resident subsystem: 1574 1575Implemented various improvements to the GPE support: 1576 15771) Dispatch all active GPEs at initialization time so that no GPEs are 1578lost. 15792) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1580before devices are enumerated. 15813) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1582IRQs are not lost. 15834) Add parallel GPE handling to eliminate the possibility of dispatching 1584the same GPE twice. 15855) Dispatch any pending GPEs after enabling for the first time. 1586 1587AcpiGetObjectInfo - removed support for the _STA method. This was causing 1588problems on some platforms. 1589 1590Added a new _OSI string, "Windows 2017.2". 1591 1592Cleaned up and simplified the module-level code support. These changes 1593are in preparation for the eventual removal of the legacy MLC support 1594(deferred execution), replaced by the new MLC architecture which executes 1595the MLC as a table is loaded (DSDT/SSDTs). 1596 1597Changed a compile-time option to a runtime option. Changes the option to 1598ignore ACPI table load-time package resolution errors into a runtime 1599option. Used only for platforms that generate many AE_NOT_FOUND errors 1600during boot. AcpiGbl_IgnorePackageResolutionErrors. 1601 1602Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1603ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1604compilation errors from unused variables (seen with some compilers). 1605 1606 16072) iASL Compiler/Disassembler and Tools: 1608 1609ASLTS: parallelized execution in order to achieve an (approximately) 2X 1610performance increase. 1611 1612ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1613error reporting. 1614 1615---------------------------------------- 161609 February 2018. Summary of changes for version 20180209: 1617 1618 16191) ACPICA kernel-resident subsystem: 1620 1621Completed the final integration of the recent changes to Package Object 1622handling and the module-level AML code support. This allows forward 1623references from individual package elements when the package object is 1624declared from within module-level code blocks. Provides compatibility 1625with other ACPI implementations. 1626 1627The new architecture for the AML module-level code has been completed and 1628is now the default for the ACPICA code. This new architecture executes 1629the module-level code in-line as the ACPI table is loaded/parsed instead 1630of the previous architecture which deferred this code until after the 1631table was fully loaded. This solves some ASL code ordering issues and 1632provides compatibility with other ACPI implementations. At this time, 1633there is an option to fallback to the earlier architecture, but this 1634support is deprecated and is planned to be completely removed later this 1635year. 1636 1637Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1638resolution of named reference elements within Package objects. Although 1639this is potentially a serious problem, it can generate a lot of 1640noise/errors on platforms whose firmware carries around a bunch of unused 1641Package objects. To disable these errors, define 1642ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1643errors are always reported for ACPICA applications such as AcpiExec. 1644 1645Fixed a regression related to the explicit type-conversion AML operators 1646(ToXXXX). The regression was introduced early in 2017 but was not seen 1647until recently because these operators are not fully supported by other 1648ACPI implementations and are thus rarely used by firmware developers. The 1649operators are defined by the ACPI specification to not implement the 1650"implicit result object conversion". The regression incorrectly 1651introduced this object conversion for the following explicit conversion 1652operators: 1653 ToInteger 1654 ToString 1655 ToBuffer 1656 ToDecimalString 1657 ToHexString 1658 ToBCD 1659 FromBCD 1660 1661 16622) iASL Compiler/Disassembler and Tools: 1663 1664iASL: Fixed a problem with the compiler constant folding feature as 1665related to the ToXXXX explicit conversion operators. These operators do 1666not support the "implicit result object conversion" by definition. Thus, 1667ASL expressions that use these operators cannot be folded to a simple 1668Store operator because Store implements the implicit conversion. This 1669change uses the CopyObject operator for the ToXXXX operator folding 1670instead. CopyObject is defined to not implement implicit result 1671conversions and is thus appropriate for folding the ToXXXX operators. 1672 1673iASL: Changed the severity of an error condition to a simple warning for 1674the case where a symbol is declared both locally and as an external 1675symbol. This accommodates existing ASL code. 1676 1677AcpiExec: The -ep option to enable the new architecture for module-level 1678code has been removed. It is replaced by the -dp option which instead has 1679the opposite effect: it disables the new architecture (the default) and 1680enables the legacy architecture. When the legacy code is removed in the 1681future, the -dp option will be removed also. 1682 1683---------------------------------------- 168405 January 2018. Summary of changes for version 20180105: 1685 1686 16871) ACPICA kernel-resident subsystem: 1688 1689Updated all copyrights to 2018. This affects all source code modules. 1690 1691Fixed a possible build error caused by an unresolved reference to the 1692AcpiUtSafeStrncpy function. 1693 1694Removed NULL pointer arithmetic in the various pointer manipulation 1695macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1696This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1697 1698Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1699Mittal. 1700 1701 17022) iASL Compiler/Disassembler and Tools: 1703 1704ASLTS: Updated all copyrights to 2018. 1705 1706Tools: Updated all signon copyrights to 2018. 1707 1708AcpiXtract: Fixed a regression related to ACPI table signatures where the 1709signature was truncated to 3 characters (instead of 4). 1710 1711AcpiExec: Restore the original terminal mode after the use of the -v and 1712-vd options. 1713 1714ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1715 1716---------------------------------------- 171714 December 2017. Summary of changes for version 20171214: 1718 1719 17201) ACPICA kernel-resident subsystem: 1721 1722Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1723interface where the optional "pathname" argument had inadvertently become 1724a required argument returning an error if omitted (NULL pointer 1725argument). 1726 1727Fixed two possible memory leaks related to the recently developed "late 1728resolution" of reference objects within ASL Package Object definitions. 1729 1730Added two recently defined _OSI strings: "Windows 2016" and "Windows 17312017". Mario Limonciello. 1732 1733Implemented and deployed a safer version of the C library function 1734strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1735creation of unterminated strings as a possible result of a standard 1736strncpy. 1737 1738Cleaned up and restructured the global variable file (acglobal.h). There 1739are many changes, but no functional changes. 1740 1741 17422) iASL Compiler/Disassembler and Tools: 1743 1744iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1745optional OemData field at the end of the table was incorrectly required 1746for proper compilation. It is now correctly an optional field. 1747 1748ASLTS: The entire suite was converted from standard ASL to the ASL+ 1749language, using the ASL-to-ASL+ converter which is integrated into the 1750iASL compiler. A binary compare of all output files has verified the 1751correctness of the conversion. 1752 1753iASL: Fixed the source code build for platforms where "char" is unsigned. 1754This affected the iASL lexer only. Jung-uk Kim. 1755 1756---------------------------------------- 175710 November 2017. Summary of changes for version 20171110: 1758 1759 17601) ACPICA kernel-resident subsystem: 1761 1762This release implements full support for ACPI 6.2A: 1763 NFIT - Added a new subtable, "Platform Capabilities Structure" 1764No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1765errata release of the specification. 1766 1767Other ACPI table changes: 1768 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1769 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1770Linton 1771 1772Utilities: Modified the string/integer conversion functions to use 1773internal 64-bit divide support instead of a native divide. On 32-bit 1774platforms, a 64-bit divide typically requires a library function which 1775may not be present in the build (kernel or otherwise). 1776 1777Implemented a targeted error message for timeouts returned from the 1778Embedded Controller device driver. This is seen frequently enough to 1779special-case an AE_TIME returned from an EC operation region access: 1780 "Timeout from EC hardware or EC device driver" 1781 1782Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1783runtime error messages have the identical prefix. 1784 1785 17862) iASL Compiler/Disassembler and Tools: 1787 1788AcpiXtract: Fixed a problem with table header detection within the 1789acpidump file. Processing a table could be ended early if a 0x40 (@) 1790appears in the original binary table, resulting in the @ symbol appearing 1791in the decoded ASCII field at the end of the acpidump text line. The 1792symbol caused acpixtract to incorrectly think it had reached the end of 1793the current table and the beginning of a new table. 1794 1795AcpiXtract: Added an option (-f) to ignore some errors during table 1796extraction. This initial implementation ignores non-ASCII and non- 1797printable characters found in the acpidump text file. 1798 1799TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1800for ASLTS. This feature is used to track memory allocations from 1801different memory caches within the ACPICA code. At the end of an ASLTS 1802run, these memory statistics are recorded and stored in a log file. 1803 1804Debugger (user-space version): Implemented a simple "Background" command. 1805Creates a new thread to execute a control method in the background, while 1806control returns to the debugger prompt to allow additional commands. 1807 Syntax: Background <Namepath> [Arguments] 1808 1809---------------------------------------- 181029 September 2017. Summary of changes for version 20170929: 1811 1812 18131) ACPICA kernel-resident subsystem: 1814 1815Redesigned and implemented an improved ASL While() loop timeout 1816mechanism. This mechanism is used to prevent infinite loops in the kernel 1817AML interpreter caused by either non-responsive hardware or incorrect AML 1818code. The new implementation uses AcpiOsGetTimer instead of a simple 1819maximum loop count, and is thus more accurate and constant across 1820different machines. The default timeout is currently 30 seconds, but this 1821may be adjusted later. 1822 1823Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1824better reflect the new implementation of the loop timeout mechanism. 1825 1826Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1827and to fix an off-by-one error. Jung-uk Kim. 1828 1829Fixed an EFI build problem by updating the makefiles to for a new file 1830that was added, utstrsuppt.c 1831 1832 18332) iASL Compiler/Disassembler and Tools: 1834 1835Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1836includes support in the table disassembler, compiler, and template 1837generator. 1838 1839iASL: Added an exception for an illegal type of recursive method 1840invocation. If a method creates named objects, the first recursive call 1841will fail at runtime. This change adds an error detection at compile time 1842to catch the problem up front. Note: Marking such a method as 1843"serialized" will not help with this problem, because the same thread can 1844acquire the method mutex more than once. Example compiler and runtime 1845output: 1846 1847 Method (MTH1) 1848 { 1849 Name (INT1, 1) 1850 MTH1 () 1851 } 1852 1853 dsdt.asl 22: MTH1 () 1854 Error 6152 - ^ Illegal recursive call to method 1855 that creates named objects (MTH1) 1856 1857Previous runtime exception: 1858 ACPI Error: [INT1] Namespace lookup failure, 1859 AE_ALREADY_EXISTS (20170831/dswload2-465) 1860 1861iASL: Updated support for External() opcodes to improve namespace 1862management and error detection. These changes are related to issues seen 1863with multiple-segment namespace pathnames within External declarations, 1864such as below: 1865 1866 External(\_SB.PCI0.GFX0, DeviceObj) 1867 External(\_SB.PCI0.GFX0.ALSI) 1868 1869iASL: Implemented support for multi-line error/warning messages. This 1870enables more detailed and helpful error messages as below, from the 1871initial deployment for the duplicate names error: 1872 1873 DSDT.iiii 1692: Device(PEG2) { 1874 Error 6074 - ^ Name already exists in scope 1875(PEG2) 1876 1877 Original name creation/declaration below: 1878 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1879 1880AcpiXtract: Added additional flexibility to support differing input hex 1881dump formats. Specifically, hex dumps that contain partial disassembly 1882and/or comments within the ACPI table data definition. There exist some 1883dump utilities seen in the field that create this type of hex dump (such 1884as Simics). For example: 1885 1886 DSDT @ 0xdfffd0c0 (10999 bytes) 1887 Signature DSDT 1888 Length 10999 1889 Revision 1 1890 Checksum 0xf3 (Ok) 1891 OEM_ID BXPC 1892 OEM_table_id BXDSDT 1893 OEM_revision 1 1894 Creator_id 1280593481 1895 Creator_revision 537399345 1896 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1897 ... 1898 2af0: 5f 4c 30 46 00 a4 01 1899 1900Test suite: Miscellaneous changes/fixes: 1901 More cleanup and simplification of makefiles 1902 Continue compilation of test cases after a compile failure 1903 Do not perform binary compare unless both files actually exist 1904 1905iASL: Performed some code/module restructuring. Moved all memory 1906allocation functions to new modules. Two new files, aslallocate.c and 1907aslcache.c 1908 1909---------------------------------------- 191031 August 2017. Summary of changes for version 20170831: 1911 1912 19131) ACPICA kernel-resident subsystem: 1914 1915Implemented internal support for full 64-bit addresses that appear in all 1916Generic Address Structure (GAS) structures. Previously, only the lower 32 1917bits were used. Affects the use of GAS structures in the FADT and other 1918tables, as well as the GAS structures passed to the AcpiRead and 1919AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1920 1921Added header support for the PDTT ACPI table (Processor Debug Trigger 1922Table). Full support in the iASL Data Table Compiler and disassembler is 1923forthcoming. 1924 1925 19262) iASL Compiler/Disassembler and Tools: 1927 1928iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1929Properties Topology Table) where a flag bit was specified in the wrong 1930bit position ("Line Size Valid", bit 6). 1931 1932iASL: Implemented support for Octal integer constants as defined by the 1933ASL language grammar, per the ACPI specification. Any integer constant 1934that starts with a zero is an octal constant. For example, 1935 Store (037777, Local0) /* Octal constant */ 1936 Store (0x3FFF, Local0) /* Hex equivalent */ 1937 Store (16383, Local0) /* Decimal equivalent */ 1938 1939iASL: Improved overflow detection for 64-bit string conversions during 1940compilation of integer constants. "Overflow" in this case means a string 1941that represents an integer that is too large to fit into a 64-bit value. 1942Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1943the low-order 32 bits with a warning, as previously implemented. Several 1944new exceptions are defined that indicate a 64-bit overflow, as well as 1945the base (radix) that was used during the attempted conversion. Examples: 1946 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1947 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1948 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1949 1950iASL: Added a warning for the case where a ResourceTemplate is declared 1951with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1952this case, the resulting template is created with a single END_TAG 1953descriptor, which is essentially useless. 1954 1955iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1956include compilation error codes as well. 1957 1958---------------------------------------- 195928 July 2017. Summary of changes for version 20170728: 1960 1961 19621) ACPICA kernel-resident subsystem: 1963 1964Fixed a regression seen with small resource descriptors that could cause 1965an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1966 1967AML interpreter: Implemented a new feature that allows forward references 1968from individual named references within package objects that are 1969contained within blocks of "module-level code". This provides 1970compatibility with other ACPI implementations and supports existing 1971firmware that depends on this feature. Example: 1972 1973 Name (ABCD, 1) 1974 If (ABCD) /* An If() at module-level */ 1975 { 1976 Name (PKG1, Package() 1977 { 1978 INT1 /* Forward reference to object INT1 1979*/ 1980 }) 1981 Name (INT1, 0x1234) 1982 } 1983 1984AML Interpreter: Fixed a problem with the Alias() operator where aliases 1985to some ASL objects were not handled properly. Objects affected are: 1986Mutex, Event, and OperationRegion. 1987 1988AML Debugger: Enhanced to properly handle AML Alias objects. These 1989objects have one level of indirection which was not fully supported by 1990the debugger. 1991 1992Table Manager: Added support to detect and ignore duplicate SSDTs within 1993the XSDT/RSDT. This error in the XSDT has been seen in the field. 1994 1995EFI and EDK2 support: 1996 Enabled /WX flag for MSVC builds 1997 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1998 Added local support for 64-bit multiply and shift operations 1999 Added support to compile acpidump.efi on Windows 2000 Added OSL function stubs for interfaces not used under EFI 2001 2002Added additional support for the _DMA predefined name. _DMA returns a 2003buffer containing a resource template. This change add support within the 2004resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2005resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2006 2007 20082) iASL Compiler/Disassembler and Tools: 2009 2010iASL: Fixed a problem where the internal input line buffer(s) could 2011overflow if there are very long lines in the input ASL source code file. 2012Implemented buffer management that automatically increases the size of 2013the buffers as necessary. 2014 2015iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2016errors. If the specified exception is not raised during compilation, the 2017compiler emits an error. This is intended to support the ASL test suite, 2018but may be useful in other contexts. 2019 2020iASL: Implemented a new predefined macro, __METHOD__, which returns a 2021string containing the name of the current control method that is being 2022compiled. 2023 2024iASL: Implemented debugger and table compiler support for the SDEI ACPI 2025table (Software Delegated Exception Interface). James Morse 2026<james.morse@arm.com> 2027 2028Unix/Linux makefiles: Added an option to disable compile optimizations. 2029The disable occurs when the NOOPT flag is set to TRUE. 2030theracermaster@gmail.com 2031 2032Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2033when there are different tables for 32-bit versus 64-bit. 2034 2035Enhanced error reporting for the ASL test suite (ASLTS) by removing 2036unnecessary/verbose text, and emit the actual line number where an error 2037has occurred. These changes are intended to improve the usefulness of the 2038test suite. 2039 2040---------------------------------------- 204129 June 2017. Summary of changes for version 20170629: 2042 2043 20441) ACPICA kernel-resident subsystem: 2045 2046Tables: Implemented a deferred ACPI table verification. This is useful 2047for operating systems where the tables cannot be verified in the early 2048initialization stage due to early memory mapping limitations on some 2049architectures. Lv Zheng. 2050 2051Tables: Removed the signature validation for dynamically loaded tables. 2052Provides compatibility with other ACPI implementations. Previously, only 2053SSDT tables were allowed, as per the ACPI specification. Now, any table 2054signature can be used via the Load() operator. Lv Zheng. 2055 2056Tables: Fixed several mutex issues that could cause errors during table 2057acquisition. Lv Zheng. 2058 2059Tables: Fixed a problem where an ACPI warning could be generated if a 2060null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2061 2062Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2063AcpiPutTable interfaces. This applies to the "late stage" table loading 2064when the use of AcpiPutTable is no longer required (since the system 2065memory manager is fully running and available). Lv Zheng. 2066 2067Fixed/Reverted a regression during processing of resource descriptors 2068that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2069exception in this case. 2070 2071Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2072I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2073 2074Interpreter: Fixed a possible fault if an Alias operator with an invalid 2075or duplicate target is encountered during Alias creation in 2076AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2077 2078Added an option to use designated initializers for function pointers. 2079Kees Cook <keescook@google.com> 2080 2081 20822) iASL Compiler/Disassembler and Tools: 2083 2084iASL: Allow compilation of External declarations with target pathnames 2085that refer to existing named objects within the table. Erik Schmauss. 2086 2087iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2088FieldUnit name also is declared via External in the same table. Erik 2089Schmauss. 2090 2091iASL: Allow existing scope names within pathnames used in External 2092statements. For example: 2093 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2094 Device (ABCD) 2095 2096iASL: IORT ACPI table: Implemented changes required to decode the new 2097Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2098compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2099 2100Disassembler: Don't abort disassembly on errors from External() 2101statements. Erik Schmauss. 2102 2103Disassembler: fixed a possible fault when one of the Create*Field 2104operators references a Resource Template. ACPICA Bugzilla 1396. 2105 2106iASL: In the source code, resolved some naming inconsistences across the 2107parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2108Adds a new file, aslparseop.c 2109 2110---------------------------------------- 211131 May 2017. Summary of changes for version 20170531: 2112 2113 21140) ACPI 6.2 support: 2115 2116The ACPI specification version 6.2 has been released and is available at 2117http://uefi.org/specifications 2118 2119This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2120are summarized below. 2121 2122New ACPI tables (Table Compiler/Disassembler/Templates): 2123 HMAT (Heterogeneous Memory Attributes Table) 2124 WSMT (Windows SMM Security Mitigation Table) 2125 PPTT (Processor Properties Topology Table) 2126 2127New subtables for existing ACPI tables: 2128 HEST (New subtable, Arch-deferred machine check) 2129 SRAT (New subtable, Arch-specific affinity structure) 2130 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2131 2132Simple updates for existing ACPI tables: 2133 BGRT (two new flag bits) 2134 HEST (New bit defined for several subtables, GHES_ASSIST) 2135 2136New Resource Descriptors and Resource macros (Compiler/Disassembler): 2137 PinConfig() 2138 PinFunction() 2139 PinGroup() 2140 PinGroupConfig() 2141 PinGroupFunction() 2142 New type for hardware error notification (section 18.3.2.9) 2143 2144New predefined names/methods (Compiler/Interpreter): 2145 _HMA (Heterogeneous Memory Attributes) 2146 _LSI (Label Storage Information) 2147 _LSR (Label Storage Read) 2148 _LSW (Label Storage Write) 2149 2150ASL grammar/macro changes (Compiler): 2151 For() ASL macro, implemented with the AML while operator 2152 Extensions to Concatenate operator 2153 Support for multiple definition blocks in same ASL file 2154 Clarification for Buffer operator 2155 Allow executable AML code underneath all scopes (Devices, etc.) 2156 Clarification/change for the _OSI return value 2157 ASL grammar update for reference operators 2158 Allow a zero-length string for AML filename in DefinitionBlock 2159 2160Miscellaneous: 2161 New device object notification value 2162 Remove a notify value (0x0C) for graceful shutdown 2163 New UUIDs for processor/cache properties and 2164 physical package property 2165 New _HID, ACPI0014 (Wireless Power Calibration Device) 2166 2167 21681) ACPICA kernel-resident subsystem: 2169 2170Added support to disable ACPI events on hardware-reduced platforms. 2171Eliminates error messages of the form "Could not enable fixed event". Lv 2172Zheng 2173 2174Fixed a problem using Device/Thermal objects with the ObjectType and 2175DerefOf ASL operators. This support had not been fully/properly 2176implemented. 2177 2178Fixed a problem where if a Buffer object containing a resource template 2179was longer than the actual resource template, an error was generated -- 2180even though the AML is legal. This case has been seen in the field. 2181 2182Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2183The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2184 2185Added header file changes for the TPM2 ACPI table. Update to new version 2186of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2187 2188Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2189These interfaces are intended to be used only in conjunction with the 2190predefined _DLM method (Device Lock Method). "This object appears in a 2191device scope when AML access to the device must be synchronized with the 2192OS environment". 2193 2194Example Code and Data Size: These are the sizes for the OS-independent 2195acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2196debug version of the code includes the debug output trace mechanism and 2197has a much larger code and data size. 2198 2199 Current Release: 2200 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2201 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2202 Previous Release: 2203 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2204 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2205 2206 22072) iASL Compiler/Disassembler and Tools: 2208 2209iASL: Fixed a problem where an External() declaration could not refer to 2210a Field Unit. Erik Schmauss. 2211 2212Disassembler: Improved support for the Switch/Case operators. This 2213feature will disassemble AML code back to the original Switch operators 2214when possible, instead of an If..Else sequence. David Box 2215 2216iASL and disassembler: Improved the handling of multiple extraneous 2217parentheses for both ASL input and disassembled ASL output. 2218 2219Improved the behavior of the iASL compiler and disassembler to detect 2220improper use of external declarations 2221 2222Disassembler: Now aborts immediately upon detection of an unknown AML 2223opcode. The AML parser has no real way to recover from this, and can 2224result in the creation of an ill-formed parse tree that causes errors 2225later during the disassembly. 2226 2227All tools: Fixed a problem where the Unix application OSL did not handle 2228control-c correctly. For example, a control-c could incorrectly wake the 2229debugger. 2230 2231AcpiExec: Improved the Control-C handling and added a handler for 2232segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2233environments. 2234 2235Reduced the verbosity of the generic unix makefiles. Previously, each 2236compilation displayed the full set of compiler options. This has been 2237eliminated as the options are easily inspected within the makefiles. Each 2238compilation now results in a single line of output. 2239 2240---------------------------------------- 224103 March 2017. Summary of changes for version 20170303: 2242 2243 22440) ACPICA licensing: 2245 2246The licensing information at the start of each source code module has 2247been updated. In addition to the Intel license, the dual GPLv2/BSD 2248license has been added for completeness. Now, a single version of the 2249source code should be suitable for all ACPICA customers. This is the 2250major change for this release since it affects all source code modules. 2251 2252 22531) ACPICA kernel-resident subsystem: 2254 2255Fixed two issues with the common asltypes.h header that could cause 2256problems in some environments: (Kim Jung-uk) 2257 Removed typedef for YY_BUFFER_STATE ? 2258 Fixes an error with earlier versions of Flex. 2259 Removed use of FILE typedef (which is only defined in stdio.h) 2260 2261 22622) iASL Compiler/Disassembler and Tools: 2263 2264Disassembler: fixed a regression introduced in 20170224. A fix for a 2265memory leak related to resource descriptor tags (names) could fault when 2266the disassembler was generated with 64-bit compilers. 2267 2268The ASLTS test suite has been updated to implement a new testing 2269architecture. During generation of the suite from ASL source, both the 2270ASL and ASL+ compilers are now validated, as well as the disassembler 2271itself (Erik Schmauss). The architecture executes as follows: 2272 2273 For every ASL source module: 2274 Compile (legacy ASL compilation) 2275 Disassemble the resulting AML to ASL+ source code 2276 Compile the new ASL+ module 2277 Perform a binary compare on the legacy AML and the new ASL+ AML 2278 The ASLTS suite then executes normally using the AML binaries. 2279 2280---------------------------------------- 228124 February 2017. Summary of changes for version 20170224: 2282 2283 22841) ACPICA kernel-resident subsystem: 2285 2286Interpreter: Fixed two issues with the control method return value auto- 2287repair feature, where an attempt to double-delete an internal object 2288could result in an ACPICA warning (for _CID repair and others). No fault 2289occurs, however, because the attempted deletion (actually a release to an 2290internal cache) is detected and ignored via object poisoning. 2291 2292Debugger: Fixed an AML interpreter mutex issue during the single stepping 2293of control methods. If certain debugger commands are executed during 2294stepping, a mutex acquire/release error could occur. Lv Zheng. 2295 2296Fixed some issues generating ACPICA with the Intel C compiler by 2297restoring the original behavior and compiler-specific include file in 2298acenv.h. Lv Zheng. 2299 2300Example Code and Data Size: These are the sizes for the OS-independent 2301acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2302debug version of the code includes the debug output trace mechanism and 2303has a much larger code and data size. 2304 2305 Current Release: 2306 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2307 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2308 Previous Release: 2309 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2310 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2311 2312 23132) iASL Compiler/Disassembler and Tools: 2314 2315iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2316tool has been designed, implemented, and included in this release. The 2317key feature of this utility is that the original comments within the 2318input ASL file are preserved during the conversion process, and included 2319within the converted ASL+ file -- thus creating a transparent conversion 2320of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2321 2322 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2323converted code 2324 2325iASL/Disassembler: Improved the detection and correct disassembly of 2326Switch/Case operators. This feature detects sequences of if/elseif/else 2327operators that originated from ASL Switch/Case/Default operators and 2328emits the original operators. David Box. 2329 2330iASL: Improved the IORT ACPI table support in the following areas. Lv 2331Zheng: 2332 Clear MappingOffset if the MappingCount is zero. 2333 Fix the disassembly of the SMMU GSU interrupt offset. 2334 Update the template file for the IORT table. 2335 2336Disassembler: Enhanced the detection and disassembly of resource 2337template/descriptor within a Buffer object. An EndTag descriptor is now 2338required to have a zero second byte, since all known ASL compilers emit 2339this. This helps eliminate incorrect decisions when a buffer is 2340disassembled (false positives on resource templates). 2341 2342---------------------------------------- 234319 January 2017. Summary of changes for version 20170119: 2344 2345 23461) General ACPICA software: 2347 2348Entire source code base: Added the 2017 copyright to all source code 2349legal/licensing module headers and utility/tool signons. This includes 2350the standard Linux dual-license header. This affects virtually every file 2351in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2352the ACPICA test suite. 2353 2354 23552) iASL Compiler/Disassembler and Tools: 2356 2357iASL: Removed/fixed an inadvertent remark when a method argument 2358containing a reference is used as a target operand within the method (and 2359never used as a simple argument), as in the example below. Jeffrey Hugo. 2360 2361 dsdt.asl 1507: Store(0x1, Arg0) 2362 Remark 2146 - ^ Method Argument is never used (Arg0) 2363 2364All tools: Removed the bit width of the compiler that generated the tool 2365from the common signon for all user space tools. This proved to be 2366confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2367from the generic makefiles (Thomas Petazzoni). Example below. 2368 2369 Old: 2370 ASL+ Optimizing Compiler version 20170119-32 2371 ASL+ Optimizing Compiler version 20170119-64 2372 2373 New: 2374 ASL+ Optimizing Compiler version 20170119 2375 2376---------------------------------------- 237722 December 2016. Summary of changes for version 20161222: 2378 2379 23801) ACPICA kernel-resident subsystem: 2381 2382AML Debugger: Implemented a new mechanism to simplify and enhance 2383debugger integration into all environments, including kernel debuggers 2384and user-space utilities, as well as remote debug services. This 2385mechanism essentially consists of new OSL interfaces to support debugger 2386initialization/termination, as well as wait/notify interfaces to perform 2387the debugger handshake with the host. Lv Zheng. 2388 2389 New OSL interfaces: 2390 AcpiOsInitializeDebugger (void) 2391 AcpiOsTerminateDebugger (void) 2392 AcpiOsWaitCommandReady (void) 2393 AcpiOsNotifyCommandComplete (void) 2394 2395 New OS services layer: 2396 osgendbg.c -- Example implementation, and used for AcpiExec 2397 2398Update for Generic Address Space (GAS) support: Although the AccessWidth 2399and/or BitOffset fields of the GAS are not often used, this change now 2400fully supports these fields. This affects the internal support for FADT 2401registers, registers in other ACPI data tables, and the AcpiRead and 2402AcpiWrite public interfaces. Lv Zheng. 2403 2404Sleep support: In order to simplify integration of ACPI sleep for the 2405various host operating systems, a new OSL interface has been introduced. 2406AcpiOsEnterSleep allows the host to perform any required operations 2407before the final write to the sleep control register(s) is performed by 2408ACPICA. Lv Zheng. 2409 2410 New OSL interface: 2411 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2412 2413 Called from these internal interfaces: 2414 AcpiHwLegacySleep 2415 AcpiHwExtendedSleep 2416 2417EFI support: Added a very small EFI/ACPICA example application. Provides 2418a simple demo for EFI integration, as well as assisting with resolution 2419of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2420 2421 source/tools/efihello/efihello.c 2422 2423Local C library: Implemented several new functions to enhance ACPICA 2424portability, for environments where these clib functions are not 2425available (such as EFI). Lv Zheng: 2426 putchar 2427 getchar 2428 strpbrk 2429 strtok 2430 memmove 2431 2432Fixed a regression where occasionally a valid resource descriptor was 2433incorrectly detected as invalid at runtime, and a 2434AE_AML_NO_RESOURCE_END_TAG was returned. 2435 2436Fixed a problem with the recently implemented support that enables 2437control method invocations as Target operands to many ASL operators. 2438Warnings of this form: "Needed type [Reference], found [Processor]" were 2439seen at runtime for some method invocations. 2440 2441Example Code and Data Size: These are the sizes for the OS-independent 2442acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2443debug version of the code includes the debug output trace mechanism and 2444has a much larger code and data size. 2445 2446 Current Release: 2447 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2448 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2449 Previous Release: 2450 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2451 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2452 2453 24542) iASL Compiler/Disassembler and Tools: 2455 2456Disassembler: Enhanced output by adding the capability to detect and 2457disassemble ASL Switch/Case statements back to the original ASL source 2458code instead of if/else blocks. David Box. 2459 2460AcpiHelp: Split a large file into separate files based upon 2461functionality/purpose. New files are: 2462 ahaml.c 2463 ahasl.c 2464 2465---------------------------------------- 246617 November 2016. Summary of changes for version 20161117: 2467 2468 24691) ACPICA kernel-resident subsystem: 2470 2471Table Manager: Fixed a regression introduced in 20160729, "FADT support 2472cleanup". This was an attempt to remove all references in the source to 2473the FADT version 2, which never was a legal version number. It was 2474skipped because it was an early version of 64-bit support that was 2475eventually abandoned for the current 64-bit support. 2476 2477Interpreter: Fixed a problem where runtime implicit conversion was 2478incorrectly disabled for the ASL operators below. This brings the 2479behavior into compliance with the ACPI specification: 2480 FromBCD 2481 ToBCD 2482 ToDecimalString 2483 ToHexString 2484 ToInteger 2485 ToBuffer 2486 2487Table Manager: Added a new public interface, AcpiPutTable, used to 2488release and free an ACPI table returned by AcpiGetTable and related 2489interfaces. Lv Zheng. 2490 2491Example Code and Data Size: These are the sizes for the OS-independent 2492acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2493debug version of the code includes the debug output trace mechanism and 2494has a much larger code and data size. 2495 2496 Current Release: 2497 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2498 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2499 Previous Release: 2500 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2501 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2502 2503 25042) iASL Compiler/Disassembler and Tools: 2505 2506Disassembler: Fixed a regression for disassembly of Resource Template. 2507Detection of templates in the AML stream missed some types of templates. 2508 2509iASL: Fixed a problem where an Access Size error was returned for the PCC 2510address space when the AccessSize of the GAS register is greater than a 2511DWORD. Hoan Tran. 2512 2513iASL: Implemented several grammar changes for the operators below. These 2514changes are slated for the next version of the ACPI specification: 2515 RefOf - Disallow method invocation as an operand 2516 CondRefOf - Disallow method invocation as an operand 2517 DerefOf - Disallow operands that use the result from operators 2518that 2519 do not return a reference (Changed TermArg to 2520SuperName). 2521 2522iASL: Control method invocations are now allowed for Target operands, as 2523per the ACPI specification. Removed error for using a control method 2524invocation as a Target operand. 2525 2526Disassembler: Improved detection of Resource Templates, Unicode, and 2527Strings within Buffer objects. These subtypes do not contain a specific 2528opcode to indicate the originating ASL code, and they must be detected by 2529other means within the disassembler. 2530 2531iASL: Implemented an optimization improvement for 32-bit ACPI tables 2532(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2533only after 64-bit to 32-bit truncation. A truncation warning message is 2534still emitted, however. 2535 2536AcpiXtract: Implemented handling for both types of line terminators (LF 2537or CR/LF) so that it can accept AcpiDump output files from any system. 2538Peter Wu. 2539 2540AcpiBin: Added two new options for comparing AML files: 2541 -a: compare and display ALL mismatches 2542 -o: start compare at this offset into the second file 2543 2544---------------------------------------- 254530 September 2016. Summary of changes for version 20160930: 2546 2547 25481) ACPICA kernel-resident subsystem: 2549 2550Fixed a regression in the internal AcpiTbFindTable function where a non 2551AE_OK exception could inadvertently be returned even if the function did 2552not fail. This problem affects the following operators: 2553 DataTableRegion 2554 LoadTable 2555 2556Fixed a regression in the LoadTable operator where a load to any 2557namespace location other than the root no longer worked properly. 2558 2559Increased the maximum loop count value that will result in the 2560AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2561prevent infinite loops within the AML interpreter and thus the host OS 2562kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 25631,048,575). 2564 2565Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 2566acpixf.h file. This allows hosts to easily configure the maximum loop 2567count at runtime. 2568 2569Removed an illegal character in the strtoul64.c file. This character 2570caused errors with some C compilers. 2571 2572Example Code and Data Size: These are the sizes for the OS-independent 2573acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2574debug version of the code includes the debug output trace mechanism and 2575has a much larger code and data size. 2576 2577 Current Release: 2578 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2579 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2580 Previous Release: 2581 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2582 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2583 2584 25852) iASL Compiler/Disassembler and Tools: 2586 2587Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2588the simpler ASL ElseIf keyword. During the conversion, a trailing If 2589block could be lost and missing from the disassembled output. 2590 2591iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2592the missing rule caused a parse error when using the Index operator as an 2593operand to ObjectType. This construct now compiles properly. Example: 2594 ObjectType(PKG1[4]). 2595 2596iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2597option). Previously, unresolved symbols could cause a protection fault. 2598Such symbols are now marked as unresolved in the map file. 2599 2600iASL: Implemented support to allow control method invocations as an 2601operand to the ASL DeRefOf operator. Example: 2602 DeRefOf(MTH1(Local0)) 2603 2604Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2605possible _PLD buffer now includes examination of both the normal buffer 2606length (16 or 20) as well as the surrounding AML package length. 2607 2608Disassembler: Fixed a problem with the decoding of complex expressions 2609within the Divide operator for ASL+. For the case where both the quotient 2610and remainder targets are specified, the entire statement cannot be 2611disassembled. Previously, the output incorrectly contained a mix of ASL- 2612and ASL+ operators. This mixed statement causes a syntax error when 2613compiled. Example: 2614 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2615disassembled to: 2616 Divide (INT1 + 6, 128, RSLT, QUOT) 2617 2618iASL/Tools: Added support to process AML and non-AML ACPI tables 2619consistently. For the disassembler and AcpiExec, allow all types of ACPI 2620tables (AML and data tables). For the iASL -e option, allow only AML 2621tables (DSDT/SSDT). 2622 2623---------------------------------------- 262431 August 2016. Summary of changes for version 20160831: 2625 2626 26271) ACPICA kernel-resident subsystem: 2628 2629Improve support for the so-called "module-level code", which is defined 2630to be math, logical and control AML opcodes that appear outside of any 2631control method. This change improves the support by adding more opcodes 2632that can be executed in the manner. Some other issues have been solved, 2633and the ASL grammar changes to support such code under all scope 2634operators (Device, etc.) are complete. Lv Zheng. 2635 2636UEFI support: these OSL functions have been implemented. This is an 2637additional step toward supporting the AcpiExec utility natively (with 2638full hardware access) under UEFI. Marcelo Ferreira. 2639 AcpiOsReadPciConfiguration 2640 AcpiOsWritePciConfiguration 2641 2642Fixed a possible mutex error during control method auto-serialization. Lv 2643Zheng. 2644 2645Updated support for the Generic Address Structure by fully implementing 2646all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2647Zheng. 2648 2649Updated the return value for the internal _OSI method. Instead of 26500xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2651for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2652implementations, and will be reflected and clarified in the next version 2653of the ACPI specification. 2654 2655Implemented two new table events that can be passed to an ACPICA table 2656handler. These events are used to indicate a table installation or 2657uninstallation. These events are used in addition to existed table load 2658and unload events. Lv Zheng. 2659 2660Implemented a cleanup for all internal string-to-integer conversions. 2661Consolidate multiple versions of this functionality and limit possible 2662bases to either 10 or 16 to simplify the code. Adds a new file, 2663utstrtoul64. 2664 2665Cleanup the inclusion order of the various compiler-specific headers. 2666This simplifies build configuration management. The compiler-specific 2667headers are now split out from the host-specific headers. Lv Zheng. 2668 2669Example Code and Data Size: These are the sizes for the OS-independent 2670acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2671debug version of the code includes the debug output trace mechanism and 2672has a much larger code and data size. 2673 2674 Current Release: 2675 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2676 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2677 2678 26792) iASL Compiler/Disassembler and Tools: 2680 2681iASL/AcpiExec: Added a command line option to display the build date/time 2682of the tool (-vd). This can be useful to verify that the correct version 2683of the tools are being used. 2684 2685AML Debugger: Implemented a new subcommand ("execute predef") to execute 2686all predefined control methods and names within the current namespace. 2687This can be useful for debugging problems with ACPI tables and the ACPI 2688namespace. 2689 2690---------------------------------------- 269129 July 2016. Summary of changes for version 20160729: 2692 2693 26941) ACPICA kernel-resident subsystem: 2695 2696Implemented basic UEFI support for the various ACPICA tools. This 2697includes: 26981) An OSL to implement the various AcpiOs* interfaces on UEFI. 26992) Support to obtain the ACPI tables on UEFI. 27003) Local implementation of required C library functions not available on 2701UEFI. 27024) A front-end (main) function for the tools for UEFI-related 2703initialization. 2704 2705The initial deployment of this support is the AcpiDump utility executing 2706as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2707Current environments supported are Linux/Unix. MSVC generation is not 2708supported at this time. See the generate/efi/README file for build 2709instructions. Lv Zheng. 2710 2711Future plans include porting the AcpiExec utility to execute natively on 2712the platform with I/O and memory access. This will allow viewing/dump of 2713the platform namespace and native execution of ACPI control methods that 2714access the actual hardware. To fully implement this support, the OSL 2715functions below must be implemented with UEFI interfaces. Any community 2716help in the implementation of these functions would be appreciated: 2717 AcpiOsReadPort 2718 AcpiOsWritePort 2719 AcpiOsReadMemory 2720 AcpiOsWriteMemory 2721 AcpiOsReadPciConfiguration 2722 AcpiOsWritePciConfiguration 2723 2724Restructured and standardized the C library configuration for ACPICA, 2725resulting in the various configuration options below. This includes a 2726global restructuring of the compiler-dependent and platform-dependent 2727include files. These changes may affect the existing platform-dependent 2728configuration files on some hosts. Lv Zheng. 2729 2730The current C library configuration options appear below. For any issues, 2731it may be helpful to examine the existing compiler-dependent and 2732platform-dependent files as examples. Lv Zheng. 2733 27341) Linux kernel: 2735 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2736library. 2737 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 27382) Unix/Windows/BSD applications: 2739 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2740library. 2741 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 27423) UEFI applications: 2743 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2744library. 2745 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 27464) UEFI applications (EDK2/StdLib): 2747 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2748 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2749 2750 2751AML interpreter: "module-level code" support. Allows for execution of so- 2752called "executable" AML code (math/logical operations, etc.) outside of 2753control methods not just at the module level (top level) but also within 2754any scope declared outside of a control method - Scope{}, Device{}, 2755Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2756 2757Simplified the configuration of the "maximum AML loops" global option by 2758adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2759modified at runtime. 2760 2761 2762Example Code and Data Size: These are the sizes for the OS-independent 2763acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2764debug version of the code includes the debug output trace mechanism and 2765has a much larger code and data size. 2766 2767 Current Release: 2768 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2769 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2770 2771 27722) iASL Compiler/Disassembler and Tools: 2773 2774iASL: Add full support for the RASF ACPI table (RAS Features Table). 2775Includes disassembler, data table compiler, and header support. 2776 2777iASL Expand "module-level code" support. Allows for 2778compilation/disassembly of so-called "executable" AML code (math/logical 2779operations, etc.) outside of control methods not just at the module level 2780(top level) but also within any scope declared outside of a control 2781method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2782ThermalZone{}. 2783 2784AcpiDump: Added support for dumping all SSDTs on newer versions of 2785Windows. These tables are now easily available -- SSDTs are not available 2786through the registry on older versions. 2787 2788---------------------------------------- 278927 May 2016. Summary of changes for version 20160527: 2790 2791 27921) ACPICA kernel-resident subsystem: 2793 2794Temporarily reverted the new arbitrary bit length/alignment support in 2795AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2796a number of regressions with the new code that need to be fully resolved 2797and tested before this support can be finally integrated into ACPICA. 2798Apologies for any inconveniences these issues may have caused. 2799 2800The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2801ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2802and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2803 2804Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2805option. Adds a new return macro, return_STR. Junk-uk Kim. 2806 2807Example Code and Data Size: These are the sizes for the OS-independent 2808acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2809debug version of the code includes the debug output trace mechanism and 2810has a much larger code and data size. 2811 2812 Current Release: 2813 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2814 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2815 Previous Release: 2816 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2817 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2818 2819---------------------------------------- 282022 April 2016. Summary of changes for version 20160422: 2821 28221) ACPICA kernel-resident subsystem: 2823 2824Fixed a regression in the GAS (generic address structure) arbitrary bit 2825support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2826and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2827 2828ACPI 6.0: Added support for new/renamed resource macros. One new argument 2829was added to each of these macros, and the original name has been 2830deprecated. The AML disassembler will always disassemble to the new 2831names. Support for the new macros was added to iASL, disassembler, 2832resource manager, and the acpihelp utility. ACPICA BZ 1274. 2833 2834 I2cSerialBus -> I2cSerialBusV2 2835 SpiSerialBus -> SpiSerialBusV2 2836 UartSerialBus -> UartSerialBusV2 2837 2838ACPI 6.0: Added support for a new integer field that was appended to the 2839package object returned by the _BIX method. This adds iASL compile-time 2840and AML runtime error checking. ACPICA BZ 1273. 2841 2842ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2843Subspace Type2" (Headers, Disassembler, and data table compiler). 2844 2845Example Code and Data Size: These are the sizes for the OS-independent 2846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2847debug version of the code includes the debug output trace mechanism and 2848has a much larger code and data size. 2849 2850 Current Release: 2851 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2852 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2853 Previous Release: 2854 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2855 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2856 2857 28582) iASL Compiler/Disassembler and Tools: 2859 2860iASL: Implemented an ASL grammar extension to allow/enable executable 2861"module-level code" to be created and executed under the various 2862operators that create new scopes. This type of AML code is already 2863supported in all known AML interpreters, and the grammar change will 2864appear in the next version of the ACPI specification. Simplifies the 2865conditional runtime creation of named objects under these object types: 2866 2867 Device 2868 PowerResource 2869 Processor 2870 Scope 2871 ThermalZone 2872 2873iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2874ease-of-use to the ASL language. The syntax is similar to the 2875corresponding C operator, and is implemented with the existing AML While 2876opcode -- thus requiring no changes to existing AML interpreters. 2877 2878 For (Initialize, Predicate, Update) {TermList} 2879 2880Grammar: 2881 ForTerm := 2882 For ( 2883 Initializer // Nothing | TermArg => ComputationalData 2884 Predicate // Nothing | TermArg => ComputationalData 2885 Update // Nothing | TermArg => ComputationalData 2886 ) {TermList} 2887 2888 2889iASL: The _HID/_ADR detection and validation has been enhanced to search 2890under conditionals in order to allow these objects to be conditionally 2891created at runtime. 2892 2893iASL: Fixed several issues with the constant folding feature. The 2894improvement allows better detection and resolution of statements that can 2895be folded at compile time. ACPICA BZ 1266. 2896 2897iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2898conversion to the ASL ElseIf operator where incorrect ASL code could be 2899generated. 2900 2901iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2902sometimes an extra (and extraneous) set of parentheses were emitted for 2903some combinations of operators. Although this did not cause any problems 2904with recompilation of the disassembled code, it made the code more 2905difficult to read. David Box. ACPICA BZ 1231. 2906 2907iASL: Changed to ignore the unreferenced detection for predefined names 2908of resource descriptor elements, when the resource descriptor is 2909created/defined within a control method. 2910 2911iASL: Disassembler: Fix a possible fault with externally declared Buffer 2912objects. 2913 2914---------------------------------------- 291518 March 2016. Summary of changes for version 20160318: 2916 29171) ACPICA kernel-resident subsystem: 2918 2919Added support for arbitrary bit lengths and bit offsets for registers 2920defined by the Generic Address Structure. Previously, only aligned bit 2921lengths of 8/16/32/64 were supported. This was sufficient for many years, 2922but recently some machines have been seen that require arbitrary bit- 2923level support. ACPICA BZ 1240. Lv Zheng. 2924 2925Fixed an issue where the \_SB._INI method sometimes must be evaluated 2926before any _REG methods are evaluated. Lv Zheng. 2927 2928Implemented several changes related to ACPI table support 2929(Headers/Disassembler/TableCompiler): 2930NFIT: For ACPI 6.1, updated to add some additional new fields and 2931constants. 2932FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 29336). 2934DMAR: Added new constants per the 10/2014 DMAR spec. 2935IORT: Added new subtable per the 10/2015 IORT spec. 2936HEST: For ACPI 6.1, added new constants and new subtable. 2937DBG2: Added new constants per the 12/2015 DBG2 spec. 2938FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2939ACPICA BZ 1249. 2940ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2941 2942Updated header support for the DMAR table to match the current version of 2943the related spec. 2944 2945Added extensions to the ASL Concatenate operator to allow any ACPI object 2946to be passed as an operand. Any object other than Integer/String/Buffer 2947simply returns a string containing the object type. This extends the 2948usefulness of the Printf macros. Previously, Concatenate would abort the 2949control method if a non-data object was encountered. 2950 2951ACPICA source code: Deployed the C "const" keyword across the source code 2952where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2953 2954Example Code and Data Size: These are the sizes for the OS-independent 2955acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2956debug version of the code includes the debug output trace mechanism and 2957has a much larger code and data size. 2958 2959 Current Release: 2960 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2961 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2962 Previous Release: 2963 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2964 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2965 2966 29672) iASL Compiler/Disassembler and Tools: 2968 2969iASL/Disassembler: Improved the heuristic used to determine the number of 2970arguments for an externally defined control method (a method in another 2971table). Although this is an improvement, there is no deterministic way to 2972"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2973will completely solve this problem as it is deployed (automatically) in 2974newer BIOS code. 2975 2976iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2977statements that could cause errors when the disassembled file is 2978compiled. ACPICA BZ 1243. David Box. 2979 2980iASL: Fixed a regression caused by the merger of the two versions of the 2981local strtoul64. Because of a dependency on a global variable, strtoul64 2982could return an error for integers greater than a 32-bit value. ACPICA BZ 29831260. 2984 2985iASL: Fixed a regression where a fault could occur for an ASL Return 2986statement if it invokes a control method that is not resolved. ACPICA BZ 29871264. 2988 2989AcpiXtract: Improved input file validation: detection of binary files and 2990non-acpidump text files. 2991 2992---------------------------------------- 299312 February 2016. Summary of changes for version 20160212: 2994 29951) ACPICA kernel-resident subsystem: 2996 2997Implemented full support for the ACPI 6.1 specification (released in 2998January). This version of the specification is available at: 2999http://www.uefi.org/specifications 3000 3001Only a relatively small number of changes were required in ACPICA to 3002support ACPI 6.1, in these areas: 3003- New predefined names 3004- New _HID values 3005- A new subtable for HEST 3006- A few other header changes for new values 3007 3008Ensure \_SB_._INI is executed before any _REG methods are executed. There 3009appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3010 3011Reverted a change made in version 20151218 which enabled method 3012invocations to be targets of various ASL operators (SuperName and Target 3013grammar elements). While the new behavior is supported by the ACPI 3014specification, other AML interpreters do not support this behavior and 3015never will. The ACPI specification will be updated for ACPI 6.2 to remove 3016this support. Therefore, the change was reverted to the original ACPICA 3017behavior. 3018 3019ACPICA now supports the GCC 6 compiler. 3020 3021Current Release: (Note: build changes increased sizes) 3022 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3023 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3024Previous Release: 3025 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3026 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3027 3028 30292) iASL Compiler/Disassembler and Tools: 3030 3031Completed full support for the ACPI 6.0 External() AML opcode. The 3032compiler emits an external AML opcode for each ASL External statement. 3033This opcode is used by the disassembler to assist with the disassembly of 3034external control methods by specifying the required number of arguments 3035for the method. AML interpreters do not use this opcode. To ensure that 3036interpreters do not even see the opcode, a block of one or more external 3037opcodes is surrounded by an "If(0)" construct. As this feature becomes 3038commonly deployed in BIOS code, the ability of disassemblers to correctly 3039disassemble AML code will be greatly improved. David Box. 3040 3041iASL: Implemented support for an optional cross-reference output file. 3042The -lx option will create a the cross-reference file with the suffix 3043"xrf". Three different types of cross-reference are created in this file: 3044- List of object references made from within each control method 3045- Invocation (caller) list for each user-defined control method 3046- List of references to each non-method object in the namespace 3047 3048iASL: Method invocations as ASL Target operands are now disallowed and 3049flagged as errors in preparation for ACPI 6.2 (see the description of the 3050problem above). 3051 3052---------------------------------------- 30538 January 2016. Summary of changes for version 20160108: 3054 30551) ACPICA kernel-resident subsystem: 3056 3057Updated all ACPICA copyrights and signons to 2016: Added the 2016 3058copyright to all source code module headers and utility/tool signons. 3059This includes the standard Linux dual-license header. This affects 3060virtually every file in the ACPICA core subsystem, iASL compiler, all 3061ACPICA utilities, and the ACPICA test suite. 3062 3063Fixed a regression introduced in version 20151218 concerning the 3064execution of so-called module-level ASL/AML code. Namespace objects 3065created under a module-level If() construct were not properly/fully 3066entered into the namespace and could cause an interpreter fault when 3067accessed. 3068 3069Example Code and Data Size: These are the sizes for the OS-independent 3070acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3071debug version of the code includes the debug output trace mechanism and 3072has a much larger code and data size. 3073 3074Current Release: 3075 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3076 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3077 Previous Release: 3078 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3079 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3080 3081 30822) iASL Compiler/Disassembler and Tools: 3083 3084Fixed a problem with the compilation of the GpioIo and GpioInt resource 3085descriptors. The _PIN field name was incorrectly defined to be an array 3086of 32-bit values, but the _PIN values are in fact 16 bits each. This 3087would cause incorrect bit width warnings when using Word (16-bit) fields 3088to access the descriptors. 3089 3090 3091---------------------------------------- 309218 December 2015. Summary of changes for version 20151218: 3093 30941) ACPICA kernel-resident subsystem: 3095 3096Implemented per-AML-table execution of "module-level code" as individual 3097ACPI tables are loaded into the namespace during ACPICA initialization. 3098In other words, any module-level code within an AML table is executed 3099immediately after the table is loaded, instead of batched and executed 3100after all of the tables have been loaded. This provides compatibility 3101with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3102David Box. 3103 3104To fully support the feature above, the default operation region handlers 3105for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3106installed before any ACPI tables are loaded. This enables module-level 3107code to access these address spaces during the table load and module- 3108level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3109Box. 3110 3111Implemented several changes to the internal _REG support in conjunction 3112with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3113utilities for the changes above. Although these tools were changed, host 3114operating systems that simply use the default handlers for SystemMemory, 3115SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3116 3117For example, in the code below, DEV1 is conditionally added to the 3118namespace by the DSDT via module-level code that accesses an operation 3119region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3120created immediately after the DSDT is loaded in order for the SSDT to 3121successfully reference DEV1. Previously, this code would cause an 3122AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3123fully supported by ACPICA. 3124 3125 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3126 { 3127 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3128 Field (OPR1, AnyAcc, NoLock, Preserve) 3129 { 3130 FLD1, 1 3131 } 3132 If (FLD1) 3133 { 3134 Device (\DEV1) 3135 { 3136 } 3137 } 3138 } 3139 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3140 { 3141 External (\DEV1, DeviceObj) 3142 Scope (\DEV1) 3143 { 3144 } 3145 } 3146 3147Fixed an AML interpreter problem where control method invocations were 3148not handled correctly when the invocation was itself a SuperName argument 3149to another ASL operator. In these cases, the method was not invoked. 3150ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3151argument: 3152 Store 3153 Acquire, Wait 3154 CondRefOf, RefOf 3155 Decrement, Increment 3156 Load, Unload 3157 Notify 3158 Signal, Release, Reset 3159 SizeOf 3160 3161Implemented automatic String-to-ObjectReference conversion support for 3162packages returned by predefined names (such as _DEP). A common BIOS error 3163is to add double quotes around an ObjectReference namepath, which turns 3164the reference into an unexpected string object. This support detects the 3165problem and corrects it before the package is returned to the caller that 3166invoked the method. Lv Zheng. 3167 3168Implemented extensions to the Concatenate operator. Concatenate now 3169accepts any type of object, it is not restricted to simply 3170Integer/String/Buffer. For objects other than these 3 basic data types, 3171the argument is treated as a string containing the name of the object 3172type. This expands the utility of Concatenate and the Printf/Fprintf 3173macros. ACPICA BZ 1222. 3174 3175Cleaned up the output of the ASL Debug object. The timer() value is now 3176optional and no longer emitted by default. Also, the basic data types of 3177Integer/String/Buffer are simply emitted as their values, without a data 3178type string -- since the data type is obvious from the output. ACPICA BZ 31791221. 3180 3181Example Code and Data Size: These are the sizes for the OS-independent 3182acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3183debug version of the code includes the debug output trace mechanism and 3184has a much larger code and data size. 3185 3186 Current Release: 3187 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3188 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3189 Previous Release: 3190 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3191 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3192 3193 31942) iASL Compiler/Disassembler and Tools: 3195 3196iASL: Fixed some issues with the ASL Include() operator. This operator 3197was incorrectly defined in the iASL parser rules, causing a new scope to 3198be opened for the code within the include file. This could lead to 3199several issues, including allowing ASL code that is technically illegal 3200and not supported by AML interpreters. Note, this does not affect the 3201related #include preprocessor operator. ACPICA BZ 1212. 3202 3203iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3204operator is essentially an ASL macro since there is no AML opcode 3205associated with it. The code emitted by the iASL compiler for ElseIf is 3206an Else opcode followed immediately by an If opcode. The disassembler 3207will now emit an ElseIf if it finds an Else immediately followed by an 3208If. This simplifies the decoded ASL, especially for deeply nested 3209If..Else and large Switch constructs. Thus, the disassembled code more 3210closely follows the original source ASL. ACPICA BZ 1211. Example: 3211 3212 Old disassembly: 3213 Else 3214 { 3215 If (Arg0 == 0x02) 3216 { 3217 Local0 = 0x05 3218 } 3219 } 3220 3221 New disassembly: 3222 ElseIf (Arg0 == 0x02) 3223 { 3224 Local0 = 0x05 3225 } 3226 3227AcpiExec: Added support for the new module level code behavior and the 3228early region installation. This required a small change to the 3229initialization, since AcpiExec must install its own operation region 3230handlers. 3231 3232AcpiExec: Added support to make the debug object timer optional. Default 3233is timer disabled. This cleans up the debug object output -- the timer 3234data is rarely used. 3235 3236AcpiExec: Multiple ACPI tables are now loaded in the order that they 3237appear on the command line. This can be important when there are 3238interdependencies/references between the tables. 3239 3240iASL/Templates. Add support to generate template files with multiple 3241SSDTs within a single output file. Also added ommand line support to 3242specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 32431223, 1225. 3244 3245 3246---------------------------------------- 324724 November 2015. Summary of changes for version 20151124: 3248 32491) ACPICA kernel-resident subsystem: 3250 3251Fixed a possible regression for a previous update to FADT handling. The 3252FADT no longer has a fixed table ID, causing some issues with code that 3253was hardwired to a specific ID. Lv Zheng. 3254 3255Fixed a problem where the method auto-serialization could interfere with 3256the current SyncLevel. This change makes the auto-serialization support 3257transparent to the SyncLevel support and management. 3258 3259Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3260interface is intended for early access to the namespace during the 3261initial namespace device discovery walk. The _SUB method has been seen to 3262access operation regions in some cases, causing errors because the 3263operation regions are not fully initialized. 3264 3265AML Debugger: Fixed some issues with the terminate/quit/exit commands 3266that can cause faults. Lv Zheng. 3267 3268AML Debugger: Add thread ID support so that single-step mode only applies 3269to the AML Debugger thread. This prevents runtime errors within some 3270kernels. Lv Zheng. 3271 3272Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3273methods that are invoked by this interface are optional, removed warnings 3274emitted for the case where one or more of these methods do not exist. 3275ACPICA BZ 1208, original change by Prarit Bhargava. 3276 3277Made a major pass through the entire ACPICA source code base to 3278standardize formatting that has diverged a bit over time. There are no 3279functional changes, but this will of course cause quite a few code 3280differences from the previous ACPICA release. 3281 3282Example Code and Data Size: These are the sizes for the OS-independent 3283acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3284debug version of the code includes the debug output trace mechanism and 3285has a much larger code and data size. 3286 3287 Current Release: 3288 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3289 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3290 Previous Release: 3291 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3292 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3293 3294 32952) iASL Compiler/Disassembler and Tools: 3296 3297iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3298definition blocks within a single ASL file and the resulting AML file. 3299Support for this type of file was also added to the various tools that 3300use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3301example code below shows two definition blocks within the same file: 3302 3303 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 33040x12345678) 3305 { 3306 } 3307 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3308 { 3309 } 3310 3311iASL: Enhanced typechecking for the Name() operator. All expressions for 3312the value of the named object must be reduced/folded to a single constant 3313at compile time, as per the ACPI specification (the AML definition of 3314Name()). 3315 3316iASL: Fixed some code indentation issues for the -ic and -ia options (C 3317and assembly headers). Now all emitted code correctly begins in column 1. 3318 3319iASL: Added an error message for an attempt to open a Scope() on an 3320object defined in an SSDT. The DSDT is always loaded into the namespace 3321first, so any attempt to open a Scope on an SSDT object will fail at 3322runtime. 3323 3324 3325---------------------------------------- 332630 September 2015. Summary of changes for version 20150930: 3327 33281) ACPICA kernel-resident subsystem: 3329 3330Debugger: Implemented several changes and bug fixes to assist support for 3331the in-kernel version of the AML debugger. Lv Zheng. 3332- Fix the "predefined" command for in-kernel debugger. 3333- Do not enter debug command loop for the help and version commands. 3334- Disallow "execute" command during execution/single-step of a method. 3335 3336Interpreter: Updated runtime typechecking for all operators that have 3337target operands. The operand is resolved and validated that it is legal. 3338For example, the target cannot be a non-data object such as a Device, 3339Mutex, ThermalZone, etc., as per the ACPI specification. 3340 3341Debugger: Fixed the double-mutex user I/O handshake to work when local 3342deadlock detection is enabled. 3343 3344Debugger: limited display of method locals and arguments (LocalX and 3345ArgX) to only those that have actually been initialized. This prevents 3346lines of extraneous output. 3347 3348Updated the definition of the NFIT table to correct the bit polarity of 3349one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3350 3351Example Code and Data Size: These are the sizes for the OS-independent 3352acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3353debug version of the code includes the debug output trace mechanism and 3354has a much larger code and data size. 3355 3356 Current Release: 3357 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3358 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3359 Previous Release: 3360 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3361 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3362 3363 33642) iASL Compiler/Disassembler and Tools: 3365 3366iASL: Improved the compile-time typechecking for operands of many of the 3367ASL operators: 3368 3369-- Added an option to disable compiler operand/operator typechecking (- 3370ot). 3371 3372-- For the following operators, the TermArg operands are now validated 3373when possible to be Integer data objects: BankField, OperationRegion, 3374DataTableRegion, Buffer, and Package. 3375 3376-- Store (Source, Target): Both the source and target operands are 3377resolved and checked that the operands are both legal. For example, 3378neither operand can be a non-data object such as a Device, Mutex, 3379ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3380operator can be used to store an object to any type of target object. 3381 3382-- Store (Source, Target): If the source is a Package object, the target 3383must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3384is a Package, the source must also be a Package. 3385 3386-- Store (Source, Target): A warning is issued if the source and target 3387resolve to the identical named object. 3388 3389-- Store (Source, <method invocation>): An error is generated for the 3390target method invocation, as this construct is not supported by the AML 3391interpreter. 3392 3393-- For all ASL math and logic operators, the target operand must be a 3394data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3395includes the function return value also. 3396 3397-- External declarations are also included in the typechecking where 3398possible. External objects defined using the UnknownObj keyword cannot be 3399typechecked, however. 3400 3401iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3402operator: 3403- Legacy code: Index(PKG1, 3) 3404- New ASL+ code: PKG1[3] 3405This completes the ACPI 6.0 ASL+ support as it was the only operator not 3406supported. 3407 3408iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3409spaces were inadvertently appended to the filename, causing file access 3410and deletion problems on some systems. 3411 3412ASL Test Suite (ASLTS): Updated the master makefile to generate all 3413possible compiler output files when building the test suite -- thus 3414exercising these features of the compiler. These files are automatically 3415deleted when the test suite exits. 3416 3417 3418---------------------------------------- 341918 August 2015. Summary of changes for version 20150818: 3420 34211) ACPICA kernel-resident subsystem: 3422 3423Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3424Zheng. ACPICA BZ 1186. 3425 3426Completed development to ensure that the ACPICA Disassembler and Debugger 3427are fully standalone components of ACPICA. Removed cross-component 3428dependences. Lv Zheng. 3429 3430The max-number-of-AML-loops is now runtime configurable (previously was 3431compile-time only). This is essentially a loop timeout to force-abort 3432infinite AML loops. ACPCIA BZ 1192. 3433 3434Debugger: Cleanup output to dump ACPI names and namepaths without any 3435trailing underscores. Lv Zheng. ACPICA BZ 1135. 3436 3437Removed unnecessary conditional compilations across the Debugger and 3438Disassembler components where entire modules could be left uncompiled. 3439 3440The aapits test is deprecated and has been removed from the ACPICA git 3441tree. The test has never been completed and has not been maintained, thus 3442becoming rather useless. ACPICA BZ 1015, 794. 3443 3444A batch of small changes to close bugzilla and other reports: 3445- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3446- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3447- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3448- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3449Moore. 3450- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3451ACPICA BZ 1184. 3452- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3453operators. 3454- Debugger: Split debugger initialization/termination interfaces. Lv 3455Zheng. 3456- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3457identification. 3458- AcpiExec: Add debug message during _REG method phase during table 3459load/init. 3460- AcpiNames: Fix a regression where some output was missing and no longer 3461emitted. 3462- Debugger: General cleanup and simplification. Lv Zheng. 3463- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3464 3465Example Code and Data Size: These are the sizes for the OS-independent 3466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3467debug version of the code includes the debug output trace mechanism and 3468has a much larger code and data size. 3469 3470 Current Release: 3471 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3472 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3473 Previous Release: 3474 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3475 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3476 3477 34782) iASL Compiler/Disassembler and Tools: 3479 3480AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3481were not handled properly and caused load errors. Now, properly invoke 3482and use the ACPICA auto-reallocate mechanism for ACPI table data 3483structures. ACPICA BZ 1188 3484 3485AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3486BZ 1190. 3487 3488AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3489AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3490executed during initialization. ACPICA BZ 1187, 1189. 3491 3492iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3493that corresponds to each disassembled ASL statement, to simplify 3494debugging. ACPICA BZ 1191. 3495 3496Debugger: Add option to the "objects" command to display a summary of the 3497current namespace objects (Object type and count). This is displayed if 3498the command is entered with no arguments. 3499 3500AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3501 3502 3503---------------------------------------- 350417 July 2015. Summary of changes for version 20150717: 3505 35061) ACPICA kernel-resident subsystem: 3507 3508Improved the partitioning between the Debugger and Disassembler 3509components. This allows the Debugger to be used standalone within kernel 3510code without the Disassembler (which is used for single stepping also). 3511This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3512 3513Debugger: Implemented a new command to trace the execution of control 3514methods (Trace). This is especially useful for the in-kernel version of 3515the debugger when file I/O may not be available for method trace output. 3516See the ACPICA reference for more information. Lv Zheng. 3517 3518Moved all C library prototypes (used for the local versions of these 3519functions when requested) to a new header, acclib.h 3520Cleaned up the use of non-ANSI C library functions. These functions are 3521implemented locally in ACPICA. Moved all such functions to a common 3522source file, utnonansi.c 3523 3524Debugger: Fixed a problem with the "!!" command (get last command 3525executed) where the debugger could enter an infinite loop and eventually 3526crash. 3527 3528Removed the use of local macros that were used for some of the standard C 3529library functions to automatically cast input parameters. This mostly 3530affected the is* functions where the input parameter is defined to be an 3531int. This required a few modifications to the main ACPICA source code to 3532provide casting for these functions and eliminate possible compiler 3533warnings for these parameters. 3534 3535Across the source code, added additional status/error checking to resolve 3536issues discovered by static source code analysis tools such as Coverity. 3537 3538Example Code and Data Size: These are the sizes for the OS-independent 3539acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3540debug version of the code includes the debug output trace mechanism and 3541has a much larger code and data size. 3542 3543 Current Release: 3544 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3545 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3546 Previous Release: 3547 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3548 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3549 3550 35512) iASL Compiler/Disassembler and Tools: 3552 3553iASL: Fixed a regression where the device map file feature no longer 3554worked properly when used in conjunction with the disassembler. It only 3555worked properly with the compiler itself. 3556 3557iASL: Implemented a new warning for method LocalX variables that are set 3558but never used (similar to a C compiler such as gcc). This also applies 3559to ArgX variables that are not defined by the parent method, and are 3560instead (legally) used as local variables. 3561 3562iASL/Preprocessor: Finished the pass-through of line numbers from the 3563preprocessor to the compiler. This ensures that compiler errors/warnings 3564have the correct original line numbers and filenames, regardless of any 3565#include files. 3566 3567iASL/Preprocessor: Fixed a couple of issues with comment handling and the 3568pass-through of comments to the preprocessor output file (which becomes 3569the compiler input file). Also fixed a problem with // comments that 3570appear after a math expression. 3571 3572iASL: Added support for the TCPA server table to the table compiler and 3573template generator. (The client table was already previously supported) 3574 3575iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3576identify the iASL compiler. 3577 3578Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3579multiple times. The new names are ACPI_SIGN_NEGATIVE and 3580ACPI_SIGN_POSITIVE. 3581 3582AcpiHelp: Update to expand help messages for the iASL preprocessor 3583directives. 3584 3585 3586---------------------------------------- 358719 June 2015. Summary of changes for version 20150619: 3588 3589Two regressions in version 20150616 have been addressed: 3590 3591Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3592etc.) This update changes ACPICA to only use the standard headers for 3593functions, or the prototypes for the local versions of the C library 3594functions. Across the source code, this required some additional casts 3595for some Clib invocations for portability. Moved all local prototypes to 3596a new file, acclib.h 3597 3598Fixes several problems with recent changes to the handling of the FACS 3599table that could cause some systems not to boot. 3600 3601 3602---------------------------------------- 360316 June 2015. Summary of changes for version 20150616: 3604 3605 36061) ACPICA kernel-resident subsystem: 3607 3608Across the entire ACPICA source code base, the various macros for the C 3609library functions (such as ACPI_STRLEN, etc.) have been removed and 3610replaced by the standard C library names (strlen, etc.) The original 3611purpose for these macros is no longer applicable. This simplification 3612reduces the number of macros used in the ACPICA source code 3613significantly, improving readability and maintainability. 3614 3615Implemented support for a new ACPI table, the OSDT. This table, the 3616"override" SDT, can be loaded directly by the host OS at boot time. It 3617enables the replacement of existing namespace objects that were installed 3618via the DSDT and/or SSDTs. The primary purpose for this is to replace 3619buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3620for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3621Moore. 3622 3623Added support for systems with (improperly) two FACS tables -- a "32-bit" 3624table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3625X field). This change will support both automatically. There continues to 3626be systems found with this issue. This support requires a change to the 3627AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3628been added to allow the host to select which FACS is desired 3629(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3630details Lv Zheng. 3631 3632Added a new feature to allow for systems that do not contain an FACS. 3633Although this is already supported on hardware-reduced platforms, the 3634feature has been extended for all platforms. The reasoning is that we do 3635not want to abort the entire ACPICA initialization just because the 3636system is seriously buggy and has no FACS. 3637 3638Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3639not correctly transcribed from the ACPI specification in ACPICA version 364020150515. 3641 3642Implemented support for the _CLS object in the AcpiGetObjectInfo external 3643interface. 3644 3645Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3646recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3647compiler also updated. Note: The TCPA "server" table is not supported by 3648the disassembler/table-compiler at this time. 3649 3650ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3651 3652Example Code and Data Size: These are the sizes for the OS-independent 3653acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3654debug version of the code includes the debug output trace mechanism and 3655has a much larger code and data size. 3656 3657 Current Release: 3658 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3659 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3660 Previous Release: 3661 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3662 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3663 3664 36652) iASL Compiler/Disassembler and Tools: 3666 3667Disassembler: Fixed a problem with the new symbolic operator disassembler 3668where incorrect ASL code could be emitted in some cases for the "non- 3669commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3670ShiftRight. The actual problem cases seem to be rather unusual in common 3671ASL code, however. David Box. 3672 3673Modified the linux version of acpidump to obtain ACPI tables from not 3674just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3675Zheng. 3676 3677iASL: Fixed a problem where the user preprocessor output file (.i) 3678contained extra data that was not expected. The compiler was using this 3679file as a temporary file and passed through #line directives in order to 3680keep compiler error messages in sync with the input file and line number 3681across multiple include files. The (.i) is no longer a temporary file as 3682the compiler uses a new, different file for the original purpose. 3683 3684iASL: Fixed a problem where comments within the original ASL source code 3685file were not passed through to the preprocessor output file, nor any 3686listing files. 3687 3688iASL: Fixed some issues for the handling of the "#include" preprocessor 3689directive and the similar (but not the same) "Include" ASL operator. 3690 3691iASL: Add support for the new OSDT in both the disassembler and compiler. 3692 3693iASL: Fixed a problem with the constant folding support where a Buffer 3694object could be incorrectly generated (incorrectly formed) during a 3695conversion to a Store() operator. 3696 3697AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3698description text for the _REV predefined name. _REV now permanently 3699returns 2, as per the ACPI 6.0 specification. 3700 3701Debugger: Enhanced the output of the Debug ASL object for references 3702produced by the Index operator. For Buffers and strings, only output the 3703actual byte pointed to by the index. For packages, only print the single 3704package element decoded by the index. Previously, the entire 3705buffer/string/package was emitted. 3706 3707iASL/Table-compiler: Fixed a regression where the "generic" data types 3708were no longer recognized, causing errors. 3709 3710 3711---------------------------------------- 371215 May 2015. Summary of changes for version 20150515: 3713 3714This release implements most of ACPI 6.0 as described below. 3715 37161) ACPICA kernel-resident subsystem: 3717 3718Implemented runtime argument checking and return value checking for all 3719new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3720_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3721 3722Example Code and Data Size: These are the sizes for the OS-independent 3723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3724debug version of the code includes the debug output trace mechanism and 3725has a much larger code and data size. 3726 3727 Current Release: 3728 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3729 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3730 Previous Release: 3731 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3732 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3733 3734 37352) iASL Compiler/Disassembler and Tools: 3736 3737iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3738names (argument count validation and return value typechecking.) 3739 3740iASL disassembler and table compiler: implemented support for all new 3741ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3742 3743iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3744tables: FADT, MADT. 3745 3746iASL preprocessor: Added a new directive to enable inclusion of binary 3747blobs into ASL code. The new directive is #includebuffer. It takes a 3748binary file as input and emits a named ascii buffer object into the ASL 3749code. 3750 3751AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3752 3753AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3754directives. 3755 3756AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3757tables. 3758 3759 3760---------------------------------------- 376110 April 2015. Summary of changes for version 20150410: 3762 3763Reverted a change introduced in version 20150408 that caused 3764a regression in the disassembler where incorrect operator 3765symbols could be emitted. 3766 3767 3768---------------------------------------- 376908 April 2015. Summary of changes for version 20150408: 3770 3771 37721) ACPICA kernel-resident subsystem: 3773 3774Permanently set the return value for the _REV predefined name. It now 3775returns 2 (was 5). This matches other ACPI implementations. _REV will be 3776deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3777for ACPI 2.0 and later. It should never be used to differentiate or 3778identify operating systems. 3779 3780Added the "Windows 2015" string to the _OSI support. ACPICA will now 3781return TRUE to a query with this string. 3782 3783Fixed several issues with the local version of the printf function. 3784 3785Added the C99 compiler option (-std=c99) to the Unix makefiles. 3786 3787 Current Release: 3788 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3789 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3790 Previous Release: 3791 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3792 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3793 3794 37952) iASL Compiler/Disassembler and Tools: 3796 3797iASL: Implemented an enhancement to the constant folding feature to 3798transform the parse tree to a simple Store operation whenever possible: 3799 Add (2, 3, X) ==> is converted to: Store (5, X) 3800 X = 2 + 3 ==> is converted to: Store (5, X) 3801 3802Updated support for the SLIC table (Software Licensing Description Table) 3803in both the Data Table compiler and the disassembler. The SLIC table 3804support now conforms to "Microsoft Software Licensing Tables (SLIC and 3805MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3806following the ACPI header is now defined to be "Proprietary Data", and as 3807such, can only be entered or displayed as a hex data block. 3808 3809Implemented full support for the MSDM table as described in the document 3810above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3811following the ACPI header is defined to be "Proprietary Data", and can 3812only be entered or displayed as a hex data block. 3813 3814Implemented the -Pn option for the iASL Table Compiler (was only 3815implemented for the ASL compiler). This option disables the iASL 3816preprocessor. 3817 3818Disassembler: For disassembly of Data Tables, added a comment field 3819around the Ascii equivalent data that is emitted as part of the "Raw 3820Table Data" block. This prevents the iASL Preprocessor from possible 3821confusion if/when the table is compiled. 3822 3823Disassembler: Added an option (-df) to force the disassembler to assume 3824that the table being disassembled contains valid AML. This feature is 3825useful for disassembling AML files that contain ACPI signatures other 3826than DSDT or SSDT (such as OEMx or other signatures). 3827 3828Changes for the EFI version of the tools: 38291) Fixed a build error/issue 38302) Fixed a cast warning 3831 3832iASL: Fixed a path issue with the __FILE__ operator by making the 3833directory prefix optional within the internal SplitInputFilename 3834function. 3835 3836Debugger: Removed some unused global variables. 3837 3838Tests: Updated the makefile for proper generation of the AAPITS suite. 3839 3840 3841---------------------------------------- 384204 February 2015. Summary of changes for version 20150204: 3843 3844ACPICA kernel-resident subsystem: 3845 3846Updated all ACPICA copyrights and signons to 2014. Added the 2014 3847copyright to all module headers and signons, including the standard Linux 3848header. This affects virtually every file in the ACPICA core subsystem, 3849iASL compiler, all ACPICA utilities, and the test suites. 3850 3851Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3852A raw gpe handling mechanism was created to allow better handling of GPE 3853storms that aren't easily managed by the normal handler. The raw handler 3854allows disabling/renabling of the GPE so that interrupt storms can be 3855avoided in cases where events cannot be timely serviced. In this 3856scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3857GPE. This API will leave the reference counts undisturbed, thereby 3858preventing unintentional clearing of the GPE when the intent in only to 3859temporarily disable it. Raw handlers allow enabling and disabling of a 3860GPE by removing GPE register locking. As such, raw handlers much provide 3861their own locks while using GPE API's to protect access to GPE data 3862structures. 3863Lv Zheng 3864 3865Events: Always modify GPE registers under the GPE lock. 3866Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3867values. Reported as bug by joe.liu@apple.com. 3868 3869Unix makefiles: Separate option to disable optimizations and 3870_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3871NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3872purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3873errors when building ACPICA. This allows disabling the option without 3874also having to disable optimazations. 3875David Box 3876 3877 Current Release: 3878 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3879 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3880 3881-- 3882-------------------------------------- 388307 November 2014. Summary of changes for version 20141107: 3884 3885This release is available at https://acpica.org/downloads 3886 3887This release introduces and implements language extensions to ASL that 3888provide support for symbolic ("C-style") operators and expressions. These 3889language extensions are known collectively as ASL+. 3890 3891 38921) iASL Compiler/Disassembler and Tools: 3893 3894Disassembler: Fixed a problem with disassembly of the UartSerialBus 3895macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3896Box. 3897 3898Disassembler: Fixed the Unicode macro support to add escape sequences. 3899All non-printable ASCII values are emitted as escape sequences, as well 3900as the standard escapes for quote and backslash. Ensures that the 3901disassembled macro can be correctly recompiled. 3902 3903iASL: Added Printf/Fprintf macros for formatted output. These macros are 3904translated to existing AML Concatenate and Store operations. Printf 3905writes to the ASL Debug object. Fprintf allows the specification of an 3906ASL name as the target. Only a single format specifier is required, %o, 3907since the AML interpreter dynamically converts objects to the required 3908type. David E. Box. 3909 3910 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3911 (Concatenate (Concatenate (Concatenate ("", Arg0), 3912 ": Unexpected value for "), Arg1), ", "), Arg2), 3913 " at line "), Arg3), Debug) 3914 3915 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3916 Arg0, Arg1, Arg2, Arg3) 3917 3918 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3919 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3920 3921 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3922 3923iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3924ASL parse tree before the AML code is generated. This allows blocks of 3925ASL code to be removed in order to help locate and identify problem 3926devices and/or code. David E. Box. 3927 3928AcpiExec: Added support (-fi) for an optional namespace object 3929initialization file. This file specifies initial values for namespace 3930objects as necessary for debugging and testing different ASL code paths 3931that may be taken as a result of BIOS options. 3932 3933 39342) Overview of symbolic operator support for ASL (ASL+) 3935------------------------------------------------------- 3936 3937As an extension to the ASL language, iASL implements support for symbolic 3938(C-style) operators for math and logical expressions. This can greatly 3939simplify ASL code as well as improve both readability and 3940maintainability. These language extensions can exist concurrently with 3941all legacy ASL code and expressions. 3942 3943The symbolic extensions are 100% compatible with existing AML 3944interpreters, since no new AML opcodes are created. To implement the 3945extensions, the iASL compiler transforms the symbolic expressions into 3946the legacy ASL/AML equivalents at compile time. 3947 3948Full symbolic expressions are supported, along with the standard C 3949precedence and associativity rules. 3950 3951Full disassembler support for the symbolic expressions is provided, and 3952creates an automatic migration path for existing ASL code to ASL+ code 3953via the disassembly process. By default, the disassembler now emits ASL+ 3954code with symbolic expressions. An option (-dl) is provided to force the 3955disassembler to emit legacy ASL code if desired. 3956 3957Below is the complete list of the currently supported symbolic operators 3958with examples. See the iASL User Guide for additional information. 3959 3960 3961ASL+ Syntax Legacy ASL Equivalent 3962----------- --------------------- 3963 3964 // Math operators 3965 3966Z = X + Y Add (X, Y, Z) 3967Z = X - Y Subtract (X, Y, Z) 3968Z = X * Y Multiply (X, Y, Z) 3969Z = X / Y Divide (X, Y, , Z) 3970Z = X % Y Mod (X, Y, Z) 3971Z = X << Y ShiftLeft (X, Y, Z) 3972Z = X >> Y ShiftRight (X, Y, Z) 3973Z = X & Y And (X, Y, Z) 3974Z = X | Y Or (X, Y, Z) 3975Z = X ^ Y Xor (X, Y, Z) 3976Z = ~X Not (X, Z) 3977X++ Increment (X) 3978X-- Decrement (X) 3979 3980 // Logical operators 3981 3982(X == Y) LEqual (X, Y) 3983(X != Y) LNotEqual (X, Y) 3984(X < Y) LLess (X, Y) 3985(X > Y) LGreater (X, Y) 3986(X <= Y) LLessEqual (X, Y) 3987(X >= Y) LGreaterEqual (X, Y) 3988(X && Y) LAnd (X, Y) 3989(X || Y) LOr (X, Y) 3990(!X) LNot (X) 3991 3992 // Assignment and compound assignment operations 3993 3994X = Y Store (Y, X) 3995X += Y Add (X, Y, X) 3996X -= Y Subtract (X, Y, X) 3997X *= Y Multiply (X, Y, X) 3998X /= Y Divide (X, Y, , X) 3999X %= Y Mod (X, Y, X) 4000X <<= Y ShiftLeft (X, Y, X) 4001X >>= Y ShiftRight (X, Y, X) 4002X &= Y And (X, Y, X) 4003X |= Y Or (X, Y, X) 4004X ^= Y Xor (X, Y, X) 4005 4006 40073) ASL+ Examples: 4008----------------- 4009 4010Legacy ASL: 4011 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4012 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 40130x03FB), 4014 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4015 { 4016 And (MEMB, 0xFFFFFFF0, SRMB) 4017 Store (MEMB, Local2) 4018 Store (PDBM, Local1) 4019 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4020 Store (SRMB, MEMB) 4021 Or (PDBM, 0x02, PDBM) 4022 } 4023 4024ASL+ version: 4025 If (((R510 & 0x03FB) == 0x02E0) || 4026 ((R520 & 0x03FB) == 0x02E0) || 4027 ((R530 & 0x03FB) == 0x02E0) || 4028 ((R540 & 0x03FB) == 0x02E0)) 4029 { 4030 SRMB = (MEMB & 0xFFFFFFF0) 4031 Local2 = MEMB 4032 Local1 = PDBM 4033 PDBM &= 0xFFFFFFFFFFFFFFF9 4034 MEMB = SRMB 4035 PDBM |= 0x02 4036 } 4037 4038Legacy ASL: 4039 Store (0x1234, Local1) 4040 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4041 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4042 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4043 Store (Index (PKG1, 0x03), Local6) 4044 Store (Add (Local3, Local2), Debug) 4045 Add (Local1, 0x0F, Local2) 4046 Add (Local1, Multiply (Local2, Local3), Local2) 4047 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4048 4049ASL+ version: 4050 Local1 = 0x1234 4051 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4052 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4053 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4054 Local6 = Index (PKG1, 0x03) 4055 Debug = (Local3 + Local2) 4056 Local2 = (Local1 + 0x0F) 4057 Local2 = (Local1 + (Local2 * Local3)) 4058 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4059 4060 4061---------------------------------------- 406226 September 2014. Summary of changes for version 20140926: 4063 40641) ACPICA kernel-resident subsystem: 4065 4066Updated the GPIO operation region handler interface (GeneralPurposeIo). 4067In order to support GPIO Connection objects with multiple pins, along 4068with the related Field objects, the following changes to the interface 4069have been made: The Address is now defined to be the offset in bits of 4070the field unit from the previous invocation of a Connection. It can be 4071viewed as a "Pin Number Index" into the connection resource descriptor. 4072The BitWidth is the exact bit width of the field. It is usually one bit, 4073but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4074additional information and examples. 4075 4076GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4077corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4078by the firmware), so that they cannot fire until they are enabled via 4079AcpiUpdateAllGpes. Rafael J. Wysocki. 4080 4081Added a new return flag for the Event/GPE status interfaces -- 4082AcpiGetEventStatus and AcpiGetGpeStatus. The new 4083ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4084GPE currently has a handler associated with it, and can thus actually 4085affect the system. Lv Zheng. 4086 4087Example Code and Data Size: These are the sizes for the OS-independent 4088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4089debug version of the code includes the debug output trace mechanism and 4090has a much larger code and data size. 4091 4092 Current Release: 4093 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4094 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4095 Previous Release: 4096 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4097 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4098 40992) iASL Compiler/Disassembler and Tools: 4100 4101iASL: Fixed a memory allocation/free regression introduced in 20140828 4102that could cause the compiler to crash. This was introduced inadvertently 4103during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 41041113. 4105 4106iASL: Removed two error messages that have been found to create false 4107positives, until they can be fixed and fully validated (ACPICA BZ 1112): 41081) Illegal forward reference within a method 41092) Illegal reference across two methods 4110 4111iASL: Implemented a new option (-lm) to create a hardware mapping file 4112that summarizes all GPIO, I2C, SPI, and UART connections. This option 4113works for both the compiler and disassembler. See the iASL compiler user 4114guide for additional information and examples (section 6.4.6). 4115 4116AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4117version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4118a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4119 4120AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4121unless STDIN is actually a terminal. Assists with batch-mode processing. 4122ACPICA BZ 1114. 4123 4124Disassembler/AcpiHelp: Added another large group of recognized _HID 4125values. 4126 4127 4128---------------------------------------- 412928 August 2014. Summary of changes for version 20140828: 4130 41311) ACPICA kernel-resident subsystem: 4132 4133Fixed a problem related to the internal use of the Timer() operator where 4134a 64-bit divide could cause an attempted link to a double-precision math 4135library. This divide is not actually necessary, so the code was 4136restructured to eliminate it. Lv Zheng. 4137 4138ACPI 5.1: Added support for the runtime validation of the _DSD package 4139(similar to the iASL support). 4140 4141ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4142SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4143 4144Example Code and Data Size: These are the sizes for the OS-independent 4145acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4146debug version of the code includes the debug output trace mechanism and 4147has a much larger code and data size. 4148 4149 Current Release: 4150 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4151 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4152 Previous Release: 4153 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4154 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4155 41562) iASL Compiler/Disassembler and Tools: 4157 4158AcpiExec: Fixed a problem on unix systems where the original terminal 4159state was not always properly restored upon exit. Seen when using the -v 4160option. ACPICA BZ 1104. 4161 4162iASL: Fixed a problem with the validation of the ranges/length within the 4163Memory24 resource descriptor. There was a boundary condition when the 4164range was equal to the (length -1) caused by the fact that these values 4165are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4166 4167Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4168polarity 4169flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4170is 4171now supported properly. 4172 4173ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4174in the disassembler, data table compiler, and table template generator. 4175 4176iASL: Added a requirement for Device() objects that one of either a _HID 4177or _ADR must exist within the scope of a Device, as per the ACPI 4178specification. Remove a similar requirement that was incorrectly in place 4179for the _DSD object. 4180 4181iASL: Added error detection for illegal named references within control 4182methods that would cause runtime failures. Now trapped as errors are: 1) 4183References to objects within a non-parent control method. 2) Forward 4184references (within a method) -- for control methods, AML interpreters use 4185a one-pass parse of control methods. ACPICA BZ 1008. 4186 4187iASL: Added error checking for dependencies related to the _PSx power 4188methods. ACPICA BZ 1029. 41891) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4190_PS3. 41912) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4192scope. 4193 4194iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4195deploying the existing object and string caches and adding new caches for 4196the table compiler. 4197 4198iASL: Split the huge parser source file into multiple subfiles to improve 4199manageability. Generation now requires the M4 macro preprocessor, which 4200is part of the Bison distribution on both unix and windows platforms. 4201 4202AcpiSrc: Fixed and removed all extraneous warnings generated during 4203entire ACPICA source code scan and/or conversion. 4204 4205 4206---------------------------------------- 4207 420824 July 2014. Summary of changes for version 20140724: 4209 4210The ACPI 5.1 specification has been released and is available at: 4211http://uefi.org/specs/access 4212 4213 42140) ACPI 5.1 support in ACPICA: 4215 4216ACPI 5.1 is fully supported in ACPICA as of this release. 4217 4218New predefined names. Support includes iASL and runtime ACPICA 4219validation. 4220 _CCA (Cache Coherency Attribute). 4221 _DSD (Device-Specific Data). David Box. 4222 4223Modifications to existing ACPI tables. Support includes headers, iASL 4224Data Table compiler, disassembler, and the template generator. 4225 FADT - New fields and flags. Graeme Gregory. 4226 GTDT - One new subtable and new fields. Tomasz Nowicki. 4227 MADT - Two new subtables. Tomasz Nowicki. 4228 PCCT - One new subtable. 4229 4230Miscellaneous. 4231 New notification type for System Resource Affinity change events. 4232 4233 42341) ACPICA kernel-resident subsystem: 4235 4236Fixed a regression introduced in 20140627 where a fault can happen during 4237the deletion of Alias AML namespace objects. The problem affected both 4238the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4239 4240Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4241simple mechanism to enable wake GPEs that have no associated handler or 4242control method. Rafael Wysocki. 4243 4244Updated the AcpiEnableGpe interface to disallow the enable if there is no 4245handler or control method associated with the particular GPE. This will 4246help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4247 4248Updated GPE handling and dispatch by disabling the GPE before clearing 4249the status bit for edge-triggered GPEs. Lv Zheng. 4250 4251Added Timer() support to the AML Debug object. The current timer value is 4252now displayed with each invocation of (Store to) the debug object to 4253enable simple generation of execution times for AML code (method 4254execution for example.) ACPICA BZ 1093. 4255 4256Example Code and Data Size: These are the sizes for the OS-independent 4257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4258debug version of the code includes the debug output trace mechanism and 4259has a much larger code and data size. 4260 4261 Current Release: 4262 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4263 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4264 Previous Release: 4265 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4266 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4267 4268 42692) iASL Compiler/Disassembler and Tools: 4270 4271Fixed an issue with the recently added local printf implementation, 4272concerning width/precision specifiers that could cause incorrect output. 4273Lv Zheng. ACPICA BZ 1094. 4274 4275Disassembler: Added support to detect buffers that contain UUIDs and 4276disassemble them to an invocation of the ToUUID operator. Also emit 4277commented descriptions of known ACPI-related UUIDs. 4278 4279AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4280-u. Adds three new files. 4281 4282iASL: Update table compiler and disassembler for DMAR table changes that 4283were introduced in September 2013. With assistance by David Woodhouse. 4284 4285---------------------------------------- 428627 June 2014. Summary of changes for version 20140627: 4287 42881) ACPICA kernel-resident subsystem: 4289 4290Formatted Output: Implemented local versions of standard formatted output 4291utilities such as printf, etc. Over time, it has been discovered that 4292there are in fact many portability issues with printf, and the addition 4293of this feature will fix/prevent these issues once and for all. Some 4294known issues are summarized below: 4295 42961) Output of 64-bit values is not portable. For example, UINT64 is %ull 4297for the Linux kernel and is %uI64 for some MSVC versions. 42982) Invoking printf consistently in a manner that is portable across both 429932-bit and 64-bit platforms is difficult at best in many situations. 43003) The output format for pointers varies from system to system (leading 4301zeros especially), and leads to inconsistent output from ACPICA across 4302platforms. 43034) Certain platform-specific printf formats may conflict with ACPICA use. 43045) If there is no local C library available, ACPICA now has local support 4305for printf. 4306 4307-- To address these printf issues in a complete manner, ACPICA now 4308directly implements a small subset of printf format specifiers, only 4309those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4310 4311Implemented support for ACPICA generation within the EFI environment. 4312Initially, the AcpiDump utility is supported in the UEFI shell 4313environment. Lv Zheng. 4314 4315Added a new external interface, AcpiLogError, to improve ACPICA 4316portability. This allows the host to redirect error messages from the 4317ACPICA utilities. Lv Zheng. 4318 4319Added and deployed new OSL file I/O interfaces to improve ACPICA 4320portability: 4321 AcpiOsOpenFile 4322 AcpiOsCloseFile 4323 AcpiOsReadFile 4324 AcpiOsWriteFile 4325 AcpiOsGetFileOffset 4326 AcpiOsSetFileOffset 4327There are C library implementations of these functions in the new file 4328service_layers/oslibcfs.c -- however, the functions can be implemented by 4329the local host in any way necessary. Lv Zheng. 4330 4331Implemented a mechanism to disable/enable ACPI table checksum validation 4332at runtime. This can be useful when loading tables very early during OS 4333initialization when it may not be possible to map the entire table in 4334order to compute the checksum. Lv Zheng. 4335 4336Fixed a buffer allocation issue for the Generic Serial Bus support. 4337Originally, a fixed buffer length was used. This change allows for 4338variable-length buffers based upon the protocol indicated by the field 4339access attributes. Reported by Lan Tianyu. Lv Zheng. 4340 4341Fixed a problem where an object detached from a namespace node was not 4342properly terminated/cleared and could cause a circular list problem if 4343reattached. ACPICA BZ 1063. David Box. 4344 4345Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4346 4347Fixed a possible memory leak in an error return path within the function 4348AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4349 4350Example Code and Data Size: These are the sizes for the OS-independent 4351acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4352debug version of the code includes the debug output trace mechanism and 4353has a much larger code and data size. 4354 4355 Current Release: 4356 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4357 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4358 Previous Release: 4359 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4360 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4361 4362 43632) iASL Compiler/Disassembler and Tools: 4364 4365Disassembler: Add dump of ASCII equivalent text within a comment at the 4366end of each line of the output for the Buffer() ASL operator. 4367 4368AcpiDump: Miscellaneous changes: 4369 Fixed repetitive table dump in -n mode. 4370 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4371the ACPI 2.0 GUID fails. 4372 4373iASL: Fixed a problem where the compiler could fault if incorrectly given 4374an acpidump output file as input. ACPICA BZ 1088. David Box. 4375 4376AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4377they are invoked without any arguments. 4378 4379Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 43801086. Colin Ian King. 4381 4382Disassembler: Cleaned up a block of code that extracts a parent Op 4383object. Added a comment that explains that the parent is guaranteed to be 4384valid in this case. ACPICA BZ 1069. 4385 4386 4387---------------------------------------- 438824 April 2014. Summary of changes for version 20140424: 4389 43901) ACPICA kernel-resident subsystem: 4391 4392Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4393Some of these tables are known to contain a trailing NULL entry. Lv 4394Zheng. 4395 4396Removed an extraneous error message for the case where there are a large 4397number of system GPEs (> 124). This was the "32-bit FADT register is too 4398long to convert to GAS struct" message, which is irrelevant for GPEs 4399since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4400(limited capacity) GAS bit length. Also, several changes to ensure proper 4401support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4402internally. 4403 4404Implemented and deployed additional configuration support for the public 4405ACPICA external interfaces. Entire classes of interfaces can now be 4406easily modified or configured out, replaced by stubbed inline functions 4407by default. Lv Zheng. 4408 4409Moved all public ACPICA runtime configuration globals to the public 4410ACPICA external interface file for convenience. Also, removed some 4411obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4412 4413Documentation: Added a new section to the ACPICA reference describing the 4414maximum number of GPEs that can be supported by the FADT-defined GPEs in 4415block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4416reference. 4417 4418Example Code and Data Size: These are the sizes for the OS-independent 4419acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4420debug version of the code includes the debug output trace mechanism and 4421has a much larger code and data size. 4422 4423 Current Release: 4424 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4425 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4426 Previous Release: 4427 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4428 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4429 4430 44312) iASL Compiler/Disassembler and Tools: 4432 4433iASL and disassembler: Add full support for the LPIT table (Low Power 4434Idle Table). Includes support in the disassembler, data table compiler, 4435and template generator. 4436 4437AcpiDump utility: 44381) Add option to force the use of the RSDT (over the XSDT). 44392) Improve validation of the RSDP signature (use 8 chars instead of 4). 4440 4441iASL: Add check for predefined packages that are too large. For 4442predefined names that contain subpackages, check if each subpackage is 4443too large. (Check for too small already exists.) 4444 4445Debugger: Updated the GPE command (which simulates a GPE by executing the 4446GPE code paths in ACPICA). The GPE device is now optional, and defaults 4447to the GPE 0/1 FADT-defined blocks. 4448 4449Unix application OSL: Update line-editing support. Add additional error 4450checking and take care not to reset terminal attributes on exit if they 4451were never set. This should help guarantee that the terminal is always 4452left in the previous state on program exit. 4453 4454 4455---------------------------------------- 445625 March 2014. Summary of changes for version 20140325: 4457 44581) ACPICA kernel-resident subsystem: 4459 4460Updated the auto-serialize feature for control methods. This feature 4461automatically serializes all methods that create named objects in order 4462to prevent runtime errors. The update adds support to ignore the 4463currently executing AML SyncLevel when invoking such a method, in order 4464to prevent disruption of any existing SyncLevel priorities that may exist 4465in the AML code. Although the use of SyncLevels is relatively rare, this 4466change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4467appear on some machines starting with the 20140214 release. 4468 4469Added a new external interface to allow the host to install ACPI tables 4470very early, before the namespace is even created. AcpiInstallTable gives 4471the host additional flexibility for ACPI table management. Tables can be 4472installed directly by the host as if they had originally appeared in the 4473XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4474(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4475with additional internal restructuring and cleanup. See the ACPICA 4476Reference for interface details. Lv Zheng. 4477 4478Added validation of the checksum for all incoming dynamically loaded 4479tables (via external interfaces or via AML Load/LoadTable operators). Lv 4480Zheng. 4481 4482Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4483and GPE handler removal. Restructured calls to eliminate possible race 4484conditions. Lv Zheng. 4485 4486Added a warning for the use/execution of the ASL/AML Unload (table) 4487operator. This will help detect and identify machines that use this 4488operator if and when it is ever used. This operator has never been seen 4489in the field and the usage model and possible side-effects of the drastic 4490runtime action of a full table removal are unknown. 4491 4492Reverted the use of #pragma push/pop which was introduced in the 20140214 4493release. It appears that push and pop are not implemented by enough 4494compilers to make the use of this feature feasible for ACPICA at this 4495time. However, these operators may be deployed in a future ACPICA 4496release. 4497 4498Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4499handler interfaces. 4500 4501Source code generation: 45021) Disabled the use of the "strchr" macro for the gcc-specific 4503generation. For some versions of gcc, this macro can periodically expose 4504a compiler bug which in turn causes compile-time error(s). 45052) Added support for PPC64 compilation. Colin Ian King. 4506 4507Example Code and Data Size: These are the sizes for the OS-independent 4508acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4509debug version of the code includes the debug output trace mechanism and 4510has a much larger code and data size. 4511 4512 Current Release: 4513 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4514 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4515 Previous Release: 4516 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4517 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4518 4519 45202) iASL Compiler/Disassembler and Tools: 4521 4522Disassembler: Added several new features to improve the readability of 4523the resulting ASL code. Extra information is emitted within comment 4524fields in the ASL code: 45251) Known _HID/_CID values are decoded to descriptive text. 45262) Standard values for the Notify() operator are decoded to descriptive 4527text. 45283) Target operands are expanded to full pathnames (in a comment) when 4529possible. 4530 4531Disassembler: Miscellaneous updates for extern() handling: 45321) Abort compiler if file specified by -fe option does not exist. 45332) Silence unnecessary warnings about argument count mismatches. 45343) Update warning messages concerning unresolved method externals. 45354) Emit "UnknownObj" keyword for externals whose type cannot be 4536determined. 4537 4538AcpiHelp utility: 45391) Added the -a option to display both the ASL syntax and the AML 4540encoding for an input ASL operator. This effectively displays all known 4541information about an ASL operator with one AcpiHelp invocation. 45422) Added substring match support (similar to a wildcard) for the -i 4543(_HID/PNP IDs) option. 4544 4545iASL/Disassembler: Since this tool does not yet support execution on big- 4546endian machines, added detection of endianness and an error message if 4547execution is attempted on big-endian. Support for big-endian within iASL 4548is a feature that is on the ACPICA to-be-done list. 4549 4550AcpiBin utility: 45511) Remove option to extract binary files from an acpidump; this function 4552is made obsolete by the AcpiXtract utility. 45532) General cleanup of open files and allocated buffers. 4554 4555 4556---------------------------------------- 455714 February 2014. Summary of changes for version 20140214: 4558 45591) ACPICA kernel-resident subsystem: 4560 4561Implemented a new mechanism to proactively prevent problems with ill- 4562behaved reentrant control methods that create named ACPI objects. This 4563behavior is illegal as per the ACPI specification, but is nonetheless 4564frequently seen in the field. Previously, this could lead to an 4565AE_ALREADY_EXISTS exception if the method was actually entered by more 4566than one thread. This new mechanism detects such methods at table load 4567time and marks them "serialized" to prevent reentrancy. A new global 4568option, AcpiGbl_AutoSerializeMethods, has been added to disable this 4569feature if desired. This mechanism and global option obsoletes and 4570supersedes the previous AcpiGbl_SerializeAllMethods option. 4571 4572Added the "Windows 2013" string to the _OSI support. ACPICA will now 4573respond TRUE to _OSI queries with this string. It is the stated policy of 4574ACPICA to add new strings to the _OSI support as soon as possible after 4575they are defined. See the full ACPICA _OSI policy which has been added to 4576the utilities/utosi.c file. 4577 4578Hardened/updated the _PRT return value auto-repair code: 45791) Do not abort the repair on a single subpackage failure, continue to 4580check all subpackages. 45812) Add check for the minimum subpackage length (4). 45823) Properly handle extraneous NULL package elements. 4583 4584Added support to avoid the possibility of infinite loops when traversing 4585object linked lists. Never allow an infinite loop, even in the face of 4586corrupted object lists. 4587 4588ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4589pack(pop) directives to ensure that the ACPICA headers are independent of 4590compiler settings or other host headers. 4591 4592Example Code and Data Size: These are the sizes for the OS-independent 4593acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4594debug version of the code includes the debug output trace mechanism and 4595has a much larger code and data size. 4596 4597 Current Release: 4598 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4599 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4600 Previous Release: 4601 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4602 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4603 4604 46052) iASL Compiler/Disassembler and Tools: 4606 4607iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4608first reserved field was incorrectly forced to have a value of zero. This 4609change correctly forces the field to have a value of one. ACPICA BZ 1081. 4610 4611Debugger: Added missing support for the "Extra" and "Data" subobjects 4612when displaying object data. 4613 4614Debugger: Added support to display entire object linked lists when 4615displaying object data. 4616 4617iASL: Removed the obsolete -g option to obtain ACPI tables from the 4618Windows registry. This feature has been superseded by the acpidump 4619utility. 4620 4621 4622---------------------------------------- 462314 January 2014. Summary of changes for version 20140114: 4624 46251) ACPICA kernel-resident subsystem: 4626 4627Updated all ACPICA copyrights and signons to 2014. Added the 2014 4628copyright to all module headers and signons, including the standard Linux 4629header. This affects virtually every file in the ACPICA core subsystem, 4630iASL compiler, all ACPICA utilities, and the test suites. 4631 4632Improved parameter validation for AcpiInstallGpeBlock. Added the 4633following checks: 46341) The incoming device handle refers to type ACPI_TYPE_DEVICE. 46352) There is not already a GPE block attached to the device. 4636Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4637device. 4638 4639Correctly support "references" in the ACPI_OBJECT. This change fixes the 4640support to allow references (namespace nodes) to be passed as arguments 4641to control methods via the evaluate object interface. This is probably 4642most useful for testing purposes, however. 4643 4644Improved support for 32/64 bit physical addresses in printf()-like 4645output. This change improves the support for physical addresses in printf 4646debug statements and other output on both 32-bit and 64-bit hosts. It 4647consistently outputs the appropriate number of bytes for each host. The 4648%p specifier is unsatisfactory since it does not emit uniform output on 4649all hosts/clib implementations (on some, leading zeros are not supported, 4650leading to difficult-to-read output). 4651 4652Example Code and Data Size: These are the sizes for the OS-independent 4653acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4654debug version of the code includes the debug output trace mechanism and 4655has a much larger code and data size. 4656 4657 Current Release: 4658 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4659 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4660 Previous Release: 4661 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4662 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4663 4664 46652) iASL Compiler/Disassembler and Tools: 4666 4667iASL: Fix a possible fault when using the Connection() operator. Fixes a 4668problem if the parent Field definition for the Connection operator refers 4669to an operation region that does not exist. ACPICA BZ 1064. 4670 4671AcpiExec: Load of local test tables is now optional. The utility has the 4672capability to load some various tables to test features of ACPICA. 4673However, there are enough of them that the output of the utility became 4674confusing. With this change, only the required local tables are displayed 4675(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4676line specification. This makes the default output simler and easier to 4677understand. The -el command line option restores the original behavior 4678for testing purposes. 4679 4680AcpiExec: Added support for overlapping operation regions. This change 4681expands the simulation of operation regions by supporting regions that 4682overlap within the given address space. Supports SystemMemory and 4683SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4684 4685AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4686allows AcpiExec to simulate these address spaces, similar to the current 4687support for SystemMemory and SystemIO. 4688 4689Debugger: Added new command to read/write/compare all namespace objects. 4690The command "test objects" will exercise the entire namespace by writing 4691new values to each data object, and ensuring that the write was 4692successful. The original value is then restored and verified. 4693 4694Debugger: Added the "test predefined" command. This change makes this 4695test public and puts it under the new "test" command. The test executes 4696each and every predefined name within the current namespace. 4697 4698 4699---------------------------------------- 470018 December 2013. Summary of changes for version 20131218: 4701 4702Global note: The ACPI 5.0A specification was released this month. There 4703are no changes needed for ACPICA since this release of ACPI is an 4704errata/clarification release. The specification is available at 4705acpi.info. 4706 4707 47081) ACPICA kernel-resident subsystem: 4709 4710Added validation of the XSDT root table if it is present. Some older 4711platforms contain an XSDT that is ill-formed or otherwise invalid (such 4712as containing some or all entries that are NULL pointers). This change 4713adds a new function to validate the XSDT before actually using it. If the 4714XSDT is found to be invalid, ACPICA will now automatically fall back to 4715using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4716ACPICA and enhanced by Lv Zheng and Bob Moore. 4717 4718Added a runtime option to ignore the XSDT and force the use of the RSDT. 4719This change adds a runtime option that will force ACPICA to use the RSDT 4720instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4721requires that an XSDT be used instead of the RSDT, the XSDT has been 4722found to be corrupt or ill-formed on some machines. Lv Zheng. 4723 4724Added a runtime option to favor 32-bit FADT register addresses over the 472564-bit addresses. This change adds an option to favor 32-bit FADT 4726addresses when there is a conflict between the 32-bit and 64-bit versions 4727of the same register. The default behavior is to use the 64-bit version 4728in accordance with the ACPI specification. This can now be overridden via 4729the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4730 4731During the change above, the internal "Convert FADT" and "Verify FADT" 4732functions have been merged to simplify the code, making it easier to 4733understand and maintain. ACPICA BZ 933. 4734 4735Improve exception reporting and handling for GPE block installation. 4736Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4737status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4738 4739Added helper macros to extract bus/segment numbers from the HEST table. 4740This change adds two macros to extract the encoded bus and segment 4741numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4742Betty Dall <betty.dall@hp.com> 4743 4744Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4745by ACPICA. It is not a public macro, so it should have no effect on 4746existing OSV code. Lv Zheng. 4747 4748Example Code and Data Size: These are the sizes for the OS-independent 4749acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4750debug version of the code includes the debug output trace mechanism and 4751has a much larger code and data size. 4752 4753 Current Release: 4754 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4755 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4756 Previous Release: 4757 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4758 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4759 4760 47612) iASL Compiler/Disassembler and Tools: 4762 4763Disassembler: Improved pathname support for emitted External() 4764statements. This change adds full pathname support for external names 4765that have been resolved internally by the inclusion of additional ACPI 4766tables (via the iASL -e option). Without this change, the disassembler 4767can emit multiple externals for the same object, or it become confused 4768when the Scope() operator is used on an external object. Overall, greatly 4769improves the ability to actually recompile the emitted ASL code when 4770objects a referenced across multiple ACPI tables. Reported by Michael 4771Tsirkin (mst@redhat.com). 4772 4773Tests/ASLTS: Updated functional control suite to execute with no errors. 4774David Box. Fixed several errors related to the testing of the interpreter 4775slack mode. Lv Zheng. 4776 4777iASL: Added support to detect names that are declared within a control 4778method, but are unused (these are temporary names that are only valid 4779during the time the method is executing). A remark is issued for these 4780cases. ACPICA BZ 1022. 4781 4782iASL: Added full support for the DBG2 table. Adds full disassembler, 4783table compiler, and template generator support for the DBG2 table (Debug 4784Port 2 table). 4785 4786iASL: Added full support for the PCCT table, update the table definition. 4787Updates the PCCT table definition in the actbl3.h header and adds table 4788compiler and template generator support. 4789 4790iASL: Added an option to emit only error messages (no warnings/remarks). 4791The -ve option will enable only error messages, warnings and remarks are 4792suppressed. This can simplify debugging when only the errors are 4793important, such as when an ACPI table is disassembled and there are many 4794warnings and remarks -- but only the actual errors are of real interest. 4795 4796Example ACPICA code (source/tools/examples): Updated the example code so 4797that it builds to an actual working program, not just example code. Added 4798ACPI tables and execution of an example control method in the DSDT. Added 4799makefile support for Unix generation. 4800 4801 4802---------------------------------------- 480315 November 2013. Summary of changes for version 20131115: 4804 4805This release is available at https://acpica.org/downloads 4806 4807 48081) ACPICA kernel-resident subsystem: 4809 4810Resource Manager: Fixed loop termination for the "get AML length" 4811function. The loop previously had an error termination on a NULL resource 4812pointer, which can never happen since the loop simply increments a valid 4813resource pointer. This fix changes the loop to terminate with an error on 4814an invalid end-of-buffer condition. The problem can be seen as an 4815infinite loop by callers to AcpiSetCurrentResources with an invalid or 4816corrupted resource descriptor, or a resource descriptor that is missing 4817an END_TAG descriptor. Reported by Dan Carpenter 4818<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4819 4820Table unload and ACPICA termination: Delete all attached data objects 4821during namespace node deletion. This fix updates namespace node deletion 4822to delete the entire list of attached objects (attached via 4823AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 48241024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4825 4826ACPICA termination: Added support to delete all objects attached to the 4827root namespace node. This fix deletes any and all objects that have been 4828attached to the root node via AcpiAttachData. Previously, none of these 4829objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4830 4831Debug output: Do not emit the function nesting level for the in-kernel 4832build. The nesting level is really only useful during a single-thread 4833execution. Therefore, only enable this output for the AcpiExec utility. 4834Also, only emit the thread ID when executing under AcpiExec (Context 4835switches are still always detected and a message is emitted). ACPICA BZ 4836972. 4837 4838Example Code and Data Size: These are the sizes for the OS-independent 4839acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4840debug version of the code includes the debug output trace mechanism and 4841has a much larger code and data size. 4842 4843 Current Release: 4844 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4845 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4846 Previous Release: 4847 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4848 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4849 4850 48512) iASL Compiler/Disassembler and Tools: 4852 4853AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4854correct portable POSIX header for terminal control functions. 4855 4856Disassembler: Fixed control method invocation issues related to the use 4857of the CondRefOf() operator. The problem is seen in the disassembly where 4858control method invocations may not be disassembled properly if the 4859control method name has been used previously as an argument to CondRefOf. 4860The solution is to not attempt to emit an external declaration for the 4861CondRefOf target (it is not necessary in the first place). This prevents 4862disassembler object type confusion. ACPICA BZ 988. 4863 4864Unix Makefiles: Added an option to disable compiler optimizations and the 4865_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4866with optimizations (reportedly, gcc 4.4 for example). This change adds a 4867command line option for make (NOOPT) that disables all compiler 4868optimizations and the _FORTIFY_SOURCE compiler flag. The default 4869optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 48701034. Lv Zheng, Bob Moore. 4871 4872Tests/ASLTS: Added options to specify individual test cases and modes. 4873This allows testers running aslts.sh to optionally specify individual 4874test modes and test cases. Also added an option to disable the forced 4875generation of the ACPICA tools from source if desired. Lv Zheng. 4876 4877---------------------------------------- 487827 September 2013. Summary of changes for version 20130927: 4879 4880This release is available at https://acpica.org/downloads 4881 4882 48831) ACPICA kernel-resident subsystem: 4884 4885Fixed a problem with store operations to reference objects. This change 4886fixes a problem where a Store operation to an ArgX object that contained 4887a 4888reference to a field object did not complete the automatic dereference 4889and 4890then write to the actual field object. Instead, the object type of the 4891field object was inadvertently changed to match the type of the source 4892operand. The new behavior will actually write to the field object (buffer 4893field or field unit), thus matching the correct ACPI-defined behavior. 4894 4895Implemented support to allow the host to redefine individual OSL 4896prototypes. This change enables the host to redefine OSL prototypes found 4897in the acpiosxf.h file. This allows the host to implement OSL interfaces 4898with a macro or inlined function. Further, it allows the host to add any 4899additional required modifiers such as __iomem, __init, __exit, etc., as 4900necessary on a per-interface basis. Enables maximum flexibility for the 4901OSL interfaces. Lv Zheng. 4902 4903Hardcoded the access width for the FADT-defined reset register. The ACPI 4904specification requires the reset register width to be 8 bits. ACPICA now 4905hardcodes the width to 8 and ignores the FADT width value. This provides 4906compatibility with other ACPI implementations that have allowed BIOS code 4907with bad register width values to go unnoticed. Matthew Garett, Bob 4908Moore, 4909Lv Zheng. 4910 4911Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4912used 4913in the OSL header (acpiosxf). The change modifies the position of this 4914macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4915build issues if the OSL defines the implementation of the interface to be 4916an inline stub function. Lv Zheng. 4917 4918Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4919initialization interfaces. This change adds a new macro for the main init 4920and terminate external interfaces in order to support hosts that require 4921additional or different processing for these functions. Changed from 4922ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4923Zheng, Bob Moore. 4924 4925Cleaned up the memory allocation macros for configurability. In the 4926common 4927case, the ACPI_ALLOCATE and related macros now resolve directly to their 4928respective AcpiOs* OSL interfaces. Two options: 49291) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4930default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 49312) For AcpiExec (and for debugging), the macros can optionally be 4932resolved 4933to the local ACPICA interfaces that track each allocation (local tracking 4934is used to immediately detect memory leaks). 4935Lv Zheng. 4936 4937Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4938to predefine this macro to either TRUE or FALSE during the system build. 4939 4940Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4941 4942Example Code and Data Size: These are the sizes for the OS-independent 4943acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4944debug version of the code includes the debug output trace mechanism and 4945has a much larger code and data size. 4946 4947 Current Release: 4948 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4949 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4950 Previous Release: 4951 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4952 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4953 4954 49552) iASL Compiler/Disassembler and Tools: 4956 4957iASL: Implemented wildcard support for the -e option. This simplifies use 4958when there are many SSDTs that must be included to resolve external 4959method 4960declarations. ACPICA BZ 1041. Example: 4961 iasl -e ssdt*.dat -d dsdt.dat 4962 4963AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4964adds a portable module that implements full history and limited line 4965editing for Unix and Linux systems. It does not use readline() due to 4966portability issues. Instead it uses the POSIX termio interface to put the 4967terminal in raw input mode so that the various special keys can be 4968trapped 4969(such as up/down-arrow for history support and left/right-arrow for line 4970editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4971 4972AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4973one or more spaces. This provides compatible with early or different 4974versions of the AcpiDump utility. ACPICA BZ 1044. 4975 4976AcpiDump: Do not ignore tables that contain only an ACPI table header. 4977Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4978no other data. This change adds support to dump these tables. Any tables 4979shorter than the length of an ACPI table header remain in error (an error 4980message is emitted). Reported by Yi Li. 4981 4982Debugger: Echo actual command along with the "unknown command" message. 4983 4984---------------------------------------- 498523 August 2013. Summary of changes for version 20130823: 4986 49871) ACPICA kernel-resident subsystem: 4988 4989Implemented support for host-installed System Control Interrupt (SCI) 4990handlers. Certain ACPI functionality requires the host to handle raw 4991SCIs. For example, the "SCI Doorbell" that is defined for memory power 4992state support requires the host device driver to handle SCIs to examine 4993if the doorbell has been activated. Multiple SCI handlers can be 4994installed to allow for future expansion. New external interfaces are 4995AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4996details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4997 4998Operation region support: Never locally free the handler "context" 4999pointer. This change removes some dangerous code that attempts to free 5000the handler context pointer in some (rare) circumstances. The owner of 5001the handler owns this pointer and the ACPICA code should never touch it. 5002Although not seen to be an issue in any kernel, it did show up as a 5003problem (fault) under AcpiExec. Also, set the internal storage field for 5004the context pointer to zero when the region is deactivated, simply for 5005sanity. David Box. ACPICA BZ 1039. 5006 5007AcpiRead: On error, do not modify the return value target location. If an 5008error happens in the middle of a split 32/32 64-bit I/O operation, do not 5009modify the target of the return value pointer. Makes the code consistent 5010with the rest of ACPICA. Bjorn Helgaas. 5011 5012Example Code and Data Size: These are the sizes for the OS-independent 5013acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5014debug version of the code includes the debug output trace mechanism and 5015has a much larger code and data size. 5016 5017 Current Release: 5018 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5019 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5020 Previous Release: 5021 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5022 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5023 5024 50252) iASL Compiler/Disassembler and Tools: 5026 5027AcpiDump: Implemented several new features and fixed some problems: 50281) Added support to dump the RSDP, RSDT, and XSDT tables. 50292) Added support for multiple table instances (SSDT, UEFI). 50303) Added option to dump "customized" (overridden) tables (-c). 50314) Fixed a problem where some table filenames were improperly 5032constructed. 50335) Improved some error messages, removed some unnecessary messages. 5034 5035iASL: Implemented additional support for disassembly of ACPI tables that 5036contain invocations of external control methods. The -fe<file> option 5037allows the import of a file that specifies the external methods along 5038with the required number of arguments for each -- allowing for the 5039correct disassembly of the table. This is a workaround for a limitation 5040of AML code where the disassembler often cannot determine the number of 5041arguments required for an external control method and generates incorrect 5042ASL code. See the iASL reference for details. ACPICA BZ 1030. 5043 5044Debugger: Implemented a new command (paths) that displays the full 5045pathnames (namepaths) and object types of all objects in the namespace. 5046This is an alternative to the namespace command. 5047 5048Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5049mechanism and any installed handlers. 5050 5051iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5052This can occur if there are too many parent prefixes in a namepath (for 5053example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5054 5055Application OSLs: Set the return value for the PCI read functions. These 5056functions simply return AE_OK, but should set the return value to zero 5057also. This change implements this. ACPICA BZ 1038. 5058 5059Debugger: Prevent possible command line buffer overflow. Increase the 5060size of a couple of the debugger line buffers, and ensure that overflow 5061cannot happen. ACPICA BZ 1037. 5062 5063iASL: Changed to abort immediately on serious errors during the parsing 5064phase. Due to the nature of ASL, there is no point in attempting to 5065compile these types of errors, and they typically end up causing a 5066cascade of hundreds of errors which obscure the original problem. 5067 5068---------------------------------------- 506925 July 2013. Summary of changes for version 20130725: 5070 50711) ACPICA kernel-resident subsystem: 5072 5073Fixed a problem with the DerefOf operator where references to FieldUnits 5074and BufferFields incorrectly returned the parent object, not the actual 5075value of the object. After this change, a dereference of a FieldUnit 5076reference results in a read operation on the field to get the value, and 5077likewise, the appropriate BufferField value is extracted from the target 5078buffer. 5079 5080Fixed a problem where the _WAK method could cause a fault under these 5081circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5082method returned no value. The problem is rarely seen because most kernels 5083run ACPICA in slack mode. 5084 5085For the DerefOf operator, a fatal error now results if an attempt is made 5086to dereference a reference (created by the Index operator) to a NULL 5087package element. Provides compatibility with other ACPI implementations, 5088and this behavior will be added to a future version of the ACPI 5089specification. 5090 5091The ACPI Power Management Timer (defined in the FADT) is now optional. 5092This provides compatibility with other ACPI implementations and will 5093appear in the next version of the ACPI specification. If there is no PM 5094Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5095zero in the FADT indicates no PM timer. 5096 5097Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5098allows the host to globally enable/disable all vendor strings, all 5099feature strings, or both. Intended to be primarily used for debugging 5100purposes only. Lv Zheng. 5101 5102Expose the collected _OSI data to the host via a global variable. This 5103data tracks the highest level vendor ID that has been invoked by the BIOS 5104so that the host (and potentially ACPICA itself) can change behaviors 5105based upon the age of the BIOS. 5106 5107Example Code and Data Size: These are the sizes for the OS-independent 5108acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5109debug version of the code includes the debug output trace mechanism and 5110has a much larger code and data size. 5111 5112 Current Release: 5113 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5114 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5115 Previous Release: 5116 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5117 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5118 5119 51202) iASL Compiler/Disassembler and Tools: 5121 5122iASL: Created the following enhancements for the -so option (create 5123offset table): 51241)Add offsets for the last nameseg in each namepath for every supported 5125object type 51262)Add support for Processor, Device, Thermal Zone, and Scope objects 51273)Add the actual AML opcode for the parent object of every supported 5128object type 51294)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5130 5131Disassembler: Emit all unresolved external symbols in a single block. 5132These are external references to control methods that could not be 5133resolved, and thus, the disassembler had to make a guess at the number of 5134arguments to parse. 5135 5136iASL: The argument to the -T option (create table template) is now 5137optional. If not specified, the default table is a DSDT, typically the 5138most common case. 5139 5140---------------------------------------- 514126 June 2013. Summary of changes for version 20130626: 5142 51431) ACPICA kernel-resident subsystem: 5144 5145Fixed an issue with runtime repair of the _CST object. Null or invalid 5146elements were not always removed properly. Lv Zheng. 5147 5148Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5149FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5150the maximum number of GPEs is 1016. Use of multiple GPE block devices 5151makes the system-wide number of GPEs essentially unlimited. 5152 5153Example Code and Data Size: These are the sizes for the OS-independent 5154acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5155debug version of the code includes the debug output trace mechanism and 5156has a much larger code and data size. 5157 5158 Current Release: 5159 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5160 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5161 Previous Release: 5162 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5163 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5164 5165 51662) iASL Compiler/Disassembler and Tools: 5167 5168Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5169hosts. Now supports Linux, FreeBSD, and Windows. 5170 5171Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5172Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5173 5174iASL/Preprocessor: Implemented full support for nested 5175#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5176 5177Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5178max. The original purpose of this constraint was to limit the amount of 5179debug output. However, the string function in question (UtPrintString) is 5180now used for the disassembler also, where 256 bytes is insufficient. 5181Reported by RehabMan@GitHub. 5182 5183iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5184tables. ACPICA BZ 999. Lv Zheng. 5185 5186iASL: Fixed a couple of error exit issues that could result in a "Could 5187not delete <file>" message during ASL compilation. 5188 5189AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5190the actual signatures for these tables are "FACP" and "APIC", 5191respectively. 5192 5193AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5194tables are allowed to have multiple instances. 5195 5196---------------------------------------- 519717 May 2013. Summary of changes for version 20130517: 5198 51991) ACPICA kernel-resident subsystem: 5200 5201Fixed a regression introduced in version 20130328 for _INI methods. This 5202change fixes a problem introduced in 20130328 where _INI methods are no 5203longer executed properly because of a memory block that was not 5204initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5205<tomasz.nowicki@linaro.org>. 5206 5207Fixed a possible problem with the new extended sleep registers in the 5208ACPI 52095.0 FADT. Do not use these registers (even if populated) unless the HW- 5210reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 52111020. Lv Zheng. 5212 5213Implemented return value repair code for _CST predefined objects: Sort 5214the 5215list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5216 5217Implemented a debug-only option to disable loading of SSDTs from the 5218RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5219ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5220acglobal.h - ACPICA BZ 1005. Lv Zheng. 5221 5222Fixed some issues in the ACPICA initialization and termination code: 5223Tomasz Nowicki <tomasz.nowicki@linaro.org> 52241) Clear events initialized flag upon event component termination. ACPICA 5225BZ 1013. 52262) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 52273) Delete global lock pending lock during termination. ACPICA BZ 1012. 52284) Clear debug buffer global on termination to prevent possible multiple 5229delete. ACPICA BZ 1010. 5230 5231Standardized all switch() blocks across the entire source base. After 5232many 5233years, different formatting for switch() had crept in. This change makes 5234the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5235 5236Split some files to enhance ACPICA modularity and configurability: 52371) Split buffer dump routines into utilities/utbuffer.c 52382) Split internal error message routines into utilities/uterror.c 52393) Split table print utilities into tables/tbprint.c 52404) Split iASL command-line option processing into asloptions.c 5241 5242Makefile enhancements: 52431) Support for all new files above. 52442) Abort make on errors from any subcomponent. Chao Guan. 52453) Add build support for Apple Mac OS X. Liang Qi. 5246 5247Example Code and Data Size: These are the sizes for the OS-independent 5248acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5249debug version of the code includes the debug output trace mechanism and 5250has a much larger code and data size. 5251 5252 Current Release: 5253 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5254 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5255 Previous Release: 5256 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5257 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5258 5259 52602) iASL Compiler/Disassembler and Tools: 5261 5262New utility: Implemented an easily portable version of the acpidump 5263utility to extract ACPI tables from the system (or a file) in an ASCII 5264hex 5265dump format. The top-level code implements the various command line 5266options, file I/O, and table dump routines. To port to a new host, only 5267three functions need to be implemented to get tables -- since this 5268functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5269the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 52701) The Windows version obtains the ACPI tables from the Registry. 52712) The Linux version is under development. 52723) Other hosts - If an OS-dependent module is submitted, it will be 5273distributed with ACPICA. 5274 5275iASL: Fixed a regression for -D preprocessor option (define symbol). A 5276restructuring/change to the initialization sequence caused this option to 5277no longer work properly. 5278 5279iASL: Implemented a mechanism to disable specific warnings and remarks. 5280Adds a new command line option, "-vw <messageid> as well as "#pragma 5281disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5282 5283iASL: Fix for too-strict package object validation. The package object 5284validation for return values from the predefined names is a bit too 5285strict, it does not allow names references within the package (which will 5286be resolved at runtime.) These types of references cannot be validated at 5287compile time. This change ignores named references within package objects 5288for names that return or define static packages. 5289 5290Debugger: Fixed the 80-character command line limitation for the History 5291command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5292 5293iASL: Added control method and package support for the -so option 5294(generates AML offset table for BIOS support.) 5295 5296iASL: issue a remark if a non-serialized method creates named objects. If 5297a thread blocks within the method for any reason, and another thread 5298enters the method, the method will fail because an attempt will be made 5299to 5300create the same (named) object twice. In this case, issue a remark that 5301the method should be marked serialized. NOTE: may become a warning later. 5302ACPICA BZ 909. 5303 5304---------------------------------------- 530518 April 2013. Summary of changes for version 20130418: 5306 53071) ACPICA kernel-resident subsystem: 5308 5309Fixed a possible buffer overrun during some rare but specific field unit 5310read operations. This overrun can only happen if the DSDT version is 1 -- 5311meaning that all AML integers are 32 bits -- and the field length is 5312between 33 and 55 bits long. During the read, an internal buffer object 5313is 5314created for the field unit because the field is larger than an integer 5315(32 5316bits). However, in this case, the buffer will be incorrectly written 5317beyond the end because the buffer length is less than the internal 5318minimum 5319of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5320long, but a full 8 bytes will be written. 5321 5322Updated the Embedded Controller "orphan" _REG method support. This refers 5323to _REG methods under the EC device that have no corresponding operation 5324region. This is allowed by the ACPI specification. This update removes a 5325dependency on the existence an ECDT table. It will execute an orphan _REG 5326method as long as the operation region handler for the EC is installed at 5327the EC device node and not the namespace root. Rui Zhang (original 5328update), Bob Moore (update/integrate). 5329 5330Implemented run-time argument typechecking for all predefined ACPI names 5331(_STA, _BIF, etc.) This change performs object typechecking on all 5332incoming arguments for all predefined names executed via 5333AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5334passing correct object types as well as the correct number of arguments 5335(therefore identifying any issues immediately). Also, the ASL/namespace 5336definition of the predefined name is checked against the ACPI 5337specification for the proper argument count. Adds one new file, 5338nsarguments.c 5339 5340Changed an exception code for the ASL UnLoad() operator. Changed the 5341exception code for the case where the input DdbHandle is invalid, from 5342AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5343 5344Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5345global makefile. The use of this flag causes compiler errors on earlier 5346versions of GCC, so it has been removed for compatibility. 5347 5348Miscellaneous cleanup: 53491) Removed some unused/obsolete macros 53502) Fixed a possible memory leak in the _OSI support 53513) Removed an unused variable in the predefined name support 53524) Windows OSL: remove obsolete reference to a memory list field 5353 5354Example Code and Data Size: These are the sizes for the OS-independent 5355acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5356debug version of the code includes the debug output trace mechanism and 5357has a much larger code and data size. 5358 5359 Current Release: 5360 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5361 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5362 Previous Release: 5363 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5364 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5365 5366 53672) iASL Compiler/Disassembler and Tools: 5368 5369AcpiExec: Added installation of a handler for the SystemCMOS address 5370space. This prevents control method abort if a method accesses this 5371space. 5372 5373AcpiExec: Added support for multiple EC devices, and now install EC 5374operation region handler(s) at the actual EC device instead of the 5375namespace root. This reflects the typical behavior of host operating 5376systems. 5377 5378AcpiExec: Updated to ensure that all operation region handlers are 5379installed before the _REG methods are executed. This prevents a _REG 5380method from aborting if it accesses an address space has no handler. 5381AcpiExec installs a handler for every possible address space. 5382 5383Debugger: Enhanced the "handlers" command to display non-root handlers. 5384This change enhances the handlers command to display handlers associated 5385with individual devices throughout the namespace, in addition to the 5386currently supported display of handlers associated with the root 5387namespace 5388node. 5389 5390ASL Test Suite: Several test suite errors have been identified and 5391resolved, reducing the total error count during execution. Chao Guan. 5392 5393---------------------------------------- 539428 March 2013. Summary of changes for version 20130328: 5395 53961) ACPICA kernel-resident subsystem: 5397 5398Fixed several possible race conditions with the internal object reference 5399counting mechanism. Some of the external ACPICA interfaces update object 5400reference counts without holding the interpreter or namespace lock. This 5401change adds a spinlock to protect reference count updates on the internal 5402ACPICA objects. Reported by and with assistance from Andriy Gapon 5403(avg@FreeBSD.org). 5404 5405FADT support: Removed an extraneous warning for very large GPE register 5406sets. This change removes a size mismatch warning if the legacy length 5407field for a GPE register set is larger than the 64-bit GAS structure can 5408accommodate. GPE register sets can be larger than the 255-bit width 5409limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5410 5411_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5412return from this interface. Handles a possible timeout case if 5413ACPI_WAIT_FOREVER is modified by the host to be a value less than 5414"forever". Jung-uk Kim. 5415 5416Predefined name support: Add allowed/required argument type information 5417to 5418the master predefined info table. This change adds the infrastructure to 5419enable typechecking on incoming arguments for all predefined 5420methods/objects. It does not actually contain the code that will fully 5421utilize this information, this is still under development. Also condenses 5422some duplicate code for the predefined names into a new module, 5423utilities/utpredef.c 5424 5425Example Code and Data Size: These are the sizes for the OS-independent 5426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5427debug version of the code includes the debug output trace mechanism and 5428has a much larger code and data size. 5429 5430 Previous Release: 5431 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5432 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5433 Current Release: 5434 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5435 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5436 5437 54382) iASL Compiler/Disassembler and Tools: 5439 5440iASL: Implemented a new option to simplify the development of ACPI- 5441related 5442BIOS code. Adds support for a new "offset table" output file. The -so 5443option will create a C table containing the AML table offsets of various 5444named objects in the namespace so that BIOS code can modify them easily 5445at 5446boot time. This can simplify BIOS runtime code by eliminating expensive 5447searches for "magic values", enhancing boot times and adding greater 5448reliability. With assistance from Lee Hamel. 5449 5450iASL: Allow additional predefined names to return zero-length packages. 5451Now, all predefined names that are defined by the ACPI specification to 5452return a "variable-length package of packages" are allowed to return a 5453zero length top-level package. This allows the BIOS to tell the host that 5454the requested feature is not supported, and supports existing BIOS/ASL 5455code and practices. 5456 5457iASL: Changed the "result not used" warning to an error. This is the case 5458where an ASL operator is effectively a NOOP because the result of the 5459operation is not stored anywhere. For example: 5460 Add (4, Local0) 5461There is no target (missing 3rd argument), nor is the function return 5462value used. This is potentially a very serious problem -- since the code 5463was probably intended to do something, but for whatever reason, the value 5464was not stored. Therefore, this issue has been upgraded from a warning to 5465an error. 5466 5467AcpiHelp: Added allowable/required argument types to the predefined names 5468info display. This feature utilizes the recent update to the predefined 5469names table (above). 5470 5471---------------------------------------- 547214 February 2013. Summary of changes for version 20130214: 5473 54741) ACPICA Kernel-resident Subsystem: 5475 5476Fixed a possible regression on some hosts: Reinstated the safe return 5477macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5478evaluated only once. Although these macros are not needed for the ACPICA 5479code itself, they are often used by ACPI-related host device drivers 5480where 5481the safe feature may be necessary. 5482 5483Fixed several issues related to the ACPI 5.0 reduced hardware support 5484(SOC): Now ensure that if the platform declares itself as hardware- 5485reduced 5486via the FADT, the following functions become NOOPs (and always return 5487AE_OK) because ACPI is always enabled by definition on these machines: 5488 AcpiEnable 5489 AcpiDisable 5490 AcpiHwGetMode 5491 AcpiHwSetMode 5492 5493Dynamic Object Repair: Implemented additional runtime repairs for 5494predefined name return values. Both of these repairs can simplify code in 5495the related device drivers that invoke these methods: 54961) For the _STR and _MLS names, automatically repair/convert an ASCII 5497string to a Unicode buffer. 54982) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5499a 5500lone end tag descriptor in the following cases: A Return(0) was executed, 5501a null buffer was returned, or no object at all was returned (non-slack 5502mode only). Adds a new file, nsconvert.c 5503ACPICA BZ 998. Bob Moore, Lv Zheng. 5504 5505Resource Manager: Added additional code to prevent possible infinite 5506loops 5507while traversing corrupted or ill-formed resource template buffers. Check 5508for zero-length resource descriptors in all code that loops through 5509resource templates (the length field is used to index through the 5510template). This change also hardens the external AcpiWalkResources and 5511AcpiWalkResourceBuffer interfaces. 5512 5513Local Cache Manager: Enhanced the main data structure to eliminate an 5514unnecessary mechanism to access the next object in the list. Actually 5515provides a small performance enhancement for hosts that use the local 5516ACPICA cache manager. Jung-uk Kim. 5517 5518Example Code and Data Size: These are the sizes for the OS-independent 5519acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5520debug version of the code includes the debug output trace mechanism and 5521has a much larger code and data size. 5522 5523 Previous Release: 5524 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5525 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5526 Current Release: 5527 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5528 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5529 5530 55312) iASL Compiler/Disassembler and Tools: 5532 5533iASL/Disassembler: Fixed several issues with the definition of the ACPI 55345.0 RASF table (RAS Feature Table). This change incorporates late changes 5535that were made to the ACPI 5.0 specification. 5536 5537iASL/Disassembler: Added full support for the following new ACPI tables: 5538 1) The MTMR table (MID Timer Table) 5539 2) The VRTC table (Virtual Real Time Clock Table). 5540Includes header file, disassembler, table compiler, and template support 5541for both tables. 5542 5543iASL: Implemented compile-time validation of package objects returned by 5544predefined names. This new feature validates static package objects 5545returned by the various predefined names defined to return packages. Both 5546object types and package lengths are validated, for both parent packages 5547and sub-packages, if any. The code is similar in structure and behavior 5548to 5549the runtime repair mechanism within the AML interpreter and uses the 5550existing predefined name information table. Adds a new file, aslprepkg.c. 5551ACPICA BZ 938. 5552 5553iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5554This feature detects a binary file with a valid ACPI table header and 5555invokes the disassembler automatically. Eliminates the need to 5556specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5557 5558iASL/Disassembler: Added several warnings for the case where there are 5559unresolved control methods during the disassembly. This can potentially 5560cause errors when the output file is compiled, because the disassembler 5561assumes zero method arguments in these cases (it cannot determine the 5562actual number of arguments without resolution/definition of the method). 5563 5564Debugger: Added support to display all resources with a single command. 5565Invocation of the resources command with no arguments will now display 5566all 5567resources within the current namespace. 5568 5569AcpiHelp: Added descriptive text for each ACPICA exception code displayed 5570via the -e option. 5571 5572---------------------------------------- 557317 January 2013. Summary of changes for version 20130117: 5574 55751) ACPICA Kernel-resident Subsystem: 5576 5577Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5578return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5579objects to return a package containing one integer, most BIOS code 5580returns 5581two integers and the previous code reflects that. However, we also need 5582to 5583support BIOS code that actually implements to the ACPI spec, and this 5584change reflects this. 5585 5586Fixed two issues with the ACPI_DEBUG_PRINT macros: 55871) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5588C compilers that require this support. 55892) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5590ACPI_DEBUG is already used by many of the various hosts. 5591 5592Updated all ACPICA copyrights and signons to 2013. Added the 2013 5593copyright to all module headers and signons, including the standard Linux 5594header. This affects virtually every file in the ACPICA core subsystem, 5595iASL compiler, all ACPICA utilities, and the test suites. 5596 5597Example Code and Data Size: These are the sizes for the OS-independent 5598acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5599debug version of the code includes the debug output trace mechanism and 5600has a much larger code and data size. 5601 5602 Previous Release: 5603 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5604 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5605 Current Release: 5606 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5607 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5608 5609 56102) iASL Compiler/Disassembler and Tools: 5611 5612Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5613prevent a possible fault on some hosts. Some C libraries modify the arg 5614pointer parameter to vfprintf making it difficult to call it twice in the 5615AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5616does not affect the Windows OSL since the Win C library does not modify 5617the arg pointer. Chao Guan, Bob Moore. 5618 5619iASL: Fixed a possible infinite loop when the maximum error count is 5620reached. If an output file other than the .AML file is specified (such as 5621a listing file), and the maximum number of errors is reached, do not 5622attempt to flush data to the output file(s) as the compiler is aborting. 5623This can cause an infinite loop as the max error count code essentially 5624keeps calling itself. 5625 5626iASL/Disassembler: Added an option (-in) to ignore NOOP 5627opcodes/operators. 5628Implemented for both the compiler and the disassembler. Often, the NOOP 5629opcode is used as padding for packages that are changed dynamically by 5630the 5631BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5632errors. This option causes the disassembler to ignore all NOOP opcodes 5633(0xA3), and it also causes the compiler to ignore all ASL source code 5634NOOP 5635statements as well. 5636 5637Debugger: Enhanced the Sleep command to execute all sleep states. This 5638change allows Sleep to be invoked with no arguments and causes the 5639debugger to execute all of the sleep states, 0-5, automatically. 5640 5641---------------------------------------- 564220 December 2012. Summary of changes for version 20121220: 5643 56441) ACPICA Kernel-resident Subsystem: 5645 5646Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5647alternate entry point for AcpiWalkResources and improves the usability of 5648the resource manager by accepting as input a buffer containing the output 5649of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5650input buffer is not deleted by this interface so that it can be used by 5651the host later. See the ACPICA reference for details. 5652 5653Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5654(DSDT version < 2). The constant will be truncated and this warning 5655reflects that behavior. 5656 5657Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5658ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5659both get and set the new wake bit in these descriptors, separately from 5660the existing share bit. Reported by Aaron Lu. 5661 5662Interpreter: Fix Store() when an implicit conversion is not possible. For 5663example, in the cases such as a store of a string to an existing package 5664object, implement the store as a CopyObject(). This is a small departure 5665from the ACPI specification which states that the control method should 5666be 5667aborted in this case. However, the ASLTS suite depends on this behavior. 5668 5669Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5670macros: check if debug output is currently enabled as soon as possible to 5671minimize performance impact if debug is in fact not enabled. 5672 5673Source code restructuring: Cleanup to improve modularity. The following 5674new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5675psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5676Associated makefiles and project files have been updated. 5677 5678Changed an exception code for LoadTable operator. For the case where one 5679of the input strings is too long, change the returned exception code from 5680AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5681 5682Fixed a possible memory leak in dispatcher error path. On error, delete 5683the mutex object created during method mutex creation. Reported by 5684tim.gardner@canonical.com. 5685 5686Example Code and Data Size: These are the sizes for the OS-independent 5687acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5688debug version of the code includes the debug output trace mechanism and 5689has a much larger code and data size. 5690 5691 Previous Release: 5692 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5693 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5694 Current Release: 5695 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5696 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5697 5698 56992) iASL Compiler/Disassembler and Tools: 5700 5701iASL: Disallow a method call as argument to the ObjectType ASL operator. 5702This change tracks an errata to the ACPI 5.0 document. The AML grammar 5703will not allow the interpreter to differentiate between a method and a 5704method invocation when these are used as an argument to the ObjectType 5705operator. The ACPI specification change is to disallow a method 5706invocation 5707(UserTerm) for the ObjectType operator. 5708 5709Finish support for the TPM2 and CSRT tables in the headers, table 5710compiler, and disassembler. 5711 5712Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5713always expires immediately if the semaphore is not available. The 5714original 5715code was using a relative-time timeout, but sem_timedwait requires the 5716use 5717of an absolute time. 5718 5719iASL: Added a remark if the Timer() operator is used within a 32-bit 5720table. This operator returns a 64-bit time value that will be truncated 5721within a 32-bit table. 5722 5723iASL Source code restructuring: Cleanup to improve modularity. The 5724following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5725aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5726been updated. 5727 5728 5729---------------------------------------- 573014 November 2012. Summary of changes for version 20121114: 5731 57321) ACPICA Kernel-resident Subsystem: 5733 5734Implemented a performance enhancement for ACPI/AML Package objects. This 5735change greatly increases the performance of Package objects within the 5736interpreter. It changes the processing of reference counts for packages 5737by 5738optimizing for the most common case where the package sub-objects are 5739either Integers, Strings, or Buffers. Increases the overall performance 5740of 5741the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 57422X.) 5743Chao Guan. ACPICA BZ 943. 5744 5745Implemented and deployed common macros to extract flag bits from resource 5746descriptors. Improves readability and maintainability of the code. Fixes 5747a 5748problem with the UART serial bus descriptor for the number of data bits 5749flags (was incorrectly 2 bits, should be 3). 5750 5751Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5752of the macros and changed the SETx macros to the style of (destination, 5753source). Also added ACPI_CASTx companion macros. Lv Zheng. 5754 5755Example Code and Data Size: These are the sizes for the OS-independent 5756acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5757debug version of the code includes the debug output trace mechanism and 5758has a much larger code and data size. 5759 5760 Previous Release: 5761 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5762 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5763 Current Release: 5764 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5765 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5766 5767 57682) iASL Compiler/Disassembler and Tools: 5769 5770Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5771adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5772Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5773 5774Disassembler: Fixed a problem with external declaration generation. Fixes 5775a problem where an incorrect pathname could be generated for an external 5776declaration if the original reference to the object includes leading 5777carats (^). ACPICA BZ 984. 5778 5779Debugger: Completed a major update for the Disassemble<method> command. 5780This command was out-of-date and did not properly disassemble control 5781methods that had any reasonable complexity. This fix brings the command 5782up 5783to the same level as the rest of the disassembler. Adds one new file, 5784dmdeferred.c, which is existing code that is now common with the main 5785disassembler and the debugger disassemble command. ACPICA MZ 978. 5786 5787iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5788Newer versions of Bison emit this prototype, so moved the prototype out 5789of 5790the iASL header to where it is actually used in order to avoid a 5791duplicate 5792declaration. 5793 5794iASL/Tools: Standardized use of the stream I/O functions: 5795 1) Ensure check for I/O error after every fopen/fread/fwrite 5796 2) Ensure proper order of size/count arguments for fread/fwrite 5797 3) Use test of (Actual != Requested) after all fwrite, and most fread 5798 4) Standardize I/O error messages 5799Improves reliability and maintainability of the code. Bob Moore, Lv 5800Zheng. 5801ACPICA BZ 981. 5802 5803Disassembler: Prevent duplicate External() statements. During generation 5804of external statements, detect similar pathnames that are actually 5805duplicates such as these: 5806 External (\ABCD) 5807 External (ABCD) 5808Remove all leading '\' characters from pathnames during the external 5809statement generation so that duplicates will be detected and tossed. 5810ACPICA BZ 985. 5811 5812Tools: Replace low-level I/O with stream I/O functions. Replace 5813open/read/write/close with the stream I/O equivalents 5814fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5815Moore. 5816 5817AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5818name header so that AcpiXtract recognizes the output file/table. 5819 5820iASL: Remove obsolete -2 option flag. Originally intended to force the 5821compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5822and the entire concept is now obsolete. 5823 5824---------------------------------------- 582518 October 2012. Summary of changes for version 20121018: 5826 5827 58281) ACPICA Kernel-resident Subsystem: 5829 5830Updated support for the ACPI 5.0 MPST table. Fixes some problems 5831introduced by late changes to the table as it was added to the ACPI 5.0 5832specification. Includes header, disassembler, and data table compiler 5833support as well as a new version of the MPST template. 5834 5835AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 58365.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5837methods: _HID, _CID, and _UID. 5838 5839Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5840ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5841name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5842names for their various drivers. Affects the AcpiGetObjectInfo external 5843interface, and other internal interfaces as well. 5844 5845Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5846This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5847on machines that support non-aligned transfers. Optimizes for this case 5848rather than using a strncpy. With assistance from Zheng Lv. 5849 5850Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5851error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5852 5853Added a new debug print message for AML mutex objects that are force- 5854released. At control method termination, any currently acquired mutex 5855objects are force-released. Adds a new debug-only message for each one 5856that is released. 5857 5858Audited/updated all ACPICA return macros and the function debug depth 5859counter: 1) Ensure that all functions that use the various TRACE macros 5860also use the appropriate ACPICA return macros. 2) Ensure that all normal 5861return statements surround the return expression (value) with parens to 5862ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5863Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5864 5865Global source code changes/maintenance: All extra lines at the start and 5866end of each source file have been removed for consistency. Also, within 5867comments, all new sentences start with a single space instead of a double 5868space, again for consistency across the code base. 5869 5870Example Code and Data Size: These are the sizes for the OS-independent 5871acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5872debug version of the code includes the debug output trace mechanism and 5873has a much larger code and data size. 5874 5875 Previous Release: 5876 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5877 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5878 Current Release: 5879 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5880 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5881 5882 58832) iASL Compiler/Disassembler and Tools: 5884 5885AcpiExec: Improved the algorithm used for memory leak/corruption 5886detection. Added some intelligence to the code that maintains the global 5887list of allocated memory. The list is now ordered by allocated memory 5888address, significantly improving performance. When running AcpiExec on 5889the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5890on the platform and/or the environment. Note, this performance 5891enhancement affects the AcpiExec utility only, not the kernel-resident 5892ACPICA code. 5893 5894Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5895the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5896incorrect table offset reported for invalid opcodes. Report the original 589732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5898 5899Disassembler: Enhanced the -vt option to emit the binary table data in 5900hex format to assist with debugging. 5901 5902Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5903size of file structure. Colin Ian King. 5904 5905---------------------------------------- 590613 September 2012. Summary of changes for version 20120913: 5907 5908 59091) ACPICA Kernel-resident Subsystem: 5910 5911ACPI 5.0: Added two new notify types for the Hardware Error Notification 5912Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5913and 5914MCE(6). 5915 5916Table Manager: Merged/removed duplicate code in the root table resize 5917functions. One function is external, the other is internal. Lv Zheng, 5918ACPICA 5919BZ 846. 5920 5921Makefiles: Completely removed the obsolete "Linux" makefiles under 5922acpica/generate/linux. These makefiles are obsolete and have been 5923replaced 5924by 5925the generic unix makefiles under acpica/generate/unix. 5926 5927Makefiles: Ensure that binary files always copied properly. Minor rule 5928change 5929to ensure that the final binary output files are always copied up to the 5930appropriate binary directory (bin32 or bin64.) 5931 5932Example Code and Data Size: These are the sizes for the OS-independent 5933acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5934debug 5935version of the code includes the debug output trace mechanism and has a 5936much 5937larger code and data size. 5938 5939 Previous Release: 5940 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5941 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5942 Current Release: 5943 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5944 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5945 5946 59472) iASL Compiler/Disassembler and Tools: 5948 5949Disassembler: Fixed a possible fault during the disassembly of resource 5950descriptors when a second parse is required because of the invocation of 5951external control methods within the table. With assistance from 5952adq@lidskialf.net. ACPICA BZ 976. 5953 5954iASL: Fixed a namepath optimization problem. An error can occur if the 5955parse 5956node that contains the namepath to be optimized does not have a parent 5957node 5958that is a named object. This change fixes the problem. 5959 5960iASL: Fixed a regression where the AML file is not deleted on errors. The 5961AML 5962output file should be deleted if there are any errors during the 5963compiler. 5964The 5965only exception is if the -f (force output) option is used. ACPICA BZ 974. 5966 5967iASL: Added a feature to automatically increase internal line buffer 5968sizes. 5969Via realloc(), automatically increase the internal line buffer sizes as 5970necessary to support very long source code lines. The current version of 5971the 5972preprocessor requires a buffer long enough to contain full source code 5973lines. 5974This change increases the line buffer(s) if the input lines go beyond the 5975current buffer size. This eliminates errors that occurred when a source 5976code 5977line was longer than the buffer. 5978 5979iASL: Fixed a problem with constant folding in method declarations. The 5980SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5981if a 5982Type3 opcode was used. 5983 5984Debugger: Improved command help support. For incorrect argument count, 5985display 5986full help for the command. For help command itself, allow an argument to 5987specify a command. 5988 5989Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5990errors during execution of the suite. Guan Chao. 5991 5992---------------------------------------- 599316 August 2012. Summary of changes for version 20120816: 5994 5995 59961) ACPICA Kernel-resident Subsystem: 5997 5998Removed all use of the deprecated _GTS and _BFS predefined methods. The 5999_GTS 6000(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6001deprecated and will probably be removed from the ACPI specification. 6002Windows 6003does not invoke them, and reportedly never will. The final nail in the 6004coffin 6005is that the ACPI specification states that these methods must be run with 6006interrupts off, which is not going to happen in a kernel interpreter. 6007Note: 6008Linux has removed all use of the methods also. It was discovered that 6009invoking these functions caused failures on some machines, probably 6010because 6011they were never tested since Windows does not call them. Affects two 6012external 6013interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6014ACPICA BZ 969. 6015 6016Implemented support for complex bit-packed buffers returned from the _PLD 6017(Physical Location of Device) predefined method. Adds a new external 6018interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6019C 6020structure. Note: C Bitfields cannot be used for this type of predefined 6021structure since the memory layout of individual bitfields is not defined 6022by 6023the C language. In addition, there are endian concerns where a compiler 6024will 6025change the bitfield ordering based on the machine type. The new ACPICA 6026interface eliminates these issues, and should be called after _PLD is 6027executed. ACPICA BZ 954. 6028 6029Implemented a change to allow a scope change to root (via "Scope (\)") 6030during 6031execution of module-level ASL code (code that is executed at table load 6032time.) Lin Ming. 6033 6034Added the Windows8/Server2012 string for the _OSI method. This change 6035adds 6036a 6037new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 60382012. 6039 6040Added header support for the new ACPI tables DBG2 (Debug Port Table Type 60412) 6042and CSRT (Core System Resource Table). 6043 6044Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6045names. This simplifies access to the buffers returned by these predefined 6046names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6047 6048GPE support: Removed an extraneous parameter from the various low-level 6049internal GPE functions. Tang Feng. 6050 6051Removed the linux makefiles from the unix packages. The generate/linux 6052makefiles are obsolete and have been removed from the unix tarball 6053release 6054packages. The replacement makefiles are under generate/unix, and there is 6055a 6056top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6057 6058Updates for Unix makefiles: 60591) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 60602) Update linker flags (move to end of command line) for AcpiExec 6061utility. 6062Guan Chao. 6063 6064Split ACPICA initialization functions to new file, utxfinit.c. Split from 6065utxface.c to improve modularity and reduce file size. 6066 6067Example Code and Data Size: These are the sizes for the OS-independent 6068acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6069debug version of the code includes the debug output trace mechanism and 6070has a 6071much larger code and data size. 6072 6073 Previous Release: 6074 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6075 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6076 Current Release: 6077 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6078 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6079 6080 60812) iASL Compiler/Disassembler and Tools: 6082 6083iASL: Fixed a problem with constant folding for fixed-length constant 6084expressions. The constant-folding code was not being invoked for constant 6085expressions that allow the use of type 3/4/5 opcodes to generate 6086constants 6087for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6088result 6089in the generation of invalid AML bytecode. ACPICA BZ 970. 6090 6091iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6092apparently automatically emit some of the necessary externals. This 6093change 6094handles these versions in order to eliminate generation warnings. 6095 6096Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6097 6098Disassembler: Add support to decode _PLD buffers. The decoded buffer 6099appears 6100within comments in the output file. 6101 6102Debugger: Fixed a regression with the "Threads" command where 6103AE_BAD_PARAMETER was always returned. 6104 6105---------------------------------------- 610611 July 2012. Summary of changes for version 20120711: 6107 61081) ACPICA Kernel-resident Subsystem: 6109 6110Fixed a possible fault in the return package object repair code. Fixes a 6111problem that can occur when a lone package object is wrapped with an 6112outer 6113package object in order to force conformance to the ACPI specification. 6114Can 6115affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6116_DLM, 6117_CSD, _PSD, _TSD. 6118 6119Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6120PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6121ARB_DIS bit must be implemented in the host-dependent C3 processor power 6122state 6123support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6124both 6125Intel and other vendors. (for Intel: ICH4-M and earlier) 6126 6127This change removes the code to disable/enable bus master arbitration 6128during 6129suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6130causes 6131resume problems on some machines. The change has been in use for over 6132seven 6133years within Linux. 6134 6135Implemented two new external interfaces to support host-directed dynamic 6136ACPI 6137table load and unload. They are intended to simplify the host 6138implementation 6139of hot-plug support: 6140 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6141 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6142table. 6143See the ACPICA reference for additional details. Adds one new file, 6144components/tables/tbxfload.c 6145 6146Implemented and deployed two new interfaces for errors and warnings that 6147are 6148known to be caused by BIOS/firmware issues: 6149 AcpiBiosError: Prints "ACPI Firmware Error" message. 6150 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6151Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6152table 6153and FADT errors. Additional deployment to be completed as appropriate in 6154the 6155future. The associated conditional macros are ACPI_BIOS_ERROR and 6156ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6157ACPICA 6158BZ 6159843. 6160 6161Implicit notify support: ensure that no memory allocation occurs within a 6162critical region. This fix moves a memory allocation outside of the time 6163that a 6164spinlock is held. Fixes issues on systems that do not allow this 6165behavior. 6166Jung-uk Kim. 6167 6168Split exception code utilities and tables into a new file, 6169utilities/utexcep.c 6170 6171Example Code and Data Size: These are the sizes for the OS-independent 6172acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6173debug 6174version of the code includes the debug output trace mechanism and has a 6175much 6176larger code and data size. 6177 6178 Previous Release: 6179 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6180 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6181 Current Release: 6182 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6183 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6184 6185 61862) iASL Compiler/Disassembler and Tools: 6187 6188iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6189of 61900. Jung-uk Kim. 6191 6192Debugger: Enhanced the "tables" command to emit additional information 6193about 6194the current set of ACPI tables, including the owner ID and flags decode. 6195 6196Debugger: Reimplemented the "unload" command to use the new 6197AcpiUnloadParentTable external interface. This command was disable 6198previously 6199due to need for an unload interface. 6200 6201AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6202option 6203will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6204 6205---------------------------------------- 620620 June 2012. Summary of changes for version 20120620: 6207 6208 62091) ACPICA Kernel-resident Subsystem: 6210 6211Implemented support to expand the "implicit notify" feature to allow 6212multiple 6213devices to be notified by a single GPE. This feature automatically 6214generates a 6215runtime device notification in the absence of a BIOS-provided GPE control 6216method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6217notify is 6218provided by ACPICA for Windows compatibility, and is a workaround for 6219BIOS 6220AML 6221code errors. See the description of the AcpiSetupGpeForWake interface in 6222the 6223APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6224 6225Changed some comments and internal function names to simplify and ensure 6226correctness of the Linux code translation. No functional changes. 6227 6228Example Code and Data Size: These are the sizes for the OS-independent 6229acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6230debug 6231version of the code includes the debug output trace mechanism and has a 6232much 6233larger code and data size. 6234 6235 Previous Release: 6236 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6237 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6238 Current Release: 6239 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6240 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6241 6242 62432) iASL Compiler/Disassembler and Tools: 6244 6245Disassembler: Added support to emit short, commented descriptions for the 6246ACPI 6247predefined names in order to improve the readability of the disassembled 6248output. ACPICA BZ 959. Changes include: 6249 1) Emit descriptions for all standard predefined names (_INI, _STA, 6250_PRW, 6251etc.) 6252 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6253 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6254etc.) 6255 6256AcpiSrc: Fixed several long-standing Linux code translation issues. 6257Argument 6258descriptions in function headers are now translated properly to lower 6259case 6260and 6261underscores. ACPICA BZ 961. Also fixes translation problems such as 6262these: 6263(old -> new) 6264 i_aSL -> iASL 6265 00-7_f -> 00-7F 6266 16_k -> 16K 6267 local_fADT -> local_FADT 6268 execute_oSI -> execute_OSI 6269 6270iASL: Fixed a problem where null bytes were inadvertently emitted into 6271some 6272listing files. 6273 6274iASL: Added the existing debug options to the standard help screen. There 6275are 6276no longer two different help screens. ACPICA BZ 957. 6277 6278AcpiHelp: Fixed some typos in the various predefined name descriptions. 6279Also 6280expand some of the descriptions where appropriate. 6281 6282iASL: Fixed the -ot option (display compile times/statistics). Was not 6283working 6284properly for standard output; only worked for the debug file case. 6285 6286---------------------------------------- 628718 May 2012. Summary of changes for version 20120518: 6288 6289 62901) ACPICA Core Subsystem: 6291 6292Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6293defined 6294to block until asynchronous events such as notifies and GPEs have 6295completed. 6296Within ACPICA, it is only called before a notify or GPE handler is 6297removed/uninstalled. It also may be useful for the host OS within related 6298drivers such as the Embedded Controller driver. See the ACPICA reference 6299for 6300additional information. ACPICA BZ 868. 6301 6302ACPI Tables: Added a new error message for a possible overflow failure 6303during 6304the conversion of FADT 32-bit legacy register addresses to internal 6305common 630664- 6307bit GAS structure representation. The GAS has a one-byte "bit length" 6308field, 6309thus limiting the register length to 255 bits. ACPICA BZ 953. 6310 6311Example Code and Data Size: These are the sizes for the OS-independent 6312acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6313debug 6314version of the code includes the debug output trace mechanism and has a 6315much 6316larger code and data size. 6317 6318 Previous Release: 6319 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6320 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6321 Current Release: 6322 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6323 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6324 6325 63262) iASL Compiler/Disassembler and Tools: 6327 6328iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6329macro. 6330This keyword was added late in the ACPI 5.0 release cycle and was not 6331implemented until now. 6332 6333Disassembler: Added support for Operation Region externals. Adds missing 6334support for operation regions that are defined in another table, and 6335referenced locally via a Field or BankField ASL operator. Now generates 6336the 6337correct External statement. 6338 6339Disassembler: Several additional fixes for the External() statement 6340generation 6341related to some ASL operators. Also, order the External() statements 6342alphabetically in the disassembler output. Fixes the External() 6343generation 6344for 6345the Create* field, Alias, and Scope operators: 6346 1) Create* buffer field operators - fix type mismatch warning on 6347disassembly 6348 2) Alias - implement missing External support 6349 3) Scope - fix to make sure all necessary externals are emitted. 6350 6351iASL: Improved pathname support. For include files, merge the prefix 6352pathname 6353with the file pathname and eliminate unnecessary components. Convert 6354backslashes in all pathnames to forward slashes, for readability. Include 6355file 6356pathname changes affect both #include and Include() type operators. 6357 6358iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6359end 6360of a valid line by inserting a newline and then returning the EOF during 6361the 6362next call to GetNextLine. Prevents the line from being ignored due to EOF 6363condition. 6364 6365iASL: Implemented some changes to enhance the IDE support (-vi option.) 6366Error 6367and Warning messages are now correctly recognized for both the source 6368code 6369browser and the global error and warning counts. 6370 6371---------------------------------------- 637220 April 2012. Summary of changes for version 20120420: 6373 6374 63751) ACPICA Core Subsystem: 6376 6377Implemented support for multiple notify handlers. This change adds 6378support 6379to 6380allow multiple system and device notify handlers on Device, Thermal Zone, 6381and 6382Processor objects. This can simplify the host OS notification 6383implementation. 6384Also re-worked and restructured the entire notify support code to 6385simplify 6386handler installation, handler removal, notify event queuing, and notify 6387dispatch to handler(s). Note: there can still only be two global notify 6388handlers - one for system notifies and one for device notifies. There are 6389no 6390changes to the existing handler install/remove interfaces. Lin Ming, Bob 6391Moore, Rafael Wysocki. 6392 6393Fixed a regression in the package repair code where the object reference 6394count was calculated incorrectly. Regression was introduced in the commit 6395"Support to add Package wrappers". 6396 6397Fixed a couple possible memory leaks in the AML parser, in the error 6398recovery 6399path. Jesper Juhl, Lin Ming. 6400 6401Example Code and Data Size: These are the sizes for the OS-independent 6402acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6403debug version of the code includes the debug output trace mechanism and 6404has a 6405much larger code and data size. 6406 6407 Previous Release: 6408 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6409 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6410 Current Release: 6411 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6412 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6413 6414 64152) iASL Compiler/Disassembler and Tools: 6416 6417iASL: Fixed a problem with the resource descriptor support where the 6418length 6419of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6420included in cumulative descriptor offset, resulting in incorrect values 6421for 6422resource tags within resource descriptors appearing after a 6423StartDependent* 6424descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6425 6426iASL and Preprocessor: Implemented full support for the #line directive 6427to 6428correctly track original source file line numbers through the .i 6429preprocessor 6430output file - for error and warning messages. 6431 6432iASL: Expand the allowable byte constants for address space IDs. 6433Previously, 6434the allowable range was 0x80-0xFF (user-defined spaces), now the range is 64350x0A-0xFF to allow for custom and new IDs without changing the compiler. 6436 6437iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6438 6439iASL: Add option to completely disable the preprocessor (-Pn). 6440 6441iASL: Now emit all error/warning messages to standard error (stderr) by 6442default (instead of the previous stdout). 6443 6444ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6445Update 6446for resource descriptor offset fix above. Update/cleanup error output 6447routines. Enable and send iASL errors/warnings to an error logfile 6448(error.txt). Send all other iASL output to a logfile (compiler.txt). 6449Fixed 6450several extraneous "unrecognized operator" messages. 6451 6452---------------------------------------- 645320 March 2012. Summary of changes for version 20120320: 6454 6455 64561) ACPICA Core Subsystem: 6457 6458Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6459(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6460apparently 6461does not execute these methods, and therefore these methods are often 6462untested. It has been seen on some systems where the execution of these 6463methods causes errors and also prevents the machine from entering S5. It 6464is 6465therefore suggested that host operating systems do not execute these 6466methods 6467by default. In the future, perhaps these methods can be optionally 6468executed 6469based on the age of the system and/or what is the newest version of 6470Windows 6471that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6472and 6473AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6474Ming. 6475 6476Fixed a problem where the length of the local/common FADT was set too 6477early. 6478The local FADT table length cannot be set to the common length until the 6479original length has been examined. There is code that checks the table 6480length 6481and sets various fields appropriately. This can affect older machines 6482with 6483early FADT versions. For example, this can cause inadvertent writes to 6484the 6485CST_CNT register. Julian Anastasov. 6486 6487Fixed a mapping issue related to a physical table override. Use the 6488deferred 6489mapping mechanism for tables loaded via the physical override OSL 6490interface. 6491This allows for early mapping before the virtual memory manager is 6492available. 6493Thomas Renninger, Bob Moore. 6494 6495Enhanced the automatic return-object repair code: Repair a common problem 6496with 6497predefined methods that are defined to return a variable-length Package 6498of 6499sub-objects. If there is only one sub-object, some BIOS ASL code 6500mistakenly 6501simply returns the single object instead of a Package with one sub- 6502object. 6503This new support will repair this error by wrapping a Package object 6504around 6505the original object, creating the correct and expected Package with one 6506sub- 6507object. Names that can be repaired in this manner include: _ALR, _CSD, 6508_HPX, 6509_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6510939. 6511 6512Changed the exception code returned for invalid ACPI paths passed as 6513parameters to external interfaces such as AcpiEvaluateObject. Was 6514AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6515 6516Example Code and Data Size: These are the sizes for the OS-independent 6517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6518debug 6519version of the code includes the debug output trace mechanism and has a 6520much 6521larger code and data size. 6522 6523 Previous Release: 6524 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6525 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6526 Current Release: 6527 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6528 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6529 6530 65312) iASL Compiler/Disassembler and Tools: 6532 6533iASL: Added the infrastructure and initial implementation of a integrated 6534C- 6535like preprocessor. This will simplify BIOS development process by 6536eliminating 6537the need for a separate preprocessing step during builds. On Windows, it 6538also 6539eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6540features including full #define() macro support are still under 6541development. 6542These preprocessor directives are supported: 6543 #define 6544 #elif 6545 #else 6546 #endif 6547 #error 6548 #if 6549 #ifdef 6550 #ifndef 6551 #include 6552 #pragma message 6553 #undef 6554 #warning 6555In addition, these new command line options are supported: 6556 -D <symbol> Define symbol for preprocessor use 6557 -li Create preprocessed output file (*.i) 6558 -P Preprocess only and create preprocessor output file (*.i) 6559 6560Table Compiler: Fixed a problem where the equals operator within an 6561expression 6562did not work properly. 6563 6564Updated iASL to use the current versions of Bison/Flex. Updated the 6565Windows 6566project file to invoke these tools from the standard location. ACPICA BZ 6567904. 6568Versions supported: 6569 Flex for Windows: V2.5.4 6570 Bison for Windows: V2.4.1 6571 6572---------------------------------------- 657315 February 2012. Summary of changes for version 20120215: 6574 6575 65761) ACPICA Core Subsystem: 6577 6578There have been some major changes to the sleep/wake support code, as 6579described below (a - e). 6580 6581a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6582AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6583AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6584the 6585time the _BFS method is called and the _WAK method is called. NOTE: all 6586hosts 6587must update their wake/resume code or else sleep/wake will not work 6588properly. 6589Rafael Wysocki. 6590 6591b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6592_WAK 6593method. Some machines require that the GPEs are enabled before the _WAK 6594method 6595is executed. Thomas Renninger. 6596 6597c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6598bit. 6599Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6600to 6601determine whether the system is rebooting or resuming. Matthew Garrett. 6602 6603d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6604Sleep) to 6605match the ACPI specification requirement. Rafael Wysocki. 6606 6607e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6608registers within the V5 FADT. This support adds two new files: 6609hardware/hwesleep.c implements the support for the new registers. Moved 6610all 6611sleep/wake external interfaces to hardware/hwxfsleep.c. 6612 6613 6614Added a new OSL interface for ACPI table overrides, 6615AcpiOsPhysicalTableOverride. This interface allows the host to override a 6616table via a physical address, instead of the logical address required by 6617AcpiOsTableOverride. This simplifies the host implementation. Initial 6618implementation by Thomas Renninger. The ACPICA implementation creates a 6619single 6620shared function for table overrides that attempts both a logical and a 6621physical override. 6622 6623Expanded the OSL memory read/write interfaces to 64-bit data 6624(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6625transfer support for GAS register structures passed to AcpiRead and 6626AcpiWrite. 6627 6628Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6629custom 6630build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6631model. 6632See the ACPICA reference for details. ACPICA BZ 942. This option removes 6633about 663410% of the code and 5% of the static data, and the following hardware 6635ACPI 6636features become unavailable: 6637 PM Event and Control registers 6638 SCI interrupt (and handler) 6639 Fixed Events 6640 General Purpose Events (GPEs) 6641 Global Lock 6642 ACPI PM timer 6643 FACS table (Waking vectors and Global Lock) 6644 6645Updated the unix tarball directory structure to match the ACPICA git 6646source 6647tree. This ensures that the generic unix makefiles work properly (in 6648generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6649867. 6650 6651Updated the return value of the _REV predefined method to integer value 5 6652to 6653reflect ACPI 5.0 support. 6654 6655Moved the external ACPI PM timer interface prototypes to the public 6656acpixf.h 6657file where they belong. 6658 6659Example Code and Data Size: These are the sizes for the OS-independent 6660acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6661debug 6662version of the code includes the debug output trace mechanism and has a 6663much 6664larger code and data size. 6665 6666 Previous Release: 6667 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6668 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6669 Current Release: 6670 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6671 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6672 6673 66742) iASL Compiler/Disassembler and Tools: 6675 6676Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6677descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6678incorrectly displayed. 6679 6680AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6681specification. 6682 6683---------------------------------------- 668411 January 2012. Summary of changes for version 20120111: 6685 6686 66871) ACPICA Core Subsystem: 6688 6689Implemented a new mechanism to allow host device drivers to check for 6690address 6691range conflicts with ACPI Operation Regions. Both SystemMemory and 6692SystemIO 6693address spaces are supported. A new external interface, 6694AcpiCheckAddressRange, 6695allows drivers to check an address range against the ACPI namespace. See 6696the 6697ACPICA reference for additional details. Adds one new file, 6698utilities/utaddress.c. Lin Ming, Bob Moore. 6699 6700Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6701Control 6702and 6703Status registers, update the ACPI 5.0 flags, and update internal data 6704structures to handle an FADT larger than 256 bytes. The size of the ACPI 67055.0 6706FADT is 268 bytes. 6707 6708Updated all ACPICA copyrights and signons to 2012. Added the 2012 6709copyright to 6710all module headers and signons, including the standard Linux header. This 6711affects virtually every file in the ACPICA core subsystem, iASL compiler, 6712and 6713all ACPICA utilities. 6714 6715Example Code and Data Size: These are the sizes for the OS-independent 6716acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6717debug 6718version of the code includes the debug output trace mechanism and has a 6719much 6720larger code and data size. 6721 6722 Previous Release: 6723 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6724 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6725 Current Release: 6726 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6727 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6728 6729 67302) iASL Compiler/Disassembler and Tools: 6731 6732Disassembler: fixed a problem with the automatic resource tag generation 6733support. Fixes a problem where the resource tags are inadvertently not 6734constructed if the table being disassembled contains external references 6735to 6736control methods. Moved the actual construction of the tags to after the 6737final 6738namespace is constructed (after 2nd parse is invoked due to external 6739control 6740method references.) ACPICA BZ 941. 6741 6742Table Compiler: Make all "generic" operators caseless. These are the 6743operators 6744like UINT8, String, etc. Making these caseless improves ease-of-use. 6745ACPICA BZ 6746934. 6747 6748---------------------------------------- 674923 November 2011. Summary of changes for version 20111123: 6750 67510) ACPI 5.0 Support: 6752 6753This release contains full support for the ACPI 5.0 specification, as 6754summarized below. 6755 6756Reduced Hardware Support: 6757------------------------- 6758 6759This support allows for ACPI systems without the usual ACPI hardware. 6760This 6761support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6762will 6763not attempt to initialize or use any of the usual ACPI hardware. Note, 6764when 6765this flag is set, all of the following ACPI hardware is assumed to be not 6766present and is not initialized or accessed: 6767 6768 General Purpose Events (GPEs) 6769 Fixed Events (PM1a/PM1b and PM Control) 6770 Power Management Timer and Console Buttons (power/sleep) 6771 Real-time Clock Alarm 6772 Global Lock 6773 System Control Interrupt (SCI) 6774 The FACS is assumed to be non-existent 6775 6776ACPI Tables: 6777------------ 6778 6779All new tables and updates to existing tables are fully supported in the 6780ACPICA headers (for use by device drivers), the disassembler, and the 6781iASL 6782Data Table Compiler. ACPI 5.0 defines these new tables: 6783 6784 BGRT /* Boot Graphics Resource Table */ 6785 DRTM /* Dynamic Root of Trust for Measurement table */ 6786 FPDT /* Firmware Performance Data Table */ 6787 GTDT /* Generic Timer Description Table */ 6788 MPST /* Memory Power State Table */ 6789 PCCT /* Platform Communications Channel Table */ 6790 PMTT /* Platform Memory Topology Table */ 6791 RASF /* RAS Feature table */ 6792 6793Operation Regions/SpaceIDs: 6794--------------------------- 6795 6796All new operation regions are fully supported by the iASL compiler, the 6797disassembler, and the ACPICA runtime code (for dispatch to region 6798handlers.) 6799The new operation region Space IDs are: 6800 6801 GeneralPurposeIo 6802 GenericSerialBus 6803 6804Resource Descriptors: 6805--------------------- 6806 6807All new ASL resource descriptors are fully supported by the iASL 6808compiler, 6809the 6810ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6811(including 6812all new predefined resource tags). New descriptors are: 6813 6814 FixedDma 6815 GpioIo 6816 GpioInt 6817 I2cSerialBus 6818 SpiSerialBus 6819 UartSerialBus 6820 6821ASL/AML Operators, New and Modified: 6822------------------------------------ 6823 6824One new operator is added, the Connection operator, which is used to 6825associate 6826a GeneralPurposeIo or GenericSerialBus resource descriptor with 6827individual 6828field objects within an operation region. Several new protocols are 6829associated 6830with the AccessAs operator. All are fully supported by the iASL compiler, 6831disassembler, and runtime ACPICA AML interpreter: 6832 6833 Connection // Declare Field Connection 6834attributes 6835 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6836 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6837Protocol 6838 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6839 RawDataBuffer // Data type for Vendor Data 6840fields 6841 6842Predefined ASL/AML Objects: 6843--------------------------- 6844 6845All new predefined objects/control-methods are supported by the iASL 6846compiler 6847and the ACPICA runtime validation/repair (arguments and return values.) 6848New 6849predefined names include the following: 6850 6851Standard Predefined Names (Objects or Control Methods): 6852 _AEI, _CLS, _CPC, _CWS, _DEP, 6853 _DLM, _EVT, _GCP, _CRT, _GWS, 6854 _HRV, _PRE, _PSE, _SRT, _SUB. 6855 6856Resource Tags (Names used to access individual fields within resource 6857descriptors): 6858 _DBT, _DPL, _DRS, _END, _FLC, 6859 _IOR, _LIN, _MOD, _PAR, _PHA, 6860 _PIN, _PPI, _POL, _RXL, _SLV, 6861 _SPE, _STB, _TXL, _VEN. 6862 6863ACPICA External Interfaces: 6864--------------------------- 6865 6866Several new interfaces have been defined for use by ACPI-related device 6867drivers and other host OS services: 6868 6869AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6870to 6871acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6872provided by the BIOS. They are intended to be used in conjunction with 6873the 6874ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6875mutual exclusion with the AML code/interpreter. 6876 6877AcpiGetEventResources: Returns the (formatted) resource descriptors as 6878defined 6879by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6880provides 6881resource descriptors associated with hardware-reduced platform events, 6882similar 6883to the AcpiGetCurrentResources interface. 6884 6885Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6886operation regions, information about the Connection() object and any 6887optional 6888length information is passed to the region handler within the Context 6889parameter. 6890 6891AcpiBufferToResource: This interface converts a raw AML buffer containing 6892a 6893resource template or resource descriptor to the ACPI_RESOURCE internal 6894format 6895suitable for use by device drivers. Can be used by an operation region 6896handler 6897to convert the Connection() buffer object into a ACPI_RESOURCE. 6898 6899Miscellaneous/Tools/TestSuites: 6900------------------------------- 6901 6902Support for extended _HID names (Four alpha characters instead of three). 6903Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6904Support for ACPI 5.0 features in the ASLTS test suite. 6905Fully updated documentation (ACPICA and iASL reference documents.) 6906 6907ACPI Table Definition Language: 6908------------------------------- 6909 6910Support for this language was implemented and released as a subsystem of 6911the 6912iASL compiler in 2010. (See the iASL compiler User Guide.) 6913 6914 6915Non-ACPI 5.0 changes for this release: 6916-------------------------------------- 6917 69181) ACPICA Core Subsystem: 6919 6920Fix a problem with operation region declarations where a failure can 6921occur 6922if 6923the region name and an argument that evaluates to an object (such as the 6924region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6925937. 6926 6927Do not abort an ACPI table load if an invalid space ID is found within. 6928This 6929will be caught later if the offending method is executed. ACPICA BZ 925. 6930 6931Fixed an issue with the FFixedHW space ID where the ID was not always 6932recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6933 6934Fixed a problem with the 32-bit generation of the unix-specific OSL 6935(osunixxf.c). Lin Ming, ACPICA BZ 936. 6936 6937Several changes made to enable generation with the GCC 4.6 compiler. 6938ACPICA BZ 6939935. 6940 6941New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6942Index/Bank 6943field registers out-of-range. 6944 69452) iASL Compiler/Disassembler and Tools: 6946 6947iASL: Implemented the __PATH__ operator, which returns the full pathname 6948of 6949the current source file. 6950 6951AcpiHelp: Automatically display expanded keyword information for all ASL 6952operators. 6953 6954Debugger: Add "Template" command to disassemble/dump resource template 6955buffers. 6956 6957Added a new master script to generate and execute the ASLTS test suite. 6958Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6959 6960iASL: Fix problem with listing generation during processing of the 6961Switch() 6962operator where AML listing was disabled until the entire Switch block was 6963completed. 6964 6965iASL: Improve support for semicolon statement terminators. Fix "invalid 6966character" message for some cases when the semicolon is used. Semicolons 6967are 6968now allowed after every <Term> grammar element. ACPICA BZ 927. 6969 6970iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6971923. 6972 6973Disassembler: Fix problem with disassembly of the DataTableRegion 6974operator 6975where an inadvertent "Unhandled deferred opcode" message could be 6976generated. 6977 69783) Example Code and Data Size 6979 6980These are the sizes for the OS-independent acpica.lib produced by the 6981Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6982includes the debug output trace mechanism and has a much larger code and 6983data 6984size. 6985 6986 Previous Release: 6987 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6988 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6989 Current Release: 6990 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6991 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6992 6993---------------------------------------- 699422 September 2011. Summary of changes for version 20110922: 6995 69960) ACPI 5.0 News: 6997 6998Support for ACPI 5.0 in ACPICA has been underway for several months and 6999will 7000be released at the same time that ACPI 5.0 is officially released. 7001 7002The ACPI 5.0 specification is on track for release in the next few 7003months. 7004 70051) ACPICA Core Subsystem: 7006 7007Fixed a problem where the maximum sleep time for the Sleep() operator was 7008intended to be limited to two seconds, but was inadvertently limited to 700920 7010seconds instead. 7011 7012Linux and Unix makefiles: Added header file dependencies to ensure 7013correct 7014generation of ACPICA core code and utilities. Also simplified the 7015makefiles 7016considerably through the use of the vpath variable to specify search 7017paths. 7018ACPICA BZ 924. 7019 70202) iASL Compiler/Disassembler and Tools: 7021 7022iASL: Implemented support to check the access length for all fields 7023created to 7024access named Resource Descriptor fields. For example, if a resource field 7025is 7026defined to be two bits, a warning is issued if a CreateXxxxField() is 7027used 7028with an incorrect bit length. This is implemented for all current 7029resource 7030descriptor names. ACPICA BZ 930. 7031 7032Disassembler: Fixed a byte ordering problem with the output of 24-bit and 703356- 7034bit integers. 7035 7036iASL: Fixed a couple of issues associated with variable-length package 7037objects. 1) properly handle constants like One, Ones, Zero -- do not make 7038a 7039VAR_PACKAGE when these are used as a package length. 2) Allow the 7040VAR_PACKAGE 7041opcode (in addition to PACKAGE) when validating object types for 7042predefined 7043names. 7044 7045iASL: Emit statistics for all output files (instead of just the ASL input 7046and 7047AML output). Includes listings, hex files, etc. 7048 7049iASL: Added -G option to the table compiler to allow the compilation of 7050custom 7051ACPI tables. The only part of a table that is required is the standard 705236- 7053byte 7054ACPI header. 7055 7056AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7057headers), 7058which also adds correct 64-bit support. Also, now all output filenames 7059are 7060completely lower case. 7061 7062AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7063loading table files. A warning is issued for any such tables. The only 7064exception is an FADT. This also fixes a possible fault when attempting to 7065load 7066non-AML tables. ACPICA BZ 932. 7067 7068AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7069a 7070missing table terminator could cause a fault when using the -p option. 7071 7072AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7073statistics. 7074 70753) Example Code and Data Size 7076 7077These are the sizes for the OS-independent acpica.lib produced by the 7078Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7079includes the debug output trace mechanism and has a much larger code and 7080data 7081size. 7082 7083 Previous Release (VC 9.0): 7084 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7085 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7086 Current Release (VC 9.0): 7087 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7088 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7089 7090 7091---------------------------------------- 709223 June 2011. Summary of changes for version 20110623: 7093 70941) ACPI CA Core Subsystem: 7095 7096Updated the predefined name repair mechanism to not attempt repair of a 7097_TSS 7098return object if a _PSS object is present. We can only sort the _TSS 7099return 7100package if there is no _PSS within the same scope. This is because if 7101_PSS 7102is 7103present, the ACPI specification dictates that the _TSS Power Dissipation 7104field 7105is to be ignored, and therefore some BIOSs leave garbage values in the 7106_TSS 7107Power field(s). In this case, it is best to just return the _TSS package 7108as- 7109is. Reported by, and fixed with assistance from Fenghua Yu. 7110 7111Added an option to globally disable the control method return value 7112validation 7113and repair. This runtime option can be used to disable return value 7114repair 7115if 7116this is causing a problem on a particular machine. Also added an option 7117to 7118AcpiExec (-dr) to set this disable flag. 7119 7120All makefiles and project files: Major changes to improve generation of 7121ACPICA 7122tools. ACPICA BZ 912: 7123 Reduce default optimization levels to improve compatibility 7124 For Linux, add strict-aliasing=0 for gcc 4 7125 Cleanup and simplify use of command line defines 7126 Cleanup multithread library support 7127 Improve usage messages 7128 7129Linux-specific header: update handling of THREAD_ID and pthread. For the 713032- 7131bit case, improve casting to eliminate possible warnings, especially with 7132the 7133acpica tools. 7134 7135Example Code and Data Size: These are the sizes for the OS-independent 7136acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7137debug 7138version of the code includes the debug output trace mechanism and has a 7139much 7140larger code and data size. 7141 7142 Previous Release (VC 9.0): 7143 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7144 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7145 Current Release (VC 9.0): 7146 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7147 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7148 71492) iASL Compiler/Disassembler and Tools: 7150 7151With this release, a new utility named "acpihelp" has been added to the 7152ACPICA 7153package. This utility summarizes the ACPI specification chapters for the 7154ASL 7155and AML languages. It generates under Linux/Unix as well as Windows, and 7156provides the following functionality: 7157 Find/display ASL operator(s) -- with description and syntax. 7158 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7159 Find/display ACPI predefined name(s) -- with description, number 7160 of arguments, and the return value data type. 7161 Find/display AML opcode name(s) -- with opcode, arguments, and 7162grammar. 7163 Decode/display AML opcode -- with opcode name, arguments, and 7164grammar. 7165 7166Service Layers: Make multi-thread support configurable. Conditionally 7167compile 7168the multi-thread support so that threading libraries will not be linked 7169if 7170not 7171necessary. The only tool that requires multi-thread support is AcpiExec. 7172 7173iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7174of 7175Bison appear to want the interface to yyerror to be a const char * (or at 7176least this is a problem when generating iASL on some systems.) ACPICA BZ 7177923 7178Pierre Lejeune. 7179 7180Tools: Fix for systems where O_BINARY is not defined. Only used for 7181Windows 7182versions of the tools. 7183 7184---------------------------------------- 718527 May 2011. Summary of changes for version 20110527: 7186 71871) ACPI CA Core Subsystem: 7188 7189ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7190table 7191signature. Now, only allow SSDT, OEMx, and a null signature. History: 7192 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7193 (PSDT is now obsolete.) 7194 2) We added support for OEMx tables, signature "OEM" plus a fourth 7195 "don't care" character. 7196 3) Valid tables were encountered with a null signature, so we just 7197 gave up on validating the signature, (05/2008). 7198 4) We encountered non-AML tables such as the MADT, which caused 7199 interpreter errors and kernel faults. So now, we once again allow 7200 only SSDT, OEMx, and now, also a null signature. (05/2011). 7201 7202Added the missing _TDL predefined name to the global name list in order 7203to 7204enable validation. Affects both the core ACPICA code and the iASL 7205compiler. 7206 7207Example Code and Data Size: These are the sizes for the OS-independent 7208acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7209debug 7210version of the code includes the debug output trace mechanism and has a 7211much 7212larger code and data size. 7213 7214 Previous Release (VC 9.0): 7215 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7216 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7217 Current Release (VC 9.0): 7218 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7219 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7220 72212) iASL Compiler/Disassembler and Tools: 7222 7223Debugger/AcpiExec: Implemented support for "complex" method arguments on 7224the 7225debugger command line. This adds support beyond simple integers -- 7226including 7227Strings, Buffers, and Packages. Includes support for nested packages. 7228Increased the default command line buffer size to accommodate these 7229arguments. 7230See the ACPICA reference for details and syntax. ACPICA BZ 917. 7231 7232Debugger/AcpiExec: Implemented support for "default" method arguments for 7233the 7234Execute/Debug command. Now, the debugger will always invoke a control 7235method 7236with the required number of arguments -- even if the command line 7237specifies 7238none or insufficient arguments. It uses default integer values for any 7239missing 7240arguments. Also fixes a bug where only six method arguments maximum were 7241supported instead of the required seven. 7242 7243Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7244and 7245also return status in order to prevent buffer overruns. See the ACPICA 7246reference for details and syntax. ACPICA BZ 921 7247 7248iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7249makefiles to simplify support for the two different but similar parser 7250generators, bison and yacc. 7251 7252Updated the generic unix makefile for gcc 4. The default gcc version is 7253now 7254expected to be 4 or greater, since options specific to gcc 4 are used. 7255 7256---------------------------------------- 725713 April 2011. Summary of changes for version 20110413: 7258 72591) ACPI CA Core Subsystem: 7260 7261Implemented support to execute a so-called "orphan" _REG method under the 7262EC 7263device. This change will force the execution of a _REG method underneath 7264the 7265EC 7266device even if there is no corresponding operation region of type 7267EmbeddedControl. Fixes a problem seen on some machines and apparently is 7268compatible with Windows behavior. ACPICA BZ 875. 7269 7270Added more predefined methods that are eligible for automatic NULL 7271package 7272element removal. This change adds another group of predefined names to 7273the 7274list 7275of names that can be repaired by having NULL package elements dynamically 7276removed. This group are those methods that return a single variable- 7277length 7278package containing simple data types such as integers, buffers, strings. 7279This 7280includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7281_PSL, 7282_Sx, 7283and _TZD. ACPICA BZ 914. 7284 7285Split and segregated all internal global lock functions to a new file, 7286evglock.c. 7287 7288Updated internal address SpaceID for DataTable regions. Moved this 7289internal 7290space 7291id in preparation for ACPI 5.0 changes that will include some new space 7292IDs. 7293This 7294change should not affect user/host code. 7295 7296Example Code and Data Size: These are the sizes for the OS-independent 7297acpica.lib 7298produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7299version of 7300the code includes the debug output trace mechanism and has a much larger 7301code 7302and 7303data size. 7304 7305 Previous Release (VC 9.0): 7306 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7307 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7308 Current Release (VC 9.0): 7309 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7310 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7311 73122) iASL Compiler/Disassembler and Tools: 7313 7314iASL/DTC: Major update for new grammar features. Allow generic data types 7315in 7316custom ACPI tables. Field names are now optional. Any line can be split 7317to 7318multiple lines using the continuation char (\). Large buffers now use 7319line- 7320continuation character(s) and no colon on the continuation lines. See the 7321grammar 7322update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7323Moore. 7324 7325iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7326statements. 7327Since the parser stuffs a "zero" as the return value for these statements 7328(due 7329to 7330the underlying AML grammar), they were seen as "return with value" by the 7331iASL 7332semantic checking. They are now seen correctly as "null" return 7333statements. 7334 7335iASL: Check if a_REG declaration has a corresponding Operation Region. 7336Adds a 7337check for each _REG to ensure that there is in fact a corresponding 7338operation 7339region declaration in the same scope. If not, the _REG method is not very 7340useful 7341since it probably won't be executed. ACPICA BZ 915. 7342 7343iASL/DTC: Finish support for expression evaluation. Added a new 7344expression 7345parser 7346that implements c-style operator precedence and parenthesization. ACPICA 7347bugzilla 7348908. 7349 7350Disassembler/DTC: Remove support for () and <> style comments in data 7351tables. 7352Now 7353that DTC has full expression support, we don't want to have comment 7354strings 7355that 7356start with a parentheses or a less-than symbol. Now, only the standard /* 7357and 7358// 7359comments are supported, as well as the bracket [] comments. 7360 7361AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7362"unusual" 7363headers in the acpidump file. Update the header validation to support 7364these 7365tables. Problem introduced in previous AcpiXtract version in the change 7366to 7367support "wrong checksum" error messages emitted by acpidump utility. 7368 7369iASL: Add a * option to generate all template files (as a synonym for 7370ALL) 7371as 7372in 7373"iasl -T *" or "iasl -T ALL". 7374 7375iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7376completely 7377abort the compiler on "fatal" errors, simply should abort the current 7378compile. 7379This allows multiple compiles with a single (possibly wildcard) compiler 7380invocation. 7381 7382---------------------------------------- 738316 March 2011. Summary of changes for version 20110316: 7384 73851) ACPI CA Core Subsystem: 7386 7387Fixed a problem caused by a _PRW method appearing at the namespace root 7388scope 7389during the setup of wake GPEs. A fault could occur if a _PRW directly 7390under 7391the 7392root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7393 7394Implemented support for "spurious" Global Lock interrupts. On some 7395systems, a 7396global lock interrupt can occur without the pending flag being set. Upon 7397a 7398GL 7399interrupt, we now ensure that a thread is actually waiting for the lock 7400before 7401signaling GL availability. Rafael Wysocki, Bob Moore. 7402 7403Example Code and Data Size: These are the sizes for the OS-independent 7404acpica.lib 7405produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7406version of 7407the code includes the debug output trace mechanism and has a much larger 7408code 7409and 7410data size. 7411 7412 Previous Release (VC 9.0): 7413 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7414 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7415 Current Release (VC 9.0): 7416 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7417 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7418 74192) iASL Compiler/Disassembler and Tools: 7420 7421Implemented full support for the "SLIC" ACPI table. Includes support in 7422the 7423header files, disassembler, table compiler, and template generator. Bob 7424Moore, 7425Lin Ming. 7426 7427AcpiXtract: Correctly handle embedded comments and messages from 7428AcpiDump. 7429Apparently some or all versions of acpidump will occasionally emit a 7430comment 7431like 7432"Wrong checksum", etc., into the dump file. This was causing problems for 7433AcpiXtract. ACPICA BZ 905. 7434 7435iASL: Fix the Linux makefile by removing an inadvertent double file 7436inclusion. 7437ACPICA BZ 913. 7438 7439AcpiExec: Update installation of operation region handlers. Install one 7440handler 7441for a user-defined address space. This is used by the ASL test suite 7442(ASLTS). 7443 7444---------------------------------------- 744511 February 2011. Summary of changes for version 20110211: 7446 74471) ACPI CA Core Subsystem: 7448 7449Added a mechanism to defer _REG methods for some early-installed 7450handlers. 7451Most user handlers should be installed before call to 7452AcpiEnableSubsystem. 7453However, Event handlers and region handlers should be installed after 7454AcpiInitializeObjects. Override handlers for the "default" regions should 7455be 7456installed early, however. This change executes all _REG methods for the 7457default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7458chicken/egg issues between them. ACPICA BZ 848. 7459 7460Implemented an optimization for GPE detection. This optimization will 7461simply 7462ignore GPE registers that contain no enabled GPEs -- there is no need to 7463read the register since this information is available internally. This 7464becomes more important on machines with a large GPE space. ACPICA 7465bugzilla 7466884. Lin Ming. Suggestion from Joe Liu. 7467 7468Removed all use of the highly unreliable FADT revision field. The 7469revision 7470number in the FADT has been found to be completely unreliable and cannot 7471be 7472trusted. Only the actual table length can be used to infer the version. 7473This 7474change updates the ACPICA core and the disassembler so that both no 7475longer 7476even look at the FADT version and instead depend solely upon the FADT 7477length. 7478 7479Fix an unresolved name issue for the no-debug and no-error-message source 7480generation cases. The _AcpiModuleName was left undefined in these cases, 7481but 7482it is actually needed as a parameter to some interfaces. Define 7483_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7484 7485Split several large files (makefiles and project files updated) 7486 utglobal.c -> utdecode.c 7487 dbcomds.c -> dbmethod.c dbnames.c 7488 dsopcode.c -> dsargs.c dscontrol.c 7489 dsload.c -> dsload2.c 7490 aslanalyze.c -> aslbtypes.c aslwalks.c 7491 7492Example Code and Data Size: These are the sizes for the OS-independent 7493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7494debug version of the code includes the debug output trace mechanism and 7495has 7496a much larger code and data size. 7497 7498 Previous Release (VC 9.0): 7499 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7500 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7501 Current Release (VC 9.0): 7502 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7503 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7504 75052) iASL Compiler/Disassembler and Tools: 7506 7507iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7508These are useful C-style macros with the standard definitions. ACPICA 7509bugzilla 898. 7510 7511iASL/DTC: Added support for integer expressions and labels. Support for 7512full 7513expressions for all integer fields in all ACPI tables. Support for labels 7514in 7515"generic" portions of tables such as UEFI. See the iASL reference manual. 7516 7517Debugger: Added a command to display the status of global handlers. The 7518"handlers" command will display op region, fixed event, and miscellaneous 7519global handlers. installation status -- and for op regions, whether 7520default 7521or user-installed handler will be used. 7522 7523iASL: Warn if reserved method incorrectly returns a value. Many 7524predefined 7525names are defined such that they do not return a value. If implemented as 7526a 7527method, issue a warning if such a name explicitly returns a value. ACPICA 7528Bugzilla 855. 7529 7530iASL: Added detection of GPE method name conflicts. Detects a conflict 7531where 7532there are two GPE methods of the form _Lxy and _Exy in the same scope. 7533(For 7534example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7535 7536iASL/DTC: Fixed a couple input scanner issues with comments and line 7537numbers. Comment remover could get confused and miss a comment ending. 7538Fixed 7539a problem with line counter maintenance. 7540 7541iASL/DTC: Reduced the severity of some errors from fatal to error. There 7542is 7543no need to abort on simple errors within a field definition. 7544 7545Debugger: Simplified the output of the help command. All help output now 7546in 7547a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7548 7549---------------------------------------- 755012 January 2011. Summary of changes for version 20110112: 7551 75521) ACPI CA Core Subsystem: 7553 7554Fixed a race condition between method execution and namespace walks that 7555can 7556possibly cause a fault. The problem was apparently introduced in version 755720100528 as a result of a performance optimization that reduces the 7558number 7559of 7560namespace walks upon method exit by using the delete_namespace_subtree 7561function instead of the delete_namespace_by_owner function used 7562previously. 7563Bug is a missing namespace lock in the delete_namespace_subtree function. 7564dana.myers@oracle.com 7565 7566Fixed several issues and a possible fault with the automatic "serialized" 7567method support. History: This support changes a method to "serialized" on 7568the 7569fly if the method generates an AE_ALREADY_EXISTS error, indicating the 7570possibility that it cannot handle reentrancy. This fix repairs a couple 7571of 7572issues seen in the field, especially on machines with many cores: 7573 7574 1) Delete method children only upon the exit of the last thread, 7575 so as to not delete objects out from under other running threads 7576 (and possibly causing a fault.) 7577 2) Set the "serialized" bit for the method only upon the exit of the 7578 Last thread, so as to not cause deadlock when running threads 7579 attempt to exit. 7580 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7581 so that there is no longer any confusion between the two. 7582 7583 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7584 7585Debugger: Now lock the namespace for duration of a namespace dump. 7586Prevents 7587issues if the namespace is changing dynamically underneath the debugger. 7588Especially affects temporary namespace nodes, since the debugger displays 7589these also. 7590 7591Updated the ordering of include files. The ACPICA headers should appear 7592before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7593set 7594any necessary compiler-specific defines, etc. Affects the ACPI-related 7595tools 7596and utilities. 7597 7598Updated all ACPICA copyrights and signons to 2011. Added the 2011 7599copyright 7600to all module headers and signons, including the Linux header. This 7601affects 7602virtually every file in the ACPICA core subsystem, iASL compiler, and all 7603utilities. 7604 7605Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7606project files for VC++ 6.0 are now obsolete. New project files can be 7607found 7608under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7609details. 7610 7611Example Code and Data Size: These are the sizes for the OS-independent 7612acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7613debug version of the code includes the debug output trace mechanism and 7614has a 7615much larger code and data size. 7616 7617 Previous Release (VC 6.0): 7618 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7619 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7620 Current Release (VC 9.0): 7621 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7622 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7623 76242) iASL Compiler/Disassembler and Tools: 7625 7626iASL: Added generic data types to the Data Table compiler. Add "generic" 7627data 7628types such as UINT32, String, Unicode, etc., to simplify the generation 7629of 7630platform-defined tables such as UEFI. Lin Ming. 7631 7632iASL: Added listing support for the Data Table Compiler. Adds listing 7633support 7634(-l) to display actual binary output for each line of input code. 7635 7636---------------------------------------- 763709 December 2010. Summary of changes for version 20101209: 7638 76391) ACPI CA Core Subsystem: 7640 7641Completed the major overhaul of the GPE support code that was begun in 7642July 76432010. Major features include: removal of _PRW execution in ACPICA (host 7644executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7645changes to existing interfaces, simplification of GPE handler operation, 7646and 7647a handful of new interfaces: 7648 7649 AcpiUpdateAllGpes 7650 AcpiFinishGpe 7651 AcpiSetupGpeForWake 7652 AcpiSetGpeWakeMask 7653 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7654 7655See the ACPICA Programmer Reference for full details and programming 7656information. See the new section 4.4 "General Purpose Event (GPE) 7657Support" 7658for a full overview, and section 8.7 "ACPI General Purpose Event 7659Management" 7660for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7661Ming, 7662Bob Moore, Rafael Wysocki. 7663 7664Implemented a new GPE feature for Windows compatibility, the "Implicit 7665Wake 7666GPE Notify". This feature will automatically issue a Notify(2) on a 7667device 7668when a Wake GPE is received if there is no corresponding GPE method or 7669handler. ACPICA BZ 870. 7670 7671Fixed a problem with the Scope() operator during table parse and load 7672phase. 7673During load phase (table load or method execution), the scope operator 7674should 7675not enter the target into the namespace. Instead, it should open a new 7676scope 7677at the target location. Linux BZ 19462, ACPICA BZ 882. 7678 7679Example Code and Data Size: These are the sizes for the OS-independent 7680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7681debug version of the code includes the debug output trace mechanism and 7682has a 7683much larger code and data size. 7684 7685 Previous Release: 7686 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7687 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7688 Current Release: 7689 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7690 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7691 76922) iASL Compiler/Disassembler and Tools: 7693 7694iASL: Relax the alphanumeric restriction on _CID strings. These strings 7695are 7696"bus-specific" per the ACPI specification, and therefore any characters 7697are 7698acceptable. The only checks that can be performed are for a null string 7699and 7700perhaps for a leading asterisk. ACPICA BZ 886. 7701 7702iASL: Fixed a problem where a syntax error that caused a premature EOF 7703condition on the source file emitted a very confusing error message. The 7704premature EOF is now detected correctly. ACPICA BZ 891. 7705 7706Disassembler: Decode the AccessSize within a Generic Address Structure 7707(byte 7708access, word access, etc.) Note, this field does not allow arbitrary bit 7709access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7710 7711New: AcpiNames utility - Example namespace dump utility. Shows an example 7712of 7713ACPICA configuration for a minimal namespace dump utility. Uses table and 7714namespace managers, but no AML interpreter. Does not add any 7715functionality 7716over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7717partition and configure ACPICA. ACPICA BZ 883. 7718 7719AML Debugger: Increased the debugger buffer size for method return 7720objects. 7721Was 4K, increased to 16K. Also enhanced error messages for debugger 7722method 7723execution, including the buffer overflow case. 7724 7725---------------------------------------- 772613 October 2010. Summary of changes for version 20101013: 7727 77281) ACPI CA Core Subsystem: 7729 7730Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7731now 7732clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7733HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7734 7735Changed the type of the predefined namespace object _TZ from ThermalZone 7736to 7737Device. This was found to be confusing to the host software that 7738processes 7739the various thermal zones, since _TZ is not really a ThermalZone. 7740However, 7741a 7742Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7743Zhang. 7744 7745Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7746string is "Windows 2006 SP2". 7747 7748Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7749nsrepair 7750code automatically repairs _HID-related strings, this type of code is no 7751longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7752878. 7753 7754Example Code and Data Size: These are the sizes for the OS-independent 7755acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7756debug version of the code includes the debug output trace mechanism and 7757has a 7758much larger code and data size. 7759 7760 Previous Release: 7761 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7762 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7763 Current Release: 7764 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7765 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7766 77672) iASL Compiler/Disassembler and Tools: 7768 7769iASL: Implemented additional compile-time validation for _HID strings. 7770The 7771non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7772length 7773of 7774the string must be exactly seven or eight characters. For both _HID and 7775_CID 7776strings, all characters must be alphanumeric. ACPICA BZ 874. 7777 7778iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7779descriptors that are mostly or all zeros, with the expectation that they 7780will 7781be filled in at runtime. iASL now allows this as long as there is a 7782"resource 7783tag" (name) associated with the descriptor, which gives the ASL a handle 7784needed to modify the descriptor. ACPICA BZ 873. 7785 7786Added single-thread support to the generic Unix application OSL. 7787Primarily 7788for iASL support, this change removes the use of semaphores in the 7789single- 7790threaded ACPICA tools/applications - increasing performance. The 7791_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7792option. ACPICA BZ 879. 7793 7794AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7795support 7796for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7797 7798iASL: Moved all compiler messages to a new file, aslmessages.h. 7799 7800---------------------------------------- 780115 September 2010. Summary of changes for version 20100915: 7802 78031) ACPI CA Core Subsystem: 7804 7805Removed the AcpiOsDerivePciId OSL interface. The various host 7806implementations 7807of this function were not OS-dependent and are now obsolete and can be 7808removed from all host OSLs. This function has been replaced by 7809AcpiHwDerivePciId, which is now part of the ACPICA core code. 7810AcpiHwDerivePciId has been implemented without recursion. Adds one new 7811module, hwpci.c. ACPICA BZ 857. 7812 7813Implemented a dynamic repair for _HID and _CID strings. The following 7814problems are now repaired at runtime: 1) Remove a leading asterisk in the 7815string, and 2) the entire string is uppercased. Both repairs are in 7816accordance with the ACPI specification and will simplify host driver 7817code. 7818ACPICA BZ 871. 7819 7820The ACPI_THREAD_ID type is no longer configurable, internally it is now 7821always UINT64. This simplifies the ACPICA code, especially any printf 7822output. 7823UINT64 is the only common data type for all thread_id types across all 7824operating systems. It is now up to the host OSL to cast the native 7825thread_id 7826type to UINT64 before returning the value to ACPICA (via 7827AcpiOsGetThreadId). 7828Lin Ming, Bob Moore. 7829 7830Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7831"inline" 7832keyword is not standard across compilers, and this type allows inline to 7833be 7834configured on a per-compiler basis. Lin Ming. 7835 7836Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7837available. 7838Added an extern for this boolean in acpixf.h. Some hosts utilize this 7839value 7840during suspend/restore operations. ACPICA BZ 869. 7841 7842All code that implements error/warning messages with the "ACPI:" prefix 7843has 7844been moved to a new module, utxferror.c. 7845 7846The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7847it 7848is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7849 7850Example Code and Data Size: These are the sizes for the OS-independent 7851acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7852debug version of the code includes the debug output trace mechanism and 7853has a 7854much larger code and data size. 7855 7856 Previous Release: 7857 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7858 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7859 Current Release: 7860 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7861 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7862 78632) iASL Compiler/Disassembler and Tools: 7864 7865iASL/Disassembler: Write ACPI errors to stderr instead of the output 7866file. 7867This keeps the output files free of random error messages that may 7868originate 7869from within the namespace/interpreter code. Used this opportunity to 7870merge 7871all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7872866. Lin Ming, Bob Moore. 7873 7874Tools: update some printfs for ansi warnings on size_t. Handle width 7875change 7876of size_t on 32-bit versus 64-bit generations. Lin Ming. 7877 7878---------------------------------------- 787906 August 2010. Summary of changes for version 20100806: 7880 78811) ACPI CA Core Subsystem: 7882 7883Designed and implemented a new host interface to the _OSI support code. 7884This 7885will allow the host to dynamically add or remove multiple _OSI strings, 7886as 7887well as install an optional handler that is called for each _OSI 7888invocation. 7889Also added a new AML debugger command, 'osi' to display and modify the 7890global 7891_OSI string table, and test support in the AcpiExec utility. See the 7892ACPICA 7893reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7894New Functions: 7895 AcpiInstallInterface - Add an _OSI string. 7896 AcpiRemoveInterface - Delete an _OSI string. 7897 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7898Obsolete Functions: 7899 AcpiOsValidateInterface - no longer used. 7900New Files: 7901 source/components/utilities/utosi.c 7902 7903Re-introduced the support to enable multi-byte transfers for Embedded 7904Controller (EC) operation regions. A reported problem was found to be a 7905bug 7906in the host OS, not in the multi-byte support. Previously, the maximum 7907data 7908size passed to the EC operation region handler was a single byte. There 7909are 7910often EC Fields larger than one byte that need to be transferred, and it 7911is 7912useful for the EC driver to lock these as a single transaction. This 7913change 7914enables single transfers larger than 8 bits. This effectively changes the 7915access to the EC space from ByteAcc to AnyAcc, and will probably require 7916changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7917bit 7918transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7919 7920Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7921prototype in acpiosxf.h had the output value pointer as a (void *). 7922It should be a (UINT64 *). This may affect some host OSL code. 7923 7924Fixed a couple problems with the recently modified Linux makefiles for 7925iASL 7926and AcpiExec. These new makefiles place the generated object files in the 7927local directory so that there can be no collisions between the files that 7928are 7929shared between them that are compiled with different options. 7930 7931Example Code and Data Size: These are the sizes for the OS-independent 7932acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7933debug version of the code includes the debug output trace mechanism and 7934has a 7935much larger code and data size. 7936 7937 Previous Release: 7938 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7939 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7940 Current Release: 7941 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7942 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7943 79442) iASL Compiler/Disassembler and Tools: 7945 7946iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7947the 7948namespace from and disassemble an entire group of AML files. Useful for 7949loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7950and 7951disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7952 7953iASL: Allow multiple invocations of -e option. This change allows 7954multiple 7955uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7956834. 7957Lin Ming. 7958 7959---------------------------------------- 796002 July 2010. Summary of changes for version 20100702: 7961 79621) ACPI CA Core Subsystem: 7963 7964Implemented several updates to the recently added GPE reference count 7965support. The model for "wake" GPEs is changing to give the host OS 7966complete 7967control of these GPEs. Eventually, the ACPICA core will not execute any 7968_PRW 7969methods, since the host already must execute them. Also, additional 7970changes 7971were made to help ensure that the reference counts are kept in proper 7972synchronization with reality. Rafael J. Wysocki. 7973 79741) Ensure that GPEs are not enabled twice during initialization. 79752) Ensure that GPE enable masks stay in sync with the reference count. 79763) Do not inadvertently enable GPEs when writing GPE registers. 79774) Remove the internal wake reference counter and add new AcpiGpeWakeup 7978interface. This interface will set or clear individual GPEs for wakeup. 79795) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7980interfaces 7981are now used for "runtime" GPEs only. 7982 7983Changed the behavior of the GPE install/remove handler interfaces. The 7984GPE 7985is 7986no longer disabled during this process, as it was found to cause problems 7987on 7988some machines. Rafael J. Wysocki. 7989 7990Reverted a change introduced in version 20100528 to enable Embedded 7991Controller multi-byte transfers. This change was found to cause problems 7992with 7993Index Fields and possibly Bank Fields. It will be reintroduced when these 7994problems have been resolved. 7995 7996Fixed a problem with references to Alias objects within Package Objects. 7997A 7998reference to an Alias within the definition of a Package was not always 7999resolved properly. Aliases to objects like Processors, Thermal zones, 8000etc. 8001were resolved to the actual object instead of a reference to the object 8002as 8003it 8004should be. Package objects are only allowed to contain integer, string, 8005buffer, package, and reference objects. Redhat bugzilla 608648. 8006 8007Example Code and Data Size: These are the sizes for the OS-independent 8008acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8009debug version of the code includes the debug output trace mechanism and 8010has a 8011much larger code and data size. 8012 8013 Previous Release: 8014 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8015 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8016 Current Release: 8017 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8018 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8019 80202) iASL Compiler/Disassembler and Tools: 8021 8022iASL: Implemented a new compiler subsystem to allow definition and 8023compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8024These 8025are called "ACPI Data Tables", and the new compiler is the "Data Table 8026Compiler". This compiler is intended to simplify the existing error-prone 8027process of creating these tables for the BIOS, as well as allowing the 8028disassembly, modification, recompilation, and override of existing ACPI 8029data 8030tables. See the iASL User Guide for detailed information. 8031 8032iASL: Implemented a new Template Generator option in support of the new 8033Data 8034Table Compiler. This option will create examples of all known ACPI tables 8035that can be used as the basis for table development. See the iASL 8036documentation and the -T option. 8037 8038Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8039Descriptor Table). 8040 8041Updated the Linux makefiles for iASL and AcpiExec to place the generated 8042object files in the local directory so that there can be no collisions 8043between the shared files between them that are generated with different 8044options. 8045 8046Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8047Use 8048the #define __APPLE__ to enable this support. 8049 8050---------------------------------------- 805128 May 2010. Summary of changes for version 20100528: 8052 8053Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8054available at www.acpi.info. This is primarily an errata release. 8055 80561) ACPI CA Core Subsystem: 8057 8058Undefined ACPI tables: We are looking for the definitions for the 8059following 8060ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8061 8062Implemented support to enable multi-byte transfers for Embedded 8063Controller 8064(EC) operation regions. Previously, the maximum data size passed to the 8065EC 8066operation region handler was a single byte. There are often EC Fields 8067larger 8068than one byte that need to be transferred, and it is useful for the EC 8069driver 8070to lock these as a single transaction. This change enables single 8071transfers 8072larger than 8 bits. This effectively changes the access to the EC space 8073from 8074ByteAcc to AnyAcc, and will probably require changes to the host OS 8075Embedded 8076Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8077bit 8078transfers. Alexey Starikovskiy, Lin Ming 8079 8080Implemented a performance enhancement for namespace search and access. 8081This 8082change enhances the performance of namespace searches and walks by adding 8083a 8084backpointer to the parent in each namespace node. On large namespaces, 8085this 8086change can improve overall ACPI performance by up to 9X. Adding a pointer 8087to 8088each namespace node increases the overall size of the internal namespace 8089by 8090about 5%, since each namespace entry usually consists of both a namespace 8091node and an ACPI operand object. However, this is the first growth of the 8092namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8093 8094Implemented a performance optimization that reduces the number of 8095namespace 8096walks. On control method exit, only walk the namespace if the method is 8097known 8098to have created namespace objects outside of its local scope. Previously, 8099the 8100entire namespace was traversed on each control method exit. This change 8101can 8102improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8103Moore. 8104 8105Added support to truncate I/O addresses to 16 bits for Windows 8106compatibility. 8107Some ASL code has been seen in the field that inadvertently has bits set 8108above bit 15. This feature is optional and is enabled if the BIOS 8109requests 8110any Windows OSI strings. It can also be enabled by the host OS. Matthew 8111Garrett, Bob Moore. 8112 8113Added support to limit the maximum time for the ASL Sleep() operator. To 8114prevent accidental deep sleeps, limit the maximum time that Sleep() will 8115actually sleep. Configurable, the default maximum is two seconds. ACPICA 8116bugzilla 854. 8117 8118Added run-time validation support for the _WDG and_WED Microsoft 8119predefined 8120methods. These objects are defined by "Windows Instrumentation", and are 8121not 8122part of the ACPI spec. ACPICA BZ 860. 8123 8124Expanded all statistic counters used during namespace and device 8125initialization from 16 to 32 bits in order to support very large 8126namespaces. 8127 8128Replaced all instances of %d in printf format specifiers with %u since 8129nearly 8130all integers in ACPICA are unsigned. 8131 8132Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8133returned 8134as AE_NO_HANDLER. 8135 8136Example Code and Data Size: These are the sizes for the OS-independent 8137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8138debug version of the code includes the debug output trace mechanism and 8139has a 8140much larger code and data size. 8141 8142 Previous Release: 8143 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8144 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8145 Current Release: 8146 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8147 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8148 81492) iASL Compiler/Disassembler and Tools: 8150 8151iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8152methods. These objects are defined by "Windows Instrumentation", and are 8153not 8154part of the ACPI spec. ACPICA BZ 860. 8155 8156AcpiExec: added option to disable the memory tracking mechanism. The -dt 8157option will disable the tracking mechanism, which improves performance 8158considerably. 8159 8160AcpiExec: Restructured the command line options into -d (disable) and -e 8161(enable) options. 8162 8163---------------------------------------- 816428 April 2010. Summary of changes for version 20100428: 8165 81661) ACPI CA Core Subsystem: 8167 8168Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8169including FADT-based and GPE Block Devices, execute any _PRW methods in 8170the 8171new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8172runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8173immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8174Devices. Provides compatibility with other ACPI implementations. Two new 8175files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8176Moore. 8177 8178Fixed a regression introduced in version 20100331 within the table 8179manager 8180where initial table loading could fail. This was introduced in the fix 8181for 8182AcpiReallocateRootTable. Also, renamed some of fields in the table 8183manager 8184data structures to clarify their meaning and use. 8185 8186Fixed a possible allocation overrun during internal object copy in 8187AcpiUtCopySimpleObject. The original code did not correctly handle the 8188case 8189where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8190847. 8191 8192Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8193possible access beyond end-of-allocation. Also, now fully validate 8194descriptor 8195(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8196 8197Example Code and Data Size: These are the sizes for the OS-independent 8198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8199debug version of the code includes the debug output trace mechanism and 8200has a 8201much larger code and data size. 8202 8203 Previous Release: 8204 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8205 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8206 Current Release: 8207 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8208 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8209 82102) iASL Compiler/Disassembler and Tools: 8211 8212iASL: Implemented Min/Max/Len/Gran validation for address resource 8213descriptors. This change implements validation for the address fields 8214that 8215are common to all address-type resource descriptors. These checks are 8216implemented: Checks for valid Min/Max, length within the Min/Max window, 8217valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8218per 8219table 6-40 in the ACPI 4.0a specification. Also split the large 8220aslrestype1.c 8221and aslrestype2.c files into five new files. ACPICA BZ 840. 8222 8223iASL: Added support for the _Wxx predefined names. This support was 8224missing 8225and these names were not recognized by the compiler as valid predefined 8226names. ACPICA BZ 851. 8227 8228iASL: Added an error for all predefined names that are defined to return 8229no 8230value and thus must be implemented as Control Methods. These include all 8231of 8232the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8233names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8234 8235iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8236an 8237ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8238be 8239dynamically loaded via the Load() operator. Also cleaned up output for 8240the 8241- 8242ta and -tc options. ACPICA BZ 853. 8243 8244Tests: Added a new file with examples of extended iASL error checking. 8245Demonstrates the advanced error checking ability of the iASL compiler. 8246Available at tests/misc/badcode.asl. 8247 8248---------------------------------------- 824931 March 2010. Summary of changes for version 20100331: 8250 82511) ACPI CA Core Subsystem: 8252 8253Completed a major update for the GPE support in order to improve support 8254for 8255shared GPEs and to simplify both host OS and ACPICA code. Added a 8256reference 8257count mechanism to support shared GPEs that require multiple device 8258drivers. 8259Several external interfaces have changed. One external interface has been 8260removed. One new external interface was added. Most of the GPE external 8261interfaces now use the GPE spinlock instead of the events mutex (and the 8262Flags parameter for many GPE interfaces has been removed.) See the 8263updated 8264ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8265Rafael 8266Wysocki. ACPICA BZ 831. 8267 8268Changed: 8269 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8270Removed: 8271 AcpiSetGpeType 8272New: 8273 AcpiSetGpe 8274 8275Implemented write support for DataTable operation regions. These regions 8276are 8277defined via the DataTableRegion() operator. Previously, only read support 8278was 8279implemented. The ACPI specification allows DataTableRegions to be 8280read/write, 8281however. 8282 8283Implemented a new subsystem option to force a copy of the DSDT to local 8284memory. Optionally copy the entire DSDT to local memory (instead of 8285simply 8286mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8287replace 8288the original DSDT, creating the need for this option. Default is FALSE, 8289do 8290not copy the DSDT. 8291 8292Implemented detection of a corrupted or replaced DSDT. This change adds 8293support to detect a DSDT that has been corrupted and/or replaced from 8294outside 8295the OS (by firmware). This is typically catastrophic for the system, but 8296has 8297been seen on some machines. Once this problem has been detected, the DSDT 8298copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8299 8300Fixed two problems with AcpiReallocateRootTable during the root table 8301copy. 8302When copying the root table to the new allocation, the length used was 8303incorrect. The new size was used instead of the current table size, 8304meaning 8305too much data was copied. Also, the count of available slots for ACPI 8306tables 8307was not set correctly. Alexey Starikovskiy, Bob Moore. 8308 8309Example Code and Data Size: These are the sizes for the OS-independent 8310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8311debug version of the code includes the debug output trace mechanism and 8312has a 8313much larger code and data size. 8314 8315 Previous Release: 8316 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8317 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8318 Current Release: 8319 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8320 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8321 83222) iASL Compiler/Disassembler and Tools: 8323 8324iASL: Implement limited typechecking for values returned from predefined 8325control methods. The type of any returned static (unnamed) object is now 8326validated. For example, Return(1). ACPICA BZ 786. 8327 8328iASL: Fixed a predefined name object verification regression. Fixes a 8329problem 8330introduced in version 20100304. An error is incorrectly generated if a 8331predefined name is declared as a static named object with a value defined 8332using the keywords "Zero", "One", or "Ones". Lin Ming. 8333 8334iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8335by 8336reducing the requested registry access rights. ACPICA BZ 842. 8337 8338Disassembler: fixed a possible fault when generating External() 8339statements. 8340Introduced in commit ae7d6fd: Properly handle externals with parent- 8341prefix 8342(carat). Fixes a string length allocation calculation. Lin Ming. 8343 8344---------------------------------------- 834504 March 2010. Summary of changes for version 20100304: 8346 83471) ACPI CA Core Subsystem: 8348 8349Fixed a possible problem with the AML Mutex handling function 8350AcpiExReleaseMutex where the function could fault under the very rare 8351condition when the interpreter has blocked, the interpreter lock is 8352released, 8353the interpreter is then reentered via the same thread, and attempts to 8354acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8355Lin 8356Ming. 8357 8358Implemented additional configuration support for the AML "Debug Object". 8359Output from the debug object can now be enabled via a global variable, 8360AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8361debugging. 8362This debug output is now available in the release version of ACPICA 8363instead 8364of just the debug version. Also, the entire debug output module can now 8365be 8366configured out of the ACPICA build if desired. One new file added, 8367executer/exdebug.c. Lin Ming, Bob Moore. 8368 8369Added header support for the ACPI MCHI table (Management Controller Host 8370Interface Table). This table was added in ACPI 4.0, but the defining 8371document 8372has only recently become available. 8373 8374Standardized output of integer values for ACPICA warnings/errors. Always 8375use 83760x prefix for hex output, always use %u for unsigned integer decimal 8377output. 8378Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8379400 8380invocations.) These invocations were converted from the original 8381ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8382 8383Example Code and Data Size: These are the sizes for the OS-independent 8384acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8385debug version of the code includes the debug output trace mechanism and 8386has a 8387much larger code and data size. 8388 8389 Previous Release: 8390 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8391 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8392 Current Release: 8393 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8394 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8395 83962) iASL Compiler/Disassembler and Tools: 8397 8398iASL: Implemented typechecking support for static (non-control method) 8399predefined named objects that are declared with the Name() operator. For 8400example, the type of this object is now validated to be of type Integer: 8401Name(_BBN, 1). This change migrates the compiler to using the core 8402predefined 8403name table instead of maintaining a local version. Added a new file, 8404aslpredef.c. ACPICA BZ 832. 8405 8406Disassembler: Added support for the ACPI 4.0 MCHI table. 8407 8408---------------------------------------- 840921 January 2010. Summary of changes for version 20100121: 8410 84111) ACPI CA Core Subsystem: 8412 8413Added the 2010 copyright to all module headers and signons. This affects 8414virtually every file in the ACPICA core subsystem, the iASL compiler, the 8415tools/utilities, and the test suites. 8416 8417Implemented a change to the AcpiGetDevices interface to eliminate 8418unnecessary 8419invocations of the _STA method. In the case where a specific _HID is 8420requested, do not run _STA until a _HID match is found. This eliminates 8421potentially dozens of _STA calls during a search for a particular 8422device/HID, 8423which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8424 8425Implemented an additional repair for predefined method return values. 8426Attempt 8427to repair unexpected NULL elements within returned Package objects. 8428Create 8429an 8430Integer of value zero, a NULL String, or a zero-length Buffer as 8431appropriate. 8432ACPICA BZ 818. Lin Ming, Bob Moore. 8433 8434Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8435the 8436code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8437(with 843864-bit AML integers). It is now obsolete and this change removes it from 8439the 8440ACPICA code base, replaced by UINT64. The original typedef has been 8441retained 8442for now for compatibility with existing device driver code. ACPICA BZ 8443824. 8444 8445Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8446in 8447the parse tree object. 8448 8449Added additional warning options for the gcc-4 generation. Updated the 8450source 8451accordingly. This includes some code restructuring to eliminate 8452unreachable 8453code, elimination of some gotos, elimination of unused return values, 8454some 8455additional casting, and removal of redundant declarations. 8456 8457Example Code and Data Size: These are the sizes for the OS-independent 8458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8459debug version of the code includes the debug output trace mechanism and 8460has a 8461much larger code and data size. 8462 8463 Previous Release: 8464 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8465 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8466 Current Release: 8467 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8468 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8469 84702) iASL Compiler/Disassembler and Tools: 8471 8472No functional changes for this release. 8473 8474---------------------------------------- 847514 December 2009. Summary of changes for version 20091214: 8476 84771) ACPI CA Core Subsystem: 8478 8479Enhanced automatic data type conversions for predefined name repairs. 8480This 8481change expands the automatic repairs/conversions for predefined name 8482return 8483values to make Integers, Strings, and Buffers fully interchangeable. 8484Also, 8485a 8486Buffer can be converted to a Package of Integers if necessary. The 8487nsrepair.c 8488module was completely restructured. Lin Ming, Bob Moore. 8489 8490Implemented automatic removal of null package elements during predefined 8491name 8492repairs. This change will automatically remove embedded and trailing NULL 8493package elements from returned package objects that are defined to 8494contain 8495a 8496variable number of sub-packages. The driver is then presented with a 8497package 8498with no null elements to deal with. ACPICA BZ 819. 8499 8500Implemented a repair for the predefined _FDE and _GTM names. The expected 8501return value for both names is a Buffer of 5 DWORDs. This repair fixes 8502two 8503possible problems (both seen in the field), where a package of integers 8504is 8505returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8506Kim. 8507 8508Implemented additional module-level code support. This change will 8509properly 8510execute module-level code that is not at the root of the namespace (under 8511a 8512Device object, etc.). Now executes the code within the current scope 8513instead 8514of the root. ACPICA BZ 762. Lin Ming. 8515 8516Fixed possible mutex acquisition errors when running _REG methods. Fixes 8517a 8518problem where mutex errors can occur when running a _REG method that is 8519in 8520the same scope as a method-defined operation region or an operation 8521region 8522under a module-level IF block. This type of code is rare, so the problem 8523has 8524not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8525 8526Fixed a possible memory leak during module-level code execution. An 8527object 8528could be leaked for each block of executed module-level code if the 8529interpreter slack mode is enabled This change deletes any implicitly 8530returned 8531object from the module-level code block. Lin Ming. 8532 8533Removed messages for successful predefined repair(s). The repair 8534mechanism 8535was considered too wordy. Now, messages are only unconditionally emitted 8536if 8537the return object cannot be repaired. Existing messages for successful 8538repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8539827. 8540 8541Example Code and Data Size: These are the sizes for the OS-independent 8542acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8543debug version of the code includes the debug output trace mechanism and 8544has a 8545much larger code and data size. 8546 8547 Previous Release: 8548 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8549 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8550 Current Release: 8551 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8552 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8553 85542) iASL Compiler/Disassembler and Tools: 8555 8556iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8557files 8558were no longer automatically removed at the termination of the compile. 8559 8560acpiexec: Implemented the -f option to specify default region fill value. 8561This option specifies the value used to initialize buffers that simulate 8562operation regions. Default value is zero. Useful for debugging problems 8563that 8564depend on a specific initial value for a region or field. 8565 8566---------------------------------------- 856712 November 2009. Summary of changes for version 20091112: 8568 85691) ACPI CA Core Subsystem: 8570 8571Implemented a post-order callback to AcpiWalkNamespace. The existing 8572interface only has a pre-order callback. This change adds an additional 8573parameter for a post-order callback which will be more useful for bus 8574scans. 8575ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8576 8577Modified the behavior of the operation region memory mapping cache for 8578SystemMemory. Ensure that the memory mappings created for operation 8579regions 8580do not cross 4K page boundaries. Crossing a page boundary while mapping 8581regions can cause kernel warnings on some hosts if the pages have 8582different 8583attributes. Such regions are probably BIOS bugs, and this is the 8584workaround. 8585Linux BZ 14445. Lin Ming. 8586 8587Implemented an automatic repair for predefined methods that must return 8588sorted lists. This change will repair (by sorting) packages returned by 8589_ALR, 8590_PSS, and _TSS. Drivers can now assume that the packages are correctly 8591sorted 8592and do not contain NULL package elements. Adds one new file, 8593namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8594 8595Fixed a possible fault during predefined name validation if a return 8596Package 8597object contains NULL elements. Also adds a warning if a NULL element is 8598followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8599may 8600include repair or removal of all such NULL elements where possible. 8601 8602Implemented additional module-level executable AML code support. This 8603change 8604will execute module-level code that is not at the root of the namespace 8605(under a Device object, etc.) at table load time. Module-level executable 8606AML 8607code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8608 8609Implemented a new internal function to create Integer objects. This 8610function 8611simplifies miscellaneous object creation code. ACPICA BZ 823. 8612 8613Reduced the severity of predefined repair messages, Warning to Info. 8614Since 8615the object was successfully repaired, a warning is too severe. Reduced to 8616an 8617info message for now. These messages may eventually be changed to debug- 8618only. 8619ACPICA BZ 812. 8620 8621Example Code and Data Size: These are the sizes for the OS-independent 8622acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8623debug version of the code includes the debug output trace mechanism and 8624has a 8625much larger code and data size. 8626 8627 Previous Release: 8628 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8629 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8630 Current Release: 8631 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8632 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8633 86342) iASL Compiler/Disassembler and Tools: 8635 8636iASL: Implemented Switch() with While(1) so that Break works correctly. 8637This 8638change correctly implements the Switch operator with a surrounding 8639While(1) 8640so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8641 8642iASL: Added a message if a package initializer list is shorter than 8643package 8644length. Adds a new remark for a Package() declaration if an initializer 8645list 8646exists, but is shorter than the declared length of the package. Although 8647technically legal, this is probably a coding error and it is seen in the 8648field. ACPICA BZ 815. Lin Ming, Bob Moore. 8649 8650iASL: Fixed a problem where the compiler could fault after the maximum 8651number 8652of errors was reached (200). 8653 8654acpixtract: Fixed a possible warning for pointer cast if the compiler 8655warning 8656level set very high. 8657 8658---------------------------------------- 865913 October 2009. Summary of changes for version 20091013: 8660 86611) ACPI CA Core Subsystem: 8662 8663Fixed a problem where an Operation Region _REG method could be executed 8664more 8665than once. If a custom address space handler is installed by the host 8666before 8667the "initialize operation regions" phase of the ACPICA initialization, 8668any 8669_REG methods for that address space could be executed twice. This change 8670fixes the problem. ACPICA BZ 427. Lin Ming. 8671 8672Fixed a possible memory leak for the Scope() ASL operator. When the exact 8673invocation of "Scope(\)" is executed (change scope to root), one internal 8674operand object was leaked. Lin Ming. 8675 8676Implemented a run-time repair for the _MAT predefined method. If the _MAT 8677return value is defined as a Field object in the AML, and the field 8678size is less than or equal to the default width of an integer (32 or 867964),_MAT 8680can incorrectly return an Integer instead of a Buffer. ACPICA now 8681automatically repairs this problem. ACPICA BZ 810. 8682 8683Implemented a run-time repair for the _BIF and _BIX predefined methods. 8684The 8685"OEM Information" field is often incorrectly returned as an Integer with 8686value zero if the field is not supported by the platform. This is due to 8687an 8688ambiguity in the ACPI specification. The field should always be a string. 8689ACPICA now automatically repairs this problem by returning a NULL string 8690within the returned Package. ACPICA BZ 807. 8691 8692Example Code and Data Size: These are the sizes for the OS-independent 8693acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8694debug version of the code includes the debug output trace mechanism and 8695has a 8696much larger code and data size. 8697 8698 Previous Release: 8699 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8700 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8701 Current Release: 8702 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8703 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8704 87052) iASL Compiler/Disassembler and Tools: 8706 8707Disassembler: Fixed a problem where references to external symbols that 8708contained one or more parent-prefixes (carats) were not handled 8709correctly, 8710possibly causing a fault. ACPICA BZ 806. Lin Ming. 8711 8712Disassembler: Restructured the code so that all functions that handle 8713external symbols are in a single module. One new file is added, 8714common/dmextern.c. 8715 8716AML Debugger: Added a max count argument for the Batch command (which 8717executes multiple predefined methods within the namespace.) 8718 8719iASL: Updated the compiler documentation (User Reference.) Available at 8720http://www.acpica.org/documentation/. ACPICA BZ 750. 8721 8722AcpiXtract: Updated for Lint and other formatting changes. Close all open 8723files. 8724 8725---------------------------------------- 872603 September 2009. Summary of changes for version 20090903: 8727 87281) ACPI CA Core Subsystem: 8729 8730For Windows Vista compatibility, added the automatic execution of an _INI 8731method located at the namespace root (\_INI). This method is executed at 8732table load time. This support is in addition to the automatic execution 8733of 8734\_SB._INI. Lin Ming. 8735 8736Fixed a possible memory leak in the interpreter for AML package objects 8737if 8738the package initializer list is longer than the defined size of the 8739package. 8740This apparently can only happen if the BIOS changes the package size on 8741the 8742fly (seen in a _PSS object), as ASL compilers do not allow this. The 8743interpreter will truncate the package to the defined size (and issue an 8744error 8745message), but previously could leave the extra objects undeleted if they 8746were 8747pre-created during the argument processing (such is the case if the 8748package 8749consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8750 8751Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8752This has been reported in the field. Previously, ACPICA would zero out 8753the 8754buffer/string. Now, the operation is treated as a noop. Provides Windows 8755compatibility. ACPICA BZ 803. Lin Ming. 8756 8757Removed an extraneous error message for ASL constructs of the form 8758Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8759statements 8760are seen in many BIOSs and are once again treated as NOOPs and no error 8761is 8762emitted when they are encountered. ACPICA BZ 785. 8763 8764Fixed an extraneous warning message if a _DSM reserved method returns a 8765Package object. _DSM can return any type of object, so validation on the 8766return type cannot be performed. ACPICA BZ 802. 8767 8768Example Code and Data Size: These are the sizes for the OS-independent 8769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8770debug version of the code includes the debug output trace mechanism and 8771has a 8772much larger code and data size. 8773 8774 Previous Release: 8775 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8776 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8777 Current Release: 8778 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8779 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8780 87812) iASL Compiler/Disassembler and Tools: 8782 8783iASL: Fixed a problem with the use of the Alias operator and Resource 8784Templates. The correct alias is now constructed and no error is emitted. 8785ACPICA BZ 738. 8786 8787iASL: Implemented the -I option to specify additional search directories 8788for 8789include files. Allows multiple additional search paths for include files. 8790Directories are searched in the order specified on the command line 8791(after 8792the local directory is searched.) ACPICA BZ 800. 8793 8794iASL: Fixed a problem where the full pathname for include files was not 8795emitted for warnings/errors. This caused the IDE support to not work 8796properly. ACPICA BZ 765. 8797 8798iASL: Implemented the -@ option to specify a Windows-style response file 8799containing additional command line options. ACPICA BZ 801. 8800 8801AcpiExec: Added support to load multiple AML files simultaneously (such 8802as 8803a 8804DSDT and multiple SSDTs). Also added support for wildcards within the AML 8805pathname. These features allow all machine tables to be easily loaded and 8806debugged together. ACPICA BZ 804. 8807 8808Disassembler: Added missing support for disassembly of HEST table Error 8809Bank 8810subtables. 8811 8812---------------------------------------- 881330 July 2009. Summary of changes for version 20090730: 8814 8815The ACPI 4.0 implementation for ACPICA is complete with this release. 8816 88171) ACPI CA Core Subsystem: 8818 8819ACPI 4.0: Added header file support for all new and changed ACPI tables. 8820Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8821new 8822for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8823BERT, 8824EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8825There 8826have been some ACPI 4.0 changes to other existing tables. Split the large 8827actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8828 8829ACPI 4.0: Implemented predefined name validation for all new names. There 8830are 883131 new names in ACPI 4.0. The predefined validation module was split into 8832two 8833files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8834 8835Implemented support for so-called "module-level executable code". This is 8836executable AML code that exists outside of any control method and is 8837intended 8838to be executed at table load time. Although illegal since ACPI 2.0, this 8839type 8840of code still exists and is apparently still being created. Blocks of 8841this 8842code are now detected and executed as intended. Currently, the code 8843blocks 8844must exist under either an If, Else, or While construct; these are the 8845typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8846 8847Implemented an automatic dynamic repair for predefined names that return 8848nested Package objects. This applies to predefined names that are defined 8849to 8850return a variable-length Package of sub-packages. If the number of sub- 8851packages is one, BIOS code is occasionally seen that creates a simple 8852single 8853package with no sub-packages. This code attempts to fix the problem by 8854wrapping a new package object around the existing package. These methods 8855can 8856be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8857BZ 8858790. 8859 8860Fixed a regression introduced in 20090625 for the AcpiGetDevices 8861interface. 8862The _HID/_CID matching was broken and no longer matched IDs correctly. 8863ACPICA 8864BZ 793. 8865 8866Fixed a problem with AcpiReset where the reset would silently fail if the 8867register was one of the protected I/O ports. AcpiReset now bypasses the 8868port 8869validation mechanism. This may eventually be driven into the 8870AcpiRead/Write 8871interfaces. 8872 8873Fixed a regression related to the recent update of the AcpiRead/Write 8874interfaces. A sleep/suspend could fail if the optional PM2 Control 8875register 8876does not exist during an attempt to write the Bus Master Arbitration bit. 8877(However, some hosts already delete the code that writes this bit, and 8878the 8879code may in fact be obsolete at this date.) ACPICA BZ 799. 8880 8881Fixed a problem where AcpiTerminate could fault if inadvertently called 8882twice 8883in succession. ACPICA BZ 795. 8884 8885Example Code and Data Size: These are the sizes for the OS-independent 8886acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8887debug version of the code includes the debug output trace mechanism and 8888has a 8889much larger code and data size. 8890 8891 Previous Release: 8892 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8893 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8894 Current Release: 8895 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8896 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8897 88982) iASL Compiler/Disassembler and Tools: 8899 8900ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8901changes to existing tables. ACPICA BZ 775. 8902 8903---------------------------------------- 890425 June 2009. Summary of changes for version 20090625: 8905 8906The ACPI 4.0 Specification was released on June 16 and is available at 8907www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8908continue for the next few releases. 8909 89101) ACPI CA Core Subsystem: 8911 8912ACPI 4.0: Implemented interpreter support for the IPMI operation region 8913address space. Includes support for bi-directional data buffers and an 8914IPMI 8915address space handler (to be installed by an IPMI device driver.) ACPICA 8916BZ 8917773. Lin Ming. 8918 8919ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8920Includes 8921support in both the header files and the disassembler. 8922 8923Completed a major update for the AcpiGetObjectInfo external interface. 8924Changes include: 8925 - Support for variable, unlimited length HID, UID, and CID strings. 8926 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8927etc.) 8928 - Call the _SxW power methods on behalf of a device object. 8929 - Determine if a device is a PCI root bridge. 8930 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8931These changes will require an update to all callers of this interface. 8932See 8933the updated ACPICA Programmer Reference for details. One new source file 8934has 8935been added - utilities/utids.c. ACPICA BZ 368, 780. 8936 8937Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8938transfers. The Value parameter has been extended from 32 bits to 64 bits 8939in 8940order to support new ACPI 4.0 tables. These changes will require an 8941update 8942to 8943all callers of these interfaces. See the ACPICA Programmer Reference for 8944details. ACPICA BZ 768. 8945 8946Fixed several problems with AcpiAttachData. The handler was not invoked 8947when 8948the host node was deleted. The data sub-object was not automatically 8949deleted 8950when the host node was deleted. The interface to the handler had an 8951unused 8952parameter, this was removed. ACPICA BZ 778. 8953 8954Enhanced the function that dumps ACPI table headers. All non-printable 8955characters in the string fields are now replaced with '?' (Signature, 8956OemId, 8957OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8958these fields are occasionally seen in the field. ACPICA BZ 788. 8959 8960Fixed a problem with predefined method repair code where the code that 8961attempts to repair/convert an object of incorrect type is only executed 8962on 8963the first time the predefined method is called. The mechanism that 8964disables 8965warnings on subsequent calls was interfering with the repair mechanism. 8966ACPICA BZ 781. 8967 8968Fixed a possible memory leak in the predefined validation/repair code 8969when 8970a 8971buffer is automatically converted to an expected string object. 8972 8973Removed obsolete 16-bit files from the distribution and from the current 8974git 8975tree head. ACPICA BZ 776. 8976 8977Example Code and Data Size: These are the sizes for the OS-independent 8978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8979debug version of the code includes the debug output trace mechanism and 8980has a 8981much larger code and data size. 8982 8983 Previous Release: 8984 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8985 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8986 Current Release: 8987 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8988 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8989 89902) iASL Compiler/Disassembler and Tools: 8991 8992ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8993operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8994 8995ACPI 4.0: iASL - implemented compile-time validation support for all new 8996predefined names and control methods (31 total). ACPICA BZ 769. 8997 8998---------------------------------------- 899921 May 2009. Summary of changes for version 20090521: 9000 90011) ACPI CA Core Subsystem: 9002 9003Disabled the preservation of the SCI enable bit in the PM1 control 9004register. 9005The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9006to 9007be 9008a "preserved" bit - "OSPM always preserves this bit position", section 90094.7.3.2.1. However, some machines fail if this bit is in fact preserved 9010because the bit needs to be explicitly set by the OS as a workaround. No 9011machines fail if the bit is not preserved. Therefore, ACPICA no longer 9012attempts to preserve this bit. 9013 9014Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9015incorrectly formed _PRT package could cause a fault. Added validation to 9016ensure that each package element is actually a sub-package. 9017 9018Implemented a new interface to install or override a single control 9019method, 9020AcpiInstallMethod. This interface is useful when debugging in order to 9021repair 9022an existing method or to install a missing method without having to 9023override 9024the entire ACPI table. See the ACPICA Programmer Reference for use and 9025examples. Lin Ming, Bob Moore. 9026 9027Fixed several reference count issues with the DdbHandle object that is 9028created from a Load or LoadTable operator. Prevent premature deletion of 9029the 9030object. Also, mark the object as invalid once the table has been 9031unloaded. 9032This is needed because the handle itself may not be deleted after the 9033table 9034unload, depending on whether it has been stored in a named object by the 9035caller. Lin Ming. 9036 9037Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9038mutexes of the same sync level are acquired but then not released in 9039strict 9040opposite order, the internally maintained Current Sync Level becomes 9041confused 9042and can cause subsequent execution errors. ACPICA BZ 471. 9043 9044Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9045specification has been changed to make the SyncLevel for mutex objects 9046more 9047useful. When releasing a mutex, the SyncLevel of the mutex must now be 9048the 9049same as the current sync level. This makes more sense than the previous 9050rule 9051(SyncLevel less than or equal). This change updates the code to match the 9052specification. 9053 9054Fixed a problem with the local version of the AcpiOsPurgeCache function. 9055The 9056(local) cache must be locked during all cache object deletions. Andrew 9057Baumann. 9058 9059Updated the Load operator to use operation region interfaces. This 9060replaces 9061direct memory mapping with region access calls. Now, all region accesses 9062go 9063through the installed region handler as they should. 9064 9065Simplified and optimized the NsGetNextNode function. Reduced parameter 9066count 9067and reduced code for this frequently used function. 9068 9069Example Code and Data Size: These are the sizes for the OS-independent 9070acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9071debug version of the code includes the debug output trace mechanism and 9072has a 9073much larger code and data size. 9074 9075 Previous Release: 9076 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9077 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9078 Current Release: 9079 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9080 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9081 90822) iASL Compiler/Disassembler and Tools: 9083 9084Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9085problems 9086with sub-table disassembly and handling invalid sub-tables. Attempt 9087recovery 9088after an invalid sub-table ID. 9089 9090---------------------------------------- 909122 April 2009. Summary of changes for version 20090422: 9092 90931) ACPI CA Core Subsystem: 9094 9095Fixed a compatibility issue with the recently released I/O port 9096protection 9097mechanism. For windows compatibility, 1) On a port protection violation, 9098simply ignore the request and do not return an exception (allow the 9099control 9100method to continue execution.) 2) If only part of the request overlaps a 9101protected port, read/write the individual ports that are not protected. 9102Linux 9103BZ 13036. Lin Ming 9104 9105Enhanced the execution of the ASL/AML BreakPoint operator so that it 9106actually 9107breaks into the AML debugger if the debugger is present. This matches the 9108ACPI-defined behavior. 9109 9110Fixed several possible warnings related to the use of the configurable 9111ACPI_THREAD_ID. This type can now be configured as either an integer or a 9112pointer with no warnings. Also fixes several warnings in printf-like 9113statements for the 64-bit build when the type is configured as a pointer. 9114ACPICA BZ 766, 767. 9115 9116Fixed a number of possible warnings when compiling with gcc 4+ (depending 9117on 9118warning options.) Examples include printf formats, aliasing, unused 9119globals, 9120missing prototypes, missing switch default statements, use of non-ANSI 9121library functions, use of non-ANSI constructs. See generate/unix/Makefile 9122for 9123a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9124 9125Example Code and Data Size: These are the sizes for the OS-independent 9126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9127debug version of the code includes the debug output trace mechanism and 9128has a 9129much larger code and data size. 9130 9131 Previous Release: 9132 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9133 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9134 Current Release: 9135 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9136 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9137 91382) iASL Compiler/Disassembler and Tools: 9139 9140iASL: Fixed a generation warning from Bison 2.3 and fixed several 9141warnings 9142on 9143the 64-bit build. 9144 9145iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9146not 9147correctly digest Windows/DOS formatted files (with CR/LF). 9148 9149iASL: Added a new option for "quiet mode" (-va) that produces only the 9150compilation summary, not individual errors and warnings. Useful for large 9151batch compilations. 9152 9153AcpiExec: Implemented a new option (-z) to enable a forced 9154semaphore/mutex 9155timeout that can be used to detect hang conditions during execution of 9156AML 9157code (includes both internal semaphores and AML-defined mutexes and 9158events.) 9159 9160Added new makefiles for the generation of acpica in a generic unix-like 9161environment. These makefiles are intended to generate the acpica tools 9162and 9163utilities from the original acpica git source tree structure. 9164 9165Test Suites: Updated and cleaned up the documentation files. Updated the 9166copyrights to 2009, affecting all source files. Use the new version of 9167iASL 9168with quiet mode. Increased the number of available semaphores in the 9169Windows 9170OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9171added 9172an alternate implementation of the semaphore timeout to allow aslts to 9173execute fully on Cygwin. 9174 9175---------------------------------------- 917620 March 2009. Summary of changes for version 20090320: 9177 91781) ACPI CA Core Subsystem: 9179 9180Fixed a possible race condition between AcpiWalkNamespace and dynamic 9181table 9182unloads. Added a reader/writer locking mechanism to allow multiple 9183concurrent 9184namespace walks (readers), but block a dynamic table unload until it can 9185gain 9186exclusive write access to the namespace. This fixes a problem where a 9187table 9188unload could (possibly catastrophically) delete the portion of the 9189namespace 9190that is currently being examined by a walk. Adds a new file, utlock.c, 9191that 9192implements the reader/writer lock mechanism. ACPICA BZ 749. 9193 9194Fixed a regression introduced in version 20090220 where a change to the 9195FADT 9196handling could cause the ACPICA subsystem to access non-existent I/O 9197ports. 9198 9199Modified the handling of FADT register and table (FACS/DSDT) addresses. 9200The 9201FADT can contain both 32-bit and 64-bit versions of these addresses. 9202Previously, the 64-bit versions were favored, meaning that if both 32 and 920364 9204versions were valid, but not equal, the 64-bit version was used. This was 9205found to cause some machines to fail. Now, in this case, the 32-bit 9206version 9207is used instead. This now matches the Windows behavior. 9208 9209Implemented a new mechanism to protect certain I/O ports. Provides 9210Microsoft 9211compatibility and protects the standard PC I/O ports from access via AML 9212code. Adds a new file, hwvalid.c 9213 9214Fixed a possible extraneous warning message from the FADT support. The 9215message warns of a 32/64 length mismatch between the legacy and GAS 9216definitions for a register. 9217 9218Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9219is 9220made obsolete by the port protection mechanism above. It was previously 9221used 9222to validate the entire address range of an operation region, which could 9223be 9224incorrect if the range included illegal ports, but fields within the 9225operation region did not actually access those ports. Validation is now 9226performed on a per-field basis instead of the entire region. 9227 9228Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9229Ignored bits must be "preserved" according to the ACPI spec. Usually, 9230this 9231means a read/modify/write when writing to the register. However, for 9232status 9233registers, writing a one means clear the event. Writing a zero means 9234preserve 9235the event (do not clear.) This behavior is clarified in the ACPI 4.0 9236spec, 9237and the ACPICA code now simply always writes a zero to the ignored bit. 9238 9239Modified the handling of ignored bits for the PM1 A/B Control Registers. 9240As 9241per the ACPI specification, for the control registers, preserve 9242(read/modify/write) all bits that are defined as either reserved or 9243ignored. 9244 9245Updated the handling of write-only bits in the PM1 A/B Control Registers. 9246When reading the register, zero the write-only bits as per the ACPI spec. 9247ACPICA BZ 443. Lin Ming. 9248 9249Removed "Linux" from the list of supported _OSI strings. Linux no longer 9250wants to reply true to this request. The Windows strings are the only 9251paths 9252through the AML that are tested and known to work properly. 9253 9254 Previous Release: 9255 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9256 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9257 Current Release: 9258 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9259 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9260 92612) iASL Compiler/Disassembler and Tools: 9262 9263Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9264and 9265aetables.c 9266 9267---------------------------------------- 926820 February 2009. Summary of changes for version 20090220: 9269 92701) ACPI CA Core Subsystem: 9271 9272Optimized the ACPI register locking. Removed locking for reads from the 9273ACPI 9274bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9275is 9276not required when reading the single-bit registers. The 9277AcpiGetRegisterUnlocked function is no longer needed and has been 9278removed. 9279This will improve performance for reads on these registers. ACPICA BZ 9280760. 9281 9282Fixed the parameter validation for AcpiRead/Write. Now return 9283AE_BAD_PARAMETER if the input register pointer is null, and 9284AE_BAD_ADDRESS 9285if 9286the register has an address of zero. Previously, these cases simply 9287returned 9288AE_OK. For optional registers such as PM1B status/enable/control, the 9289caller 9290should check for a valid register address before calling. ACPICA BZ 748. 9291 9292Renamed the external ACPI bit register access functions. Renamed 9293AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9294functions. The new names are AcpiReadBitRegister and 9295AcpiWriteBitRegister. 9296Also, restructured the code for these functions by simplifying the code 9297path 9298and condensing duplicate code to reduce code size. 9299 9300Added new functions to transparently handle the possibly split PM1 A/B 9301registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9302functions 9303now handle the split registers for PM1 Status, Enable, and Control. 9304ACPICA 9305BZ 9306746. 9307 9308Added a function to handle the PM1 control registers, 9309AcpiHwWritePm1Control. 9310This function writes both of the PM1 control registers (A/B). These 9311registers 9312are different than the PM1 A/B status and enable registers in that 9313different 9314values can be written to the A/B registers. Most notably, the SLP_TYP 9315bits 9316can be different, as per the values returned from the _Sx predefined 9317methods. 9318 9319Removed an extra register write within AcpiHwClearAcpiStatus. This 9320function 9321was writing an optional PM1B status register twice. The existing call to 9322the 9323low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9324A/B 9325register. ACPICA BZ 751. 9326 9327Split out the PM1 Status registers from the FADT. Added new globals for 9328these 9329registers (A/B), similar to the way the PM1 Enable registers are handled. 9330Instead of overloading the FADT Event Register blocks. This makes the 9331code 9332clearer and less prone to error. 9333 9334Fixed the warning message for when the platform contains too many ACPI 9335tables 9336for the default size of the global root table data structure. The 9337calculation 9338for the truncation value was incorrect. 9339 9340Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9341obsolete macro, since it is now a simple reference to ->common.type. 9342There 9343were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9344 9345Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9346TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9347simply SLEEP_TYPE. ACPICA BZ 754. 9348 9349Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9350function is only needed on 64-bit host operating systems and is thus not 9351included for 32-bit hosts. 9352 9353Debug output: print the input and result for invocations of the _OSI 9354reserved 9355control method via the ACPI_LV_INFO debug level. Also, reduced some of 9356the 9357verbosity of this debug level. Len Brown. 9358 9359Example Code and Data Size: These are the sizes for the OS-independent 9360acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9361debug version of the code includes the debug output trace mechanism and 9362has a 9363much larger code and data size. 9364 9365 Previous Release: 9366 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9367 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9368 Current Release: 9369 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9370 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9371 93722) iASL Compiler/Disassembler and Tools: 9373 9374Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9375various legal performance profiles. 9376 9377---------------------------------------- 937823 January 2009. Summary of changes for version 20090123: 9379 93801) ACPI CA Core Subsystem: 9381 9382Added the 2009 copyright to all module headers and signons. This affects 9383virtually every file in the ACPICA core subsystem, the iASL compiler, and 9384the tools/utilities. 9385 9386Implemented a change to allow the host to override any ACPI table, 9387including 9388dynamically loaded tables. Previously, only the DSDT could be replaced by 9389the 9390host. With this change, the AcpiOsTableOverride interface is called for 9391each 9392table found in the RSDT/XSDT during ACPICA initialization, and also 9393whenever 9394a table is dynamically loaded via the AML Load operator. 9395 9396Updated FADT flag definitions, especially the Boot Architecture flags. 9397 9398Debugger: For the Find command, automatically pad the input ACPI name 9399with 9400underscores if the name is shorter than 4 characters. This enables a 9401match 9402with the actual namespace entry which is itself padded with underscores. 9403 9404Example Code and Data Size: These are the sizes for the OS-independent 9405acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9406debug version of the code includes the debug output trace mechanism and 9407has a 9408much larger code and data size. 9409 9410 Previous Release: 9411 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9412 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9413 Current Release: 9414 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9415 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9416 94172) iASL Compiler/Disassembler and Tools: 9418 9419Fix build error under Bison-2.4. 9420 9421Disassembler: Enhanced FADT support. Added decoding of the Boot 9422Architecture 9423flags. Now decode all flags, regardless of the FADT version. Flag output 9424includes the FADT version which first defined each flag. 9425 9426The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9427and 9428DSDT). Windows only. 9429 9430---------------------------------------- 943104 December 2008. Summary of changes for version 20081204: 9432 94331) ACPI CA Core Subsystem: 9434 9435The ACPICA Programmer Reference has been completely updated and revamped 9436for 9437this release. This includes updates to the external interfaces, OSL 9438interfaces, the overview sections, and the debugger reference. 9439 9440Several new ACPICA interfaces have been implemented and documented in the 9441programmer reference: 9442AcpiReset - Writes the reset value to the FADT-defined reset register. 9443AcpiDisableAllGpes - Disable all available GPEs. 9444AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9445AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9446AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9447AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9448AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9449 9450Most of the public ACPI hardware-related interfaces have been moved to a 9451new 9452file, components/hardware/hwxface.c 9453 9454Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9455register lengths within the FADT are now used, and the low level ACPI 9456register access no longer hardcodes the ACPI register lengths. Given that 9457there may be some risk in actually trusting the FADT register lengths, a 9458run- 9459time option was added to fall back to the default hardcoded lengths if 9460the 9461FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9462option is set to true for now, and a warning is issued if a suspicious 9463FADT 9464register length is overridden with the default value. 9465 9466Fixed a reference count issue in NsRepairObject. This problem was 9467introduced 9468in version 20081031 as part of a fix to repair Buffer objects within 9469Packages. Lin Ming. 9470 9471Added semaphore support to the Linux/Unix application OS-services layer 9472(OSL). ACPICA BZ 448. Lin Ming. 9473 9474Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9475will 9476be implemented in the OSL, or will binary semaphores be used instead. 9477 9478Example Code and Data Size: These are the sizes for the OS-independent 9479acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9480debug version of the code includes the debug output trace mechanism and 9481has a 9482much larger code and data size. 9483 9484 Previous Release: 9485 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9486 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9487 Current Release: 9488 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9489 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9490 94912) iASL Compiler/Disassembler and Tools: 9492 9493iASL: Completed the '-e' option to include additional ACPI tables in 9494order 9495to 9496aid with disassembly and External statement generation. ACPICA BZ 742. 9497Lin 9498Ming. 9499 9500iASL: Removed the "named object in while loop" error. The compiler cannot 9501determine how many times a loop will execute. ACPICA BZ 730. 9502 9503Disassembler: Implemented support for FADT revision 2 (MS extension). 9504ACPICA 9505BZ 743. 9506 9507Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9508MCFG). 9509 9510---------------------------------------- 951131 October 2008. Summary of changes for version 20081031: 9512 95131) ACPI CA Core Subsystem: 9514 9515Restructured the ACPICA header files into public/private. acpi.h now 9516includes 9517only the "public" acpica headers. All other acpica headers are "private" 9518and 9519should not be included by acpica users. One new file, accommon.h is used 9520to 9521include the commonly used private headers for acpica code generation. 9522Future 9523plans include moving all private headers to a new subdirectory. 9524 9525Implemented an automatic Buffer->String return value conversion for 9526predefined ACPI methods. For these methods (such as _BIF), added 9527automatic 9528conversion for return objects that are required to be a String, but a 9529Buffer 9530was found instead. This can happen when reading string battery data from 9531an 9532operation region, because it used to be difficult to convert the data 9533from 9534buffer to string from within the ASL. Ensures that the host OS is 9535provided 9536with a valid null-terminated string. Linux BZ 11822. 9537 9538Updated the FACS waking vector interfaces. Split 9539AcpiSetFirmwareWakingVector 9540into two: one for the 32-bit vector, another for the 64-bit vector. This 9541is 9542required because the host OS must setup the wake much differently for 9543each 9544vector (real vs. protected mode, etc.) and the interface itself should 9545not 9546be 9547deciding which vector to use. Also, eliminated the 9548GetFirmwareWakingVector 9549interface, as it served no purpose (only the firmware reads the vector, 9550OS 9551only writes the vector.) ACPICA BZ 731. 9552 9553Implemented a mechanism to escape infinite AML While() loops. Added a 9554loop 9555counter to force exit from AML While loops if the count becomes too 9556large. 9557This can occur in poorly written AML when the hardware does not respond 9558within a while loop and the loop does not implement a timeout. The 9559maximum 9560loop count is configurable. A new exception code is returned when a loop 9561is 9562broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9563 9564Optimized the execution of AML While loops. Previously, a control state 9565object was allocated and freed for each execution of the loop. The 9566optimization is to simply reuse the control state for each iteration. 9567This 9568speeds up the raw loop execution time by about 5%. 9569 9570Enhanced the implicit return mechanism. For Windows compatibility, return 9571an 9572implicit integer of value zero for methods that contain no executable 9573code. 9574Such methods are seen in the field as stubs (presumably), and can cause 9575drivers to fail if they expect a return value. Lin Ming. 9576 9577Allow multiple backslashes as root prefixes in namepaths. In a fully 9578qualified namepath, allow multiple backslash prefixes. This can happen 9579(and 9580is seen in the field) because of the use of a double-backslash in strings 9581(since backslash is the escape character) causing confusion. ACPICA BZ 9582739 9583Lin Ming. 9584 9585Emit a warning if two different FACS or DSDT tables are discovered in the 9586FADT. Checks if there are two valid but different addresses for the FACS 9587and 9588DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9589 9590Consolidated the method argument count validation code. Merged the code 9591that 9592validates control method argument counts into the predefined validation 9593module. Eliminates possible multiple warnings for incorrect argument 9594counts. 9595 9596Implemented ACPICA example code. Includes code for ACPICA initialization, 9597handler installation, and calling a control method. Available at 9598source/tools/examples. 9599 9600Added a global pointer for FACS table to simplify internal FACS access. 9601Use 9602the global pointer instead of using AcpiGetTableByIndex for each FACS 9603access. 9604This simplifies the code for the Global Lock and the Firmware Waking 9605Vector(s). 9606 9607Example Code and Data Size: These are the sizes for the OS-independent 9608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9609debug version of the code includes the debug output trace mechanism and 9610has a 9611much larger code and data size. 9612 9613 Previous Release: 9614 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9615 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9616 Current Release: 9617 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9618 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9619 96202) iASL Compiler/Disassembler and Tools: 9621 9622iASL: Improved disassembly of external method calls. Added the -e option 9623to 9624allow the inclusion of additional ACPI tables to help with the 9625disassembly 9626of 9627method invocations and the generation of external declarations during the 9628disassembly. Certain external method invocations cannot be disassembled 9629properly without the actual declaration of the method. Use the -e option 9630to 9631include the table where the external method(s) are actually declared. 9632Most 9633useful for disassembling SSDTs that make method calls back to the master 9634DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9635-d 9636-e dsdt.aml ssdt1.aml 9637 9638iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9639problem where the use of an alias within a namepath would result in a not 9640found error or cause the compiler to fault. Also now allows forward 9641references from the Alias operator itself. ACPICA BZ 738. 9642 9643---------------------------------------- 964426 September 2008. Summary of changes for version 20080926: 9645 96461) ACPI CA Core Subsystem: 9647 9648Designed and implemented a mechanism to validate predefined ACPI methods 9649and 9650objects. This code validates the predefined ACPI objects (objects whose 9651names 9652start with underscore) that appear in the namespace, at the time they are 9653evaluated. The argument count and the type of the returned object are 9654validated against the ACPI specification. The purpose of this validation 9655is 9656to detect problems with the BIOS-implemented predefined ACPI objects 9657before 9658the results are returned to the ACPI-related drivers. Future enhancements 9659may 9660include actual repair of incorrect return objects where possible. Two new 9661files are nspredef.c and acpredef.h. 9662 9663Fixed a fault in the AML parser if a memory allocation fails during the 9664Op 9665completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9666 9667Fixed an issue with implicit return compatibility. This change improves 9668the 9669implicit return mechanism to be more compatible with the MS interpreter. 9670Lin 9671Ming, ACPICA BZ 349. 9672 9673Implemented support for zero-length buffer-to-string conversions. Allow 9674zero 9675length strings during interpreter buffer-to-string conversions. For 9676example, 9677during the ToDecimalString and ToHexString operators, as well as implicit 9678conversions. Fiodor Suietov, ACPICA BZ 585. 9679 9680Fixed two possible memory leaks in the error exit paths of 9681AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9682are 9683similar in that they use a stack of state objects in order to eliminate 9684recursion. The stack must be fully unwound and deallocated if an error 9685occurs. Lin Ming. ACPICA BZ 383. 9686 9687Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9688global 9689ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9690Moore ACPICA BZ 442. 9691 9692Removed the obsolete version number in module headers. Removed the 9693"$Revision" number that appeared in each module header. This version 9694number 9695was useful under SourceSafe and CVS, but has no meaning under git. It is 9696not 9697only incorrect, it could also be misleading. 9698 9699Example Code and Data Size: These are the sizes for the OS-independent 9700acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9701debug version of the code includes the debug output trace mechanism and 9702has a 9703much larger code and data size. 9704 9705 Previous Release: 9706 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9707 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9708 Current Release: 9709 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9710 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9711 9712---------------------------------------- 971329 August 2008. Summary of changes for version 20080829: 9714 97151) ACPI CA Core Subsystem: 9716 9717Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9718Reference. Changes include the elimination of cheating on the Object 9719field 9720for the DdbHandle subtype, addition of a reference class field to 9721differentiate the various reference types (instead of an AML opcode), and 9722the 9723cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9724 9725Reduce an error to a warning for an incorrect method argument count. 9726Previously aborted with an error if too few arguments were passed to a 9727control method via the external ACPICA interface. Now issue a warning 9728instead 9729and continue. Handles the case where the method inadvertently declares 9730too 9731many arguments, but does not actually use the extra ones. Applies mainly 9732to 9733the predefined methods. Lin Ming. Linux BZ 11032. 9734 9735Disallow the evaluation of named object types with no intrinsic value. 9736Return 9737AE_TYPE for objects that have no value and therefore evaluation is 9738undefined: 9739Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9740of 9741these types were allowed, but an exception would be generated at some 9742point 9743during the evaluation. Now, the error is generated up front. 9744 9745Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9746(nsnames.c). Fixes a leak in the error exit path. 9747 9748Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9749debug 9750levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9751ACPI_EXCEPTION 9752interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9753ACPI_LV_EVENTS. 9754 9755Removed obsolete and/or unused exception codes from the acexcep.h header. 9756There is the possibility that certain device drivers may be affected if 9757they 9758use any of these exceptions. 9759 9760The ACPICA documentation has been added to the public git source tree, 9761under 9762acpica/documents. Included are the ACPICA programmer reference, the iASL 9763compiler reference, and the changes.txt release logfile. 9764 9765Example Code and Data Size: These are the sizes for the OS-independent 9766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9767debug version of the code includes the debug output trace mechanism and 9768has a 9769much larger code and data size. 9770 9771 Previous Release: 9772 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9773 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9774 Current Release: 9775 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9776 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9777 97782) iASL Compiler/Disassembler and Tools: 9779 9780Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9781defines _SCP with 3 arguments. Previous versions defined it with only 1 9782argument. iASL now allows both definitions. 9783 9784iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9785zero- 9786length subtables when disassembling ACPI tables. Also fixed a couple of 9787errors where a full 16-bit table type field was not extracted from the 9788input 9789properly. 9790 9791acpisrc: Improve comment counting mechanism for generating source code 9792statistics. Count first and last lines of multi-line comments as 9793whitespace, 9794not comment lines. Handle Linux legal header in addition to standard 9795acpica 9796header. 9797 9798---------------------------------------- 9799 980029 July 2008. Summary of changes for version 20080729: 9801 98021) ACPI CA Core Subsystem: 9803 9804Fix a possible deadlock in the GPE dispatch. Remove call to 9805AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9806attempt 9807to acquire the GPE lock but can deadlock since the GPE lock is already 9808held 9809at dispatch time. This code was introduced in version 20060831 as a 9810response 9811to Linux BZ 6881 and has since been removed from Linux. 9812 9813Add a function to dereference returned reference objects. Examines the 9814return 9815object from a call to AcpiEvaluateObject. Any Index or RefOf references 9816are 9817automatically dereferenced in an attempt to return something useful 9818(these 9819reference types cannot be converted into an external ACPI_OBJECT.) 9820Provides 9821MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9822 9823x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9824subtables for the MADT and one new subtable for the SRAT. Includes 9825disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9826x2APIC 9827Specification, June 2008. 9828 9829Additional error checking for pathname utilities. Add error check after 9830all 9831calls to AcpiNsGetPathnameLength. Add status return from 9832AcpiNsBuildExternalPath and check after all calls. Add parameter 9833validation 9834to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9835 9836Return status from the global init function AcpiUtGlobalInitialize. This 9837is 9838used by both the kernel subsystem and the utilities such as iASL 9839compiler. 9840The function could possibly fail when the caches are initialized. Yang 9841Yi. 9842 9843Add a function to decode reference object types to strings. Created for 9844improved error messages. 9845 9846Improve object conversion error messages. Better error messages during 9847object 9848conversion from internal to the external ACPI_OBJECT. Used for external 9849calls 9850to AcpiEvaluateObject. 9851 9852Example Code and Data Size: These are the sizes for the OS-independent 9853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9854debug version of the code includes the debug output trace mechanism and 9855has a 9856much larger code and data size. 9857 9858 Previous Release: 9859 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9860 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9861 Current Release: 9862 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9863 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9864 98652) iASL Compiler/Disassembler and Tools: 9866 9867Debugger: fix a possible hang when evaluating non-methods. Fixes a 9868problem 9869introduced in version 20080701. If the object being evaluated (via 9870execute 9871command) is not a method, the debugger can hang while trying to obtain 9872non- 9873existent parameters. 9874 9875iASL: relax error for using reserved "_T_x" identifiers. These names can 9876appear in a disassembled ASL file if they were emitted by the original 9877compiler. Instead of issuing an error or warning and forcing the user to 9878manually change these names, issue a remark instead. 9879 9880iASL: error if named object created in while loop. Emit an error if any 9881named 9882object is created within a While loop. If allowed, this code will 9883generate 9884a 9885run-time error on the second iteration of the loop when an attempt is 9886made 9887to 9888create the same named object twice. ACPICA bugzilla 730. 9889 9890iASL: Support absolute pathnames for include files. Add support for 9891absolute 9892pathnames within the Include operator. previously, only relative 9893pathnames 9894were supported. 9895 9896iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9897Descriptor. 9898The ACPI spec requires one interrupt minimum. BZ 423 9899 9900iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9901Handles the case for the Interrupt Resource Descriptor where 9902the ResourceSource argument is omitted but ResourceSourceIndex 9903is present. Now leave room for the Index. BZ 426 9904 9905iASL: Prevent error message if CondRefOf target does not exist. Fixes 9906cases 9907where an error message is emitted if the target does not exist. BZ 516 9908 9909iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9910(get ACPI tables on Windows). This was apparently broken in version 991120070919. 9912 9913AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9914where 9915the EOF happens immediately after the last table in the input file. Print 9916completion message. Previously, no message was displayed in this case. 9917 9918---------------------------------------- 991901 July 2008. Summary of changes for version 20080701: 9920 99210) Git source tree / acpica.org 9922 9923Fixed a problem where a git-clone from http would not transfer the entire 9924source tree. 9925 99261) ACPI CA Core Subsystem: 9927 9928Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9929enable bit. Now performs a read-change-write of the enable register 9930instead 9931of simply writing out the cached enable mask. This will prevent 9932inadvertent 9933enabling of GPEs if a rogue GPE is received during initialization (before 9934GPE 9935handlers are installed.) 9936 9937Implemented a copy for dynamically loaded tables. Previously, dynamically 9938loaded tables were simply mapped - but on some machines this memory is 9939corrupted after suspend. Now copy the table to a local buffer. For the 9940OpRegion case, added checksum verify. Use the table length from the table 9941header, not the region length. For the Buffer case, use the table length 9942also. Dennis Noordsij, Bob Moore. BZ 10734 9943 9944Fixed a problem where the same ACPI table could not be dynamically loaded 9945and 9946unloaded more than once. Without this change, a table cannot be loaded 9947again 9948once it has been loaded/unloaded one time. The current mechanism does not 9949unregister a table upon an unload. During a load, if the same table is 9950found, 9951this no longer returns an exception. BZ 722 9952 9953Fixed a problem where the wrong descriptor length was calculated for the 9954EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9955EndTag 9956are calculated as 12 bytes long, but the actual length in the internal 9957descriptor is 16 because of the round-up to 8 on the 64-bit build. 9958Reported 9959by Linn Crosetto. BZ 728 9960 9961Fixed a possible memory leak in the Unload operator. The DdbHandle 9962returned 9963by Load() did not have its reference count decremented during unload, 9964leading 9965to a memory leak. Lin Ming. BZ 727 9966 9967Fixed a possible memory leak when deleting thermal/processor objects. Any 9968associated notify handlers (and objects) were not being deleted. Fiodor 9969Suietov. BZ 506 9970 9971Fixed the ordering of the ASCII names in the global mutex table to match 9972the 9973actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9974only. 9975Vegard Nossum. BZ 726 9976 9977Enhanced the AcpiGetObjectInfo interface to return the number of required 9978arguments if the object is a control method. Added this call to the 9979debugger 9980so the proper number of default arguments are passed to a method. This 9981prevents a warning when executing methods from AcpiExec. 9982 9983Added a check for an invalid handle in AcpiGetObjectInfo. Return 9984AE_BAD_PARAMETER if input handle is invalid. BZ 474 9985 9986Fixed an extraneous warning from exconfig.c on the 64-bit build. 9987 9988Example Code and Data Size: These are the sizes for the OS-independent 9989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9990debug version of the code includes the debug output trace mechanism and 9991has a 9992much larger code and data size. 9993 9994 Previous Release: 9995 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9996 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9997 Current Release: 9998 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9999 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10000 100012) iASL Compiler/Disassembler and Tools: 10002 10003iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10004resource descriptor names. 10005 10006iASL: Detect invalid ASCII characters in input (windows version). Removed 10007the 10008"-CF" flag from the flex compile, enables correct detection of non-ASCII 10009characters in the input. BZ 441 10010 10011iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10012the 10013"result of operation not used" warning when the DDB handle returned from 10014LoadTable is not used. The warning is not needed. BZ 590 10015 10016AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10017method 10018to 10019pass address of table to the AML. Added option to disable OpRegion 10020simulation 10021to allow creation of an OpRegion with a real address that was passed to 10022_CFG. 10023All of this allows testing of the Load and Unload operators from 10024AcpiExec. 10025 10026Debugger: update tables command for unloaded tables. Handle unloaded 10027tables 10028and use the standard table header output routine. 10029 10030---------------------------------------- 1003109 June 2008. Summary of changes for version 20080609: 10032 100331) ACPI CA Core Subsystem: 10034 10035Implemented a workaround for reversed _PRT entries. A significant number 10036of 10037BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10038change dynamically detects and repairs this problem. Provides 10039compatibility 10040with MS ACPI. BZ 6859 10041 10042Simplified the internal ACPI hardware interfaces to eliminate the locking 10043flag parameter from Register Read/Write. Added a new external interface, 10044AcpiGetRegisterUnlocked. 10045 10046Fixed a problem where the invocation of a GPE control method could hang. 10047This 10048was a regression introduced in 20080514. The new method argument count 10049validation mechanism can enter an infinite loop when a GPE method is 10050dispatched. Problem fixed by removing the obsolete code that passed GPE 10051block 10052information to the notify handler via the control method parameter 10053pointer. 10054 10055Fixed a problem where the _SST execution status was incorrectly returned 10056to 10057the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10058in 1005920080514. _SST is optional and a NOT_FOUND exception should never be 10060returned. BZ 716 10061 10062Fixed a problem where a deleted object could be accessed from within the 10063AML 10064parser. This was a regression introduced in version 20080123 as a fix for 10065the 10066Unload operator. Lin Ming. BZ 10669 10067 10068Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10069operands 10070and eliminated the use of a negative index in a loop. Operands are now 10071displayed in the correct order, not backwards. This also fixes a 10072regression 10073introduced in 20080514 on 64-bit systems where the elimination of 10074ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10075715 10076 10077Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10078exit 10079path did not delete a locally allocated structure. 10080 10081Updated definitions for the DMAR and SRAT tables to synchronize with the 10082current specifications. Includes disassembler support. 10083 10084Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10085loop termination value was used. Loop terminated on iteration early, 10086missing 10087one mutex. Linn Crosetto 10088 10089Example Code and Data Size: These are the sizes for the OS-independent 10090acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10091debug version of the code includes the debug output trace mechanism and 10092has a 10093much larger code and data size. 10094 10095 Previous Release: 10096 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10097 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10098 Current Release: 10099 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10100 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10101 101022) iASL Compiler/Disassembler and Tools: 10103 10104Disassembler: Implemented support for EisaId() within _CID objects. Now 10105disassemble integer _CID objects back to EisaId invocations, including 10106multiple integers within _CID packages. Includes single-step support for 10107debugger also. 10108 10109Disassembler: Added support for DMAR and SRAT table definition changes. 10110 10111---------------------------------------- 1011214 May 2008. Summary of changes for version 20080514: 10113 101141) ACPI CA Core Subsystem: 10115 10116Fixed a problem where GPEs were enabled too early during the ACPICA 10117initialization. This could lead to "handler not installed" errors on some 10118machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10119This 10120ensures that all operation regions and devices throughout the namespace 10121have 10122been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10123 10124Implemented a change to the enter sleep code. Moved execution of the _GTS 10125method to just before setting sleep enable bit. The execution was moved 10126from 10127AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10128immediately before the SLP_EN bit is set, as per the ACPI specification. 10129Luming Yu, BZ 1653. 10130 10131Implemented a fix to disable unknown GPEs (2nd version). Now always 10132disable 10133the GPE, even if ACPICA thinks that that it is already disabled. It is 10134possible that the AML or some other code has enabled the GPE unbeknownst 10135to 10136the ACPICA code. 10137 10138Fixed a problem with the Field operator where zero-length fields would 10139return 10140an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10141ASL 10142field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10143 10144Implemented a fix for the Load operator, now load the table at the 10145namespace 10146root. This reverts a change introduced in version 20071019. The table is 10147now 10148loaded at the namespace root even though this goes against the ACPI 10149specification. This provides compatibility with other ACPI 10150implementations. 10151The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10152Ming. 10153 10154Fixed a problem where ACPICA would not Load() tables with unusual 10155signatures. 10156Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10157acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10158Therefore, signature validation is worthless. Apparently MS ACPI accepts 10159such 10160signatures, ACPICA must be compatible. BZ 10454. 10161 10162Fixed a possible negative array index in AcpiUtValidateException. Added 10163NULL 10164fields to the exception string arrays to eliminate a -1 subtraction on 10165the 10166SubStatus field. 10167 10168Updated the debug tracking macros to reduce overall code and data size. 10169Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10170instead of pointers to static strings. Jan Beulich and Bob Moore. 10171 10172Implemented argument count checking in control method invocation via 10173AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10174too 10175many. This applies only to extern programmatic control method execution, 10176not 10177method-to-method calls within the AML. Lin Ming. 10178 10179Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10180no 10181longer needed, especially with the removal of 16-bit support. It was 10182replaced 10183mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10184bit 10185on 1018632/64-bit platforms is required. 10187 10188Added the C const qualifier for appropriate string constants -- mostly 10189MODULE_NAME and printf format strings. Jan Beulich. 10190 10191Example Code and Data Size: These are the sizes for the OS-independent 10192acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10193debug version of the code includes the debug output trace mechanism and 10194has a 10195much larger code and data size. 10196 10197 Previous Release: 10198 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10199 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10200 Current Release: 10201 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10202 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10203 102042) iASL Compiler/Disassembler and Tools: 10205 10206Implemented ACPI table revision ID validation in the disassembler. Zero 10207is 10208always invalid. For DSDTs, the ID controls the interpreter integer width. 102091 10210means 32-bit and this is unusual. 2 or greater is 64-bit. 10211 10212---------------------------------------- 1021321 March 2008. Summary of changes for version 20080321: 10214 102151) ACPI CA Core Subsystem: 10216 10217Implemented an additional change to the GPE support in order to suppress 10218spurious or stray GPEs. The AcpiEvDisableGpe function will now 10219permanently 10220disable incoming GPEs that are neither enabled nor disabled -- meaning 10221that 10222the GPE is unknown to the system. This should prevent future interrupt 10223floods 10224from that GPE. BZ 6217 (Zhang Rui) 10225 10226Fixed a problem where NULL package elements were not returned to the 10227AcpiEvaluateObject interface correctly. The element was simply ignored 10228instead of returning a NULL ACPI_OBJECT package element, potentially 10229causing 10230a buffer overflow and/or confusing the caller who expected a fixed number 10231of 10232elements. BZ 10132 (Lin Ming, Bob Moore) 10233 10234Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10235Dword, 10236Qword), Field, BankField, and IndexField operators when invoked from 10237inside 10238an executing control method. In this case, these operators created 10239namespace 10240nodes that were incorrectly left marked as permanent nodes instead of 10241temporary nodes. This could cause a problem if there is race condition 10242between an exiting control method and a running namespace walk. (Reported 10243by 10244Linn Crosetto) 10245 10246Fixed a problem where the CreateField and CreateXXXField operators would 10247incorrectly allow duplicate names (the name of the field) with no 10248exception 10249generated. 10250 10251Implemented several changes for Notify handling. Added support for new 10252Notify 10253values (ACPI 2.0+) and improved the Notify debug output. Notify on 10254PowerResource objects is no longer allowed, as per the ACPI 10255specification. 10256(Bob Moore, Zhang Rui) 10257 10258All Reference Objects returned via the AcpiEvaluateObject interface are 10259now 10260marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10261for 10262NULL objects - either NULL package elements or unresolved named 10263references. 10264 10265Fixed a problem where an extraneous debug message was produced for 10266package 10267objects (when debugging enabled). The message "Package List length larger 10268than NumElements count" is now produced in the correct case, and is now 10269an 10270error message rather than a debug message. Added a debug message for the 10271opposite case, where NumElements is larger than the Package List (the 10272package 10273will be padded out with NULL elements as per the ACPI spec.) 10274 10275Implemented several improvements for the output of the ASL "Debug" object 10276to 10277clarify and keep all data for a given object on one output line. 10278 10279Fixed two size calculation issues with the variable-length Start 10280Dependent 10281resource descriptor. 10282 10283Example Code and Data Size: These are the sizes for the OS-independent 10284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10285debug version of the code includes the debug output trace mechanism and 10286has 10287a much larger code and data size. 10288 10289 Previous Release: 10290 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10291 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10292 Current Release: 10293 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10294 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10295 102962) iASL Compiler/Disassembler and Tools: 10297 10298Fixed a problem with the use of the Switch operator where execution of 10299the 10300containing method by multiple concurrent threads could cause an 10301AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10302actual Switch opcode, it must be simulated with local named temporary 10303variables and if/else pairs. The solution chosen was to mark any method 10304that 10305uses Switch as Serialized, thus preventing multiple thread entries. BZ 10306469. 10307 10308---------------------------------------- 1030913 February 2008. Summary of changes for version 20080213: 10310 103111) ACPI CA Core Subsystem: 10312 10313Implemented another MS compatibility design change for GPE/Notify 10314handling. 10315GPEs are now cleared/enabled asynchronously to allow all pending notifies 10316to 10317complete first. It is expected that the OSL will queue the enable request 10318behind all pending notify requests (may require changes to the local host 10319OSL 10320in AcpiOsExecute). Alexey Starikovskiy. 10321 10322Fixed a problem where buffer and package objects passed as arguments to a 10323control method via the external AcpiEvaluateObject interface could cause 10324an 10325AE_AML_INTERNAL exception depending on the order and type of operators 10326executed by the target control method. 10327 10328Fixed a problem where resource descriptor size optimization could cause a 10329problem when a _CRS resource template is passed to a _SRS method. The 10330_SRS 10331resource template must use the same descriptors (with the same size) as 10332returned from _CRS. This change affects the following resource 10333descriptors: 10334IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 103359487) 10336 10337Fixed a problem where a CopyObject to RegionField, BankField, and 10338IndexField 10339objects did not perform an implicit conversion as it should. These types 10340must 10341retain their initial type permanently as per the ACPI specification. 10342However, 10343a CopyObject to all other object types should not perform an implicit 10344conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10345 10346Fixed a problem with the AcpiGetDevices interface where the mechanism to 10347match device CIDs did not examine the entire list of available CIDs, but 10348instead aborted on the first non-matching CID. Andrew Patterson. 10349 10350Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10351was 10352inadvertently changed to return a 16-bit value instead of a 32-bit value, 10353truncating the upper dword of a 64-bit value. This macro is only used to 10354display debug output, so no incorrect calculations were made. Also, 10355reimplemented the macro so that a 64-bit shift is not performed by 10356inefficient compilers. 10357 10358Added missing va_end statements that should correspond with each va_start 10359statement. 10360 10361Example Code and Data Size: These are the sizes for the OS-independent 10362acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10363debug version of the code includes the debug output trace mechanism and 10364has 10365a much larger code and data size. 10366 10367 Previous Release: 10368 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10369 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10370 Current Release: 10371 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10372 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10373 103742) iASL Compiler/Disassembler and Tools: 10375 10376Implemented full disassembler support for the following new ACPI tables: 10377BERT, EINJ, and ERST. Implemented partial disassembler support for the 10378complicated HEST table. These tables support the Windows Hardware Error 10379Architecture (WHEA). 10380 10381---------------------------------------- 1038223 January 2008. Summary of changes for version 20080123: 10383 103841) ACPI CA Core Subsystem: 10385 10386Added the 2008 copyright to all module headers and signons. This affects 10387virtually every file in the ACPICA core subsystem, the iASL compiler, and 10388the tools/utilities. 10389 10390Fixed a problem with the SizeOf operator when used with Package and 10391Buffer 10392objects. These objects have deferred execution for some arguments, and 10393the 10394execution is now completed before the SizeOf is executed. This problem 10395caused 10396unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10397BZ 103989558 10399 10400Implemented an enhancement to the interpreter "slack mode". In the 10401absence 10402of 10403an explicit return or an implicitly returned object from the last 10404executed 10405opcode, a control method will now implicitly return an integer of value 0 10406for 10407Microsoft compatibility. (Lin Ming) BZ 392 10408 10409Fixed a problem with the Load operator where an exception was not 10410returned 10411in 10412the case where the table is already loaded. (Lin Ming) BZ 463 10413 10414Implemented support for the use of DDBHandles as an Indexed Reference, as 10415per 10416the ACPI spec. (Lin Ming) BZ 486 10417 10418Implemented support for UserTerm (Method invocation) for the Unload 10419operator 10420as per the ACPI spec. (Lin Ming) BZ 580 10421 10422Fixed a problem with the LoadTable operator where the OemId and 10423OemTableId 10424input strings could cause unexpected failures if they were shorter than 10425the 10426maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10427 10428Implemented support for UserTerm (Method invocation) for the Unload 10429operator 10430as per the ACPI spec. (Lin Ming) BZ 580 10431 10432Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10433HEST, 10434IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10435 10436Example Code and Data Size: These are the sizes for the OS-independent 10437acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10438debug version of the code includes the debug output trace mechanism and 10439has 10440a much larger code and data size. 10441 10442 Previous Release: 10443 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10444 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10445 Current Release: 10446 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10447 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10448 104492) iASL Compiler/Disassembler and Tools: 10450 10451Implemented support in the disassembler for checksum validation on 10452incoming 10453binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10454table 10455header dump at the start of the disassembly. 10456 10457Implemented additional debugging information in the namespace listing 10458file 10459created during compilation. In addition to the namespace hierarchy, the 10460full 10461pathname to each namespace object is displayed. 10462 10463Fixed a problem with the disassembler where invalid ACPI tables could 10464cause 10465faults or infinite loops. 10466 10467Fixed an unexpected parse error when using the optional "parameter types" 10468list in a control method declaration. (Lin Ming) BZ 397 10469 10470Fixed a problem where two External declarations with the same name did 10471not 10472cause an error (Lin Ming) BZ 509 10473 10474Implemented support for full TermArgs (adding Argx, Localx and method 10475invocation) for the ParameterData parameter to the LoadTable operator. 10476(Lin 10477Ming) BZ 583,587 10478 10479---------------------------------------- 1048019 December 2007. Summary of changes for version 20071219: 10481 104821) ACPI CA Core Subsystem: 10483 10484Implemented full support for deferred execution for the TermArg string 10485arguments for DataTableRegion. This enables forward references and full 10486operand resolution for the three string arguments. Similar to 10487OperationRegion 10488deferred argument execution.) Lin Ming. BZ 430 10489 10490Implemented full argument resolution support for the BankValue argument 10491to 10492BankField. Previously, only constants were supported, now any TermArg may 10493be 10494used. Lin Ming BZ 387, 393 10495 10496Fixed a problem with AcpiGetDevices where the search of a branch of the 10497device tree could be terminated prematurely. In accordance with the ACPI 10498specification, the search down the current branch is terminated if a 10499device 10500is both not present and not functional (instead of just not present.) 10501Yakui 10502Zhao. 10503 10504Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10505if 10506the underlying AML code changed the GPE enable registers. Now, any 10507unknown 10508incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10509disabled 10510instead of simply ignored. Rui Zhang. 10511 10512Fixed a problem with Index Fields where the Index register was 10513incorrectly 10514limited to a maximum of 32 bits. Now any size may be used. 10515 10516Fixed a couple memory leaks associated with "implicit return" objects 10517when 10518the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10519 10520Example Code and Data Size: These are the sizes for the OS-independent 10521acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10522debug version of the code includes the debug output trace mechanism and 10523has 10524a much larger code and data size. 10525 10526 Previous Release: 10527 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10528 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10529 Current Release: 10530 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10531 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10532 10533---------------------------------------- 1053414 November 2007. Summary of changes for version 20071114: 10535 105361) ACPI CA Core Subsystem: 10537 10538Implemented event counters for each of the Fixed Events, the ACPI SCI 10539(interrupt) itself, and control methods executed. Named 10540AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10541These 10542should be useful for debugging and statistics. 10543 10544Implemented a new external interface, AcpiGetStatistics, to retrieve the 10545contents of the various event counters. Returns the current values for 10546AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10547AcpiMethodCount. The interface can be expanded in the future if new 10548counters 10549are added. Device drivers should use this interface rather than access 10550the 10551counters directly. 10552 10553Fixed a problem with the FromBCD and ToBCD operators. With some 10554compilers, 10555the ShortDivide function worked incorrectly, causing problems with the 10556BCD 10557functions with large input values. A truncation from 64-bit to 32-bit 10558inadvertently occurred. Internal BZ 435. Lin Ming 10559 10560Fixed a problem with Index references passed as method arguments. 10561References 10562passed as arguments to control methods were dereferenced immediately 10563(before 10564control was passed to the called method). The references are now 10565correctly 10566passed directly to the called method. BZ 5389. Lin Ming 10567 10568Fixed a problem with CopyObject used in conjunction with the Index 10569operator. 10570The reference was incorrectly dereferenced before the copy. The reference 10571is 10572now correctly copied. BZ 5391. Lin Ming 10573 10574Fixed a problem with Control Method references within Package objects. 10575These 10576references are now correctly generated. This completes the package 10577construction overhaul that began in version 20071019. 10578 10579Example Code and Data Size: These are the sizes for the OS-independent 10580acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10581debug version of the code includes the debug output trace mechanism and 10582has 10583a much larger code and data size. 10584 10585 Previous Release: 10586 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10587 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10588 Current Release: 10589 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10590 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10591 10592 105932) iASL Compiler/Disassembler and Tools: 10594 10595The AcpiExec utility now installs handlers for all of the predefined 10596Operation Region types. New types supported are: PCI_Config, CMOS, and 10597PCIBARTarget. 10598 10599Fixed a problem with the 64-bit version of AcpiExec where the extended 10600(64- 10601bit) address fields for the DSDT and FACS within the FADT were not being 10602used, causing truncation of the upper 32-bits of these addresses. Lin 10603Ming 10604and Bob Moore 10605 10606---------------------------------------- 1060719 October 2007. Summary of changes for version 20071019: 10608 106091) ACPI CA Core Subsystem: 10610 10611Fixed a problem with the Alias operator when the target of the alias is a 10612named ASL operator that opens a new scope -- Scope, Device, 10613PowerResource, 10614Processor, and ThermalZone. In these cases, any children of the original 10615operator could not be accessed via the alias, potentially causing 10616unexpected 10617AE_NOT_FOUND exceptions. (BZ 9067) 10618 10619Fixed a problem with the Package operator where all named references were 10620created as object references and left otherwise unresolved. According to 10621the 10622ACPI specification, a Package can only contain Data Objects or references 10623to 10624control methods. The implication is that named references to Data Objects 10625(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10626immediately upon package creation. This is the approach taken with this 10627change. References to all other named objects (Methods, Devices, Scopes, 10628etc.) are all now properly created as reference objects. (BZ 5328) 10629 10630Reverted a change to Notify handling that was introduced in version 1063120070508. This version changed the Notify handling from asynchronous to 10632fully synchronous (Device driver Notify handling with respect to the 10633Notify 10634ASL operator). It was found that this change caused more problems than it 10635solved and was removed by most users. 10636 10637Fixed a problem with the Increment and Decrement operators where the type 10638of 10639the target object could be unexpectedly and incorrectly changed. (BZ 353) 10640Lin Ming. 10641 10642Fixed a problem with the Load and LoadTable operators where the table 10643location within the namespace was ignored. Instead, the table was always 10644loaded into the root or current scope. Lin Ming. 10645 10646Fixed a problem with the Load operator when loading a table from a buffer 10647object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10648 10649Fixed a problem with the Debug object where a store of a DdbHandle 10650reference 10651object to the Debug object could cause a fault. 10652 10653Added a table checksum verification for the Load operator, in the case 10654where 10655the load is from a buffer. (BZ 578). 10656 10657Implemented additional parameter validation for the LoadTable operator. 10658The 10659length of the input strings SignatureString, OemIdString, and OemTableId 10660are 10661now checked for maximum lengths. (BZ 582) Lin Ming. 10662 10663Example Code and Data Size: These are the sizes for the OS-independent 10664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10665debug version of the code includes the debug output trace mechanism and 10666has 10667a much larger code and data size. 10668 10669 Previous Release: 10670 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10671 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10672 Current Release: 10673 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10674 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10675 10676 106772) iASL Compiler/Disassembler: 10678 10679Fixed a problem where if a single file was specified and the file did not 10680exist, no error message was emitted. (Introduced with wildcard support in 10681version 20070917.) 10682 10683---------------------------------------- 1068419 September 2007. Summary of changes for version 20070919: 10685 106861) ACPI CA Core Subsystem: 10687 10688Designed and implemented new external interfaces to install and remove 10689handlers for ACPI table-related events. Current events that are defined 10690are 10691LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10692they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10693AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10694 10695Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10696(acpi_serialized option on Linux) could cause some systems to hang during 10697initialization. (Bob Moore) BZ 8171 10698 10699Fixed a problem where objects of certain types (Device, ThermalZone, 10700Processor, PowerResource) can be not found if they are declared and 10701referenced from within the same control method (Lin Ming) BZ 341 10702 10703Example Code and Data Size: These are the sizes for the OS-independent 10704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10705debug version of the code includes the debug output trace mechanism and 10706has 10707a much larger code and data size. 10708 10709 Previous Release: 10710 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10711 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10712 Current Release: 10713 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10714 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10715 10716 107172) iASL Compiler/Disassembler: 10718 10719Implemented support to allow multiple files to be compiled/disassembled 10720in 10721a 10722single invocation. This includes command line wildcard support for both 10723the 10724Windows and Unix versions of the compiler. This feature simplifies the 10725disassembly and compilation of multiple ACPI tables in a single 10726directory. 10727 10728---------------------------------------- 1072908 May 2007. Summary of changes for version 20070508: 10730 107311) ACPI CA Core Subsystem: 10732 10733Implemented a Microsoft compatibility design change for the handling of 10734the 10735Notify AML operator. Previously, notify handlers were dispatched and 10736executed completely asynchronously in a deferred thread. The new design 10737still executes the notify handlers in a different thread, but the 10738original 10739thread that executed the Notify() now waits at a synchronization point 10740for 10741the notify handler to complete. Some machines depend on a synchronous 10742Notify 10743operator in order to operate correctly. 10744 10745Implemented support to allow Package objects to be passed as method 10746arguments to the external AcpiEvaluateObject interface. Previously, this 10747would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10748implemented since there were no reserved control methods that required it 10749until recently. 10750 10751Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10752that 10753contained invalid non-zero values in reserved fields could cause later 10754failures because these fields have meaning in later revisions of the 10755FADT. 10756For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10757fields 10758are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10759 10760Fixed a problem where the Global Lock handle was not properly updated if 10761a 10762thread that acquired the Global Lock via executing AML code then 10763attempted 10764to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10765Joe 10766Liu. 10767 10768Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10769could be corrupted if the interrupt being removed was at the head of the 10770list. Reported by Linn Crosetto. 10771 10772Example Code and Data Size: These are the sizes for the OS-independent 10773acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10774debug version of the code includes the debug output trace mechanism and 10775has 10776a much larger code and data size. 10777 10778 Previous Release: 10779 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10780 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10781 Current Release: 10782 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10783 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10784 10785---------------------------------------- 1078620 March 2007. Summary of changes for version 20070320: 10787 107881) ACPI CA Core Subsystem: 10789 10790Implemented a change to the order of interpretation and evaluation of AML 10791operand objects within the AML interpreter. The interpreter now evaluates 10792operands in the order that they appear in the AML stream (and the 10793corresponding ASL code), instead of in the reverse order (after the 10794entire 10795operand list has been parsed). The previous behavior caused several 10796subtle 10797incompatibilities with the Microsoft AML interpreter as well as being 10798somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10799 10800Implemented a change to the ACPI Global Lock support. All interfaces to 10801the 10802global lock now allow the same thread to acquire the lock multiple times. 10803This affects the AcpiAcquireGlobalLock external interface to the global 10804lock 10805as well as the internal use of the global lock to support AML fields -- a 10806control method that is holding the global lock can now simultaneously 10807access 10808AML fields that require global lock protection. Previously, in both 10809cases, 10810this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10811to 10812AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10813Controller. There is no change to the behavior of the AML Acquire 10814operator, 10815as this can already be used to acquire a mutex multiple times by the same 10816thread. BZ 8066. With assistance from Alexey Starikovskiy. 10817 10818Fixed a problem where invalid objects could be referenced in the AML 10819Interpreter after error conditions. During operand evaluation, ensure 10820that 10821the internal "Return Object" field is cleared on error and only valid 10822pointers are stored there. Caused occasional access to deleted objects 10823that 10824resulted in "large reference count" warning messages. Valery Podrezov. 10825 10826Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10827on 10828deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10829Podrezov. 10830 10831Fixed an internal problem with the handling of result objects on the 10832interpreter result stack. BZ 7872. Valery Podrezov. 10833 10834Removed obsolete code that handled the case where AML_NAME_OP is the 10835target 10836of a reference (Reference.Opcode). This code was no longer necessary. BZ 108377874. Valery Podrezov. 10838 10839Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10840was 10841a 10842remnant from the previously discontinued 16-bit support. 10843 10844Example Code and Data Size: These are the sizes for the OS-independent 10845acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10846debug version of the code includes the debug output trace mechanism and 10847has 10848a much larger code and data size. 10849 10850 Previous Release: 10851 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10852 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10853 Current Release: 10854 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10855 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10856 10857---------------------------------------- 1085826 January 2007. Summary of changes for version 20070126: 10859 108601) ACPI CA Core Subsystem: 10861 10862Added the 2007 copyright to all module headers and signons. This affects 10863virtually every file in the ACPICA core subsystem, the iASL compiler, and 10864the utilities. 10865 10866Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10867during a table load. A bad pointer was passed in the case where the DSDT 10868is 10869overridden, causing a fault in this case. 10870 10871Example Code and Data Size: These are the sizes for the OS-independent 10872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10873debug version of the code includes the debug output trace mechanism and 10874has 10875a much larger code and data size. 10876 10877 Previous Release: 10878 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10879 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10880 Current Release: 10881 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10882 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10883 10884---------------------------------------- 1088515 December 2006. Summary of changes for version 20061215: 10886 108871) ACPI CA Core Subsystem: 10888 10889Support for 16-bit ACPICA has been completely removed since it is no 10890longer 10891necessary and it clutters the code. All 16-bit macros, types, and 10892conditional compiles have been removed, cleaning up and simplifying the 10893code 10894across the entire subsystem. DOS support is no longer needed since the 10895bootable Linux firmware kit is now available. 10896 10897The handler for the Global Lock is now removed during AcpiTerminate to 10898enable a clean subsystem restart, via the implementation of the 10899AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10900HP) 10901 10902Implemented enhancements to the multithreading support within the 10903debugger 10904to enable improved multithreading debugging and evaluation of the 10905subsystem. 10906(Valery Podrezov) 10907 10908Debugger: Enhanced the Statistics/Memory command to emit the total 10909(maximum) 10910memory used during the execution, as well as the maximum memory consumed 10911by 10912each of the various object types. (Valery Podrezov) 10913 10914Example Code and Data Size: These are the sizes for the OS-independent 10915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10916debug version of the code includes the debug output trace mechanism and 10917has 10918a much larger code and data size. 10919 10920 Previous Release: 10921 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10922 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10923 Current Release: 10924 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10925 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10926 10927 109282) iASL Compiler/Disassembler and Tools: 10929 10930AcpiExec: Implemented a new option (-m) to display full memory use 10931statistics upon subsystem/program termination. (Valery Podrezov) 10932 10933---------------------------------------- 1093409 November 2006. Summary of changes for version 20061109: 10935 109361) ACPI CA Core Subsystem: 10937 10938Optimized the Load ASL operator in the case where the source operand is 10939an 10940operation region. Simply map the operation region memory, instead of 10941performing a bytewise read. (Region must be of type SystemMemory, see 10942below.) 10943 10944Fixed the Load ASL operator for the case where the source operand is a 10945region field. A buffer object is also allowed as the source operand. BZ 10946480 10947 10948Fixed a problem where the Load ASL operator allowed the source operand to 10949be 10950an operation region of any type. It is now restricted to regions of type 10951SystemMemory, as per the ACPI specification. BZ 481 10952 10953Additional cleanup and optimizations for the new Table Manager code. 10954 10955AcpiEnable will now fail if all of the required ACPI tables are not 10956loaded 10957(FADT, FACS, DSDT). BZ 477 10958 10959Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10960this 10961header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10962manually optimized to be aligned and will not work if it is byte-packed. 10963 10964Example Code and Data Size: These are the sizes for the OS-independent 10965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10966debug version of the code includes the debug output trace mechanism and 10967has 10968a much larger code and data size. 10969 10970 Previous Release: 10971 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10972 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10973 Current Release: 10974 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10975 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10976 10977 109782) iASL Compiler/Disassembler and Tools: 10979 10980Fixed a problem where the presence of the _OSI predefined control method 10981within complex expressions could cause an internal compiler error. 10982 10983AcpiExec: Implemented full region support for multiple address spaces. 10984SpaceId is now part of the REGION object. BZ 429 10985 10986---------------------------------------- 1098711 October 2006. Summary of changes for version 20061011: 10988 109891) ACPI CA Core Subsystem: 10990 10991Completed an AML interpreter performance enhancement for control method 10992execution. Previously a 2-pass parse/execution, control methods are now 10993completely parsed and executed in a single pass. This improves overall 10994interpreter performance by ~25%, reduces code size, and reduces CPU stack 10995use. (Valery Podrezov + interpreter changes in version 20051202 that 10996eliminated namespace loading during the pass one parse.) 10997 10998Implemented _CID support for PCI Root Bridge detection. If the _HID does 10999not 11000match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11001now 11002obtained and also checked for an ID match. 11003 11004Implemented additional support for the PCI _ADR execution: upsearch until 11005a 11006device scope is found before executing _ADR. This allows PCI_Config 11007operation regions to be declared locally within control methods 11008underneath 11009PCI device objects. 11010 11011Fixed a problem with a possible race condition between threads executing 11012AcpiWalkNamespace and the AML interpreter. This condition was removed by 11013modifying AcpiWalkNamespace to (by default) ignore all temporary 11014namespace 11015entries created during any concurrent control method execution. An 11016additional namespace race condition is known to exist between 11017AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11018investigation. 11019 11020Restructured the AML ParseLoop function, breaking it into several 11021subfunctions in order to reduce CPU stack use and improve 11022maintainability. 11023(Mikhail Kouzmich) 11024 11025AcpiGetHandle: Fix for parameter validation to detect invalid 11026combinations 11027of prefix handle and pathname. BZ 478 11028 11029Example Code and Data Size: These are the sizes for the OS-independent 11030acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11031debug version of the code includes the debug output trace mechanism and 11032has 11033a much larger code and data size. 11034 11035 Previous Release: 11036 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11037 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11038 Current Release: 11039 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11040 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11041 110422) iASL Compiler/Disassembler and Tools: 11043 11044Ported the -g option (get local ACPI tables) to the new ACPICA Table 11045Manager 11046to restore original behavior. 11047 11048---------------------------------------- 1104927 September 2006. Summary of changes for version 20060927: 11050 110511) ACPI CA Core Subsystem: 11052 11053Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11054These functions now use a spinlock for mutual exclusion and the interrupt 11055level indication flag is not needed. 11056 11057Fixed a problem with the Global Lock where the lock could appear to be 11058obtained before it is actually obtained. The global lock semaphore was 11059inadvertently created with one unit instead of zero units. (BZ 464) 11060Fiodor 11061Suietov. 11062 11063Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11064during 11065a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11066 11067Example Code and Data Size: These are the sizes for the OS-independent 11068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11069debug version of the code includes the debug output trace mechanism and 11070has 11071a much larger code and data size. 11072 11073 Previous Release: 11074 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11075 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11076 Current Release: 11077 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11078 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11079 11080 110812) iASL Compiler/Disassembler and Tools: 11082 11083Fixed a compilation problem with the pre-defined Resource Descriptor 11084field 11085names where an "object does not exist" error could be incorrectly 11086generated 11087if the parent ResourceTemplate pathname places the template within a 11088different namespace scope than the current scope. (BZ 7212) 11089 11090Fixed a problem where the compiler could hang after syntax errors 11091detected 11092in an ElseIf construct. (BZ 453) 11093 11094Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11095operator. An incorrect output filename was produced when this parameter 11096was 11097a null string (""). Now, the original input filename is used as the AML 11098output filename, with an ".aml" extension. 11099 11100Implemented a generic batch command mode for the AcpiExec utility 11101(execute 11102any AML debugger command) (Valery Podrezov). 11103 11104---------------------------------------- 1110512 September 2006. Summary of changes for version 20060912: 11106 111071) ACPI CA Core Subsystem: 11108 11109Enhanced the implementation of the "serialized mode" of the interpreter 11110(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11111specified, instead of creating a serialization semaphore per control 11112method, 11113the interpreter lock is simply no longer released before a blocking 11114operation during control method execution. This effectively makes the AML 11115Interpreter single-threaded. The overhead of a semaphore per-method is 11116eliminated. 11117 11118Fixed a regression where an error was no longer emitted if a control 11119method 11120attempts to create 2 objects of the same name. This once again returns 11121AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11122that 11123will dynamically serialize the control method to possible prevent future 11124errors. (BZ 440) 11125 11126Integrated a fix for a problem with PCI Express HID detection in the PCI 11127Config Space setup procedure. (BZ 7145) 11128 11129Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11130AcpiHwInitialize function - the FADT registers are now validated when the 11131table is loaded. 11132 11133Added two new warnings during FADT verification - 1) if the FADT is 11134larger 11135than the largest known FADT version, and 2) if there is a mismatch 11136between 11137a 1113832-bit block address and the 64-bit X counterpart (when both are non- 11139zero.) 11140 11141Example Code and Data Size: These are the sizes for the OS-independent 11142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11143debug version of the code includes the debug output trace mechanism and 11144has 11145a much larger code and data size. 11146 11147 Previous Release: 11148 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11149 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11150 Current Release: 11151 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11152 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11153 11154 111552) iASL Compiler/Disassembler and Tools: 11156 11157Fixed a problem with the implementation of the Switch() operator where 11158the 11159temporary variable was declared too close to the actual Switch, instead 11160of 11161at method level. This could cause a problem if the Switch() operator is 11162within a while loop, causing an error on the second iteration. (BZ 460) 11163 11164Disassembler - fix for error emitted for unknown type for target of scope 11165operator. Now, ignore it and continue. 11166 11167Disassembly of an FADT now verifies the input FADT and reports any errors 11168found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11169 11170Disassembly of raw data buffers with byte initialization data now 11171prefixes 11172each output line with the current buffer offset. 11173 11174Disassembly of ASF! table now includes all variable-length data fields at 11175the end of some of the subtables. 11176 11177The disassembler now emits a comment if a buffer appears to be a 11178ResourceTemplate, but cannot be disassembled as such because the EndTag 11179does 11180not appear at the very end of the buffer. 11181 11182AcpiExec - Added the "-t" command line option to enable the serialized 11183mode 11184of the AML interpreter. 11185 11186---------------------------------------- 1118731 August 2006. Summary of changes for version 20060831: 11188 111891) ACPI CA Core Subsystem: 11190 11191Miscellaneous fixes for the Table Manager: 11192- Correctly initialize internal common FADT for all 64-bit "X" fields 11193- Fixed a couple table mapping issues during table load 11194- Fixed a couple alignment issues for IA64 11195- Initialize input array to zero in AcpiInitializeTables 11196- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11197AcpiGetTableByIndex 11198 11199Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11200now 11201immediately disabled to prevent the waking GPE from firing again and to 11202prevent other wake GPEs from interrupting the wake process. 11203 11204Added the AcpiGpeCount global that tracks the number of processed GPEs, 11205to 11206be used for debugging systems with a large number of ACPI interrupts. 11207 11208Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11209both the ACPICA headers and the disassembler. 11210 11211Example Code and Data Size: These are the sizes for the OS-independent 11212acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11213debug version of the code includes the debug output trace mechanism and 11214has 11215a much larger code and data size. 11216 11217 Previous Release: 11218 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11219 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11220 Current Release: 11221 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11222 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11223 11224 112252) iASL Compiler/Disassembler and Tools: 11226 11227Disassembler support for the DMAR ACPI table. 11228 11229---------------------------------------- 1123023 August 2006. Summary of changes for version 20060823: 11231 112321) ACPI CA Core Subsystem: 11233 11234The Table Manager component has been completely redesigned and 11235reimplemented. The new design is much simpler, and reduces the overall 11236code 11237and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11238is 11239now possible to obtain the ACPI tables very early during kernel 11240initialization, even before dynamic memory management is initialized. 11241(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11242 11243Obsolete ACPICA interfaces: 11244 11245- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11246init 11247time). 11248- AcpiLoadTable: Not needed. 11249- AcpiUnloadTable: Not needed. 11250 11251New ACPICA interfaces: 11252 11253- AcpiInitializeTables: Must be called before the table manager can be 11254used. 11255- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11256allocated memory after it becomes available. 11257- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11258tables 11259in the RSDT/XSDT. 11260 11261Other ACPICA changes: 11262 11263- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11264Use 11265AcpiOsUnmapMemory to free this mapping. 11266- AcpiGetTable returns the actual mapped table. The mapping is managed 11267internally and must not be deleted by the caller. Use of this interface 11268causes no additional dynamic memory allocation. 11269- AcpiFindRootPointer: Support for physical addressing has been 11270eliminated, 11271it appeared to be unused. 11272- The interface to AcpiOsMapMemory has changed to be consistent with the 11273other allocation interfaces. 11274- The interface to AcpiOsGetRootPointer has changed to eliminate 11275unnecessary 11276parameters. 11277- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1127864- 11279bit platforms. Was previously 64 bits on all platforms. 11280- The interface to the ACPI Global Lock acquire/release macros have 11281changed 11282slightly since ACPICA no longer keeps a local copy of the FACS with a 11283constructed pointer to the actual global lock. 11284 11285Porting to the new table manager: 11286 11287- AcpiInitializeTables: Must be called once, and can be called anytime 11288during the OS initialization process. It allows the host to specify an 11289area 11290of memory to be used to store the internal version of the RSDT/XSDT (root 11291table). This allows the host to access ACPI tables before memory 11292management 11293is initialized and running. 11294- AcpiReallocateRootTable: Can be called after memory management is 11295running 11296to copy the root table to a dynamically allocated array, freeing up the 11297scratch memory specified in the call to AcpiInitializeTables. 11298- AcpiSubsystemInitialize: This existing interface is independent of the 11299Table Manager, and does not have to be called before the Table Manager 11300can 11301be used, it only must be called before the rest of ACPICA can be used. 11302- ACPI Tables: Some changes have been made to the names and structure of 11303the 11304actbl.h and actbl1.h header files and may require changes to existing 11305code. 11306For example, bitfields have been completely removed because of their lack 11307of 11308portability across C compilers. 11309- Update interfaces to the Global Lock acquire/release macros if local 11310versions are used. (see acwin.h) 11311 11312Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11313 11314New files: tbfind.c 11315 11316Example Code and Data Size: These are the sizes for the OS-independent 11317acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11318debug version of the code includes the debug output trace mechanism and 11319has 11320a much larger code and data size. 11321 11322 Previous Release: 11323 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11324 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11325 Current Release: 11326 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11327 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11328 11329 113302) iASL Compiler/Disassembler and Tools: 11331 11332No changes for this release. 11333 11334---------------------------------------- 1133521 July 2006. Summary of changes for version 20060721: 11336 113371) ACPI CA Core Subsystem: 11338 11339The full source code for the ASL test suite used to validate the iASL 11340compiler and the ACPICA core subsystem is being released with the ACPICA 11341source for the first time. The source is contained in a separate package 11342and 11343consists of over 1100 files that exercise all ASL/AML operators. The 11344package 11345should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11346Fiodor 11347Suietov) 11348 11349Completed a new design and implementation for support of the ACPI Global 11350Lock. On the OS side, the global lock is now treated as a standard AML 11351mutex. Previously, multiple OS threads could "acquire" the global lock 11352simultaneously. However, this could cause the BIOS to be starved out of 11353the 11354lock - especially in cases such as the Embedded Controller driver where 11355there is a tight coupling between the OS and the BIOS. 11356 11357Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11358The Global Lock interrupt handler no longer queues the execution of a 11359separate thread to signal the global lock semaphore. Instead, the 11360semaphore 11361is signaled directly from the interrupt handler. 11362 11363Implemented support within the AML interpreter for package objects that 11364contain a larger AML length (package list length) than the package 11365element 11366count. In this case, the length of the package is truncated to match the 11367package element count. Some BIOS code apparently modifies the package 11368length 11369on the fly, and this change supports this behavior. Provides 11370compatibility 11371with the MS AML interpreter. (With assistance from Fiodor Suietov) 11372 11373Implemented a temporary fix for the BankValue parameter of a Bank Field 11374to 11375support all constant values, now including the Zero and One opcodes. 11376Evaluation of this parameter must eventually be converted to a full 11377TermArg 11378evaluation. A not-implemented error is now returned (temporarily) for 11379non- 11380constant values for this parameter. 11381 11382Fixed problem reports (Fiodor Suietov) integrated: 11383- Fix for premature object deletion after CopyObject on Operation Region 11384(BZ 11385350) 11386 11387Example Code and Data Size: These are the sizes for the OS-independent 11388acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11389debug version of the code includes the debug output trace mechanism and 11390has 11391a much larger code and data size. 11392 11393 Previous Release: 11394 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11395 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11396 Current Release: 11397 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11398 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11399 11400 114012) iASL Compiler/Disassembler and Tools: 11402 11403No changes for this release. 11404 11405---------------------------------------- 1140607 July 2006. Summary of changes for version 20060707: 11407 114081) ACPI CA Core Subsystem: 11409 11410Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11411that do not allow the initialization of address pointers within packed 11412structures - even though the hardware itself may support misaligned 11413transfers. Some of the debug data structures are packed by default to 11414minimize size. 11415 11416Added an error message for the case where AcpiOsGetThreadId() returns 11417zero. 11418A non-zero value is required by the core ACPICA code to ensure the proper 11419operation of AML mutexes and recursive control methods. 11420 11421The DSDT is now the only ACPI table that determines whether the AML 11422interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11423but 11424the hooks for per-table 32/64 switching have been removed from the code. 11425A 11426clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11427 11428Fixed a possible leak of an OwnerID in the error path of 11429AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11430deletion to a single place in AcpiTbUninstallTable to correct possible 11431leaks 11432when using the AcpiTbDeleteTablesByType interface (with assistance from 11433Lance Ortiz.) 11434 11435Fixed a problem with Serialized control methods where the semaphore 11436associated with the method could be over-signaled after multiple method 11437invocations. 11438 11439Fixed two issues with the locking of the internal namespace data 11440structure. 11441Both the Unload() operator and AcpiUnloadTable interface now lock the 11442namespace during the namespace deletion associated with the table unload 11443(with assistance from Linn Crosetto.) 11444 11445Fixed problem reports (Valery Podrezov) integrated: 11446- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11447 11448Fixed problem reports (Fiodor Suietov) integrated: 11449- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11450- On Address Space handler deletion, needless deactivation call (BZ 374) 11451- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11452375) 11453- Possible memory leak, Notify sub-objects of Processor, Power, 11454ThermalZone 11455(BZ 376) 11456- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11457- Minimum Length of RSDT should be validated (BZ 379) 11458- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11459Handler (BZ (380) 11460- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11461loaded 11462(BZ 381) 11463 11464Example Code and Data Size: These are the sizes for the OS-independent 11465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11466debug version of the code includes the debug output trace mechanism and 11467has 11468a much larger code and data size. 11469 11470 Previous Release: 11471 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11472 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11473 Current Release: 11474 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11475 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11476 11477 114782) iASL Compiler/Disassembler and Tools: 11479 11480Fixed problem reports: 11481Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11482436) 11483 11484---------------------------------------- 1148523 June 2006. Summary of changes for version 20060623: 11486 114871) ACPI CA Core Subsystem: 11488 11489Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11490allows the type to be customized to the host OS for improved efficiency 11491(since a spinlock is usually a very small object.) 11492 11493Implemented support for "ignored" bits in the ACPI registers. According 11494to 11495the ACPI specification, these bits should be preserved when writing the 11496registers via a read/modify/write cycle. There are 3 bits preserved in 11497this 11498manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11499 11500Implemented the initial deployment of new OSL mutex interfaces. Since 11501some 11502host operating systems have separate mutex and semaphore objects, this 11503feature was requested. The base code now uses mutexes (and the new mutex 11504interfaces) wherever a binary semaphore was used previously. However, for 11505the current release, the mutex interfaces are defined as macros to map 11506them 11507to the existing semaphore interfaces. Therefore, no OSL changes are 11508required 11509at this time. (See acpiosxf.h) 11510 11511Fixed several problems with the support for the control method SyncLevel 11512parameter. The SyncLevel now works according to the ACPI specification 11513and 11514in concert with the Mutex SyncLevel parameter, since the current 11515SyncLevel 11516is a property of the executing thread. Mutual exclusion for control 11517methods 11518is now implemented with a mutex instead of a semaphore. 11519 11520Fixed three instances of the use of the C shift operator in the bitfield 11521support code (exfldio.c) to avoid the use of a shift value larger than 11522the 11523target data width. The behavior of C compilers is undefined in this case 11524and 11525can cause unpredictable results, and therefore the case must be detected 11526and 11527avoided. (Fiodor Suietov) 11528 11529Added an info message whenever an SSDT or OEM table is loaded dynamically 11530via the Load() or LoadTable() ASL operators. This should improve 11531debugging 11532capability since it will show exactly what tables have been loaded 11533(beyond 11534the tables present in the RSDT/XSDT.) 11535 11536Example Code and Data Size: These are the sizes for the OS-independent 11537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11538debug version of the code includes the debug output trace mechanism and 11539has 11540a much larger code and data size. 11541 11542 Previous Release: 11543 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11544 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11545 Current Release: 11546 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11547 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11548 11549 115502) iASL Compiler/Disassembler and Tools: 11551 11552No changes for this release. 11553 11554---------------------------------------- 1155508 June 2006. Summary of changes for version 20060608: 11556 115571) ACPI CA Core Subsystem: 11558 11559Converted the locking mutex used for the ACPI hardware to a spinlock. 11560This 11561change should eliminate all problems caused by attempting to acquire a 11562semaphore at interrupt level, and it means that all ACPICA external 11563interfaces that directly access the ACPI hardware can be safely called 11564from 11565interrupt level. OSL code that implements the semaphore interfaces should 11566be 11567able to eliminate any workarounds for being called at interrupt level. 11568 11569Fixed a regression introduced in 20060526 where the ACPI device 11570initialization could be prematurely aborted with an AE_NOT_FOUND if a 11571device 11572did not have an optional _INI method. 11573 11574Fixed an IndexField issue where a write to the Data Register should be 11575limited in size to the AccessSize (width) of the IndexField itself. (BZ 11576433, 11577Fiodor Suietov) 11578 11579Fixed problem reports (Valery Podrezov) integrated: 11580- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11581 11582Fixed problem reports (Fiodor Suietov) integrated: 11583- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11584 11585Removed four global mutexes that were obsolete and were no longer being 11586used. 11587 11588Example Code and Data Size: These are the sizes for the OS-independent 11589acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11590debug version of the code includes the debug output trace mechanism and 11591has 11592a much larger code and data size. 11593 11594 Previous Release: 11595 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11596 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11597 Current Release: 11598 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11599 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11600 11601 116022) iASL Compiler/Disassembler and Tools: 11603 11604Fixed a fault when using -g option (get tables from registry) on Windows 11605machines. 11606 11607Fixed problem reports integrated: 11608- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11609- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11610Suietov) 11611- Global table revision override (-r) is ignored (BZ 413) 11612 11613---------------------------------------- 1161426 May 2006. Summary of changes for version 20060526: 11615 116161) ACPI CA Core Subsystem: 11617 11618Restructured, flattened, and simplified the internal interfaces for 11619namespace object evaluation - resulting in smaller code, less CPU stack 11620use, 11621and fewer interfaces. (With assistance from Mikhail Kouzmich) 11622 11623Fixed a problem with the CopyObject operator where the first parameter 11624was 11625not typed correctly for the parser, interpreter, compiler, and 11626disassembler. 11627Caused various errors and unexpected behavior. 11628 11629Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11630produced incorrect results with some C compilers. Since the behavior of C 11631compilers when the shift value is larger than the datatype width is 11632apparently not well defined, the interpreter now detects this condition 11633and 11634simply returns zero as expected in all such cases. (BZ 395) 11635 11636Fixed problem reports (Valery Podrezov) integrated: 11637- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11638- Allow interpreter to handle nested method declarations (BZ 5361) 11639 11640Fixed problem reports (Fiodor Suietov) integrated: 11641- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11642355) 11643- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11644356) 11645- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11646- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11647- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11648- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11649- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11650- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11651- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11652365) 11653- Status of the Global Initialization Handler call not used (BZ 366) 11654- Incorrect object parameter to Global Initialization Handler (BZ 367) 11655 11656Example Code and Data Size: These are the sizes for the OS-independent 11657acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11658debug version of the code includes the debug output trace mechanism and 11659has 11660a much larger code and data size. 11661 11662 Previous Release: 11663 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11664 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11665 Current Release: 11666 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11667 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11668 11669 116702) iASL Compiler/Disassembler and Tools: 11671 11672Modified the parser to allow the names IO, DMA, and IRQ to be used as 11673namespace identifiers with no collision with existing resource descriptor 11674macro names. This provides compatibility with other ASL compilers and is 11675most useful for disassembly/recompilation of existing tables without 11676parse 11677errors. (With assistance from Thomas Renninger) 11678 11679Disassembler: fixed an incorrect disassembly problem with the 11680DataTableRegion and CopyObject operators. Fixed a possible fault during 11681disassembly of some Alias operators. 11682 11683---------------------------------------- 1168412 May 2006. Summary of changes for version 20060512: 11685 116861) ACPI CA Core Subsystem: 11687 11688Replaced the AcpiOsQueueForExecution interface with a new interface named 11689AcpiOsExecute. The major difference is that the new interface does not 11690have 11691a Priority parameter, this appeared to be useless and has been replaced 11692by 11693a 11694Type parameter. The Type tells the host what type of execution is being 11695requested, such as global lock handler, notify handler, GPE handler, etc. 11696This allows the host to queue and execute the request as appropriate for 11697the 11698request type, possibly using different work queues and different 11699priorities 11700for the various request types. This enables fixes for multithreading 11701deadlock problems such as BZ #5534, and will require changes to all 11702existing 11703OS interface layers. (Alexey Starikovskiy and Bob Moore) 11704 11705Fixed a possible memory leak associated with the support for the so- 11706called 11707"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11708Suietov) 11709 11710Fixed a problem with the Load() operator where a table load from an 11711operation region could overwrite an internal table buffer by up to 7 11712bytes 11713and cause alignment faults on IPF systems. (With assistance from Luming 11714Yu) 11715 11716Example Code and Data Size: These are the sizes for the OS-independent 11717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11718debug version of the code includes the debug output trace mechanism and 11719has 11720a much larger code and data size. 11721 11722 Previous Release: 11723 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11724 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11725 Current Release: 11726 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11727 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11728 11729 11730 117312) iASL Compiler/Disassembler and Tools: 11732 11733Disassembler: Implemented support to cross reference the internal 11734namespace 11735and automatically generate ASL External() statements for symbols not 11736defined 11737within the current table being disassembled. This will simplify the 11738disassembly and recompilation of interdependent tables such as SSDTs 11739since 11740these statements will no longer have to be added manually. 11741 11742Disassembler: Implemented experimental support to automatically detect 11743invocations of external control methods and generate appropriate 11744External() 11745statements. This is problematic because the AML cannot be correctly 11746parsed 11747until the number of arguments for each control method is known. 11748Currently, 11749standalone method invocations and invocations as the source operand of a 11750Store() statement are supported. 11751 11752Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11753LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11754LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11755more readable and likely closer to the original ASL source. 11756 11757---------------------------------------- 1175821 April 2006. Summary of changes for version 20060421: 11759 117601) ACPI CA Core Subsystem: 11761 11762Removed a device initialization optimization introduced in 20051216 where 11763the _STA method was not run unless an _INI was also present for the same 11764device. This optimization could cause problems because it could allow 11765_INI 11766methods to be run within a not-present device subtree. (If a not-present 11767device had no _INI, _STA would not be run, the not-present status would 11768not 11769be discovered, and the children of the device would be incorrectly 11770traversed.) 11771 11772Implemented a new _STA optimization where namespace subtrees that do not 11773contain _INI are identified and ignored during device initialization. 11774Selectively running _STA can significantly improve boot time on large 11775machines (with assistance from Len Brown.) 11776 11777Implemented support for the device initialization case where the returned 11778_STA flags indicate a device not-present but functioning. In this case, 11779_INI 11780is not run, but the device children are examined for presence, as per the 11781ACPI specification. 11782 11783Implemented an additional change to the IndexField support in order to 11784conform to MS behavior. The value written to the Index Register is not 11785simply a byte offset, it is a byte offset in units of the access width of 11786the parent Index Field. (Fiodor Suietov) 11787 11788Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11789interface is called during the creation of all AML operation regions, and 11790allows the host OS to exert control over what addresses it will allow the 11791AML code to access. Operation Regions whose addresses are disallowed will 11792cause a runtime exception when they are actually accessed (will not 11793affect 11794or abort table loading.) See oswinxf or osunixxf for an example 11795implementation. 11796 11797Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11798interface allows the host OS to match the various "optional" 11799interface/behavior strings for the _OSI predefined control method as 11800appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11801for an example implementation. 11802 11803Restructured and corrected various problems in the exception handling 11804code 11805paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11806(with assistance from Takayoshi Kochi.) 11807 11808Modified the Linux source converter to ignore quoted string literals 11809while 11810converting identifiers from mixed to lower case. This will correct 11811problems 11812with the disassembler and other areas where such strings must not be 11813modified. 11814 11815The ACPI_FUNCTION_* macros no longer require quotes around the function 11816name. This allows the Linux source converter to convert the names, now 11817that 11818the converter ignores quoted strings. 11819 11820Example Code and Data Size: These are the sizes for the OS-independent 11821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11822debug version of the code includes the debug output trace mechanism and 11823has 11824a much larger code and data size. 11825 11826 Previous Release: 11827 11828 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11829 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11830 Current Release: 11831 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11832 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11833 11834 118352) iASL Compiler/Disassembler and Tools: 11836 11837Implemented 3 new warnings for iASL, and implemented multiple warning 11838levels 11839(w2 flag). 11840 118411) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11842not 11843WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11844check for the possible timeout, a warning is issued. 11845 118462) Useless operators: If an ASL operator does not specify an optional 11847target 11848operand and it also does not use the function return value from the 11849operator, a warning is issued since the operator effectively does 11850nothing. 11851 118523) Unreferenced objects: If a namespace object is created, but never 11853referenced, a warning is issued. This is a warning level 2 since there 11854are 11855cases where this is ok, such as when a secondary table is loaded that 11856uses 11857the unreferenced objects. Even so, care is taken to only flag objects 11858that 11859don't look like they will ever be used. For example, the reserved methods 11860(starting with an underscore) are usually not referenced because it is 11861expected that the OS will invoke them. 11862 11863---------------------------------------- 1186431 March 2006. Summary of changes for version 20060331: 11865 118661) ACPI CA Core Subsystem: 11867 11868Implemented header file support for the following additional ACPI tables: 11869ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11870support, 11871all current and known ACPI tables are now defined in the ACPICA headers 11872and 11873are available for use by device drivers and other software. 11874 11875Implemented support to allow tables that contain ACPI names with invalid 11876characters to be loaded. Previously, this would cause the table load to 11877fail, but since there are several known cases of such tables on existing 11878machines, this change was made to enable ACPI support for them. Also, 11879this 11880matches the behavior of the Microsoft ACPI implementation. 11881 11882Fixed a couple regressions introduced during the memory optimization in 11883the 1188420060317 release. The namespace node definition required additional 11885reorganization and an internal datatype that had been changed to 8-bit 11886was 11887restored to 32-bit. (Valery Podrezov) 11888 11889Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11890could be passed through to AcpiOsReleaseObject which is unexpected. Such 11891null pointers are now trapped and ignored, matching the behavior of the 11892previous implementation before the deployment of AcpiOsReleaseObject. 11893(Valery Podrezov, Fiodor Suietov) 11894 11895Fixed a memory mapping leak during the deletion of a SystemMemory 11896operation 11897region where a cached memory mapping was not deleted. This became a 11898noticeable problem for operation regions that are defined within 11899frequently 11900used control methods. (Dana Meyers) 11901 11902Reorganized the ACPI table header files into two main files: one for the 11903ACPI tables consumed by the ACPICA core, and another for the 11904miscellaneous 11905ACPI tables that are consumed by the drivers and other software. The 11906various 11907FADT definitions were merged into one common section and three different 11908tables (ACPI 1.0, 1.0+, and 2.0) 11909 11910Example Code and Data Size: These are the sizes for the OS-independent 11911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11912debug version of the code includes the debug output trace mechanism and 11913has 11914a much larger code and data size. 11915 11916 Previous Release: 11917 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11918 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11919 Current Release: 11920 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11921 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11922 11923 119242) iASL Compiler/Disassembler and Tools: 11925 11926Disassembler: Implemented support to decode and format all non-AML ACPI 11927tables (tables other than DSDTs and SSDTs.) This includes the new tables 11928added to the ACPICA headers, therefore all current and known ACPI tables 11929are 11930supported. 11931 11932Disassembler: The change to allow ACPI names with invalid characters also 11933enables the disassembly of such tables. Invalid characters within names 11934are 11935changed to '*' to make the name printable; the iASL compiler will still 11936generate an error for such names, however, since this is an invalid ACPI 11937character. 11938 11939Implemented an option for AcpiXtract (-a) to extract all tables found in 11940the 11941input file. The default invocation extracts only the DSDTs and SSDTs. 11942 11943Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11944makefile for the AcpiXtract utility. 11945 11946---------------------------------------- 1194717 March 2006. Summary of changes for version 20060317: 11948 119491) ACPI CA Core Subsystem: 11950 11951Implemented the use of a cache object for all internal namespace nodes. 11952Since there are about 1000 static nodes in a typical system, this will 11953decrease memory use for cache implementations that minimize per- 11954allocation 11955overhead (such as a slab allocator.) 11956 11957Removed the reference count mechanism for internal namespace nodes, since 11958it 11959was deemed unnecessary. This reduces the size of each namespace node by 11960about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11961case, 11962and 32 bytes for the 64-bit case. 11963 11964Optimized several internal data structures to reduce object size on 64- 11965bit 11966platforms by packing data within the 64-bit alignment. This includes the 11967frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11968instances corresponding to the namespace objects. 11969 11970Added two new strings for the predefined _OSI method: "Windows 2001.1 11971SP1" 11972and "Windows 2006". 11973 11974Split the allocation tracking mechanism out to a separate file, from 11975utalloc.c to uttrack.c. This mechanism appears to be only useful for 11976application-level code. Kernels may wish to not include uttrack.c in 11977distributions. 11978 11979Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11980associated 11981code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11982macros.) 11983 11984Code and Data Size: These are the sizes for the acpica.lib produced by 11985the 11986Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11987ACPI 11988driver or OSPM code. The debug version of the code includes the debug 11989output 11990trace mechanism and has a much larger code and data size. Note that these 11991values will vary depending on the efficiency of the compiler and the 11992compiler options used during generation. 11993 11994 Previous Release: 11995 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11996 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11997 Current Release: 11998 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11999 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12000 12001 120022) iASL Compiler/Disassembler and Tools: 12003 12004Implemented an ANSI C version of the acpixtract utility. This version 12005will 12006automatically extract the DSDT and all SSDTs from the input acpidump text 12007file and dump the binary output to separate files. It can also display a 12008summary of the input file including the headers for each table found and 12009will extract any single ACPI table, with any signature. (See 12010source/tools/acpixtract) 12011 12012---------------------------------------- 1201310 March 2006. Summary of changes for version 20060310: 12014 120151) ACPI CA Core Subsystem: 12016 12017Tagged all external interfaces to the subsystem with the new 12018ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12019assist 12020kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12021macro. The default definition is NULL. 12022 12023Added the ACPI_THREAD_ID type for the return value from 12024AcpiOsGetThreadId. 12025This allows the host to define this as necessary to simplify kernel 12026integration. The default definition is ACPI_NATIVE_UINT. 12027 12028Fixed two interpreter problems related to error processing, the deletion 12029of 12030objects, and placing invalid pointers onto the internal operator result 12031stack. BZ 6028, 6151 (Valery Podrezov) 12032 12033Increased the reference count threshold where a warning is emitted for 12034large 12035reference counts in order to eliminate unnecessary warnings on systems 12036with 12037large namespaces (especially 64-bit.) Increased the value from 0x400 to 120380x800. 12039 12040Due to universal disagreement as to the meaning of the 'c' in the 12041calloc() 12042function, the ACPI_MEM_CALLOCATE macro has been renamed to 12043ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12044ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12045ACPI_FREE. 12046 12047Code and Data Size: These are the sizes for the acpica.lib produced by 12048the 12049Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12050ACPI 12051driver or OSPM code. The debug version of the code includes the debug 12052output 12053trace mechanism and has a much larger code and data size. Note that these 12054values will vary depending on the efficiency of the compiler and the 12055compiler options used during generation. 12056 12057 Previous Release: 12058 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12059 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12060 Current Release: 12061 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12062 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12063 12064 120652) iASL Compiler/Disassembler: 12066 12067Disassembler: implemented support for symbolic resource descriptor 12068references. If a CreateXxxxField operator references a fixed offset 12069within 12070a 12071resource descriptor, a name is assigned to the descriptor and the offset 12072is 12073translated to the appropriate resource tag and pathname. The addition of 12074this support brings the disassembled code very close to the original ASL 12075source code and helps eliminate run-time errors when the disassembled 12076code 12077is modified (and recompiled) in such a way as to invalidate the original 12078fixed offsets. 12079 12080Implemented support for a Descriptor Name as the last parameter to the 12081ASL 12082Register() macro. This parameter was inadvertently left out of the ACPI 12083specification, and will be added for ACPI 3.0b. 12084 12085Fixed a problem where the use of the "_OSI" string (versus the full path 12086"\_OSI") caused an internal compiler error. ("No back ptr to op") 12087 12088Fixed a problem with the error message that occurs when an invalid string 12089is 12090used for a _HID object (such as one with an embedded asterisk: 12091"*PNP010A".) 12092The correct message is now displayed. 12093 12094---------------------------------------- 1209517 February 2006. Summary of changes for version 20060217: 12096 120971) ACPI CA Core Subsystem: 12098 12099Implemented a change to the IndexField support to match the behavior of 12100the 12101Microsoft AML interpreter. The value written to the Index register is now 12102a 12103byte offset, no longer an index based upon the width of the Data 12104register. 12105This should fix IndexField problems seen on some machines where the Data 12106register is not exactly one byte wide. The ACPI specification will be 12107clarified on this point. 12108 12109Fixed a problem where several resource descriptor types could overrun the 12110internal descriptor buffer due to size miscalculation: VendorShort, 12111VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12112affect all platforms. 12113 12114Fixed a problem where individual resource descriptors were misaligned 12115within 12116the internal buffer, causing alignment faults on IA64 platforms. 12117 12118Code and Data Size: These are the sizes for the acpica.lib produced by 12119the 12120Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12121ACPI 12122driver or OSPM code. The debug version of the code includes the debug 12123output 12124trace mechanism and has a much larger code and data size. Note that these 12125values will vary depending on the efficiency of the compiler and the 12126compiler options used during generation. 12127 12128 Previous Release: 12129 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12130 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12131 Current Release: 12132 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12133 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12134 12135 121362) iASL Compiler/Disassembler: 12137 12138Implemented support for new reserved names: _WDG and _WED are Microsoft 12139extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12140defined method (Throttling Depth Limit.) 12141 12142Fixed a problem where a zero-length VendorShort or VendorLong resource 12143descriptor was incorrectly emitted as a descriptor of length one. 12144 12145---------------------------------------- 1214610 February 2006. Summary of changes for version 20060210: 12147 121481) ACPI CA Core Subsystem: 12149 12150Removed a couple of extraneous ACPI_ERROR messages that appeared during 12151normal execution. These became apparent after the conversion from 12152ACPI_DEBUG_PRINT. 12153 12154Fixed a problem where the CreateField operator could hang if the BitIndex 12155or 12156NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12157 12158Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12159failed with an exception. This also fixes a couple of related RefOf and 12160DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12161 12162Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12163of 12164AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12165BZ 121665480) 12167 12168Implemented a memory cleanup at the end of the execution of each 12169iteration 12170of an AML While() loop, preventing the accumulation of outstanding 12171objects. 12172(Valery Podrezov, BZ 5427) 12173 12174Eliminated a chunk of duplicate code in the object resolution code. 12175(Valery 12176Podrezov, BZ 5336) 12177 12178Fixed several warnings during the 64-bit code generation. 12179 12180The AcpiSrc source code conversion tool now inserts one line of 12181whitespace 12182after an if() statement that is followed immediately by a comment, 12183improving 12184readability of the Linux code. 12185 12186Code and Data Size: The current and previous library sizes for the core 12187subsystem are shown below. These are the code and data sizes for the 12188acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12189These 12190values do not include any ACPI driver or OSPM code. The debug version of 12191the 12192code includes the debug output trace mechanism and has a much larger code 12193and data size. Note that these values will vary depending on the 12194efficiency 12195of the compiler and the compiler options used during generation. 12196 12197 Previous Release: 12198 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12199 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12200 Current Release: 12201 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12202 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12203 12204 122052) iASL Compiler/Disassembler: 12206 12207Fixed a problem with the disassembly of a BankField operator with a 12208complex 12209expression for the BankValue parameter. 12210 12211---------------------------------------- 1221227 January 2006. Summary of changes for version 20060127: 12213 122141) ACPI CA Core Subsystem: 12215 12216Implemented support in the Resource Manager to allow unresolved 12217namestring 12218references within resource package objects for the _PRT method. This 12219support 12220is in addition to the previously implemented unresolved reference support 12221within the AML parser. If the interpreter slack mode is enabled, these 12222unresolved references will be passed through to the caller as a NULL 12223package 12224entry. 12225 12226Implemented and deployed new macros and functions for error and warning 12227messages across the subsystem. These macros are simpler and generate less 12228code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12229ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12230macros remain defined to allow ACPI drivers time to migrate to the new 12231macros. 12232 12233Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12234the 12235Acquire/Release Lock OSL interfaces. 12236 12237Fixed a problem where Alias ASL operators are sometimes not correctly 12238resolved, in both the interpreter and the iASL compiler. 12239 12240Fixed several problems with the implementation of the 12241ConcatenateResTemplate 12242ASL operator. As per the ACPI specification, zero length buffers are now 12243treated as a single EndTag. One-length buffers always cause a fatal 12244exception. Non-zero length buffers that do not end with a full 2-byte 12245EndTag 12246cause a fatal exception. 12247 12248Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12249interface. (With assistance from Thomas Renninger) 12250 12251Code and Data Size: The current and previous library sizes for the core 12252subsystem are shown below. These are the code and data sizes for the 12253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12254These 12255values do not include any ACPI driver or OSPM code. The debug version of 12256the 12257code includes the debug output trace mechanism and has a much larger code 12258and data size. Note that these values will vary depending on the 12259efficiency 12260of the compiler and the compiler options used during generation. 12261 12262 Previous Release: 12263 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12264 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12265 Current Release: 12266 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12267 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12268 12269 122702) iASL Compiler/Disassembler: 12271 12272Fixed an internal error that was generated for any forward references to 12273ASL 12274Alias objects. 12275 12276---------------------------------------- 1227713 January 2006. Summary of changes for version 20060113: 12278 122791) ACPI CA Core Subsystem: 12280 12281Added 2006 copyright to all module headers and signons. This affects 12282virtually every file in the ACPICA core subsystem, iASL compiler, and the 12283utilities. 12284 12285Enhanced the ACPICA error reporting in order to simplify user migration 12286to 12287the non-debug version of ACPICA. Replaced all instances of the 12288ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12289debug 12290levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12291respectively. This preserves all error and warning messages in the non- 12292debug 12293version of the ACPICA code (this has been referred to as the "debug lite" 12294option.) Over 200 cases were converted to create a total of over 380 12295error/warning messages across the ACPICA code. This increases the code 12296and 12297data size of the default non-debug version of the code somewhat (about 1229813K), 12299but all error/warning reporting may be disabled if desired (and code 12300eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12301configuration option. The size of the debug version of ACPICA remains 12302about 12303the same. 12304 12305Fixed a memory leak within the AML Debugger "Set" command. One object was 12306not properly deleted for every successful invocation of the command. 12307 12308Code and Data Size: The current and previous library sizes for the core 12309subsystem are shown below. These are the code and data sizes for the 12310acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12311These 12312values do not include any ACPI driver or OSPM code. The debug version of 12313the 12314code includes the debug output trace mechanism and has a much larger code 12315and data size. Note that these values will vary depending on the 12316efficiency 12317of the compiler and the compiler options used during generation. 12318 12319 Previous Release: 12320 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12321 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12322 Current Release: 12323 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12324 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12325 12326 123272) iASL Compiler/Disassembler: 12328 12329The compiler now officially supports the ACPI 3.0a specification that was 12330released on December 30, 2005. (Specification is available at 12331www.acpi.info) 12332 12333---------------------------------------- 1233416 December 2005. Summary of changes for version 20051216: 12335 123361) ACPI CA Core Subsystem: 12337 12338Implemented optional support to allow unresolved names within ASL Package 12339objects. A null object is inserted in the package when a named reference 12340cannot be located in the current namespace. Enabled via the interpreter 12341slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12342machines 12343that contain such code. 12344 12345Implemented an optimization to the initialization sequence that can 12346improve 12347boot time. During ACPI device initialization, the _STA method is now run 12348if 12349and only if the _INI method exists. The _STA method is used to determine 12350if 12351the device is present; An _INI can only be run if _STA returns present, 12352but 12353it is a waste of time to run the _STA method if the _INI does not exist. 12354(Prototype and assistance from Dong Wei) 12355 12356Implemented use of the C99 uintptr_t for the pointer casting macros if it 12357is 12358available in the current compiler. Otherwise, the default (void *) cast 12359is 12360used as before. 12361 12362Fixed some possible memory leaks found within the execution path of the 12363Break, Continue, If, and CreateField operators. (Valery Podrezov) 12364 12365Fixed a problem introduced in the 20051202 release where an exception is 12366generated during method execution if a control method attempts to declare 12367another method. 12368 12369Moved resource descriptor string constants that are used by both the AML 12370disassembler and AML debugger to the common utilities directory so that 12371these components are independent. 12372 12373Implemented support in the AcpiExec utility (-e switch) to globally 12374ignore 12375exceptions during control method execution (method is not aborted.) 12376 12377Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12378generation. 12379 12380Code and Data Size: The current and previous library sizes for the core 12381subsystem are shown below. These are the code and data sizes for the 12382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12383These 12384values do not include any ACPI driver or OSPM code. The debug version of 12385the 12386code includes the debug output trace mechanism and has a much larger code 12387and data size. Note that these values will vary depending on the 12388efficiency 12389of the compiler and the compiler options used during generation. 12390 12391 Previous Release: 12392 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12393 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12394 Current Release: 12395 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12396 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12397 12398 123992) iASL Compiler/Disassembler: 12400 12401Fixed a problem where a CPU stack overflow fault could occur if a 12402recursive 12403method call was made from within a Return statement. 12404 12405---------------------------------------- 1240602 December 2005. Summary of changes for version 20051202: 12407 124081) ACPI CA Core Subsystem: 12409 12410Modified the parsing of control methods to no longer create namespace 12411objects during the first pass of the parse. Objects are now created only 12412during the execute phase, at the moment the namespace creation operator 12413is 12414encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12415This 12416should eliminate ALREADY_EXISTS exceptions seen on some machines where 12417reentrant control methods are protected by an AML mutex. The mutex will 12418now 12419correctly block multiple threads from attempting to create the same 12420object 12421more than once. 12422 12423Increased the number of available Owner Ids for namespace object tracking 12424from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12425on 12426some machines with a large number of ACPI tables (either static or 12427dynamic). 12428 12429Fixed a problem with the AcpiExec utility where a fault could occur when 12430the 12431-b switch (batch mode) is used. 12432 12433Enhanced the namespace dump routine to output the owner ID for each 12434namespace object. 12435 12436Code and Data Size: The current and previous library sizes for the core 12437subsystem are shown below. These are the code and data sizes for the 12438acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12439These 12440values do not include any ACPI driver or OSPM code. The debug version of 12441the 12442code includes the debug output trace mechanism and has a much larger code 12443and data size. Note that these values will vary depending on the 12444efficiency 12445of the compiler and the compiler options used during generation. 12446 12447 Previous Release: 12448 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12449 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12450 Current Release: 12451 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12452 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12453 12454 124552) iASL Compiler/Disassembler: 12456 12457Fixed a parse error during compilation of certain Switch/Case constructs. 12458To 12459simplify the parse, the grammar now allows for multiple Default 12460statements 12461and this error is now detected and flagged during the analysis phase. 12462 12463Disassembler: The disassembly now includes the contents of the original 12464table header within a comment at the start of the file. This includes the 12465name and version of the original ASL compiler. 12466 12467---------------------------------------- 1246817 November 2005. Summary of changes for version 20051117: 12469 124701) ACPI CA Core Subsystem: 12471 12472Fixed a problem in the AML parser where the method thread count could be 12473decremented below zero if any errors occurred during the method parse 12474phase. 12475This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12476machines. 12477This also fixed a related regression with the mechanism that detects and 12478corrects methods that cannot properly handle reentrancy (related to the 12479deployment of the new OwnerId mechanism.) 12480 12481Eliminated the pre-parsing of control methods (to detect errors) during 12482table load. Related to the problem above, this was causing unwind issues 12483if 12484any errors occurred during the parse, and it seemed to be overkill. A 12485table 12486load should not be aborted if there are problems with any single control 12487method, thus rendering this feature rather pointless. 12488 12489Fixed a problem with the new table-driven resource manager where an 12490internal 12491buffer overflow could occur for small resource templates. 12492 12493Implemented a new external interface, AcpiGetVendorResource. This 12494interface 12495will find and return a vendor-defined resource descriptor within a _CRS 12496or 12497_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12498Helgaas. 12499 12500Removed the length limit (200) on string objects as per the upcoming ACPI 125013.0A specification. This affects the following areas of the interpreter: 125021) 12503any implicit conversion of a Buffer to a String, 2) a String object 12504result 12505of the ASL Concatenate operator, 3) the String object result of the ASL 12506ToString operator. 12507 12508Fixed a problem in the Windows OS interface layer (OSL) where a 12509WAIT_FOREVER 12510on a semaphore object would incorrectly timeout. This allows the 12511multithreading features of the AcpiExec utility to work properly under 12512Windows. 12513 12514Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12515the recently added file named "utresrc.c". 12516 12517Code and Data Size: The current and previous library sizes for the core 12518subsystem are shown below. These are the code and data sizes for the 12519acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12520These 12521values do not include any ACPI driver or OSPM code. The debug version of 12522the 12523code includes the debug output trace mechanism and has a much larger code 12524and data size. Note that these values will vary depending on the 12525efficiency 12526of the compiler and the compiler options used during generation. 12527 12528 Previous Release: 12529 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12530 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12531 Current Release: 12532 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12533 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12534 12535 125362) iASL Compiler/Disassembler: 12537 12538Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12539specification. For the iASL compiler, this means that string literals 12540within 12541the source ASL can be of any length. 12542 12543Enhanced the listing output to dump the AML code for resource descriptors 12544immediately after the ASL code for each descriptor, instead of in a block 12545at 12546the end of the entire resource template. 12547 12548Enhanced the compiler debug output to dump the entire original parse tree 12549constructed during the parse phase, before any transforms are applied to 12550the 12551tree. The transformed tree is dumped also. 12552 12553---------------------------------------- 1255402 November 2005. Summary of changes for version 20051102: 12555 125561) ACPI CA Core Subsystem: 12557 12558Modified the subsystem initialization sequence to improve GPE support. 12559The 12560GPE initialization has been split into two parts in order to defer 12561execution 12562of the _PRW methods (Power Resources for Wake) until after the hardware 12563is 12564fully initialized and the SCI handler is installed. This allows the _PRW 12565methods to access fields protected by the Global Lock. This will fix 12566systems 12567where a NO_GLOBAL_LOCK exception has been seen during initialization. 12568 12569Converted the ACPI internal object disassemble and display code within 12570the 12571AML debugger to fully table-driven operation, reducing code size and 12572increasing maintainability. 12573 12574Fixed a regression with the ConcatenateResTemplate() ASL operator 12575introduced 12576in the 20051021 release. 12577 12578Implemented support for "local" internal ACPI object types within the 12579debugger "Object" command and the AcpiWalkNamespace external interfaces. 12580These local types include RegionFields, BankFields, IndexFields, Alias, 12581and 12582reference objects. 12583 12584Moved common AML resource handling code into a new file, "utresrc.c". 12585This 12586code is shared by both the Resource Manager and the AML Debugger. 12587 12588Code and Data Size: The current and previous library sizes for the core 12589subsystem are shown below. These are the code and data sizes for the 12590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12591These 12592values do not include any ACPI driver or OSPM code. The debug version of 12593the 12594code includes the debug output trace mechanism and has a much larger code 12595and data size. Note that these values will vary depending on the 12596efficiency 12597of the compiler and the compiler options used during generation. 12598 12599 Previous Release: 12600 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12601 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12602 Current Release: 12603 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12604 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12605 12606 126072) iASL Compiler/Disassembler: 12608 12609Fixed a problem with very large initializer lists (more than 4000 12610elements) 12611for both Buffer and Package objects where the parse stack could overflow. 12612 12613Enhanced the pre-compile source code scan for non-ASCII characters to 12614ignore 12615characters within comment fields. The scan is now always performed and is 12616no 12617longer optional, detecting invalid characters within a source file 12618immediately rather than during the parse phase or later. 12619 12620Enhanced the ASL grammar definition to force early reductions on all 12621list- 12622style grammar elements so that the overall parse stack usage is greatly 12623reduced. This should improve performance and reduce the possibility of 12624parse 12625stack overflow. 12626 12627Eliminated all reduce/reduce conflicts in the iASL parser generation. 12628Also, 12629with the addition of a %expected statement, the compiler generates from 12630source with no warnings. 12631 12632Fixed a possible segment fault in the disassembler if the input filename 12633does not contain a "dot" extension (Thomas Renninger). 12634 12635---------------------------------------- 1263621 October 2005. Summary of changes for version 20051021: 12637 126381) ACPI CA Core Subsystem: 12639 12640Implemented support for the EM64T and other x86-64 processors. This 12641essentially entails recognizing that these processors support non-aligned 12642memory transfers. Previously, all 64-bit processors were assumed to lack 12643hardware support for non-aligned transfers. 12644 12645Completed conversion of the Resource Manager to nearly full table-driven 12646operation. Specifically, the resource conversion code (convert AML to 12647internal format and the reverse) and the debug code to dump internal 12648resource descriptors are fully table-driven, reducing code and data size 12649and 12650improving maintainability. 12651 12652The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12653word 12654on 64-bit processors instead of a fixed 32-bit word. (With assistance 12655from 12656Alexey Starikovskiy) 12657 12658Implemented support within the resource conversion code for the Type- 12659Specific byte within the various ACPI 3.0 *WordSpace macros. 12660 12661Fixed some issues within the resource conversion code for the type- 12662specific 12663flags for both Memory and I/O address resource descriptors. For Memory, 12664implemented support for the MTP and TTP flags. For I/O, split the TRS and 12665TTP flags into two separate fields. 12666 12667Code and Data Size: The current and previous library sizes for the core 12668subsystem are shown below. These are the code and data sizes for the 12669acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12670These 12671values do not include any ACPI driver or OSPM code. The debug version of 12672the 12673code includes the debug output trace mechanism and has a much larger code 12674and data size. Note that these values will vary depending on the 12675efficiency 12676of the compiler and the compiler options used during generation. 12677 12678 Previous Release: 12679 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12680 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12681 Current Release: 12682 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12683 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12684 12685 12686 126872) iASL Compiler/Disassembler: 12688 12689Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12690the 12691corresponding ResourceSource string was not also present in a resource 12692descriptor declaration. This restriction caused problems with existing 12693AML/ASL code that includes the Index byte without the string. When such 12694AML 12695was disassembled, it could not be compiled without modification. Further, 12696the modified code created a resource template with a different size than 12697the 12698original, breaking code that used fixed offsets into the resource 12699template 12700buffer. 12701 12702Removed a recent feature of the disassembler to ignore a lone 12703ResourceIndex 12704byte. This byte is now emitted if present so that the exact AML can be 12705reproduced when the disassembled code is recompiled. 12706 12707Improved comments and text alignment for the resource descriptor code 12708emitted by the disassembler. 12709 12710Implemented disassembler support for the ACPI 3.0 AccessSize field within 12711a 12712Register() resource descriptor. 12713 12714---------------------------------------- 1271530 September 2005. Summary of changes for version 20050930: 12716 127171) ACPI CA Core Subsystem: 12718 12719Completed a major overhaul of the Resource Manager code - specifically, 12720optimizations in the area of the AML/internal resource conversion code. 12721The 12722code has been optimized to simplify and eliminate duplicated code, CPU 12723stack 12724use has been decreased by optimizing function parameters and local 12725variables, and naming conventions across the manager have been 12726standardized 12727for clarity and ease of maintenance (this includes function, parameter, 12728variable, and struct/typedef names.) The update may force changes in some 12729driver code, depending on how resources are handled by the host OS. 12730 12731All Resource Manager dispatch and information tables have been moved to a 12732single location for clarity and ease of maintenance. One new file was 12733created, named "rsinfo.c". 12734 12735The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12736guarantee that the argument is not evaluated twice, making them less 12737prone 12738to macro side-effects. However, since there exists the possibility of 12739additional stack use if a particular compiler cannot optimize them (such 12740as 12741in the debug generation case), the original macros are optionally 12742available. 12743Note that some invocations of the return_VALUE macro may now cause size 12744mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12745to 12746eliminate these. (From Randy Dunlap) 12747 12748Implemented a new mechanism to enable debug tracing for individual 12749control 12750methods. A new external interface, AcpiDebugTrace, is provided to enable 12751this mechanism. The intent is to allow the host OS to easily enable and 12752disable tracing for problematic control methods. This interface can be 12753easily exposed to a user or debugger interface if desired. See the file 12754psxface.c for details. 12755 12756AcpiUtCallocate will now return a valid pointer if a length of zero is 12757specified - a length of one is used and a warning is issued. This matches 12758the behavior of AcpiUtAllocate. 12759 12760Code and Data Size: The current and previous library sizes for the core 12761subsystem are shown below. These are the code and data sizes for the 12762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12763These 12764values do not include any ACPI driver or OSPM code. The debug version of 12765the 12766code includes the debug output trace mechanism and has a much larger code 12767and data size. Note that these values will vary depending on the 12768efficiency 12769of the compiler and the compiler options used during generation. 12770 12771 Previous Release: 12772 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12773 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12774 Current Release: 12775 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12776 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12777 12778 127792) iASL Compiler/Disassembler: 12780 12781A remark is issued if the effective compile-time length of a package or 12782buffer is zero. Previously, this was a warning. 12783 12784---------------------------------------- 1278516 September 2005. Summary of changes for version 20050916: 12786 127871) ACPI CA Core Subsystem: 12788 12789Fixed a problem within the Resource Manager where support for the Generic 12790Register descriptor was not fully implemented. This descriptor is now 12791fully 12792recognized, parsed, disassembled, and displayed. 12793 12794Completely restructured the Resource Manager code to utilize table-driven 12795dispatch and lookup, eliminating many of the large switch() statements. 12796This 12797reduces overall subsystem code size and code complexity. Affects the 12798resource parsing and construction, disassembly, and debug dump output. 12799 12800Cleaned up and restructured the debug dump output for all resource 12801descriptors. Improved readability of the output and reduced code size. 12802 12803Fixed a problem where changes to internal data structures caused the 12804optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12805 12806Code and Data Size: The current and previous library sizes for the core 12807subsystem are shown below. These are the code and data sizes for the 12808acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12809These 12810values do not include any ACPI driver or OSPM code. The debug version of 12811the 12812code includes the debug output trace mechanism and has a much larger code 12813and data size. Note that these values will vary depending on the 12814efficiency 12815of the compiler and the compiler options used during generation. 12816 12817 Previous Release: 12818 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12819 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12820 Current Release: 12821 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12822 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12823 12824 128252) iASL Compiler/Disassembler: 12826 12827Updated the disassembler to automatically insert an EndDependentFn() 12828macro 12829into the ASL stream if this macro is missing in the original AML code, 12830simplifying compilation of the resulting ASL module. 12831 12832Fixed a problem in the disassembler where a disassembled ResourceSource 12833string (within a large resource descriptor) was not surrounded by quotes 12834and 12835not followed by a comma, causing errors when the resulting ASL module was 12836compiled. Also, escape sequences within a ResourceSource string are now 12837handled correctly (especially "\\") 12838 12839---------------------------------------- 1284002 September 2005. Summary of changes for version 20050902: 12841 128421) ACPI CA Core Subsystem: 12843 12844Fixed a problem with the internal Owner ID allocation and deallocation 12845mechanisms for control method execution and recursive method invocation. 12846This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12847messages seen on some systems. Recursive method invocation depth is 12848currently limited to 255. (Alexey Starikovskiy) 12849 12850Completely eliminated all vestiges of support for the "module-level 12851executable code" until this support is fully implemented and debugged. 12852This 12853should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12854some systems that invoke this support. 12855 12856Fixed a problem within the resource manager code where the transaction 12857flags 12858for a 64-bit address descriptor were handled incorrectly in the type- 12859specific flag byte. 12860 12861Consolidated duplicate code within the address descriptor resource 12862manager 12863code, reducing overall subsystem code size. 12864 12865Fixed a fault when using the AML debugger "disassemble" command to 12866disassemble individual control methods. 12867 12868Removed references to the "release_current" directory within the Unix 12869release package. 12870 12871Code and Data Size: The current and previous core subsystem library sizes 12872are shown below. These are the code and data sizes for the acpica.lib 12873produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12874include any ACPI driver or OSPM code. The debug version of the code 12875includes 12876the debug output trace mechanism and has a much larger code and data 12877size. 12878Note that these values will vary depending on the efficiency of the 12879compiler 12880and the compiler options used during generation. 12881 12882 Previous Release: 12883 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12884 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12885 Current Release: 12886 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12887 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12888 12889 128902) iASL Compiler/Disassembler: 12891 12892Implemented an error check for illegal duplicate values in the interrupt 12893and 12894dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12895Interrupt(). 12896 12897Implemented error checking for the Irq() and IrqNoFlags() macros to 12898detect 12899too many values in the interrupt list (16 max) and invalid values in the 12900list (range 0 - 15) 12901 12902The maximum length string literal within an ASL file is now restricted to 12903200 characters as per the ACPI specification. 12904 12905Fixed a fault when using the -ln option (generate namespace listing). 12906 12907Implemented an error check to determine if a DescriptorName within a 12908resource descriptor has already been used within the current scope. 12909 12910---------------------------------------- 1291115 August 2005. Summary of changes for version 20050815: 12912 129131) ACPI CA Core Subsystem: 12914 12915Implemented a full bytewise compare to determine if a table load request 12916is 12917attempting to load a duplicate table. The compare is performed if the 12918table 12919signatures and table lengths match. This will allow different tables with 12920the same OEM Table ID and revision to be loaded - probably against the 12921ACPI 12922specification, but discovered in the field nonetheless. 12923 12924Added the changes.txt logfile to each of the zipped release packages. 12925 12926Code and Data Size: Current and previous core subsystem library sizes are 12927shown below. These are the code and data sizes for the acpica.lib 12928produced 12929by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12930any ACPI driver or OSPM code. The debug version of the code includes the 12931debug output trace mechanism and has a much larger code and data size. 12932Note 12933that these values will vary depending on the efficiency of the compiler 12934and 12935the compiler options used during generation. 12936 12937 Previous Release: 12938 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12939 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12940 Current Release: 12941 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12942 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12943 12944 129452) iASL Compiler/Disassembler: 12946 12947Fixed a problem where incorrect AML code could be generated for Package 12948objects if optimization is disabled (via the -oa switch). 12949 12950Fixed a problem with where incorrect AML code is generated for variable- 12951length packages when the package length is not specified and the number 12952of 12953initializer values is greater than 255. 12954 12955 12956---------------------------------------- 1295729 July 2005. Summary of changes for version 20050729: 12958 129591) ACPI CA Core Subsystem: 12960 12961Implemented support to ignore an attempt to install/load a particular 12962ACPI 12963table more than once. Apparently there exists BIOS code that repeatedly 12964attempts to load the same SSDT upon certain events. With assistance from 12965Venkatesh Pallipadi. 12966 12967Restructured the main interface to the AML parser in order to correctly 12968handle all exceptional conditions. This will prevent leakage of the 12969OwnerId 12970resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12971some 12972machines. With assistance from Alexey Starikovskiy. 12973 12974Support for "module level code" has been disabled in this version due to 12975a 12976number of issues that have appeared on various machines. The support can 12977be 12978enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12979compilation. When the issues are fully resolved, the code will be enabled 12980by 12981default again. 12982 12983Modified the internal functions for debug print support to define the 12984FunctionName parameter as a (const char *) for compatibility with 12985compiler 12986built-in macros such as __FUNCTION__, etc. 12987 12988Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12989 12990Implemented support to display an object count summary for the AML 12991Debugger 12992commands Object and Methods. 12993 12994Code and Data Size: Current and previous core subsystem library sizes are 12995shown below. These are the code and data sizes for the acpica.lib 12996produced 12997by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12998any ACPI driver or OSPM code. The debug version of the code includes the 12999debug output trace mechanism and has a much larger code and data size. 13000Note 13001that these values will vary depending on the efficiency of the compiler 13002and 13003the compiler options used during generation. 13004 13005 Previous Release: 13006 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13007 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13008 Current Release: 13009 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13010 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13011 13012 130132) iASL Compiler/Disassembler: 13014 13015Fixed a regression that appeared in the 20050708 version of the compiler 13016where an error message was inadvertently emitted for invocations of the 13017_OSI 13018reserved control method. 13019 13020---------------------------------------- 1302108 July 2005. Summary of changes for version 20050708: 13022 130231) ACPI CA Core Subsystem: 13024 13025The use of the CPU stack in the debug version of the subsystem has been 13026considerably reduced. Previously, a debug structure was declared in every 13027function that used the debug macros. This structure has been removed in 13028favor of declaring the individual elements as parameters to the debug 13029functions. This reduces the cumulative stack use during nested execution 13030of 13031ACPI function calls at the cost of a small increase in the code size of 13032the 13033debug version of the subsystem. With assistance from Alexey Starikovskiy 13034and 13035Len Brown. 13036 13037Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13038headers to define a macro that will return the current function name at 13039runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13040by 13041the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13042compiler-dependent header, the function name is saved on the CPU stack 13043(one 13044pointer per function.) This mechanism is used because apparently there 13045exists no standard ANSI-C defined macro that that returns the function 13046name. 13047 13048Redesigned and reimplemented the "Owner ID" mechanism used to track 13049namespace objects created/deleted by ACPI tables and control method 13050execution. A bitmap is now used to allocate and free the IDs, thus 13051solving 13052the wraparound problem present in the previous implementation. The size 13053of 13054the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13055Starikovskiy). 13056 13057Removed the UINT32_BIT and UINT16_BIT types that were used for the 13058bitfield 13059flag definitions within the headers for the predefined ACPI tables. These 13060have been replaced by UINT8_BIT in order to increase the code portability 13061of 13062the subsystem. If the use of UINT8 remains a problem, we may be forced to 13063eliminate bitfields entirely because of a lack of portability. 13064 13065Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13066This 13067is a frequently used function and this improvement increases the 13068performance 13069of the entire subsystem (Alexey Starikovskiy). 13070 13071Fixed several possible memory leaks and the inverse - premature object 13072deletion (Alexey Starikovskiy). 13073 13074Code and Data Size: Current and previous core subsystem library sizes are 13075shown below. These are the code and data sizes for the acpica.lib 13076produced 13077by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13078any ACPI driver or OSPM code. The debug version of the code includes the 13079debug output trace mechanism and has a much larger code and data size. 13080Note 13081that these values will vary depending on the efficiency of the compiler 13082and 13083the compiler options used during generation. 13084 13085 Previous Release: 13086 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13087 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13088 Current Release: 13089 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13090 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13091 13092---------------------------------------- 1309324 June 2005. Summary of changes for version 20050624: 13094 130951) ACPI CA Core Subsystem: 13096 13097Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13098the host-defined cache object. This allows the OSL implementation to 13099define 13100and type this object in any manner desired, simplifying the OSL 13101implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13102Linux, and should be defined in the OS-specific header file for other 13103operating systems as required. 13104 13105Changed the interface to AcpiOsAcquireObject to directly return the 13106requested object as the function return (instead of ACPI_STATUS.) This 13107change was made for performance reasons, since this is the purpose of the 13108interface in the first place. AcpiOsAcquireObject is now similar to the 13109AcpiOsAllocate interface. 13110 13111Implemented a new AML debugger command named Businfo. This command 13112displays 13113information about all devices that have an associate _PRT object. The 13114_ADR, 13115_HID, _UID, and _CID are displayed for these devices. 13116 13117Modified the initialization sequence in AcpiInitializeSubsystem to call 13118the 13119OSL interface AcpiOslInitialize first, before any local initialization. 13120This 13121change was required because the global initialization now calls OSL 13122interfaces. 13123 13124Enhanced the Dump command to display the entire contents of Package 13125objects 13126(including all sub-objects and their values.) 13127 13128Restructured the code base to split some files because of size and/or 13129because the code logically belonged in a separate file. New files are 13130listed 13131below. All makefiles and project files included in the ACPI CA release 13132have 13133been updated. 13134 utilities/utcache.c /* Local cache interfaces */ 13135 utilities/utmutex.c /* Local mutex support */ 13136 utilities/utstate.c /* State object support */ 13137 interpreter/parser/psloop.c /* Main AML parse loop */ 13138 13139Code and Data Size: Current and previous core subsystem library sizes are 13140shown below. These are the code and data sizes for the acpica.lib 13141produced 13142by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13143any ACPI driver or OSPM code. The debug version of the code includes the 13144debug output trace mechanism and has a much larger code and data size. 13145Note 13146that these values will vary depending on the efficiency of the compiler 13147and 13148the compiler options used during generation. 13149 13150 Previous Release: 13151 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13152 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13153 Current Release: 13154 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13155 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13156 13157 131582) iASL Compiler/Disassembler: 13159 13160Fixed a regression introduced in version 20050513 where the use of a 13161Package 13162object within a Case() statement caused a compile time exception. The 13163original behavior has been restored (a Match() operator is emitted.) 13164 13165---------------------------------------- 1316617 June 2005. Summary of changes for version 20050617: 13167 131681) ACPI CA Core Subsystem: 13169 13170Moved the object cache operations into the OS interface layer (OSL) to 13171allow 13172the host OS to handle these operations if desired (for example, the Linux 13173OSL will invoke the slab allocator). This support is optional; the 13174compile 13175time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13176cache 13177code in the ACPI CA core. The new OSL interfaces are shown below. See 13178utalloc.c for an example implementation, and acpiosxf.h for the exact 13179interface definitions. With assistance from Alexey Starikovskiy. 13180 AcpiOsCreateCache 13181 AcpiOsDeleteCache 13182 AcpiOsPurgeCache 13183 AcpiOsAcquireObject 13184 AcpiOsReleaseObject 13185 13186Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13187return 13188and restore a flags parameter. This fits better with many OS lock models. 13189Note: the current execution state (interrupt handler or not) is no longer 13190passed to these interfaces. If necessary, the OSL must determine this 13191state 13192by itself, a simple and fast operation. With assistance from Alexey 13193Starikovskiy. 13194 13195Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13196present if the revision of the RSDP was 2 or greater. According to the 13197ACPI 13198specification, the XSDT is optional in all cases, and the table manager 13199therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13200Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13201contain 13202only the RSDT. 13203 13204Fixed an interpreter problem with the Mid() operator in the case of an 13205input 13206string where the resulting output string is of zero length. It now 13207correctly 13208returns a valid, null terminated string object instead of a string object 13209with a null pointer. 13210 13211Fixed a problem with the control method argument handling to allow a 13212store 13213to an Arg object that already contains an object of type Device. The 13214Device 13215object is now correctly overwritten. Previously, an error was returned. 13216 13217 13218Enhanced the debugger Find command to emit object values in addition to 13219the 13220found object pathnames. The output format is the same as the dump 13221namespace 13222command. 13223 13224Enhanced the debugger Set command. It now has the ability to set the 13225value 13226of any Named integer object in the namespace (Previously, only method 13227locals 13228and args could be set.) 13229 13230Code and Data Size: Current and previous core subsystem library sizes are 13231shown below. These are the code and data sizes for the acpica.lib 13232produced 13233by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13234any ACPI driver or OSPM code. The debug version of the code includes the 13235debug output trace mechanism and has a much larger code and data size. 13236Note 13237that these values will vary depending on the efficiency of the compiler 13238and 13239the compiler options used during generation. 13240 13241 Previous Release: 13242 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13243 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13244 Current Release: 13245 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13246 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13247 13248 132492) iASL Compiler/Disassembler: 13250 13251Fixed a regression in the disassembler where if/else/while constructs 13252were 13253output incorrectly. This problem was introduced in the previous release 13254(20050526). This problem also affected the single-step disassembly in the 13255debugger. 13256 13257Fixed a problem where compiling the reserved _OSI method would randomly 13258(but 13259rarely) produce compile errors. 13260 13261Enhanced the disassembler to emit compilable code in the face of 13262incorrect 13263AML resource descriptors. If the optional ResourceSourceIndex is present, 13264but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13265disassembly. Otherwise, the resulting code cannot be compiled without 13266errors. 13267 13268---------------------------------------- 1326926 May 2005. Summary of changes for version 20050526: 13270 132711) ACPI CA Core Subsystem: 13272 13273Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13274the module level (not within a control method.) These opcodes are 13275executed 13276exactly once at the time the table is loaded. This type of code was legal 13277up 13278until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13279in 13280order to provide backwards compatibility with earlier BIOS 13281implementations. 13282This eliminates the "Encountered executable code at module level" warning 13283that was previously generated upon detection of such code. 13284 13285Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13286inadvertently be generated during the lookup of namespace objects in the 13287second pass parse of ACPI tables and control methods. It appears that 13288this 13289problem could occur during the resolution of forward references to 13290namespace 13291objects. 13292 13293Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13294corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13295allows the deadlock detection debug code to be compiled out in the normal 13296case, improving mutex performance (and overall subsystem performance) 13297considerably. 13298 13299Implemented a handful of miscellaneous fixes for possible memory leaks on 13300error conditions and error handling control paths. These fixes were 13301suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13302 13303Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13304(tbxfroot.c) 13305to prevent a fault in this error case. 13306 13307Code and Data Size: Current and previous core subsystem library sizes are 13308shown below. These are the code and data sizes for the acpica.lib 13309produced 13310by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13311any ACPI driver or OSPM code. The debug version of the code includes the 13312debug output trace mechanism and has a much larger code and data size. 13313Note 13314that these values will vary depending on the efficiency of the compiler 13315and 13316the compiler options used during generation. 13317 13318 Previous Release: 13319 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13320 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13321 Current Release: 13322 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13323 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13324 13325 133262) iASL Compiler/Disassembler: 13327 13328Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13329the module level (not within a control method.) These operators will be 13330executed once at the time the table is loaded. This type of code was 13331legal 13332up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13333compiler in order to provide backwards compatibility with earlier BIOS 13334ASL 13335code. 13336 13337The ACPI integer width (specified via the table revision ID or the -r 13338override, 32 or 64 bits) is now used internally during compile-time 13339constant 13340folding to ensure that constants are truncated to 32 bits if necessary. 13341Previously, the revision ID value was only emitted in the AML table 13342header. 13343 13344An error message is now generated for the Mutex and Method operators if 13345the 13346SyncLevel parameter is outside the legal range of 0 through 15. 13347 13348Fixed a problem with the Method operator ParameterTypes list handling 13349(ACPI 133503.0). Previously, more than 2 types or 2 arguments generated a syntax 13351error. 13352The actual underlying implementation of method argument typechecking is 13353still under development, however. 13354 13355---------------------------------------- 1335613 May 2005. Summary of changes for version 20050513: 13357 133581) ACPI CA Core Subsystem: 13359 13360Implemented support for PCI Express root bridges -- added support for 13361device 13362PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13363 13364The interpreter now automatically truncates incoming 64-bit constants to 1336532 13366bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13367This 13368also affects the iASL compiler constant folding. (Note: as per below, the 13369iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13370 13371Fixed a problem where string and buffer objects with "static" pointers 13372(pointers to initialization data within an ACPI table) were not handled 13373consistently. The internal object copy operation now always copies the 13374data 13375to a newly allocated buffer, regardless of whether the source object is 13376static or not. 13377 13378Fixed a problem with the FromBCD operator where an implicit result 13379conversion was improperly performed while storing the result to the 13380target 13381operand. Since this is an "explicit conversion" operator, the implicit 13382conversion should never be performed on the output. 13383 13384Fixed a problem with the CopyObject operator where a copy to an existing 13385named object did not always completely overwrite the existing object 13386stored 13387at name. Specifically, a buffer-to-buffer copy did not delete the 13388existing 13389buffer. 13390 13391Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13392and 13393structs for consistency. 13394 13395Code and Data Size: Current and previous core subsystem library sizes are 13396shown below. These are the code and data sizes for the acpica.lib 13397produced 13398by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13399any ACPI driver or OSPM code. The debug version of the code includes the 13400debug output trace mechanism and has a much larger code and data size. 13401Note 13402that these values will vary depending on the efficiency of the compiler 13403and 13404the compiler options used during generation. 13405 13406 Previous Release: 13407 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13408 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13409 Current Release: (Same sizes) 13410 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13411 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13412 13413 134142) iASL Compiler/Disassembler: 13415 13416The compiler now emits a warning if an attempt is made to generate a 64- 13417bit 13418integer constant from within a 32-bit ACPI table (Revision < 2). The 13419integer 13420is truncated to 32 bits. 13421 13422Fixed a problem with large package objects: if the static length of the 13423package is greater than 255, the "variable length package" opcode is 13424emitted. Previously, this caused an error. This requires an update to the 13425ACPI spec, since it currently (incorrectly) states that packages larger 13426than 13427255 elements are not allowed. 13428 13429The disassembler now correctly handles variable length packages and 13430packages 13431larger than 255 elements. 13432 13433---------------------------------------- 1343408 April 2005. Summary of changes for version 20050408: 13435 134361) ACPI CA Core Subsystem: 13437 13438Fixed three cases in the interpreter where an "index" argument to an ASL 13439function was still (internally) 32 bits instead of the required 64 bits. 13440This was the Index argument to the Index, Mid, and Match operators. 13441 13442The "strupr" function is now permanently local (AcpiUtStrupr), since this 13443is 13444not a POSIX-defined function and not present in most kernel-level C 13445libraries. All references to the C library strupr function have been 13446removed 13447from the headers. 13448 13449Completed the deployment of static functions/prototypes. All prototypes 13450with 13451the static attribute have been moved from the headers to the owning C 13452file. 13453 13454Implemented an extract option (-e) for the AcpiBin utility (AML binary 13455utility). This option allows the utility to extract individual ACPI 13456tables 13457from the output of AcpiDmp. It provides the same functionality of the 13458acpixtract.pl perl script without the worry of setting the correct perl 13459options. AcpiBin runs on Windows and has not yet been generated/validated 13460in 13461the Linux/Unix environment (but should be soon). 13462 13463Updated and fixed the table dump option for AcpiBin (-d). This option 13464converts a single ACPI table to a hex/ascii file, similar to the output 13465of 13466AcpiDmp. 13467 13468Code and Data Size: Current and previous core subsystem library sizes are 13469shown below. These are the code and data sizes for the acpica.lib 13470produced 13471by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13472any ACPI driver or OSPM code. The debug version of the code includes the 13473debug output trace mechanism and has a much larger code and data size. 13474Note 13475that these values will vary depending on the efficiency of the compiler 13476and 13477the compiler options used during generation. 13478 13479 Previous Release: 13480 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13481 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13482 Current Release: 13483 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13484 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13485 13486 134872) iASL Compiler/Disassembler: 13488 13489Disassembler fix: Added a check to ensure that the table length found in 13490the 13491ACPI table header within the input file is not longer than the actual 13492input 13493file size. This indicates some kind of file or table corruption. 13494 13495---------------------------------------- 1349629 March 2005. Summary of changes for version 20050329: 13497 134981) ACPI CA Core Subsystem: 13499 13500An error is now generated if an attempt is made to create a Buffer Field 13501of 13502length zero (A CreateField with a length operand of zero.) 13503 13504The interpreter now issues a warning whenever executable code at the 13505module 13506level is detected during ACPI table load. This will give some idea of the 13507prevalence of this type of code. 13508 13509Implemented support for references to named objects (other than control 13510methods) within package objects. 13511 13512Enhanced package object output for the debug object. Package objects are 13513now 13514completely dumped, showing all elements. 13515 13516Enhanced miscellaneous object output for the debug object. Any object can 13517now be written to the debug object (for example, a device object can be 13518written, and the type of the object will be displayed.) 13519 13520The "static" qualifier has been added to all local functions across both 13521the 13522core subsystem and the iASL compiler. 13523 13524The number of "long" lines (> 80 chars) within the source has been 13525significantly reduced, by about 1/3. 13526 13527Cleaned up all header files to ensure that all CA/iASL functions are 13528prototyped (even static functions) and the formatting is consistent. 13529 13530Two new header files have been added, acopcode.h and acnames.h. 13531 13532Removed several obsolete functions that were no longer used. 13533 13534Code and Data Size: Current and previous core subsystem library sizes are 13535shown below. These are the code and data sizes for the acpica.lib 13536produced 13537by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13538any ACPI driver or OSPM code. The debug version of the code includes the 13539debug output trace mechanism and has a much larger code and data size. 13540Note 13541that these values will vary depending on the efficiency of the compiler 13542and 13543the compiler options used during generation. 13544 13545 Previous Release: 13546 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13547 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13548 Current Release: 13549 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13550 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13551 13552 13553 135542) iASL Compiler/Disassembler: 13555 13556Fixed a problem with the resource descriptor generation/support. For the 13557ResourceSourceIndex and the ResourceSource fields, both must be present, 13558or 13559both must be not present - can't have one without the other. 13560 13561The compiler now returns non-zero from the main procedure if any errors 13562have 13563occurred during the compilation. 13564 13565 13566---------------------------------------- 1356709 March 2005. Summary of changes for version 20050309: 13568 135691) ACPI CA Core Subsystem: 13570 13571The string-to-buffer implicit conversion code has been modified again 13572after 13573a change to the ACPI specification. In order to match the behavior of 13574the 13575other major ACPI implementation, the target buffer is no longer truncated 13576if 13577the source string is smaller than an existing target buffer. This change 13578requires an update to the ACPI spec, and should eliminate the recent 13579AE_AML_BUFFER_LIMIT issues. 13580 13581The "implicit return" support was rewritten to a new algorithm that 13582solves 13583the general case. Rather than attempt to determine when a method is about 13584to 13585exit, the result of every ASL operator is saved momentarily until the 13586very 13587next ASL operator is executed. Therefore, no matter how the method exits, 13588there will always be a saved implicit return value. This feature is only 13589enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13590eliminate 13591AE_AML_NO_RETURN_VALUE errors when enabled. 13592 13593Implemented implicit conversion support for the predicate (operand) of 13594the 13595If, Else, and While operators. String and Buffer arguments are 13596automatically 13597converted to Integers. 13598 13599Changed the string-to-integer conversion behavior to match the new ACPI 13600errata: "If no integer object exists, a new integer is created. The ASCII 13601string is interpreted as a hexadecimal constant. Each string character is 13602interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13603with the first character as the most significant digit, and ending with 13604the 13605first non-hexadecimal character or end-of-string." This means that the 13606first 13607non-hex character terminates the conversion and this is the code that was 13608changed. 13609 13610Fixed a problem where the ObjectType operator would fail (fault) when 13611used 13612on an Index of a Package which pointed to a null package element. The 13613operator now properly returns zero (Uninitialized) in this case. 13614 13615Fixed a problem where the While operator used excessive memory by not 13616properly popping the result stack during execution. There was no memory 13617leak 13618after execution, however. (Code provided by Valery Podrezov.) 13619 13620Fixed a problem where references to control methods within Package 13621objects 13622caused the method to be invoked, instead of producing a reference object 13623pointing to the method. 13624 13625Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13626to 13627improve performance and reduce code size. (Code provided by Alexey 13628Starikovskiy.) 13629 13630Code and Data Size: Current and previous core subsystem library sizes are 13631shown below. These are the code and data sizes for the acpica.lib 13632produced 13633by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13634any ACPI driver or OSPM code. The debug version of the code includes the 13635debug output trace mechanism and has a much larger code and data size. 13636Note 13637that these values will vary depending on the efficiency of the compiler 13638and 13639the compiler options used during generation. 13640 13641 Previous Release: 13642 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13643 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13644 Current Release: 13645 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13646 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13647 13648 136492) iASL Compiler/Disassembler: 13650 13651Fixed a problem with the Return operator with no arguments. Since the AML 13652grammar for the byte encoding requires an operand for the Return opcode, 13653the 13654compiler now emits a Return(Zero) for this case. An ACPI specification 13655update has been written for this case. 13656 13657For tables other than the DSDT, namepath optimization is automatically 13658disabled. This is because SSDTs can be loaded anywhere in the namespace, 13659the 13660compiler has no knowledge of where, and thus cannot optimize namepaths. 13661 13662Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13663inadvertently omitted from the ACPI specification, and will require an 13664update to the spec. 13665 13666The source file scan for ASCII characters is now optional (-a). This 13667change 13668was made because some vendors place non-ascii characters within comments. 13669However, the scan is simply a brute-force byte compare to ensure all 13670characters in the file are in the range 0x00 to 0x7F. 13671 13672Fixed a problem with the CondRefOf operator where the compiler was 13673inappropriately checking for the existence of the target. Since the point 13674of 13675the operator is to check for the existence of the target at run-time, the 13676compiler no longer checks for the target existence. 13677 13678Fixed a problem where errors generated from the internal AML interpreter 13679during constant folding were not handled properly, causing a fault. 13680 13681Fixed a problem with overly aggressive range checking for the Stall 13682operator. The valid range (max 255) is now only checked if the operand is 13683of 13684type Integer. All other operand types cannot be statically checked. 13685 13686Fixed a problem where control method references within the RefOf, 13687DeRefOf, 13688and ObjectType operators were not treated properly. They are now treated 13689as 13690actual references, not method invocations. 13691 13692Fixed and enhanced the "list namespace" option (-ln). This option was 13693broken 13694a number of releases ago. 13695 13696Improved error handling for the Field, IndexField, and BankField 13697operators. 13698The compiler now cleanly reports and recovers from errors in the field 13699component (FieldUnit) list. 13700 13701Fixed a disassembler problem where the optional ResourceDescriptor fields 13702TRS and TTP were not always handled correctly. 13703 13704Disassembler - Comments in output now use "//" instead of "/*" 13705 13706---------------------------------------- 1370728 February 2005. Summary of changes for version 20050228: 13708 137091) ACPI CA Core Subsystem: 13710 13711Fixed a problem where the result of an Index() operator (an object 13712reference) must increment the reference count on the target object for 13713the 13714life of the object reference. 13715 13716Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13717Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13718WordSpace 13719resource descriptors. 13720 13721Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13722Space Descriptor" string, indicating interpreter support for the 13723descriptors 13724above. 13725 13726Implemented header support for the new ACPI 3.0 FADT flag bits. 13727 13728Implemented header support for the new ACPI 3.0 PCI Express bits for the 13729PM1 13730status/enable registers. 13731 13732Updated header support for the MADT processor local Apic struct and MADT 13733platform interrupt source struct for new ACPI 3.0 fields. 13734 13735Implemented header support for the SRAT and SLIT ACPI tables. 13736 13737Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13738flag 13739at runtime. 13740 13741Code and Data Size: Current and previous core subsystem library sizes are 13742shown below. These are the code and data sizes for the acpica.lib 13743produced 13744by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13745any ACPI driver or OSPM code. The debug version of the code includes the 13746debug output trace mechanism and has a much larger code and data size. 13747Note 13748that these values will vary depending on the efficiency of the compiler 13749and 13750the compiler options used during generation. 13751 13752 Previous Release: 13753 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13754 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13755 Current Release: 13756 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13757 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13758 13759 137602) iASL Compiler/Disassembler: 13761 13762Fixed a problem with the internal 64-bit String-to-integer conversion 13763with 13764strings less than two characters long. 13765 13766Fixed a problem with constant folding where the result of the Index() 13767operator can not be considered a constant. This means that Index() cannot 13768be 13769a type3 opcode and this will require an update to the ACPI specification. 13770 13771Disassembler: Implemented support for the TTP, MTP, and TRS resource 13772descriptor fields. These fields were inadvertently ignored and not output 13773in 13774the disassembly of the resource descriptor. 13775 13776 13777 ---------------------------------------- 1377811 February 2005. Summary of changes for version 20050211: 13779 137801) ACPI CA Core Subsystem: 13781 13782Implemented ACPI 3.0 support for implicit conversion within the Match() 13783operator. MatchObjects can now be of type integer, buffer, or string 13784instead 13785of just type integer. Package elements are implicitly converted to the 13786type 13787of the MatchObject. This change aligns the behavior of Match() with the 13788behavior of the other logical operators (LLess(), etc.) It also requires 13789an 13790errata change to the ACPI specification as this support was intended for 13791ACPI 3.0, but was inadvertently omitted. 13792 13793Fixed a problem with the internal implicit "to buffer" conversion. 13794Strings 13795that are converted to buffers will cause buffer truncation if the string 13796is 13797smaller than the target buffer. Integers that are converted to buffers 13798will 13799not cause buffer truncation, only zero extension (both as per the ACPI 13800spec.) The problem was introduced when code was added to truncate the 13801buffer, but this should not be performed in all cases, only the string 13802case. 13803 13804Fixed a problem with the Buffer and Package operators where the 13805interpreter 13806would get confused if two such operators were used as operands to an ASL 13807operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13808stack was not being popped after the execution of these operators, 13809resulting 13810in an AE_NO_RETURN_VALUE exception. 13811 13812Fixed a problem with constructs of the form Store(Index(...),...). The 13813reference object returned from Index was inadvertently resolved to an 13814actual 13815value. This problem was introduced in version 20050114 when the behavior 13816of 13817Store() was modified to restrict the object types that can be used as the 13818source operand (to match the ACPI specification.) 13819 13820Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13821 13822Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13823 13824Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13825 13826Code and Data Size: Current and previous core subsystem library sizes are 13827shown below. These are the code and data sizes for the acpica.lib 13828produced 13829by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13830any ACPI driver or OSPM code. The debug version of the code includes the 13831debug output trace mechanism and has a much larger code and data size. 13832Note 13833that these values will vary depending on the efficiency of the compiler 13834and 13835the compiler options used during generation. 13836 13837 Previous Release: 13838 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13839 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13840 Current Release: 13841 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13842 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13843 13844 138452) iASL Compiler/Disassembler: 13846 13847Fixed a code generation problem in the constant folding optimization code 13848where incorrect code was generated if a constant was reduced to a buffer 13849object (i.e., a reduced type 5 opcode.) 13850 13851Fixed a typechecking problem for the ToBuffer operator. Caused by an 13852incorrect return type in the internal opcode information table. 13853 13854---------------------------------------- 1385525 January 2005. Summary of changes for version 20050125: 13856 138571) ACPI CA Core Subsystem: 13858 13859Fixed a recently introduced problem with the Global Lock where the 13860underlying semaphore was not created. This problem was introduced in 13861version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13862Acquire() operation on _GL. 13863 13864The local object cache is now optional, and is disabled by default. Both 13865AcpiExec and the iASL compiler enable the cache because they run in user 13866mode and this enhances their performance. #define 13867ACPI_ENABLE_OBJECT_CACHE 13868to enable the local cache. 13869 13870Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13871the 13872optional "implicit return" support where an error was returned if no 13873return 13874object was expected, but one was implicitly returned. AE_OK is now 13875returned 13876in this case and the implicitly returned object is deleted. 13877AcpiUtEvaluateObject is only occasionally used, and only to execute 13878reserved 13879methods such as _STA and _INI where the return type is known up front. 13880 13881Fixed a few issues with the internal convert-to-integer code. It now 13882returns 13883an error if an attempt is made to convert a null string, a string of only 13884blanks/tabs, or a zero-length buffer. This affects both implicit 13885conversion 13886and explicit conversion via the ToInteger() operator. 13887 13888The internal debug code in AcpiUtAcquireMutex has been commented out. It 13889is 13890not needed for normal operation and should increase the performance of 13891the 13892entire subsystem. The code remains in case it is needed for debug 13893purposes 13894again. 13895 13896The AcpiExec source and makefile are included in the Unix/Linux package 13897for 13898the first time. 13899 13900Code and Data Size: Current and previous core subsystem library sizes are 13901shown below. These are the code and data sizes for the acpica.lib 13902produced 13903by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13904any ACPI driver or OSPM code. The debug version of the code includes the 13905debug output trace mechanism and has a much larger code and data size. 13906Note 13907that these values will vary depending on the efficiency of the compiler 13908and 13909the compiler options used during generation. 13910 13911 Previous Release: 13912 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13913 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13914 Current Release: 13915 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13916 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13917 139182) iASL Compiler/Disassembler: 13919 13920Switch/Case support: A warning is now issued if the type of the Switch 13921value 13922cannot be determined at compile time. For example, Switch(Arg0) will 13923generate the warning, and the type is assumed to be an integer. As per 13924the 13925ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13926the 13927warning. 13928 13929Switch/Case support: Implemented support for buffer and string objects as 13930the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13931buffers and strings. 13932 13933Switch/Case support: The emitted code for the LEqual() comparisons now 13934uses 13935the switch value as the first operand, not the second. The case value is 13936now 13937the second operand, and this allows the case value to be implicitly 13938converted to the type of the switch value, not the other way around. 13939 13940Switch/Case support: Temporary variables are now emitted immediately 13941within 13942the control method, not at the global level. This means that there are 13943now 1394436 temps available per-method, not 36 temps per-module as was the case 13945with 13946the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13947 13948---------------------------------------- 1394914 January 2005. Summary of changes for version 20050114: 13950 13951Added 2005 copyright to all module headers. This affects every module in 13952the core subsystem, iASL compiler, and the utilities. 13953 139541) ACPI CA Core Subsystem: 13955 13956Fixed an issue with the String-to-Buffer conversion code where the string 13957null terminator was not included in the buffer after conversion, but 13958there 13959is existing ASL that assumes the string null terminator is included. This 13960is 13961the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13962introduced in the previous version when the code was updated to correctly 13963set the converted buffer size as per the ACPI specification. The ACPI 13964spec 13965is ambiguous and will be updated to specify that the null terminator must 13966be 13967included in the converted buffer. This also affects the ToBuffer() ASL 13968operator. 13969 13970Fixed a problem with the Mid() ASL/AML operator where it did not work 13971correctly on Buffer objects. Newly created sub-buffers were not being 13972marked 13973as initialized. 13974 13975 13976Fixed a problem in AcpiTbFindTable where incorrect string compares were 13977performed on the OemId and OemTableId table header fields. These fields 13978are 13979not null terminated, so strncmp is now used instead of strcmp. 13980 13981Implemented a restriction on the Store() ASL/AML operator to align the 13982behavior with the ACPI specification. Previously, any object could be 13983used 13984as the source operand. Now, the only objects that may be used are 13985Integers, 13986Buffers, Strings, Packages, Object References, and DDB Handles. If 13987necessary, the original behavior can be restored by enabling the 13988EnableInterpreterSlack flag. 13989 13990Enhanced the optional "implicit return" support to allow an implicit 13991return 13992value from methods that are invoked externally via the AcpiEvaluateObject 13993interface. This enables implicit returns from the _STA and _INI methods, 13994for example. 13995 13996Changed the Revision() ASL/AML operator to return the current version of 13997the 13998AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13999returned 14000the supported ACPI version (This is the function of the _REV method). 14001 14002Updated the _REV predefined method to return the currently supported 14003version 14004of ACPI, now 3. 14005 14006Implemented batch mode option for the AcpiExec utility (-b). 14007 14008Code and Data Size: Current and previous core subsystem library sizes are 14009shown below. These are the code and data sizes for the acpica.lib 14010produced 14011by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14012any ACPI driver or OSPM code. The debug version of the code includes the 14013debug output trace mechanism and has a much larger code and data size. 14014Note 14015that these values will vary depending on the efficiency of the compiler 14016and 14017the compiler options used during generation. 14018 14019 Previous Release: 14020 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14021 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14022 Current Release: 14023 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14024 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14025 14026---------------------------------------- 1402710 December 2004. Summary of changes for version 20041210: 14028 14029ACPI 3.0 support is nearing completion in both the iASL compiler and the 14030ACPI CA core subsystem. 14031 140321) ACPI CA Core Subsystem: 14033 14034Fixed a problem in the ToDecimalString operator where the resulting 14035string 14036length was incorrectly calculated. The length is now calculated exactly, 14037eliminating incorrect AE_STRING_LIMIT exceptions. 14038 14039Fixed a problem in the ToHexString operator to allow a maximum 200 14040character 14041string to be produced. 14042 14043Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14044copy 14045routine where the length of the resulting buffer was not truncated to the 14046new size (if the target buffer already existed). 14047 14048Code and Data Size: Current and previous core subsystem library sizes are 14049shown below. These are the code and data sizes for the acpica.lib 14050produced 14051by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14052any ACPI driver or OSPM code. The debug version of the code includes the 14053debug output trace mechanism and has a much larger code and data size. 14054Note 14055that these values will vary depending on the efficiency of the compiler 14056and 14057the compiler options used during generation. 14058 14059 Previous Release: 14060 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14061 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14062 Current Release: 14063 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14064 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14065 14066 140672) iASL Compiler/Disassembler: 14068 14069Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14070ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14071Includes support in the disassembler. 14072 14073Implemented support for the new (ACPI 3.0) parameter to the Register 14074macro, 14075AccessSize. 14076 14077Fixed a problem where the _HE resource name for the Interrupt macro was 14078referencing bit 0 instead of bit 1. 14079 14080Implemented check for maximum 255 interrupts in the Interrupt macro. 14081 14082Fixed a problem with the predefined resource descriptor names where 14083incorrect AML code was generated if the offset within the resource buffer 14084was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14085but did not update the surrounding package lengths. 14086 14087Changes to the Dma macro: All channels within the channel list must be 14088in 14089the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14090optional (default is BusMaster). 14091 14092Implemented check for maximum 7 data bytes for the VendorShort macro. 14093 14094The ReadWrite parameter is now optional for the Memory32 and similar 14095macros. 14096 14097---------------------------------------- 1409803 December 2004. Summary of changes for version 20041203: 14099 141001) ACPI CA Core Subsystem: 14101 14102The low-level field insertion/extraction code (exfldio) has been 14103completely 14104rewritten to eliminate unnecessary complexity, bugs, and boundary 14105conditions. 14106 14107Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14108ToDecimalString 14109operators where the input operand could be inadvertently deleted if no 14110conversion was necessary (e.g., if the input to ToInteger was an Integer 14111object.) 14112 14113Fixed a problem with the ToDecimalString and ToHexString where an 14114incorrect 14115exception code was returned if the resulting string would be > 200 chars. 14116AE_STRING_LIMIT is now returned. 14117 14118Fixed a problem with the Concatenate operator where AE_OK was always 14119returned, even if the operation failed. 14120 14121Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14122semaphores to be allocated. 14123 14124Code and Data Size: Current and previous core subsystem library sizes are 14125shown below. These are the code and data sizes for the acpica.lib 14126produced 14127by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14128any ACPI driver or OSPM code. The debug version of the code includes the 14129debug output trace mechanism and has a much larger code and data size. 14130Note 14131that these values will vary depending on the efficiency of the compiler 14132and 14133the compiler options used during generation. 14134 14135 Previous Release: 14136 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14137 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14138 Current Release: 14139 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14140 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14141 14142 141432) iASL Compiler/Disassembler: 14144 14145Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14146recently introduced in 20041119. 14147 14148Fixed a problem with the ToUUID macro where the upper nybble of each 14149buffer 14150byte was inadvertently set to zero. 14151 14152---------------------------------------- 1415319 November 2004. Summary of changes for version 20041119: 14154 141551) ACPI CA Core Subsystem: 14156 14157Fixed a problem in the internal ConvertToInteger routine where new 14158integers 14159were not truncated to 32 bits for 32-bit ACPI tables. This routine 14160converts 14161buffers and strings to integers. 14162 14163Implemented support to store a value to an Index() on a String object. 14164This 14165is an ACPI 2.0 feature that had not yet been implemented. 14166 14167Implemented new behavior for storing objects to individual package 14168elements 14169(via the Index() operator). The previous behavior was to invoke the 14170implicit 14171conversion rules if an object was already present at the index. The new 14172behavior is to simply delete any existing object and directly store the 14173new 14174object. Although the ACPI specification seems unclear on this subject, 14175other 14176ACPI implementations behave in this manner. (This is the root of the 14177AE_BAD_HEX_CONSTANT issue.) 14178 14179Modified the RSDP memory scan mechanism to support the extended checksum 14180for 14181ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14182RSDP signature is found with a valid checksum. 14183 14184Code and Data Size: Current and previous core subsystem library sizes are 14185shown below. These are the code and data sizes for the acpica.lib 14186produced 14187by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14188any ACPI driver or OSPM code. The debug version of the code includes the 14189debug output trace mechanism and has a much larger code and data size. 14190Note 14191that these values will vary depending on the efficiency of the compiler 14192and 14193the compiler options used during generation. 14194 14195 Previous Release: 14196 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14197 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14198 Current Release: 14199 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14200 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14201 14202 142032) iASL Compiler/Disassembler: 14204 14205Fixed a missing semicolon in the aslcompiler.y file. 14206 14207---------------------------------------- 1420805 November 2004. Summary of changes for version 20041105: 14209 142101) ACPI CA Core Subsystem: 14211 14212Implemented support for FADT revision 2. This was an interim table 14213(between 14214ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14215 14216Implemented optional support to allow uninitialized LocalX and ArgX 14217variables in a control method. The variables are initialized to an 14218Integer 14219object with a value of zero. This support is enabled by setting the 14220AcpiGbl_EnableInterpreterSlack flag to TRUE. 14221 14222Implemented support for Integer objects for the SizeOf operator. Either 142234 14224or 8 is returned, depending on the current integer size (32-bit or 64- 14225bit, 14226depending on the parent table revision). 14227 14228Fixed a problem in the implementation of the SizeOf and ObjectType 14229operators 14230where the operand was resolved to a value too early, causing incorrect 14231return values for some objects. 14232 14233Fixed some possible memory leaks during exceptional conditions. 14234 14235Code and Data Size: Current and previous core subsystem library sizes are 14236shown below. These are the code and data sizes for the acpica.lib 14237produced 14238by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14239any ACPI driver or OSPM code. The debug version of the code includes the 14240debug output trace mechanism and has a much larger code and data size. 14241Note 14242that these values will vary depending on the efficiency of the compiler 14243and 14244the compiler options used during generation. 14245 14246 Previous Release: 14247 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14248 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14249 Current Release: 14250 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14251 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14252 14253 142542) iASL Compiler/Disassembler: 14255 14256Implemented support for all ACPI 3.0 reserved names and methods. 14257 14258Implemented all ACPI 3.0 grammar elements in the front-end, including 14259support for semicolons. 14260 14261Implemented the ACPI 3.0 Function() and ToUUID() macros 14262 14263Fixed a problem in the disassembler where a Scope() operator would not be 14264emitted properly if the target of the scope was in another table. 14265 14266---------------------------------------- 1426715 October 2004. Summary of changes for version 20041015: 14268 14269Note: ACPI CA is currently undergoing an in-depth and complete formal 14270evaluation to test/verify the following areas. Other suggestions are 14271welcome. This will result in an increase in the frequency of releases and 14272the number of bug fixes in the next few months. 14273 - Functional tests for all ASL/AML operators 14274 - All implicit/explicit type conversions 14275 - Bit fields and operation regions 14276 - 64-bit math support and 32-bit-only "truncated" math support 14277 - Exceptional conditions, both compiler and interpreter 14278 - Dynamic object deletion and memory leaks 14279 - ACPI 3.0 support when implemented 14280 - External interfaces to the ACPI subsystem 14281 14282 142831) ACPI CA Core Subsystem: 14284 14285Fixed two alignment issues on 64-bit platforms - within debug statements 14286in 14287AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14288Address 14289field within the non-aligned ACPI generic address structure. 14290 14291Fixed a problem in the Increment and Decrement operators where incorrect 14292operand resolution could result in the inadvertent modification of the 14293original integer when the integer is passed into another method as an 14294argument and the arg is then incremented/decremented. 14295 14296Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14297bit 14298BCD number were truncated during conversion. 14299 14300Fixed a problem in the ToDecimal operator where the length of the 14301resulting 14302string could be set incorrectly too long if the input operand was a 14303Buffer 14304object. 14305 14306Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14307(0) 14308within a buffer would prematurely terminate a compare between buffer 14309objects. 14310 14311Added a check for string overflow (>200 characters as per the ACPI 14312specification) during the Concatenate operator with two string operands. 14313 14314Code and Data Size: Current and previous core subsystem library sizes are 14315shown below. These are the code and data sizes for the acpica.lib 14316produced 14317by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14318any ACPI driver or OSPM code. The debug version of the code includes the 14319debug output trace mechanism and has a much larger code and data size. 14320Note 14321that these values will vary depending on the efficiency of the compiler 14322and 14323the compiler options used during generation. 14324 14325 Previous Release: 14326 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14327 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14328 Current Release: 14329 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14330 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14331 14332 14333 143342) iASL Compiler/Disassembler: 14335 14336Allow the use of the ObjectType operator on uninitialized Locals and Args 14337(returns 0 as per the ACPI specification). 14338 14339Fixed a problem where the compiler would fault if there was a syntax 14340error 14341in the FieldName of all of the various CreateXXXField operators. 14342 14343Disallow the use of lower case letters within the EISAID macro, as per 14344the 14345ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14346Where 14347U is an uppercase letter and N is a hex digit. 14348 14349 14350---------------------------------------- 1435106 October 2004. Summary of changes for version 20041006: 14352 143531) ACPI CA Core Subsystem: 14354 14355Implemented support for the ACPI 3.0 Timer operator. This ASL function 14356implements a 64-bit timer with 100 nanosecond granularity. 14357 14358Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14359implement the ACPI 3.0 Timer operator. This allows the host OS to 14360implement 14361the timer with the best clock available. Also, it keeps the core 14362subsystem 14363out of the clock handling business, since the host OS (usually) performs 14364this function. 14365 14366Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14367functions use a 64-bit address which is part of the packed ACPI Generic 14368Address Structure. Since the structure is non-aligned, the alignment 14369macros 14370are now used to extract the address to a local variable before use. 14371 14372Fixed a problem where the ToInteger operator assumed all input strings 14373were 14374hexadecimal. The operator now handles both decimal strings and hex 14375strings 14376(prefixed with "0x"). 14377 14378Fixed a problem where the string length in the string object created as a 14379result of the internal ConvertToString procedure could be incorrect. This 14380potentially affected all implicit conversions and also the 14381ToDecimalString 14382and ToHexString operators. 14383 14384Fixed two problems in the ToString operator. If the length parameter was 14385zero, an incorrect string object was created and the value of the input 14386length parameter was inadvertently changed from zero to Ones. 14387 14388Fixed a problem where the optional ResourceSource string in the 14389ExtendedIRQ 14390resource macro was ignored. 14391 14392Simplified the interfaces to the internal division functions, reducing 14393code 14394size and complexity. 14395 14396Code and Data Size: Current and previous core subsystem library sizes are 14397shown below. These are the code and data sizes for the acpica.lib 14398produced 14399by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14400any ACPI driver or OSPM code. The debug version of the code includes the 14401debug output trace mechanism and has a much larger code and data size. 14402Note 14403that these values will vary depending on the efficiency of the compiler 14404and 14405the compiler options used during generation. 14406 14407 Previous Release: 14408 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14409 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14410 Current Release: 14411 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14412 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14413 14414 144152) iASL Compiler/Disassembler: 14416 14417Implemented support for the ACPI 3.0 Timer operator. 14418 14419Fixed a problem where the Default() operator was inadvertently ignored in 14420a 14421Switch/Case block. This was a problem in the translation of the Switch 14422statement to If...Else pairs. 14423 14424Added support to allow a standalone Return operator, with no parentheses 14425(or 14426operands). 14427 14428Fixed a problem with code generation for the ElseIf operator where the 14429translated Else...If parse tree was improperly constructed leading to the 14430loss of some code. 14431 14432---------------------------------------- 1443322 September 2004. Summary of changes for version 20040922: 14434 144351) ACPI CA Core Subsystem: 14436 14437Fixed a problem with the implementation of the LNot() operator where 14438"Ones" 14439was not returned for the TRUE case. Changed the code to return Ones 14440instead 14441of (!Arg) which was usually 1. This change affects iASL constant folding 14442for 14443this operator also. 14444 14445Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14446not 14447initialized properly -- Now zero the entire buffer in this case where the 14448buffer already exists. 14449 14450Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14451Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14452related code considerably. This will require changes/updates to all OS 14453interface layers (OSLs.) 14454 14455Implemented a new external interface, AcpiInstallExceptionHandler, to 14456allow 14457a system exception handler to be installed. This handler is invoked upon 14458any 14459run-time exception that occurs during control method execution. 14460 14461Added support for the DSDT in AcpiTbFindTable. This allows the 14462DataTableRegion() operator to access the local copy of the DSDT. 14463 14464Code and Data Size: Current and previous core subsystem library sizes are 14465shown below. These are the code and data sizes for the acpica.lib 14466produced 14467by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14468any ACPI driver or OSPM code. The debug version of the code includes the 14469debug output trace mechanism and has a much larger code and data size. 14470Note 14471that these values will vary depending on the efficiency of the compiler 14472and 14473the compiler options used during generation. 14474 14475 Previous Release: 14476 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14477 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14478 Current Release: 14479 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14480 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14481 14482 144832) iASL Compiler/Disassembler: 14484 14485Fixed a problem with constant folding and the LNot operator. LNot was 14486returning 1 in the TRUE case, not Ones as per the ACPI specification. 14487This 14488could result in the generation of an incorrect folded/reduced constant. 14489 14490End-Of-File is now allowed within a "//"-style comment. A parse error no 14491longer occurs if such a comment is at the very end of the input ASL 14492source 14493file. 14494 14495Implemented the "-r" option to override the Revision in the table header. 14496The initial use of this option will be to simplify the evaluation of the 14497AML 14498interpreter by allowing a single ASL source module to be compiled for 14499either 1450032-bit or 64-bit integers. 14501 14502 14503---------------------------------------- 1450427 August 2004. Summary of changes for version 20040827: 14505 145061) ACPI CA Core Subsystem: 14507 14508- Implemented support for implicit object conversion in the non-numeric 14509logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14510and 14511LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14512the second operand is implicitly converted on the fly to match the type 14513of 14514the first operand. For example: 14515 14516 LEqual (Source1, Source2) 14517 14518Source1 and Source2 must each evaluate to an integer, a string, or a 14519buffer. 14520The data type of Source1 dictates the required type of Source2. Source2 14521is 14522implicitly converted if necessary to match the type of Source1. 14523 14524- Updated and corrected the behavior of the string conversion support. 14525The 14526rules concerning conversion of buffers to strings (according to the ACPI 14527specification) are as follows: 14528 14529ToDecimalString - explicit byte-wise conversion of buffer to string of 14530decimal values (0-255) separated by commas. ToHexString - explicit byte- 14531wise 14532conversion of buffer to string of hex values (0-FF) separated by commas. 14533ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14534byte 14535copy with no transform except NULL terminated. Any other implicit buffer- 14536to- 14537string conversion - byte-wise conversion of buffer to string of hex 14538values 14539(0-FF) separated by spaces. 14540 14541- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14542 14543- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14544was 14545one byte too short in the case of a node in the root scope. This could 14546cause a fault during debug output. 14547 14548- Code and Data Size: Current and previous core subsystem library sizes 14549are 14550shown below. These are the code and data sizes for the acpica.lib 14551produced 14552by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14553any ACPI driver or OSPM code. The debug version of the code includes the 14554debug output trace mechanism and has a much larger code and data size. 14555Note 14556that these values will vary depending on the efficiency of the compiler 14557and 14558the compiler options used during generation. 14559 14560 Previous Release: 14561 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14562 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14563 Current Release: 14564 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14565 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14566 14567 145682) iASL Compiler/Disassembler: 14569 14570- Fixed a Linux generation error. 14571 14572 14573---------------------------------------- 1457416 August 2004. Summary of changes for version 20040816: 14575 145761) ACPI CA Core Subsystem: 14577 14578Designed and implemented support within the AML interpreter for the so- 14579called "implicit return". This support returns the result of the last 14580ASL 14581operation within a control method, in the absence of an explicit Return() 14582operator. A few machines depend on this behavior, even though it is not 14583explicitly supported by the ASL language. It is optional support that 14584can 14585be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14586 14587Removed support for the PCI_Config address space from the internal low 14588level 14589hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14590support was not used internally, and would not work correctly anyway 14591because 14592the PCI bus number and segment number were not supported. There are 14593separate interfaces for PCI configuration space access because of the 14594unique 14595interface. 14596 14597Code and Data Size: Current and previous core subsystem library sizes are 14598shown below. These are the code and data sizes for the acpica.lib 14599produced 14600by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14601any ACPI driver or OSPM code. The debug version of the code includes the 14602debug output trace mechanism and has a much larger code and data size. 14603Note 14604that these values will vary depending on the efficiency of the compiler 14605and 14606the compiler options used during generation. 14607 14608 Previous Release: 14609 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14610 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14611 Current Release: 14612 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14613 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14614 14615 146162) iASL Compiler/Disassembler: 14617 14618Fixed a problem where constants in ASL expressions at the root level (not 14619within a control method) could be inadvertently truncated during code 14620generation. This problem was introduced in the 20040715 release. 14621 14622 14623---------------------------------------- 1462415 July 2004. Summary of changes for version 20040715: 14625 146261) ACPI CA Core Subsystem: 14627 14628Restructured the internal HW GPE interfaces to pass/track the current 14629state 14630of interrupts (enabled/disabled) in order to avoid possible deadlock and 14631increase flexibility of the interfaces. 14632 14633Implemented a "lexicographical compare" for String and Buffer objects 14634within 14635the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14636- 14637as per further clarification to the ACPI specification. Behavior is 14638similar 14639to C library "strcmp". 14640 14641Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14642external function. In the 32-bit non-debug case, the stack use has been 14643reduced from 168 bytes to 32 bytes. 14644 14645Deployed a new run-time configuration flag, 14646AcpiGbl_EnableInterpreterSlack, 14647whose purpose is to allow the AML interpreter to forgive certain bad AML 14648constructs. Default setting is FALSE. 14649 14650Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14651IO 14652support code. If enabled, it allows field access to go beyond the end of 14653a 14654region definition if the field is within the region length rounded up to 14655the 14656next access width boundary (a common coding error.) 14657 14658Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14659ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14660these 14661symbols are lowercase by the latest version of the AcpiSrc tool. 14662 14663The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14664rename "Register" to simply "Reg" to prevent certain compilers from 14665complaining. 14666 14667Code and Data Size: Current and previous core subsystem library sizes are 14668shown below. These are the code and data sizes for the acpica.lib 14669produced 14670by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14671any ACPI driver or OSPM code. The debug version of the code includes the 14672debug output trace mechanism and has a much larger code and data size. 14673Note 14674that these values will vary depending on the efficiency of the compiler 14675and 14676the compiler options used during generation. 14677 14678 Previous Release: 14679 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14680 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14681 Current Release: 14682 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14683 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14684 14685 146862) iASL Compiler/Disassembler: 14687 14688Implemented full support for Package objects within the Case() operator. 14689Note: The Break() operator is currently not supported within Case blocks 14690(TermLists) as there is some question about backward compatibility with 14691ACPI 146921.0 interpreters. 14693 14694 14695Fixed a problem where complex terms were not supported properly within 14696the 14697Switch() operator. 14698 14699Eliminated extraneous warning for compiler-emitted reserved names of the 14700form "_T_x". (Used in Switch/Case operators.) 14701 14702Eliminated optimization messages for "_T_x" objects and small constants 14703within the DefinitionBlock operator. 14704 14705 14706---------------------------------------- 1470715 June 2004. Summary of changes for version 20040615: 14708 147091) ACPI CA Core Subsystem: 14710 14711Implemented support for Buffer and String objects (as per ACPI 2.0) for 14712the 14713following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14714LLessEqual. 14715 14716All directory names in the entire source package are lower case, as they 14717were in earlier releases. 14718 14719Implemented "Disassemble" command in the AML debugger that will 14720disassemble 14721a single control method. 14722 14723Code and Data Size: Current and previous core subsystem library sizes are 14724shown below. These are the code and data sizes for the acpica.lib 14725produced 14726by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14727any ACPI driver or OSPM code. The debug version of the code includes the 14728debug output trace mechanism and has a much larger code and data size. 14729Note 14730that these values will vary depending on the efficiency of the compiler 14731and 14732the compiler options used during generation. 14733 14734 Previous Release: 14735 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14736 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14737 14738 Current Release: 14739 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14740 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14741 14742 147432) iASL Compiler/Disassembler: 14744 14745Implemented support for Buffer and String objects (as per ACPI 2.0) for 14746the 14747following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14748LLessEqual. 14749 14750All directory names in the entire source package are lower case, as they 14751were in earlier releases. 14752 14753Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14754not found. 14755 14756Fixed an issue with the Windows version of the compiler where later 14757versions 14758of Windows place the FADT in the registry under the name "FADT" and not 14759"FACP" as earlier versions did. This applies when using the -g or - 14760d<nofilename> options. The compiler now looks for both strings as 14761necessary. 14762 14763Fixed a problem with compiler namepath optimization where a namepath 14764within 14765the Scope() operator could not be optimized if the namepath was a subpath 14766of 14767the current scope path. 14768 14769---------------------------------------- 1477027 May 2004. Summary of changes for version 20040527: 14771 147721) ACPI CA Core Subsystem: 14773 14774Completed a new design and implementation for EBDA (Extended BIOS Data 14775Area) 14776support in the RSDP scan code. The original code improperly scanned for 14777the 14778EBDA by simply scanning from memory location 0 to 0x400. The correct 14779method 14780is to first obtain the EBDA pointer from within the BIOS data area, then 14781scan 1K of memory starting at the EBDA pointer. There appear to be few 14782if 14783any machines that place the RSDP in the EBDA, however. 14784 14785Integrated a fix for a possible fault during evaluation of BufferField 14786arguments. Obsolete code that was causing the problem was removed. 14787 14788Found and fixed a problem in the Field Support Code where data could be 14789corrupted on a bit field read that starts on an aligned boundary but does 14790not end on an aligned boundary. Merged the read/write "datum length" 14791calculation code into a common procedure. 14792 14793Rolled in a couple of changes to the FreeBSD-specific header. 14794 14795 14796Code and Data Size: Current and previous core subsystem library sizes are 14797shown below. These are the code and data sizes for the acpica.lib 14798produced 14799by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14800any ACPI driver or OSPM code. The debug version of the code includes the 14801debug output trace mechanism and has a much larger code and data size. 14802Note 14803that these values will vary depending on the efficiency of the compiler 14804and 14805the compiler options used during generation. 14806 14807 Previous Release: 14808 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14809 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14810 Current Release: 14811 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14812 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14813 14814 148152) iASL Compiler/Disassembler: 14816 14817Fixed a generation warning produced by some overly-verbose compilers for 14818a 1481964-bit constant. 14820 14821---------------------------------------- 1482214 May 2004. Summary of changes for version 20040514: 14823 148241) ACPI CA Core Subsystem: 14825 14826Fixed a problem where hardware GPE enable bits sometimes not set properly 14827during and after GPE method execution. Result of 04/27 changes. 14828 14829Removed extra "clear all GPEs" when sleeping/waking. 14830 14831Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14832AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14833to 14834the new AcpiEv* calls as appropriate. 14835 14836ACPI_OS_NAME was removed from the OS-specific headers. The default name 14837is 14838now "Microsoft Windows NT" for maximum compatibility. However this can 14839be 14840changed by modifying the acconfig.h file. 14841 14842Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14843traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14844 14845Run _INI methods on ThermalZone objects. This is against the ACPI 14846specification, but there is apparently ASL code in the field that has 14847these 14848_INI methods, and apparently "other" AML interpreters execute them. 14849 14850Performed a full 16/32/64 bit lint that resulted in some small changes. 14851 14852Added a sleep simulation command to the AML debugger to test sleep code. 14853 14854Code and Data Size: Current and previous core subsystem library sizes are 14855shown below. These are the code and data sizes for the acpica.lib 14856produced 14857by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14858any ACPI driver or OSPM code. The debug version of the code includes the 14859debug output trace mechanism and has a much larger code and data size. 14860Note 14861that these values will vary depending on the efficiency of the compiler 14862and 14863the compiler options used during generation. 14864 14865 Previous Release: 14866 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14867 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14868 Current Release: 14869 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14870 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14871 14872---------------------------------------- 1487327 April 2004. Summary of changes for version 20040427: 14874 148751) ACPI CA Core Subsystem: 14876 14877Completed a major overhaul of the GPE handling within ACPI CA. There are 14878now three types of GPEs: wake-only, runtime-only, and combination 14879wake/run. 14880The only GPEs allowed to be combination wake/run are for button-style 14881devices such as a control-method power button, control-method sleep 14882button, 14883or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14884not 14885referenced by any _PRW methods are marked for "runtime" and hardware 14886enabled. Any GPE that is referenced by a _PRW method is marked for 14887"wake" 14888(and disabled at runtime). However, at sleep time, only those GPEs that 14889have been specifically enabled for wake via the AcpiEnableGpe interface 14890will 14891actually be hardware enabled. 14892 14893A new external interface has been added, AcpiSetGpeType(), that is meant 14894to 14895be used by device drivers to force a GPE to a particular type. It will 14896be 14897especially useful for the drivers for the button devices mentioned above. 14898 14899Completed restructuring of the ACPI CA initialization sequence so that 14900default operation region handlers are installed before GPEs are 14901initialized 14902and the _PRW methods are executed. This will prevent errors when the 14903_PRW 14904methods attempt to access system memory or I/O space. 14905 14906GPE enable/disable no longer reads the GPE enable register. We now keep 14907the 14908enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14909thus no longer depend on the hardware to maintain these bits. 14910 14911Always clear the wake status and fixed/GPE status bits before sleep, even 14912for state S5. 14913 14914Improved the AML debugger output for displaying the GPE blocks and their 14915current status. 14916 14917Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14918where 14919x = 0,1,2,3,4. 14920 14921Fixed a problem where the physical address was incorrectly calculated 14922when 14923the Load() operator was used to directly load from an Operation Region 14924(vs. 14925loading from a Field object.) Also added check for minimum table length 14926for 14927this case. 14928 14929Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14930mutex release. 14931 14932Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14933consistency with the other fields returned. 14934 14935Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14936structure for each GPE in the system, so the size of this structure is 14937important. 14938 14939CPU stack requirement reduction: Cleaned up the method execution and 14940object 14941evaluation paths so that now a parameter structure is passed, instead of 14942copying the various method parameters over and over again. 14943 14944In evregion.c: Correctly exit and reenter the interpreter region if and 14945only if dispatching an operation region request to a user-installed 14946handler. 14947Do not exit/reenter when dispatching to a default handler (e.g., default 14948system memory or I/O handlers) 14949 14950 14951Notes for updating drivers for the new GPE support. The following 14952changes 14953must be made to ACPI-related device drivers that are attached to one or 14954more 14955GPEs: (This information will be added to the ACPI CA Programmer 14956Reference.) 14957 149581) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14959must 14960explicitly call AcpiEnableGpe. 149612) There is a new interface called AcpiSetGpeType. This should be called 14962before enabling the GPE. Also, this interface will automatically disable 14963the GPE if it is currently enabled. 149643) AcpiEnableGpe no longer supports a GPE type flag. 14965 14966Specific drivers that must be changed: 149671) EC driver: 14968 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14969AeGpeHandler, NULL); 14970 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14971 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14972 149732) Button Drivers (Power, Lid, Sleep): 14974Run _PRW method under parent device 14975If _PRW exists: /* This is a control-method button */ 14976 Extract GPE number and possibly GpeDevice 14977 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14978 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14979 14980For all other devices that have _PRWs, we automatically set the GPE type 14981to 14982ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14983This 14984must be done on a selective basis, usually requiring some kind of user 14985app 14986to allow the user to pick the wake devices. 14987 14988 14989Code and Data Size: Current and previous core subsystem library sizes are 14990shown below. These are the code and data sizes for the acpica.lib 14991produced 14992by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14993any ACPI driver or OSPM code. The debug version of the code includes the 14994debug output trace mechanism and has a much larger code and data size. 14995Note 14996that these values will vary depending on the efficiency of the compiler 14997and 14998the compiler options used during generation. 14999 15000 Previous Release: 15001 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15002 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15003 Current Release: 15004 15005 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15006 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15007 15008 15009 15010---------------------------------------- 1501102 April 2004. Summary of changes for version 20040402: 15012 150131) ACPI CA Core Subsystem: 15014 15015Fixed an interpreter problem where an indirect store through an ArgX 15016parameter was incorrectly applying the "implicit conversion rules" during 15017the store. From the ACPI specification: "If the target is a method local 15018or 15019argument (LocalX or ArgX), no conversion is performed and the result is 15020stored directly to the target". The new behavior is to disable implicit 15021conversion during ALL stores to an ArgX. 15022 15023Changed the behavior of the _PRW method scan to ignore any and all errors 15024returned by a given _PRW. This prevents the scan from aborting from the 15025failure of any single _PRW. 15026 15027Moved the runtime configuration parameters from the global init procedure 15028to 15029static variables in acglobal.h. This will allow the host to override the 15030default values easily. 15031 15032Code and Data Size: Current and previous core subsystem library sizes are 15033shown below. These are the code and data sizes for the acpica.lib 15034produced 15035by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15036any ACPI driver or OSPM code. The debug version of the code includes the 15037debug output trace mechanism and has a much larger code and data size. 15038Note 15039that these values will vary depending on the efficiency of the compiler 15040and 15041the compiler options used during generation. 15042 15043 Previous Release: 15044 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15045 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15046 Current Release: 15047 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15048 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15049 15050 150512) iASL Compiler/Disassembler: 15052 15053iASL now fully disassembles SSDTs. However, External() statements are 15054not 15055generated automatically for unresolved symbols at this time. This is a 15056planned feature for future implementation. 15057 15058Fixed a scoping problem in the disassembler that occurs when the type of 15059the 15060target of a Scope() operator is overridden. This problem caused an 15061incorrectly nested internal namespace to be constructed. 15062 15063Any warnings or errors that are emitted during disassembly are now 15064commented 15065out automatically so that the resulting file can be recompiled without 15066any 15067hand editing. 15068 15069---------------------------------------- 1507026 March 2004. Summary of changes for version 20040326: 15071 150721) ACPI CA Core Subsystem: 15073 15074Implemented support for "wake" GPEs via interaction between GPEs and the 15075_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15076identified as a WAKE GPE and by default will no longer be enabled at 15077runtime. Previously, we were blindly enabling all GPEs with a 15078corresponding 15079_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15080We 15081believe this has been the cause of thousands of "spurious" GPEs on some 15082systems. 15083 15084This new GPE behavior is can be reverted to the original behavior (enable 15085ALL GPEs at runtime) via a runtime flag. 15086 15087Fixed a problem where aliased control methods could not access objects 15088properly. The proper scope within the namespace was not initialized 15089(transferred to the target of the aliased method) before executing the 15090target method. 15091 15092Fixed a potential race condition on internal object deletion on the 15093return 15094object in AcpiEvaluateObject. 15095 15096Integrated a fix for resource descriptors where both _MEM and _MTP were 15097being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15098wide, 0x0F instead of 0x03.) 15099 15100Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15101preventing 15102a 15103fault in some cases. 15104 15105Updated Notify() values for debug statements in evmisc.c 15106 15107Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15108 15109Code and Data Size: Current and previous core subsystem library sizes are 15110shown below. These are the code and data sizes for the acpica.lib 15111produced 15112by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15113any ACPI driver or OSPM code. The debug version of the code includes the 15114debug output trace mechanism and has a much larger code and data size. 15115Note 15116that these values will vary depending on the efficiency of the compiler 15117and 15118the compiler options used during generation. 15119 15120 Previous Release: 15121 15122 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15123 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15124 Current Release: 15125 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15126 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15127 15128---------------------------------------- 1512911 March 2004. Summary of changes for version 20040311: 15130 151311) ACPI CA Core Subsystem: 15132 15133Fixed a problem where errors occurring during the parse phase of control 15134method execution did not abort cleanly. For example, objects created and 15135installed in the namespace were not deleted. This caused all subsequent 15136invocations of the method to return the AE_ALREADY_EXISTS exception. 15137 15138Implemented a mechanism to force a control method to "Serialized" 15139execution 15140if the method attempts to create namespace objects. (The root of the 15141AE_ALREADY_EXISTS problem.) 15142 15143Implemented support for the predefined _OSI "internal" control method. 15144Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15145and 15146"Windows 2001.1", and can be easily upgraded for new strings as 15147necessary. 15148This feature will allow "other" operating systems to execute the fully 15149tested, "Windows" code path through the ASL code 15150 15151Global Lock Support: Now allows multiple acquires and releases with any 15152internal thread. Removed concept of "owning thread" for this special 15153mutex. 15154 15155Fixed two functions that were inappropriately declaring large objects on 15156the 15157CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15158during 15159method execution considerably. 15160 15161Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15162S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15163 15164Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15165defined on the machine. 15166 15167Implemented two runtime options: One to force all control method 15168execution 15169to "Serialized" to mimic Windows behavior, another to disable _OSI 15170support 15171if it causes problems on a given machine. 15172 15173Code and Data Size: Current and previous core subsystem library sizes are 15174shown below. These are the code and data sizes for the acpica.lib 15175produced 15176by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15177any ACPI driver or OSPM code. The debug version of the code includes the 15178debug output trace mechanism and has a much larger code and data size. 15179Note 15180that these values will vary depending on the efficiency of the compiler 15181and 15182the compiler options used during generation. 15183 15184 Previous Release: 15185 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15186 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15187 Current Release: 15188 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15189 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15190 151912) iASL Compiler/Disassembler: 15192 15193Fixed an array size problem for FreeBSD that would cause the compiler to 15194fault. 15195 15196---------------------------------------- 1519720 February 2004. Summary of changes for version 20040220: 15198 15199 152001) ACPI CA Core Subsystem: 15201 15202Implemented execution of _SxD methods for Device objects in the 15203GetObjectInfo interface. 15204 15205Fixed calls to _SST method to pass the correct arguments. 15206 15207Added a call to _SST on wake to restore to "working" state. 15208 15209Check for End-Of-Buffer failure case in the WalkResources interface. 15210 15211Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15212structures to the beginning of the file. 15213 15214After wake, clear GPE status register(s) before enabling GPEs. 15215 15216After wake, clear/enable power button. (Perhaps we should clear/enable 15217all 15218fixed events upon wake.) 15219 15220Fixed a couple of possible memory leaks in the Namespace manager. 15221 15222Integrated latest acnetbsd.h file. 15223 15224---------------------------------------- 1522511 February 2004. Summary of changes for version 20040211: 15226 15227 152281) ACPI CA Core Subsystem: 15229 15230Completed investigation and implementation of the call-by-reference 15231mechanism for control method arguments. 15232 15233Fixed a problem where a store of an object into an indexed package could 15234fail if the store occurs within a different method than the method that 15235created the package. 15236 15237Fixed a problem where the ToDecimal operator could return incorrect 15238results. 15239 15240Fixed a problem where the CopyObject operator could fail on some of the 15241more 15242obscure objects (e.g., Reference objects.) 15243 15244Improved the output of the Debug object to display buffer, package, and 15245index objects. 15246 15247Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15248return 15249the expected result. 15250 15251Added permanent ACPI_REPORT_ERROR macros for all instances of the 15252ACPI_AML_INTERNAL exception. 15253 15254Integrated latest version of acfreebsd.h 15255 15256---------------------------------------- 1525716 January 2004. Summary of changes for version 20040116: 15258 15259The purpose of this release is primarily to update the copyright years in 15260each module, thus causing a huge number of diffs. There are a few small 15261functional changes, however. 15262 152631) ACPI CA Core Subsystem: 15264 15265Improved error messages when there is a problem finding one or more of 15266the 15267required base ACPI tables 15268 15269Reintroduced the definition of APIC_HEADER in actbl.h 15270 15271Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15272 15273Removed extraneous reference to NewObj in dsmthdat.c 15274 152752) iASL compiler 15276 15277Fixed a problem introduced in December that disabled the correct 15278disassembly 15279of Resource Templates 15280 15281 15282---------------------------------------- 1528303 December 2003. Summary of changes for version 20031203: 15284 152851) ACPI CA Core Subsystem: 15286 15287Changed the initialization of Operation Regions during subsystem 15288init to perform two entire walks of the ACPI namespace; The first 15289to initialize the regions themselves, the second to execute the 15290_REG methods. This fixed some interdependencies across _REG 15291methods found on some machines. 15292 15293Fixed a problem where a Store(Local0, Local1) could simply update 15294the object reference count, and not create a new copy of the 15295object if the Local1 is uninitialized. 15296 15297Implemented support for the _SST reserved method during sleep 15298transitions. 15299 15300Implemented support to clear the SLP_TYP and SLP_EN bits when 15301waking up, this is apparently required by some machines. 15302 15303When sleeping, clear the wake status only if SleepState is not S5. 15304 15305Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15306pointer arithmetic advanced a string pointer too far. 15307 15308Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15309could be returned if the requested table has not been loaded. 15310 15311Within the support for IRQ resources, restructured the handling of 15312the active and edge/level bits. 15313 15314Fixed a few problems in AcpiPsxExecute() where memory could be 15315leaked under certain error conditions. 15316 15317Improved error messages for the cases where the ACPI mode could 15318not be entered. 15319 15320Code and Data Size: Current and previous core subsystem library 15321sizes are shown below. These are the code and data sizes for the 15322acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15323these values do not include any ACPI driver or OSPM code. The 15324debug version of the code includes the debug output trace 15325mechanism and has a much larger code and data size. Note that 15326these values will vary depending on the efficiency of the compiler 15327and the compiler options used during generation. 15328 15329 Previous Release (20031029): 15330 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15331 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15332 Current Release: 15333 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15334 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15335 153362) iASL Compiler/Disassembler: 15337 15338Implemented a fix for the iASL disassembler where a bad index was 15339generated. This was most noticeable on 64-bit platforms 15340 15341 15342---------------------------------------- 1534329 October 2003. Summary of changes for version 20031029: 15344 153451) ACPI CA Core Subsystem: 15346 15347 15348Fixed a problem where a level-triggered GPE with an associated 15349_Lxx control method was incorrectly cleared twice. 15350 15351Fixed a problem with the Field support code where an access can 15352occur beyond the end-of-region if the field is non-aligned but 15353extends to the very end of the parent region (resulted in an 15354AE_AML_REGION_LIMIT exception.) 15355 15356Fixed a problem with ACPI Fixed Events where an RT Clock handler 15357would not get invoked on an RTC event. The RTC event bitmasks for 15358the PM1 registers were not being initialized properly. 15359 15360Implemented support for executing _STA and _INI methods for 15361Processor objects. Although this is currently not part of the 15362ACPI specification, there is existing ASL code that depends on the 15363init-time execution of these methods. 15364 15365Implemented and deployed a GetDescriptorName function to decode 15366the various types of internal descriptors. Guards against null 15367descriptors during debug output also. 15368 15369Implemented and deployed a GetNodeName function to extract the 4- 15370character namespace node name. This function simplifies the debug 15371and error output, as well as guarding against null pointers during 15372output. 15373 15374Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15375simplify the debug and error output of 64-bit integers. This 15376macro replaces the HIDWORD and LODWORD macros for dumping these 15377integers. 15378 15379Updated the implementation of the Stall() operator to only call 15380AcpiOsStall(), and also return an error if the operand is larger 15381than 255. This preserves the required behavior of not 15382relinquishing the processor, as would happen if AcpiOsSleep() was 15383called for "long stalls". 15384 15385Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15386initialized are now treated as NOOPs. 15387 15388Cleaned up a handful of warnings during 64-bit generation. 15389 15390Fixed a reported error where and incorrect GPE number was passed 15391to the GPE dispatch handler. This value is only used for error 15392output, however. Used this opportunity to clean up and streamline 15393the GPE dispatch code. 15394 15395Code and Data Size: Current and previous core subsystem library 15396sizes are shown below. These are the code and data sizes for the 15397acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15398these values do not include any ACPI driver or OSPM code. The 15399 15400debug version of the code includes the debug output trace 15401mechanism and has a much larger code and data size. Note that 15402these values will vary depending on the efficiency of the compiler 15403and the compiler options used during generation. 15404 15405 Previous Release (20031002): 15406 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15407 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15408 Current Release: 15409 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15410 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15411 15412 154132) iASL Compiler/Disassembler: 15414 15415Updated the iASL compiler to return an error if the operand to the 15416Stall() operator is larger than 255. 15417 15418 15419---------------------------------------- 1542002 October 2003. Summary of changes for version 20031002: 15421 15422 154231) ACPI CA Core Subsystem: 15424 15425Fixed a problem with Index Fields where the index was not 15426incremented for fields that require multiple writes to the 15427index/data registers (Fields that are wider than the data 15428register.) 15429 15430Fixed a problem with all Field objects where a write could go 15431beyond the end-of-field if the field was larger than the access 15432granularity and therefore required multiple writes to complete the 15433request. An extra write beyond the end of the field could happen 15434inadvertently. 15435 15436Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15437would incorrectly be returned if the width of the Data Register 15438was larger than the specified field access width. 15439 15440Completed fixes for LoadTable() and Unload() and verified their 15441operation. Implemented full support for the "DdbHandle" object 15442throughout the ACPI CA subsystem. 15443 15444Implemented full support for the MADT and ECDT tables in the ACPI 15445CA header files. Even though these tables are not directly 15446consumed by ACPI CA, the header definitions are useful for ACPI 15447device drivers. 15448 15449Integrated resource descriptor fixes posted to the Linux ACPI 15450list. This included checks for minimum descriptor length, and 15451support for trailing NULL strings within descriptors that have 15452optional string elements. 15453 15454Code and Data Size: Current and previous core subsystem library 15455sizes are shown below. These are the code and data sizes for the 15456acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15457these values do not include any ACPI driver or OSPM code. The 15458debug version of the code includes the debug output trace 15459mechanism and has a much larger code and data size. Note that 15460these values will vary depending on the efficiency of the compiler 15461and the compiler options used during generation. 15462 15463 Previous Release (20030918): 15464 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15465 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15466 Current Release: 15467 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15468 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15469 15470 154712) iASL Compiler: 15472 15473Implemented detection of non-ASCII characters within the input 15474source ASL file. This catches attempts to compile binary (AML) 15475files early in the compile, with an informative error message. 15476 15477Fixed a problem where the disassembler would fault if the output 15478filename could not be generated or if the output file could not be 15479opened. 15480 15481---------------------------------------- 1548218 September 2003. Summary of changes for version 20030918: 15483 15484 154851) ACPI CA Core Subsystem: 15486 15487Found and fixed a longstanding problem with the late execution of 15488the various deferred AML opcodes (such as Operation Regions, 15489Buffer Fields, Buffers, and Packages). If the name string 15490specified for the name of the new object placed the object in a 15491scope other than the current scope, the initialization/execution 15492of the opcode failed. The solution to this problem was to 15493implement a mechanism where the late execution of such opcodes 15494does not attempt to lookup/create the name a second time in an 15495incorrect scope. This fixes the "region size computed 15496incorrectly" problem. 15497 15498Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15499Global Lock AE_BAD_PARAMETER error. 15500 15501Fixed several 64-bit issues with prototypes, casting and data 15502types. 15503 15504Removed duplicate prototype from acdisasm.h 15505 15506Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15507 15508Code and Data Size: Current and previous core subsystem library 15509sizes are shown below. These are the code and data sizes for the 15510acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15511these values do not include any ACPI driver or OSPM code. The 15512debug version of the code includes the debug output trace 15513mechanism and has a much larger code and data size. Note that 15514these values will vary depending on the efficiency of the compiler 15515and the compiler options used during generation. 15516 15517 Previous Release: 15518 15519 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15520 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15521 Current Release: 15522 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15523 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15524 15525 155262) Linux: 15527 15528Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15529correct sleep time in seconds. 15530 15531---------------------------------------- 1553214 July 2003. Summary of changes for version 20030619: 15533 155341) ACPI CA Core Subsystem: 15535 15536Parse SSDTs in order discovered, as opposed to reverse order 15537(Hrvoje Habjanic) 15538 15539Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15540Klausner, 15541 Nate Lawson) 15542 15543 155442) Linux: 15545 15546Dynamically allocate SDT list (suggested by Andi Kleen) 15547 15548proc function return value cleanups (Andi Kleen) 15549 15550Correctly handle NMI watchdog during long stalls (Andrew Morton) 15551 15552Make it so acpismp=force works (reported by Andrew Morton) 15553 15554 15555---------------------------------------- 1555619 June 2003. Summary of changes for version 20030619: 15557 155581) ACPI CA Core Subsystem: 15559 15560Fix To/FromBCD, eliminating the need for an arch-specific #define. 15561 15562Do not acquire a semaphore in the S5 shutdown path. 15563 15564Fix ex_digits_needed for 0. (Takayoshi Kochi) 15565 15566Fix sleep/stall code reversal. (Andi Kleen) 15567 15568Revert a change having to do with control method calling 15569semantics. 15570 155712) Linux: 15572 15573acpiphp update (Takayoshi Kochi) 15574 15575Export acpi_disabled for sonypi (Stelian Pop) 15576 15577Mention acpismp=force in config help 15578 15579Re-add acpitable.c and acpismp=force. This improves backwards 15580 15581compatibility and also cleans up the code to a significant degree. 15582 15583Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15584 15585---------------------------------------- 1558622 May 2003. Summary of changes for version 20030522: 15587 155881) ACPI CA Core Subsystem: 15589 15590Found and fixed a reported problem where an AE_NOT_FOUND error 15591occurred occasionally during _BST evaluation. This turned out to 15592be an Owner ID allocation issue where a called method did not get 15593a new ID assigned to it. Eventually, (after 64k calls), the Owner 15594ID UINT16 would wraparound so that the ID would be the same as the 15595caller's and the called method would delete the caller's 15596namespace. 15597 15598Implemented extended error reporting for control methods that are 15599aborted due to a run-time exception. Output includes the exact 15600AML instruction that caused the method abort, a dump of the method 15601locals and arguments at the time of the abort, and a trace of all 15602nested control method calls. 15603 15604Modified the interpreter to allow the creation of buffers of zero 15605length from the AML code. Implemented new code to ensure that no 15606attempt is made to actually allocate a memory buffer (of length 15607zero) - instead, a simple buffer object with a NULL buffer pointer 15608and length zero is created. A warning is no longer issued when 15609the AML attempts to create a zero-length buffer. 15610 15611Implemented a workaround for the "leading asterisk issue" in 15612_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15613asterisk is automatically removed if present in any HID, UID, or 15614CID strings. The iASL compiler will still flag this asterisk as 15615an error, however. 15616 15617Implemented full support for _CID methods that return a package of 15618multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15619now additionally returns a device _CID list if present. This 15620required a change to the external interface in order to pass an 15621ACPI_BUFFER object as a parameter since the _CID list is of 15622variable length. 15623 15624Fixed a problem with the new AE_SAME_HANDLER exception where 15625handler initialization code did not know about this exception. 15626 15627Code and Data Size: Current and previous core subsystem library 15628sizes are shown below. These are the code and data sizes for the 15629acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15630these values do not include any ACPI driver or OSPM code. The 15631debug version of the code includes the debug output trace 15632mechanism and has a much larger code and data size. Note that 15633these values will vary depending on the efficiency of the compiler 15634and the compiler options used during generation. 15635 15636 Previous Release (20030509): 15637 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15638 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15639 Current Release: 15640 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15641 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15642 15643 156442) Linux: 15645 15646Fixed a bug in which we would reinitialize the ACPI interrupt 15647after it was already working, thus disabling all ACPI and the IRQs 15648for any other device sharing the interrupt. (Thanks to Stian 15649Jordet) 15650 15651Toshiba driver update (John Belmonte) 15652 15653Return only 0 or 1 for our interrupt handler status (Andrew 15654Morton) 15655 15656 156573) iASL Compiler: 15658 15659Fixed a reported problem where multiple (nested) ElseIf() 15660statements were not handled correctly by the compiler, resulting 15661in incorrect warnings and incorrect AML code. This was a problem 15662in both the ASL parser and the code generator. 15663 15664 156654) Documentation: 15666 15667Added changes to existing interfaces, new exception codes, and new 15668text concerning reference count object management versus garbage 15669collection. 15670 15671---------------------------------------- 1567209 May 2003. Summary of changes for version 20030509. 15673 15674 156751) ACPI CA Core Subsystem: 15676 15677Changed the subsystem initialization sequence to hold off 15678installation of address space handlers until the hardware has been 15679initialized and the system has entered ACPI mode. This is because 15680the installation of space handlers can cause _REG methods to be 15681run. Previously, the _REG methods could potentially be run before 15682ACPI mode was enabled. 15683 15684Fixed some memory leak issues related to address space handler and 15685notify handler installation. There were some problems with the 15686reference count mechanism caused by the fact that the handler 15687objects are shared across several namespace objects. 15688 15689Fixed a reported problem where reference counts within the 15690namespace were not properly updated when named objects created by 15691method execution were deleted. 15692 15693Fixed a reported problem where multiple SSDTs caused a deletion 15694issue during subsystem termination. Restructured the table data 15695structures to simplify the linked lists and the related code. 15696 15697Fixed a problem where the table ID associated with secondary 15698tables (SSDTs) was not being propagated into the namespace objects 15699created by those tables. This would only present a problem for 15700tables that are unloaded at run-time, however. 15701 15702Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15703type as the length parameter (instead of UINT32). 15704 15705Solved a long-standing problem where an ALREADY_EXISTS error 15706appears on various systems. This problem could happen when there 15707are multiple PCI_Config operation regions under a single PCI root 15708bus. This doesn't happen very frequently, but there are some 15709systems that do this in the ASL. 15710 15711Fixed a reported problem where the internal DeleteNode function 15712was incorrectly handling the case where a namespace node was the 15713first in the parent's child list, and had additional peers (not 15714the only child, but first in the list of children.) 15715 15716Code and Data Size: Current core subsystem library sizes are shown 15717below. These are the code and data sizes for the acpica.lib 15718produced by the Microsoft Visual C++ 6.0 compiler, and these 15719values do not include any ACPI driver or OSPM code. The debug 15720version of the code includes the debug output trace mechanism and 15721has a much larger code and data size. Note that these values will 15722vary depending on the efficiency of the compiler and the compiler 15723options used during generation. 15724 15725 Previous Release 15726 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15727 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15728 Current Release: 15729 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15730 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15731 15732 157332) Linux: 15734 15735Allow ":" in OS override string (Ducrot Bruno) 15736 15737Kobject fix (Greg KH) 15738 15739 157403 iASL Compiler/Disassembler: 15741 15742Fixed a problem in the generation of the C source code files (AML 15743is emitted in C source statements for BIOS inclusion) where the 15744Ascii dump that appears within a C comment at the end of each line 15745could cause a compile time error if the AML sequence happens to 15746have an open comment or close comment sequence embedded. 15747 15748 15749---------------------------------------- 1575024 April 2003. Summary of changes for version 20030424. 15751 15752 157531) ACPI CA Core Subsystem: 15754 15755Support for big-endian systems has been implemented. Most of the 15756support has been invisibly added behind big-endian versions of the 15757ACPI_MOVE_* macros. 15758 15759Fixed a problem in AcpiHwDisableGpeBlock() and 15760AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15761low level hardware write routine. The offset parameter was 15762actually eliminated from the low level read/write routines because 15763they had become obsolete. 15764 15765Fixed a problem where a handler object was deleted twice during 15766the removal of a fixed event handler. 15767 15768 157692) Linux: 15770 15771A fix for SMP systems with link devices was contributed by 15772 15773Compaq's Dan Zink. 15774 15775(2.5) Return whether we handled the interrupt in our IRQ handler. 15776(Linux ISRs no longer return void, so we can propagate the handler 15777return value from the ACPI CA core back to the OS.) 15778 15779 15780 157813) Documentation: 15782 15783The ACPI CA Programmer Reference has been updated to reflect new 15784interfaces and changes to existing interfaces. 15785 15786---------------------------------------- 1578728 March 2003. Summary of changes for version 20030328. 15788 157891) ACPI CA Core Subsystem: 15790 15791The GPE Block Device support has been completed. New interfaces 15792are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15793interfaces (enable, disable, clear, getstatus) have been split 15794into separate interfaces for Fixed Events and General Purpose 15795Events (GPEs) in order to support GPE Block Devices properly. 15796 15797Fixed a problem where the error message "Failed to acquire 15798semaphore" would appear during operations on the embedded 15799controller (EC). 15800 15801Code and Data Size: Current core subsystem library sizes are shown 15802below. These are the code and data sizes for the acpica.lib 15803produced by the Microsoft Visual C++ 6.0 compiler, and these 15804values do not include any ACPI driver or OSPM code. The debug 15805version of the code includes the debug output trace mechanism and 15806has a much larger code and data size. Note that these values will 15807vary depending on the efficiency of the compiler and the compiler 15808options used during generation. 15809 15810 Previous Release 15811 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15812 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15813 Current Release: 15814 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15815 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15816 15817 15818---------------------------------------- 1581928 February 2003. Summary of changes for version 20030228. 15820 15821 158221) ACPI CA Core Subsystem: 15823 15824The GPE handling and dispatch code has been completely overhauled 15825in preparation for support of GPE Block Devices (ID ACPI0006). 15826This affects internal data structures and code only; there should 15827be no differences visible externally. One new file has been 15828added, evgpeblk.c 15829 15830The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15831fields that are used to determine the GPE block lengths. The 15832REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15833structures are ignored. This is per the ACPI specification but it 15834isn't very clear. The full 256 Block 0/1 GPEs are now supported 15835(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15836 15837In the SCI interrupt handler, removed the read of the PM1_CONTROL 15838register to look at the SCI_EN bit. On some machines, this read 15839causes an SMI event and greatly slows down SCI events. (This may 15840in fact be the cause of slow battery status response on some 15841systems.) 15842 15843Fixed a problem where a store of a NULL string to a package object 15844could cause the premature deletion of the object. This was seen 15845during execution of the battery _BIF method on some systems, 15846resulting in no battery data being returned. 15847 15848Added AcpiWalkResources interface to simplify parsing of resource 15849lists. 15850 15851Code and Data Size: Current core subsystem library sizes are shown 15852below. These are the code and data sizes for the acpica.lib 15853produced by the Microsoft Visual C++ 6.0 compiler, and these 15854values do not include any ACPI driver or OSPM code. The debug 15855version of the code includes the debug output trace mechanism and 15856has a much larger code and data size. Note that these values will 15857vary depending on the efficiency of the compiler and the compiler 15858options used during generation. 15859 15860 Previous Release 15861 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15862 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15863 Current Release: 15864 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15865 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15866 15867 158682) Linux 15869 15870S3 fixes (Ole Rohne) 15871 15872Update ACPI PHP driver with to use new acpi_walk_resource API 15873(Bjorn Helgaas) 15874 15875Add S4BIOS support (Pavel Machek) 15876 15877Map in entire table before performing checksum (John Stultz) 15878 15879Expand the mem= cmdline to allow the specification of reserved and 15880ACPI DATA blocks (Pavel Machek) 15881 15882Never use ACPI on VISWS 15883 15884Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15885 15886Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15887causing us to think that some systems support C2 when they really 15888don't. 15889 15890Do not count processor objects for non-present CPUs (Thanks to 15891Dominik Brodowski) 15892 15893 158943) iASL Compiler: 15895 15896Fixed a problem where ASL include files could not be found and 15897opened. 15898 15899Added support for the _PDC reserved name. 15900 15901 15902---------------------------------------- 1590322 January 2003. Summary of changes for version 20030122. 15904 15905 159061) ACPI CA Core Subsystem: 15907 15908Added a check for constructs of the form: Store (Local0, Local0) 15909where Local0 is not initialized. Apparently, some BIOS 15910programmers believe that this is a NOOP. Since this store doesn't 15911do anything anyway, the new prototype behavior will ignore this 15912error. This is a case where we can relax the strict checking in 15913the interpreter in the name of compatibility. 15914 15915 159162) Linux 15917 15918The AcpiSrc Source Conversion Utility has been released with the 15919Linux package for the first time. This is the utility that is 15920used to convert the ACPI CA base source code to the Linux version. 15921 15922(Both) Handle P_BLK lengths shorter than 6 more gracefully 15923 15924(Both) Move more headers to include/acpi, and delete an unused 15925header. 15926 15927(Both) Move drivers/acpi/include directory to include/acpi 15928 15929(Both) Boot functions don't use cmdline, so don't pass it around 15930 15931(Both) Remove include of unused header (Adrian Bunk) 15932 15933(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15934the 15935former now also includes the latter, acpiphp.h only needs the one, 15936now. 15937 15938(2.5) Make it possible to select method of bios restoring after S3 15939resume. [=> no more ugly ifdefs] (Pavel Machek) 15940 15941(2.5) Make proc write interfaces work (Pavel Machek) 15942 15943(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15944 15945(2.5) Break out ACPI Perf code into its own module, under cpufreq 15946(Dominik Brodowski) 15947 15948(2.4) S4BIOS support (Ducrot Bruno) 15949 15950(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15951Visinoni) 15952 15953 159543) iASL Compiler: 15955 15956Added support to disassemble SSDT and PSDTs. 15957 15958Implemented support to obtain SSDTs from the Windows registry if 15959available. 15960 15961 15962---------------------------------------- 1596309 January 2003. Summary of changes for version 20030109. 15964 159651) ACPI CA Core Subsystem: 15966 15967Changed the behavior of the internal Buffer-to-String conversion 15968function. The current ACPI specification states that the contents 15969of the buffer are "converted to a string of two-character 15970hexadecimal numbers, each separated by a space". Unfortunately, 15971this definition is not backwards compatible with existing ACPI 1.0 15972implementations (although the behavior was not defined in the ACPI 159731.0 specification). The new behavior simply copies data from the 15974buffer to the string until a null character is found or the end of 15975the buffer is reached. The new String object is always null 15976terminated. This problem was seen during the generation of _BIF 15977battery data where incorrect strings were returned for battery 15978type, etc. This will also require an errata to the ACPI 15979specification. 15980 15981Renamed all instances of NATIVE_UINT and NATIVE_INT to 15982ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15983 15984Copyright in all module headers (both Linux and non-Linux) has be 15985updated to 2003. 15986 15987Code and Data Size: Current core subsystem library sizes are shown 15988below. These are the code and data sizes for the acpica.lib 15989produced by the Microsoft Visual C++ 6.0 compiler, and these 15990values do not include any ACPI driver or OSPM code. The debug 15991version of the code includes the debug output trace mechanism and 15992has a much larger code and data size. Note that these values will 15993vary depending on the efficiency of the compiler and the compiler 15994options used during generation. 15995 15996 Previous Release 15997 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15998 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15999 Current Release: 16000 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16001 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16002 16003 160042) Linux 16005 16006Fixed an oops on module insertion/removal (Matthew Tippett) 16007 16008(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16009 16010(2.5) Replace pr_debug (Randy Dunlap) 16011 16012(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16013 16014(Both) Eliminate spawning of thread from timer callback, in favor 16015of schedule_work() 16016 16017(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16018 16019(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16020 16021(Both) Add missing statics to button.c (Pavel Machek) 16022 16023Several changes have been made to the source code translation 16024utility that generates the Linux Code in order to make the code 16025more "Linux-like": 16026 16027All typedefs on structs and unions have been removed in keeping 16028with the Linux coding style. 16029 16030Removed the non-Linux SourceSafe module revision number from each 16031module header. 16032 16033Completed major overhaul of symbols to be lowercase for linux. 16034Doubled the number of symbols that are lowercase. 16035 16036Fixed a problem where identifiers within procedure headers and 16037within quotes were not fully lower cased (they were left with a 16038starting capital.) 16039 16040Some C macros whose only purpose is to allow the generation of 16- 16041bit code are now completely removed in the Linux code, increasing 16042readability and maintainability. 16043 16044---------------------------------------- 16045 1604612 December 2002. Summary of changes for version 20021212. 16047 16048 160491) ACPI CA Core Subsystem: 16050 16051Fixed a problem where the creation of a zero-length AML Buffer 16052would cause a fault. 16053 16054Fixed a problem where a Buffer object that pointed to a static AML 16055buffer (in an ACPI table) could inadvertently be deleted, causing 16056memory corruption. 16057 16058Fixed a problem where a user buffer (passed in to the external 16059ACPI CA interfaces) could be overwritten if the buffer was too 16060small to complete the operation, causing memory corruption. 16061 16062Fixed a problem in the Buffer-to-String conversion code where a 16063string of length one was always returned, regardless of the size 16064of the input Buffer object. 16065 16066Removed the NATIVE_CHAR data type across the entire source due to 16067lack of need and lack of consistent use. 16068 16069Code and Data Size: Current core subsystem library sizes are shown 16070below. These are the code and data sizes for the acpica.lib 16071produced by the Microsoft Visual C++ 6.0 compiler, and these 16072values do not include any ACPI driver or OSPM code. The debug 16073version of the code includes the debug output trace mechanism and 16074has a much larger code and data size. Note that these values will 16075vary depending on the efficiency of the compiler and the compiler 16076options used during generation. 16077 16078 Previous Release 16079 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16080 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16081 Current Release: 16082 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16083 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16084 16085 16086---------------------------------------- 1608705 December 2002. Summary of changes for version 20021205. 16088 160891) ACPI CA Core Subsystem: 16090 16091Fixed a problem where a store to a String or Buffer object could 16092cause corruption of the DSDT if the object type being stored was 16093the same as the target object type and the length of the object 16094being stored was equal to or smaller than the original (existing) 16095target object. This was seen to cause corruption of battery _BIF 16096buffers if the _BIF method modified the buffer on the fly. 16097 16098Fixed a problem where an internal error was generated if a control 16099method invocation was used in an OperationRegion, Buffer, or 16100Package declaration. This was caused by the deferred parsing of 16101the control method and thus the deferred creation of the internal 16102method object. The solution to this problem was to create the 16103internal method object at the moment the method is encountered in 16104the first pass - so that subsequent references to the method will 16105able to obtain the required parameter count and thus properly 16106parse the method invocation. This problem presented itself as an 16107AE_AML_INTERNAL during the pass 1 parse phase during table load. 16108 16109Fixed a problem where the internal String object copy routine did 16110not always allocate sufficient memory for the target String object 16111and caused memory corruption. This problem was seen to cause 16112"Allocation already present in list!" errors as memory allocation 16113became corrupted. 16114 16115Implemented a new function for the evaluation of namespace objects 16116that allows the specification of the allowable return object 16117types. This simplifies a lot of code that checks for a return 16118object of one or more specific objects returned from the 16119evaluation (such as _STA, etc.) This may become and external 16120function if it would be useful to ACPI-related drivers. 16121 16122Completed another round of prefixing #defines with "ACPI_" for 16123clarity. 16124 16125Completed additional code restructuring to allow more modular 16126linking for iASL compiler and AcpiExec. Several files were split 16127creating new files. New files: nsparse.c dsinit.c evgpe.c 16128 16129Implemented an abort mechanism to terminate an executing control 16130method via the AML debugger. This feature is useful for debugging 16131control methods that depend (wait) for specific hardware 16132responses. 16133 16134Code and Data Size: Current core subsystem library sizes are shown 16135below. These are the code and data sizes for the acpica.lib 16136produced by the Microsoft Visual C++ 6.0 compiler, and these 16137values do not include any ACPI driver or OSPM code. The debug 16138version of the code includes the debug output trace mechanism and 16139has a much larger code and data size. Note that these values will 16140vary depending on the efficiency of the compiler and the compiler 16141options used during generation. 16142 16143 Previous Release 16144 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16145 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16146 Current Release: 16147 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16148 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16149 16150 161512) iASL Compiler/Disassembler 16152 16153Fixed a compiler code generation problem for "Interrupt" Resource 16154Descriptors. If specified in the ASL, the optional "Resource 16155Source Index" and "Resource Source" fields were not inserted into 16156the correct location within the AML resource descriptor, creating 16157an invalid descriptor. 16158 16159Fixed a disassembler problem for "Interrupt" resource descriptors. 16160The optional "Resource Source Index" and "Resource Source" fields 16161were ignored. 16162 16163 16164---------------------------------------- 1616522 November 2002. Summary of changes for version 20021122. 16166 16167 161681) ACPI CA Core Subsystem: 16169 16170Fixed a reported problem where an object stored to a Method Local 16171or Arg was not copied to a new object during the store - the 16172object pointer was simply copied to the Local/Arg. This caused 16173all subsequent operations on the Local/Arg to also affect the 16174original source of the store operation. 16175 16176Fixed a problem where a store operation to a Method Local or Arg 16177was not completed properly if the Local/Arg contained a reference 16178(from RefOf) to a named field. The general-purpose store-to- 16179namespace-node code is now used so that this case is handled 16180automatically. 16181 16182Fixed a problem where the internal object copy routine would cause 16183a protection fault if the object being copied was a Package and 16184contained either 1) a NULL package element or 2) a nested sub- 16185package. 16186 16187Fixed a problem with the GPE initialization that resulted from an 16188ambiguity in the ACPI specification. One section of the 16189specification states that both the address and length of the GPE 16190block must be zero if the block is not supported. Another section 16191implies that only the address need be zero if the block is not 16192supported. The code has been changed so that both the address and 16193the length must be non-zero to indicate a valid GPE block (i.e., 16194if either the address or the length is zero, the GPE block is 16195invalid.) 16196 16197Code and Data Size: Current core subsystem library sizes are shown 16198below. These are the code and data sizes for the acpica.lib 16199produced by the Microsoft Visual C++ 6.0 compiler, and these 16200values do not include any ACPI driver or OSPM code. The debug 16201version of the code includes the debug output trace mechanism and 16202has a much larger code and data size. Note that these values will 16203vary depending on the efficiency of the compiler and the compiler 16204options used during generation. 16205 16206 Previous Release 16207 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16208 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16209 Current Release: 16210 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16211 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16212 16213 162142) Linux 16215 16216Cleaned up EC driver. Exported an external EC read/write 16217interface. By going through this, other drivers (most notably 16218sonypi) will be able to serialize access to the EC. 16219 16220 162213) iASL Compiler/Disassembler 16222 16223Implemented support to optionally generate include files for both 16224ASM and C (the -i switch). This simplifies BIOS development by 16225automatically creating include files that contain external 16226declarations for the symbols that are created within the 16227 16228(optionally generated) ASM and C AML source files. 16229 16230 16231---------------------------------------- 1623215 November 2002. Summary of changes for version 20021115. 16233 162341) ACPI CA Core Subsystem: 16235 16236Fixed a memory leak problem where an error during resolution of 16237 16238method arguments during a method invocation from another method 16239failed to cleanup properly by deleting all successfully resolved 16240argument objects. 16241 16242Fixed a problem where the target of the Index() operator was not 16243correctly constructed if the source object was a package. This 16244problem has not been detected because the use of a target operand 16245with Index() is very rare. 16246 16247Fixed a problem with the Index() operator where an attempt was 16248made to delete the operand objects twice. 16249 16250Fixed a problem where an attempt was made to delete an operand 16251twice during execution of the CondRefOf() operator if the target 16252did not exist. 16253 16254Implemented the first of perhaps several internal create object 16255functions that create and initialize a specific object type. This 16256consolidates duplicated code wherever the object is created, thus 16257shrinking the size of the subsystem. 16258 16259Implemented improved debug/error messages for errors that occur 16260during nested method invocations. All executing method pathnames 16261are displayed (with the error) as the call stack is unwound - thus 16262simplifying debug. 16263 16264Fixed a problem introduced in the 10/02 release that caused 16265premature deletion of a buffer object if a buffer was used as an 16266ASL operand where an integer operand is required (Thus causing an 16267implicit object conversion from Buffer to Integer.) The change in 16268the 10/02 release was attempting to fix a memory leak (albeit 16269incorrectly.) 16270 16271Code and Data Size: Current core subsystem library sizes are shown 16272below. These are the code and data sizes for the acpica.lib 16273produced by the Microsoft Visual C++ 6.0 compiler, and these 16274values do not include any ACPI driver or OSPM code. The debug 16275version of the code includes the debug output trace mechanism and 16276has a much larger code and data size. Note that these values will 16277vary depending on the efficiency of the compiler and the compiler 16278options used during generation. 16279 16280 Previous Release 16281 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16282 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16283 Current Release: 16284 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16285 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16286 16287 162882) Linux 16289 16290Changed the implementation of the ACPI semaphores to use down() 16291instead of down_interruptable(). It is important that the 16292execution of ACPI control methods not be interrupted by signals. 16293Methods must run to completion, or the system may be left in an 16294unknown/unstable state. 16295 16296Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16297(Shawn Starr) 16298 16299 163003) iASL Compiler/Disassembler 16301 16302 16303Changed the default location of output files. All output files 16304are now placed in the current directory by default instead of in 16305the directory of the source file. This change may affect some 16306existing makefiles, but it brings the behavior of the compiler in 16307line with other similar tools. The location of the output files 16308can be overridden with the -p command line switch. 16309 16310 16311---------------------------------------- 1631211 November 2002. Summary of changes for version 20021111. 16313 16314 163150) ACPI Specification 2.0B is released and is now available at: 16316http://www.acpi.info/index.html 16317 16318 163191) ACPI CA Core Subsystem: 16320 16321Implemented support for the ACPI 2.0 SMBus Operation Regions. 16322This includes the early detection and handoff of the request to 16323the SMBus region handler (avoiding all of the complex field 16324support code), and support for the bidirectional return packet 16325from an SMBus write operation. This paves the way for the 16326development of SMBus drivers in each host operating system. 16327 16328Fixed a problem where the semaphore WAIT_FOREVER constant was 16329defined as 32 bits, but must be 16 bits according to the ACPI 16330specification. This had the side effect of causing ASL 16331Mutex/Event timeouts even though the ASL code requested a wait 16332forever. Changed all internal references to the ACPI timeout 16333parameter to 16 bits to prevent future problems. Changed the name 16334of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16335 16336Code and Data Size: Current core subsystem library sizes are shown 16337below. These are the code and data sizes for the acpica.lib 16338produced by the Microsoft Visual C++ 6.0 compiler, and these 16339values do not include any ACPI driver or OSPM code. The debug 16340version of the code includes the debug output trace mechanism and 16341has a much larger code and data size. Note that these values will 16342vary depending on the efficiency of the compiler and the compiler 16343options used during generation. 16344 16345 Previous Release 16346 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16347 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16348 Current Release: 16349 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16350 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16351 16352 163532) Linux 16354 16355Module loading/unloading fixes (John Cagle) 16356 16357 163583) iASL Compiler/Disassembler 16359 16360Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16361 16362Implemented support for the disassembly of all SMBus protocol 16363keywords (SMBQuick, SMBWord, etc.) 16364 16365---------------------------------------- 1636601 November 2002. Summary of changes for version 20021101. 16367 16368 163691) ACPI CA Core Subsystem: 16370 16371Fixed a problem where platforms that have a GPE1 block but no GPE0 16372block were not handled correctly. This resulted in a "GPE 16373overlap" error message. GPE0 is no longer required. 16374 16375Removed code added in the previous release that inserted nodes 16376into the namespace in alphabetical order. This caused some side- 16377effects on various machines. The root cause of the problem is 16378still under investigation since in theory, the internal ordering 16379of the namespace nodes should not matter. 16380 16381 16382Enhanced error reporting for the case where a named object is not 16383found during control method execution. The full ACPI namepath 16384(name reference) of the object that was not found is displayed in 16385this case. 16386 16387Note: as a result of the overhaul of the namespace object types in 16388the previous release, the namespace nodes for the predefined 16389scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16390instead of ACPI_TYPE_ANY. This simplifies the namespace 16391management code but may affect code that walks the namespace tree 16392looking for specific object types. 16393 16394Code and Data Size: Current core subsystem library sizes are shown 16395below. These are the code and data sizes for the acpica.lib 16396produced by the Microsoft Visual C++ 6.0 compiler, and these 16397values do not include any ACPI driver or OSPM code. The debug 16398version of the code includes the debug output trace mechanism and 16399has a much larger code and data size. Note that these values will 16400vary depending on the efficiency of the compiler and the compiler 16401options used during generation. 16402 16403 Previous Release 16404 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16405 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16406 Current Release: 16407 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16408 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16409 16410 164112) Linux 16412 16413Fixed a problem introduced in the previous release where the 16414Processor and Thermal objects were not recognized and installed in 16415/proc. This was related to the scope type change described above. 16416 16417 164183) iASL Compiler/Disassembler 16419 16420Implemented the -g option to get all of the required ACPI tables 16421from the registry and save them to files (Windows version of the 16422compiler only.) The required tables are the FADT, FACS, and DSDT. 16423 16424Added ACPI table checksum validation during table disassembly in 16425order to catch corrupted tables. 16426 16427 16428---------------------------------------- 1642922 October 2002. Summary of changes for version 20021022. 16430 164311) ACPI CA Core Subsystem: 16432 16433Implemented a restriction on the Scope operator that the target 16434must already exist in the namespace at the time the operator is 16435encountered (during table load or method execution). In other 16436words, forward references are not allowed and Scope() cannot 16437create a new object. This changes the previous behavior where the 16438interpreter would create the name if not found. This new behavior 16439correctly enables the search-to-root algorithm during namespace 16440lookup of the target name. Because of this upsearch, this fixes 16441the known Compaq _SB_.OKEC problem and makes both the AML 16442interpreter and iASL compiler compatible with other ACPI 16443implementations. 16444 16445Completed a major overhaul of the internal ACPI object types for 16446the ACPI Namespace and the associated operand objects. Many of 16447these types had become obsolete with the introduction of the two- 16448pass namespace load. This cleanup simplifies the code and makes 16449the entire namespace load mechanism much clearer and easier to 16450understand. 16451 16452Improved debug output for tracking scope opening/closing to help 16453diagnose scoping issues. The old scope name as well as the new 16454scope name are displayed. Also improved error messages for 16455problems with ASL Mutex objects and error messages for GPE 16456problems. 16457 16458Cleaned up the namespace dump code, removed obsolete code. 16459 16460All string output (for all namespace/object dumps) now uses the 16461common ACPI string output procedure which handles escapes properly 16462and does not emit non-printable characters. 16463 16464Fixed some issues with constants in the 64-bit version of the 16465local C library (utclib.c) 16466 16467 164682) Linux 16469 16470EC Driver: No longer attempts to acquire the Global Lock at 16471interrupt level. 16472 16473 164743) iASL Compiler/Disassembler 16475 16476Implemented ACPI 2.0B grammar change that disallows all Type 1 and 164772 opcodes outside of a control method. This means that the 16478"executable" operators (versus the "namespace" operators) cannot 16479be used at the table level; they can only be used within a control 16480method. 16481 16482Implemented the restriction on the Scope() operator where the 16483target must already exist in the namespace at the time the 16484operator is encountered (during ASL compilation). In other words, 16485forward references are not allowed and Scope() cannot create a new 16486object. This makes the iASL compiler compatible with other ACPI 16487implementations and makes the Scope() implementation adhere to the 16488ACPI specification. 16489 16490Fixed a problem where namepath optimization for the Alias operator 16491was optimizing the wrong path (of the two namepaths.) This caused 16492a "Missing alias link" error message. 16493 16494Fixed a problem where an "unknown reserved name" warning could be 16495incorrectly generated for names like "_SB" when the trailing 16496underscore is not used in the original ASL. 16497 16498Fixed a problem where the reserved name check did not handle 16499NamePaths with multiple NameSegs correctly. The first nameseg of 16500the NamePath was examined instead of the last NameSeg. 16501 16502 16503---------------------------------------- 16504 1650502 October 2002. Summary of changes for this release. 16506 16507 165081) ACPI CA Core Subsystem version 20021002: 16509 16510Fixed a problem where a store/copy of a string to an existing 16511string did not always set the string length properly in the String 16512object. 16513 16514Fixed a reported problem with the ToString operator where the 16515behavior was identical to the ToHexString operator instead of just 16516simply converting a raw buffer to a string data type. 16517 16518Fixed a problem where CopyObject and the other "explicit" 16519conversion operators were not updating the internal namespace node 16520type as part of the store operation. 16521 16522Fixed a memory leak during implicit source operand conversion 16523where the original object was not deleted if it was converted to a 16524new object of a different type. 16525 16526Enhanced error messages for all problems associated with namespace 16527lookups. Common procedure generates and prints the lookup name as 16528well as the formatted status. 16529 16530Completed implementation of a new design for the Alias support 16531within the namespace. The existing design did not handle the case 16532where a new object was assigned to one of the two names due to the 16533use of an explicit conversion operator, resulting in the two names 16534pointing to two different objects. The new design simply points 16535the Alias name to the original name node - not to the object. 16536This results in a level of indirection that must be handled in the 16537name resolution mechanism. 16538 16539Code and Data Size: Current core subsystem library sizes are shown 16540below. These are the code and data sizes for the acpica.lib 16541produced by the Microsoft Visual C++ 6.0 compiler, and these 16542values do not include any ACPI driver or OSPM code. The debug 16543version of the code includes the debug output trace mechanism and 16544has a larger code and data size. Note that these values will vary 16545depending on the efficiency of the compiler and the compiler 16546options used during generation. 16547 16548 Previous Release 16549 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16550 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16551 Current Release: 16552 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16553 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16554 16555 165562) Linux 16557 16558Initialize thermal driver's timer before it is used. (Knut 16559Neumann) 16560 16561Allow handling negative celsius values. (Kochi Takayoshi) 16562 16563Fix thermal management and make trip points. R/W (Pavel Machek) 16564 16565Fix /proc/acpi/sleep. (P. Christeas) 16566 16567IA64 fixes. (David Mosberger) 16568 16569Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 16570 16571Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 16572Brodowski) 16573 16574 165753) iASL Compiler/Disassembler 16576 16577Clarified some warning/error messages. 16578 16579 16580---------------------------------------- 1658118 September 2002. Summary of changes for this release. 16582 16583 165841) ACPI CA Core Subsystem version 20020918: 16585 16586Fixed a reported problem with reference chaining (via the Index() 16587and RefOf() operators) in the ObjectType() and SizeOf() operators. 16588The definition of these operators includes the dereferencing of 16589all chained references to return information on the base object. 16590 16591Fixed a problem with stores to indexed package elements - the 16592existing code would not complete the store if an "implicit 16593conversion" was not performed. In other words, if the existing 16594object (package element) was to be replaced completely, the code 16595didn't handle this case. 16596 16597Relaxed typechecking on the ASL "Scope" operator to allow the 16598target name to refer to an object of type Integer, String, or 16599Buffer, in addition to the scoping object types (Device, 16600predefined Scopes, Processor, PowerResource, and ThermalZone.) 16601This allows existing AML code that has workarounds for a bug in 16602Windows to function properly. A warning is issued, however. This 16603affects both the AML interpreter and the iASL compiler. Below is 16604an example of this type of ASL code: 16605 16606 Name(DEB,0x00) 16607 Scope(DEB) 16608 { 16609 16610Fixed some reported problems with 64-bit integer support in the 16611local implementation of C library functions (clib.c) 16612 16613 166142) Linux 16615 16616Use ACPI fix map region instead of IOAPIC region, since it is 16617undefined in non-SMP. 16618 16619Ensure that the SCI has the proper polarity and trigger, even on 16620systems that do not have an interrupt override entry in the MADT. 16621 166222.5 big driver reorganization (Pat Mochel) 16623 16624Use early table mapping code from acpitable.c (Andi Kleen) 16625 16626New blacklist entries (Andi Kleen) 16627 16628Blacklist improvements. Split blacklist code out into a separate 16629file. Move checking the blacklist to very early. Previously, we 16630would use ACPI tables, and then halfway through init, check the 16631blacklist -- too late. Now, it's early enough to completely fall- 16632back to non-ACPI. 16633 16634 166353) iASL Compiler/Disassembler version 20020918: 16636 16637Fixed a problem where the typechecking code didn't know that an 16638alias could point to a method. In other words, aliases were not 16639being dereferenced during typechecking. 16640 16641 16642---------------------------------------- 1664329 August 2002. Summary of changes for this release. 16644 166451) ACPI CA Core Subsystem Version 20020829: 16646 16647If the target of a Scope() operator already exists, it must be an 16648object type that actually opens a scope -- such as a Device, 16649Method, Scope, etc. This is a fatal runtime error. Similar error 16650check has been added to the iASL compiler also. 16651 16652Tightened up the namespace load to disallow multiple names in the 16653same scope. This previously was allowed if both objects were of 16654the same type. (i.e., a lookup was the same as entering a new 16655name). 16656 16657 166582) Linux 16659 16660Ensure that the ACPI interrupt has the proper trigger and 16661polarity. 16662 16663local_irq_disable is extraneous. (Matthew Wilcox) 16664 16665Make "acpi=off" actually do what it says, and not use the ACPI 16666interpreter *or* the tables. 16667 16668Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16669Takayoshi) 16670 16671 166723) iASL Compiler/Disassembler Version 20020829: 16673 16674Implemented namepath optimization for name declarations. For 16675example, a declaration like "Method (\_SB_.ABCD)" would get 16676optimized to "Method (ABCD)" if the declaration is within the 16677\_SB_ scope. This optimization is in addition to the named 16678reference path optimization first released in the previous 16679version. This would seem to complete all possible optimizations 16680for namepaths within the ASL/AML. 16681 16682If the target of a Scope() operator already exists, it must be an 16683object type that actually opens a scope -- such as a Device, 16684Method, Scope, etc. 16685 16686Implemented a check and warning for unreachable code in the same 16687block below a Return() statement. 16688 16689Fixed a problem where the listing file was not generated if the 16690compiler aborted if the maximum error count was exceeded (200). 16691 16692Fixed a problem where the typechecking of method return values was 16693broken. This includes the check for a return value when the 16694method is invoked as a TermArg (a return value is expected.) 16695 16696Fixed a reported problem where EOF conditions during a quoted 16697string or comment caused a fault. 16698 16699 16700---------------------------------------- 1670115 August 2002. Summary of changes for this release. 16702 167031) ACPI CA Core Subsystem Version 20020815: 16704 16705Fixed a reported problem where a Store to a method argument that 16706contains a reference did not perform the indirect store correctly. 16707This problem was created during the conversion to the new 16708reference object model - the indirect store to a method argument 16709code was not updated to reflect the new model. 16710 16711Reworked the ACPI mode change code to better conform to ACPI 2.0, 16712handle corner cases, and improve code legibility (Kochi Takayoshi) 16713 16714Fixed a problem with the pathname parsing for the carat (^) 16715prefix. The heavy use of the carat operator by the new namepath 16716optimization in the iASL compiler uncovered a problem with the AML 16717interpreter handling of this prefix. In the case where one or 16718more carats precede a single nameseg, the nameseg was treated as 16719standalone and the search rule (to root) was inadvertently 16720applied. This could cause both the iASL compiler and the 16721interpreter to find the wrong object or to miss the error that 16722should occur if the object does not exist at that exact pathname. 16723 16724Found and fixed the problem where the HP Pavilion DSDT would not 16725load. This was a relatively minor tweak to the table loading code 16726(a problem caused by the unexpected encounter with a method 16727invocation not within a control method), but it does not solve the 16728overall issue of the execution of AML code at the table level. 16729This investigation is still ongoing. 16730 16731Code and Data Size: Current core subsystem library sizes are shown 16732below. These are the code and data sizes for the acpica.lib 16733produced by the Microsoft Visual C++ 6.0 compiler, and these 16734values do not include any ACPI driver or OSPM code. The debug 16735version of the code includes the debug output trace mechanism and 16736has a larger code and data size. Note that these values will vary 16737depending on the efficiency of the compiler and the compiler 16738options used during generation. 16739 16740 Previous Release 16741 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16742 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16743 Current Release: 16744 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16745 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16746 16747 167482) Linux 16749 16750Remove redundant slab.h include (Brad Hards) 16751 16752Fix several bugs in thermal.c (Herbert Nachtnebel) 16753 16754Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16755 16756Change acpi_system_suspend to use updated irq functions (Pavel 16757Machek) 16758 16759Export acpi_get_firmware_table (Matthew Wilcox) 16760 16761Use proper root proc entry for ACPI (Kochi Takayoshi) 16762 16763Fix early-boot table parsing (Bjorn Helgaas) 16764 16765 167663) iASL Compiler/Disassembler 16767 16768Reworked the compiler options to make them more consistent and to 16769use two-letter options where appropriate. We were running out of 16770sensible letters. This may break some makefiles, so check the 16771current options list by invoking the compiler with no parameters. 16772 16773Completed the design and implementation of the ASL namepath 16774optimization option for the compiler. This option optimizes all 16775references to named objects to the shortest possible path. The 16776first attempt tries to utilize a single nameseg (4 characters) and 16777the "search-to-root" algorithm used by the interpreter. If that 16778cannot be used (because either the name is not in the search path 16779or there is a conflict with another object with the same name), 16780the pathname is optimized using the carat prefix (usually a 16781shorter string than specifying the entire path from the root.) 16782 16783Implemented support to obtain the DSDT from the Windows registry 16784(when the disassembly option is specified with no input file). 16785Added this code as the implementation for AcpiOsTableOverride in 16786the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16787utility) to scan memory for the DSDT to the AcpiOsTableOverride 16788function in the DOS OSL to make the disassembler truly OS 16789independent. 16790 16791Implemented a new option to disassemble and compile in one step. 16792When used without an input filename, this option will grab the 16793DSDT from the local machine, disassemble it, and compile it in one 16794step. 16795 16796Added a warning message for invalid escapes (a backslash followed 16797by any character other than the allowable escapes). This catches 16798the quoted string error "\_SB_" (which should be "\\_SB_" ). 16799 16800Also, there are numerous instances in the ACPI specification where 16801this error occurs. 16802 16803Added a compiler option to disable all optimizations. This is 16804basically the "compatibility mode" because by using this option, 16805the AML code will come out exactly the same as other ASL 16806compilers. 16807 16808Added error messages for incorrectly ordered dependent resource 16809functions. This includes: missing EndDependentFn macro at end of 16810dependent resource list, nested dependent function macros (both 16811start and end), and missing StartDependentFn macro. These are 16812common errors that should be caught at compile time. 16813 16814Implemented _OSI support for the disassembler and compiler. _OSI 16815must be included in the namespace for proper disassembly (because 16816the disassembler must know the number of arguments.) 16817 16818Added an "optimization" message type that is optional (off by 16819default). This message is used for all optimizations - including 16820constant folding, integer optimization, and namepath optimization. 16821 16822---------------------------------------- 1682325 July 2002. Summary of changes for this release. 16824 16825 168261) ACPI CA Core Subsystem Version 20020725: 16827 16828The AML Disassembler has been enhanced to produce compilable ASL 16829code and has been integrated into the iASL compiler (see below) as 16830well as the single-step disassembly for the AML debugger and the 16831disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16832resource templates and macros are fully supported. The 16833disassembler has been tested on over 30 different AML files, 16834producing identical AML when the resulting disassembled ASL file 16835is recompiled with the same ASL compiler. 16836 16837Modified the Resource Manager to allow zero interrupts and zero 16838dma channels during the GetCurrentResources call. This was 16839causing problems on some platforms. 16840 16841Added the AcpiOsRedirectOutput interface to the OSL to simplify 16842output redirection for the AcpiOsPrintf and AcpiOsVprintf 16843interfaces. 16844 16845Code and Data Size: Current core subsystem library sizes are shown 16846below. These are the code and data sizes for the acpica.lib 16847produced by the Microsoft Visual C++ 6.0 compiler, and these 16848values do not include any ACPI driver or OSPM code. The debug 16849version of the code includes the debug output trace mechanism and 16850has a larger code and data size. Note that these values will vary 16851depending on the efficiency of the compiler and the compiler 16852options used during generation. 16853 16854 Previous Release 16855 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16856 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16857 Current Release: 16858 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16859 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16860 16861 168622) Linux 16863 16864Fixed a panic in the EC driver (Dominik Brodowski) 16865 16866Implemented checksum of the R/XSDT itself during Linux table scan 16867(Richard Schaal) 16868 16869 168703) iASL compiler 16871 16872The AML disassembler is integrated into the compiler. The "-d" 16873option invokes the disassembler to completely disassemble an 16874input AML file, producing as output a text ASL file with the 16875extension ".dsl" (to avoid name collisions with existing .asl 16876source files.) A future enhancement will allow the disassembler 16877to obtain the BIOS DSDT from the registry under Windows. 16878 16879Fixed a problem with the VendorShort and VendorLong resource 16880descriptors where an invalid AML sequence was created. 16881 16882Implemented a fix for BufferData term in the ASL parser. It was 16883inadvertently defined twice, allowing invalid syntax to pass and 16884causing reduction conflicts. 16885 16886Fixed a problem where the Ones opcode could get converted to a 16887value of zero if "Ones" was used where a byte, word or dword value 16888was expected. The 64-bit value is now truncated to the correct 16889size with the correct value. 16890 16891 16892 16893---------------------------------------- 1689402 July 2002. Summary of changes for this release. 16895 16896 168971) ACPI CA Core Subsystem Version 20020702: 16898 16899The Table Manager code has been restructured to add several new 16900features. Tables that are not required by the core subsystem 16901(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16902validated in any way and are returned from AcpiGetFirmwareTable if 16903requested. The AcpiOsTableOverride interface is now called for 16904each table that is loaded by the subsystem in order to allow the 16905host to override any table it chooses. Previously, only the DSDT 16906could be overridden. Added one new files, tbrsdt.c and 16907tbgetall.c. 16908 16909Fixed a problem with the conversion of internal package objects to 16910external objects (when a package is returned from a control 16911method.) The return buffer length was set to zero instead of the 16912proper length of the package object. 16913 16914Fixed a reported problem with the use of the RefOf and DeRefOf 16915operators when passing reference arguments to control methods. A 16916new type of Reference object is used internally for references 16917produced by the RefOf operator. 16918 16919Added additional error messages in the Resource Manager to explain 16920AE_BAD_DATA errors when they occur during resource parsing. 16921 16922Split the AcpiEnableSubsystem into two primitives to enable a 16923finer granularity initialization sequence. These two calls should 16924be called in this order: AcpiEnableSubsystem (flags), 16925AcpiInitializeObjects (flags). The flags parameter remains the 16926same. 16927 16928 169292) Linux 16930 16931Updated the ACPI utilities module to understand the new style of 16932fully resolved package objects that are now returned from the core 16933subsystem. This eliminates errors of the form: 16934 16935 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16936 acpi_utils-0430 [145] acpi_evaluate_reference: 16937 Invalid element in package (not a device reference) 16938 16939The method evaluation utility uses the new buffer allocation 16940scheme instead of calling AcpiEvaluate Object twice. 16941 16942Added support for ECDT. This allows the use of the Embedded 16943 16944Controller before the namespace has been fully initialized, which 16945is necessary for ACPI 2.0 support, and for some laptops to 16946initialize properly. (Laptops using ECDT are still rare, so only 16947limited testing was performed of the added functionality.) 16948 16949Fixed memory leaks in the EC driver. 16950 16951Eliminated a brittle code structure in acpi_bus_init(). 16952 16953Eliminated the acpi_evaluate() helper function in utils.c. It is 16954no longer needed since acpi_evaluate_object can optionally 16955allocate memory for the return object. 16956 16957Implemented fix for keyboard hang when getting battery readings on 16958some systems (Stephen White) 16959 16960PCI IRQ routing update (Dominik Brodowski) 16961 16962Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16963support 16964 16965---------------------------------------- 1696611 June 2002. Summary of changes for this release. 16967 16968 169691) ACPI CA Core Subsystem Version 20020611: 16970 16971Fixed a reported problem where constants such as Zero and One 16972appearing within _PRT packages were not handled correctly within 16973the resource manager code. Originally reported against the ASL 16974compiler because the code generator now optimizes integers to 16975their minimal AML representation (i.e. AML constants if possible.) 16976The _PRT code now handles all AML constant opcodes correctly 16977(Zero, One, Ones, Revision). 16978 16979Fixed a problem with the Concatenate operator in the AML 16980interpreter where a buffer result object was incorrectly marked as 16981not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16982 16983All package sub-objects are now fully resolved before they are 16984returned from the external ACPI interfaces. This means that name 16985strings are resolved to object handles, and constant operators 16986(Zero, One, Ones, Revision) are resolved to Integers. 16987 16988Implemented immediate resolution of the AML Constant opcodes 16989(Zero, One, Ones, Revision) to Integer objects upon detection 16990within the AML stream. This has simplified and reduced the 16991generated code size of the subsystem by eliminating about 10 16992switch statements for these constants (which previously were 16993contained in Reference objects.) The complicating issues are that 16994the Zero opcode is used as a "placeholder" for unspecified 16995optional target operands and stores to constants are defined to be 16996no-ops. 16997 16998Code and Data Size: Current core subsystem library sizes are shown 16999below. These are the code and data sizes for the acpica.lib 17000produced by the Microsoft Visual C++ 6.0 compiler, and these 17001values do not include any ACPI driver or OSPM code. The debug 17002version of the code includes the debug output trace mechanism and 17003has a larger code and data size. Note that these values will vary 17004depending on the efficiency of the compiler and the compiler 17005options used during generation. 17006 17007 Previous Release 17008 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17009 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17010 Current Release: 17011 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17012 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17013 17014 170152) Linux 17016 17017 17018Added preliminary support for obtaining _TRA data for PCI root 17019bridges (Bjorn Helgaas). 17020 17021 170223) iASL Compiler Version X2046: 17023 17024Fixed a problem where the "_DDN" reserved name was defined to be a 17025control method with one argument. There are no arguments, and 17026_DDN does not have to be a control method. 17027 17028Fixed a problem with the Linux version of the compiler where the 17029source lines printed with error messages were the wrong lines. 17030This turned out to be the "LF versus CR/LF" difference between 17031Windows and Unix. This appears to be the longstanding issue 17032concerning listing output and error messages. 17033 17034Fixed a problem with the Linux version of compiler where opcode 17035names within error messages were wrong. This was caused by a 17036slight difference in the output of the Flex tool on Linux versus 17037Windows. 17038 17039Fixed a problem with the Linux compiler where the hex output files 17040contained some garbage data caused by an internal buffer overrun. 17041 17042 17043---------------------------------------- 1704417 May 2002. Summary of changes for this release. 17045 17046 170471) ACPI CA Core Subsystem Version 20020517: 17048 17049Implemented a workaround to an BIOS bug discovered on the HP 17050OmniBook where the FADT revision number and the table size are 17051inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17052behavior is to fallback to using only the ACPI 1.0 fields of the 17053FADT if the table is too small to be a ACPI 2.0 table as claimed 17054by the revision number. Although this is a BIOS bug, this is a 17055case where the workaround is simple enough and with no side 17056effects, so it seemed prudent to add it. A warning message is 17057issued, however. 17058 17059Implemented minimum size checks for the fixed-length ACPI tables - 17060- the FADT and FACS, as well as consistency checks between the 17061revision number and the table size. 17062 17063Fixed a reported problem in the table override support where the 17064new table pointer was incorrectly treated as a physical address 17065instead of a logical address. 17066 17067Eliminated the use of the AE_AML_ERROR exception and replaced it 17068with more descriptive codes. 17069 17070Fixed a problem where an exception would occur if an ASL Field was 17071defined with no named Field Units underneath it (used by some 17072index fields). 17073 17074Code and Data Size: Current core subsystem library sizes are shown 17075below. These are the code and data sizes for the acpica.lib 17076produced by the Microsoft Visual C++ 6.0 compiler, and these 17077values do not include any ACPI driver or OSPM code. The debug 17078version of the code includes the debug output trace mechanism and 17079has a larger code and data size. Note that these values will vary 17080depending on the efficiency of the compiler and the compiler 17081options used during generation. 17082 17083 Previous Release 17084 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17085 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17086 Current Release: 17087 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17088 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17089 17090 17091 170922) Linux 17093 17094Much work done on ACPI init (MADT and PCI IRQ routing support). 17095(Paul D. and Dominik Brodowski) 17096 17097Fix PCI IRQ-related panic on boot (Sam Revitch) 17098 17099Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17100 17101Fix "MHz" typo (Dominik Brodowski) 17102 17103Fix RTC year 2000 issue (Dominik Brodowski) 17104 17105Preclude multiple button proc entries (Eric Brunet) 17106 17107Moved arch-specific code out of include/platform/aclinux.h 17108 171093) iASL Compiler Version X2044: 17110 17111Implemented error checking for the string used in the EISAID macro 17112(Usually used in the definition of the _HID object.) The code now 17113strictly enforces the PnP format - exactly 7 characters, 3 17114uppercase letters and 4 hex digits. 17115 17116If a raw string is used in the definition of the _HID object 17117(instead of the EISAID macro), the string must contain all 17118alphanumeric characters (e.g., "*PNP0011" is not allowed because 17119of the asterisk.) 17120 17121Implemented checking for invalid use of ACPI reserved names for 17122most of the name creation operators (Name, Device, Event, Mutex, 17123OperationRegion, PowerResource, Processor, and ThermalZone.) 17124Previously, this check was only performed for control methods. 17125 17126Implemented an additional check on the Name operator to emit an 17127error if a reserved name that must be implemented in ASL as a 17128control method is used. We know that a reserved name must be a 17129method if it is defined with input arguments. 17130 17131The warning emitted when a namespace object reference is not found 17132during the cross reference phase has been changed into an error. 17133The "External" directive should be used for names defined in other 17134modules. 17135 17136 171374) Tools and Utilities 17138 17139The 16-bit tools (adump16 and aexec16) have been regenerated and 17140tested. 17141 17142Fixed a problem with the output of both acpidump and adump16 where 17143the indentation of closing parentheses and brackets was not 17144 17145aligned properly with the parent block. 17146 17147 17148---------------------------------------- 1714903 May 2002. Summary of changes for this release. 17150 17151 171521) ACPI CA Core Subsystem Version 20020503: 17153 17154Added support a new OSL interface that allows the host operating 17155 17156system software to override the DSDT found in the firmware - 17157AcpiOsTableOverride. With this interface, the OSL can examine the 17158version of the firmware DSDT and replace it with a different one 17159if desired. 17160 17161Added new external interfaces for accessing ACPI registers from 17162device drivers and other system software - AcpiGetRegister and 17163AcpiSetRegister. This was simply an externalization of the 17164existing AcpiHwBitRegister interfaces. 17165 17166Fixed a regression introduced in the previous build where the 17167ASL/AML CreateField operator always returned an error, 17168"destination must be a NS Node". 17169 17170Extended the maximum time (before failure) to successfully enable 17171ACPI mode to 3 seconds. 17172 17173Code and Data Size: Current core subsystem library sizes are shown 17174below. These are the code and data sizes for the acpica.lib 17175produced by the Microsoft Visual C++ 6.0 compiler, and these 17176values do not include any ACPI driver or OSPM code. The debug 17177version of the code includes the debug output trace mechanism and 17178has a larger code and data size. Note that these values will vary 17179depending on the efficiency of the compiler and the compiler 17180options used during generation. 17181 17182 Previous Release 17183 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17184 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17185 Current Release: 17186 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17187 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17188 17189 171902) Linux 17191 17192Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17193free. While 3 out of 4 of our in-house systems work fine, the last 17194one still hangs when testing the LAPIC timer. 17195 17196Renamed many files in 2.5 kernel release to omit "acpi_" from the 17197name. 17198 17199Added warning on boot for Presario 711FR. 17200 17201Sleep improvements (Pavel Machek) 17202 17203ACPI can now be built without CONFIG_PCI enabled. 17204 17205IA64: Fixed memory map functions (JI Lee) 17206 17207 172083) iASL Compiler Version X2043: 17209 17210Added support to allow the compiler to be integrated into the MS 17211VC++ development environment for one-button compilation of single 17212files or entire projects -- with error-to-source-line mapping. 17213 17214Implemented support for compile-time constant folding for the 17215Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17216specification. This allows the ASL writer to use expressions 17217instead of Integer/Buffer/String constants in terms that must 17218evaluate to constants at compile time and will also simplify the 17219emitted AML in any such sub-expressions that can be folded 17220(evaluated at compile-time.) This increases the size of the 17221compiler significantly because a portion of the ACPI CA AML 17222interpreter is included within the compiler in order to pre- 17223evaluate constant expressions. 17224 17225 17226Fixed a problem with the "Unicode" ASL macro that caused the 17227compiler to fault. (This macro is used in conjunction with the 17228_STR reserved name.) 17229 17230Implemented an AML opcode optimization to use the Zero, One, and 17231Ones opcodes where possible to further reduce the size of integer 17232constants and thus reduce the overall size of the generated AML 17233code. 17234 17235Implemented error checking for new reserved terms for ACPI version 172362.0A. 17237 17238Implemented the -qr option to display the current list of ACPI 17239reserved names known to the compiler. 17240 17241Implemented the -qc option to display the current list of ASL 17242operators that are allowed within constant expressions and can 17243therefore be folded at compile time if the operands are constants. 17244 17245 172464) Documentation 17247 17248Updated the Programmer's Reference for new interfaces, data types, 17249and memory allocation model options. 17250 17251Updated the iASL Compiler User Reference to apply new format and 17252add information about new features and options. 17253 17254---------------------------------------- 1725519 April 2002. Summary of changes for this release. 17256 172571) ACPI CA Core Subsystem Version 20020419: 17258 17259The source code base for the Core Subsystem has been completely 17260cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17261versions. The Lint option files used are included in the 17262/acpi/generate/lint directory. 17263 17264Implemented enhanced status/error checking across the entire 17265Hardware manager subsystem. Any hardware errors (reported from 17266the OSL) are now bubbled up and will abort a running control 17267method. 17268 17269 17270Fixed a problem where the per-ACPI-table integer width (32 or 64) 17271was stored only with control method nodes, causing a fault when 17272non-control method code was executed during table loading. The 17273solution implemented uses a global variable to indicate table 17274width across the entire ACPI subsystem. Therefore, ACPI CA does 17275not support mixed integer widths across different ACPI tables 17276(DSDT, SSDT). 17277 17278Fixed a problem where NULL extended fields (X fields) in an ACPI 172792.0 ACPI FADT caused the table load to fail. Although the 17280existing ACPI specification is a bit fuzzy on this topic, the new 17281behavior is to fall back on a ACPI 1.0 field if the corresponding 17282ACPI 2.0 X field is zero (even though the table revision indicates 17283a full ACPI 2.0 table.) The ACPI specification will be updated to 17284clarify this issue. 17285 17286Fixed a problem with the SystemMemory operation region handler 17287where memory was always accessed byte-wise even if the AML- 17288specified access width was larger than a byte. This caused 17289problems on systems with memory-mapped I/O. Memory is now 17290accessed with the width specified. On systems that do not support 17291non-aligned transfers, a check is made to guarantee proper address 17292alignment before proceeding in order to avoid an AML-caused 17293alignment fault within the kernel. 17294 17295 17296Fixed a problem with the ExtendedIrq resource where only one byte 17297of the 4-byte Irq field was extracted. 17298 17299Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17300function was out of date and required a rewrite. 17301 17302Code and Data Size: Current core subsystem library sizes are shown 17303below. These are the code and data sizes for the acpica.lib 17304produced by the Microsoft Visual C++ 6.0 compiler, and these 17305values do not include any ACPI driver or OSPM code. The debug 17306version of the code includes the debug output trace mechanism and 17307has a larger code and data size. Note that these values will vary 17308depending on the efficiency of the compiler and the compiler 17309options used during generation. 17310 17311 Previous Release 17312 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17313 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17314 Current Release: 17315 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17316 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17317 17318 173192) Linux 17320 17321PCI IRQ routing fixes (Dominik Brodowski) 17322 17323 173243) iASL Compiler Version X2042: 17325 17326Implemented an additional compile-time error check for a field 17327unit whose size + minimum access width would cause a run-time 17328access beyond the end-of-region. Previously, only the field size 17329itself was checked. 17330 17331The Core subsystem and iASL compiler now share a common parse 17332object in preparation for compile-time evaluation of the type 173333/4/5 ASL operators. 17334 17335 17336---------------------------------------- 17337Summary of changes for this release: 03_29_02 17338 173391) ACPI CA Core Subsystem Version 20020329: 17340 17341Implemented support for late evaluation of TermArg operands to 17342Buffer and Package objects. This allows complex expressions to be 17343used in the declarations of these object types. 17344 17345Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 173461.0, if the field was larger than 32 bits, it was returned as a 17347buffer - otherwise it was returned as an integer. In ACPI 2.0, 17348the field is returned as a buffer only if the field is larger than 1734964 bits. The TableRevision is now considered when making this 17350conversion to avoid incompatibility with existing ASL code. 17351 17352Implemented logical addressing for AcpiOsGetRootPointer. This 17353allows an RSDP with either a logical or physical address. With 17354this support, the host OS can now override all ACPI tables with 17355one logical RSDP. Includes implementation of "typed" pointer 17356support to allow a common data type for both physical and logical 17357pointers internally. This required a change to the 17358AcpiOsGetRootPointer interface. 17359 17360Implemented the use of ACPI 2.0 Generic Address Structures for all 17361GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17362mapped I/O for these ACPI features. 17363 17364Initialization now ignores not only non-required tables (All 17365tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17366not validate the table headers of unrecognized tables. 17367 17368Fixed a problem where a notify handler could only be 17369installed/removed on an object of type Device. All "notify" 17370 17371objects are now supported -- Devices, Processor, Power, and 17372Thermal. 17373 17374Removed most verbosity from the ACPI_DB_INFO debug level. Only 17375critical information is returned when this debug level is enabled. 17376 17377Code and Data Size: Current core subsystem library sizes are shown 17378below. These are the code and data sizes for the acpica.lib 17379produced by the Microsoft Visual C++ 6.0 compiler, and these 17380values do not include any ACPI driver or OSPM code. The debug 17381version of the code includes the debug output trace mechanism and 17382has a larger code and data size. Note that these values will vary 17383depending on the efficiency of the compiler and the compiler 17384options used during generation. 17385 17386 Previous Release 17387 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17388 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17389 Current Release: 17390 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17391 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17392 17393 173942) Linux: 17395 17396The processor driver (acpi_processor.c) now fully supports ACPI 173972.0-based processor performance control (e.g. Intel(R) 17398SpeedStep(TM) technology) Note that older laptops that only have 17399the Intel "applet" interface are not supported through this. The 17400'limit' and 'performance' interface (/proc) are fully functional. 17401[Note that basic policy for controlling performance state 17402transitions will be included in the next version of ospmd.] The 17403idle handler was modified to more aggressively use C2, and PIIX4 17404errata handling underwent a complete overhaul (big thanks to 17405Dominik Brodowski). 17406 17407Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17408based devices in the ACPI namespace are now dynamically bound 17409(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17410This allows, among other things, ACPI to resolve bus numbers for 17411subordinate PCI bridges. 17412 17413Enhanced PCI IRQ routing to get the proper bus number for _PRT 17414entries defined underneath PCI bridges. 17415 17416Added IBM 600E to bad bios list due to invalid _ADR value for 17417PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17418 17419In the process of adding full MADT support (e.g. IOAPIC) for IA32 17420(acpi.c, mpparse.c) -- stay tuned. 17421 17422Added back visual differentiation between fixed-feature and 17423control-method buttons in dmesg. Buttons are also subtyped (e.g. 17424button/power/PWRF) to simplify button identification. 17425 17426We no longer use -Wno-unused when compiling debug. Please ignore 17427any "_THIS_MODULE defined but not used" messages. 17428 17429Can now shut down the system using "magic sysrq" key. 17430 17431 174323) iASL Compiler version 2041: 17433 17434Fixed a problem where conversion errors for hex/octal/decimal 17435constants were not reported. 17436 17437Implemented a fix for the General Register template Address field. 17438This field was 8 bits when it should be 64. 17439 17440Fixed a problem where errors/warnings were no longer being emitted 17441within the listing output file. 17442 17443Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17444exactly 4 characters, alphanumeric only. 17445 17446 17447 17448 17449---------------------------------------- 17450Summary of changes for this release: 03_08_02 17451 17452 174531) ACPI CA Core Subsystem Version 20020308: 17454 17455Fixed a problem with AML Fields where the use of the "AccessAny" 17456keyword could cause an interpreter error due to attempting to read 17457or write beyond the end of the parent Operation Region. 17458 17459Fixed a problem in the SystemMemory Operation Region handler where 17460an attempt was made to map memory beyond the end of the region. 17461This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17462errors on some Linux systems. 17463 17464Fixed a problem where the interpreter/namespace "search to root" 17465algorithm was not functioning for some object types. Relaxed the 17466internal restriction on the search to allow upsearches for all 17467external object types as well as most internal types. 17468 17469 174702) Linux: 17471 17472We now use safe_halt() macro versus individual calls to sti | hlt. 17473 17474Writing to the processor limit interface should now work. "echo 1" 17475will increase the limit, 2 will decrease, and 0 will reset to the 17476 17477default. 17478 17479 174803) ASL compiler: 17481 17482Fixed segfault on Linux version. 17483 17484 17485---------------------------------------- 17486Summary of changes for this release: 02_25_02 17487 174881) ACPI CA Core Subsystem: 17489 17490 17491Fixed a problem where the GPE bit masks were not initialized 17492properly, causing erratic GPE behavior. 17493 17494Implemented limited support for multiple calling conventions. The 17495code can be generated with either the VPL (variable parameter 17496list, or "C") convention, or the FPL (fixed parameter list, or 17497"Pascal") convention. The core subsystem is about 3.4% smaller 17498when generated with FPL. 17499 17500 175012) Linux 17502 17503Re-add some /proc/acpi/event functionality that was lost during 17504the rewrite 17505 17506Resolved issue with /proc events for fixed-feature buttons showing 17507up as the system device. 17508 17509Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17510 17511Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17512 17513Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17514 17515Fixed limit interface & usage to fix bugs with passive cooling 17516hysterisis. 17517 17518Restructured PRT support. 17519 17520 17521---------------------------------------- 17522Summary of changes for this label: 02_14_02 17523 17524 175251) ACPI CA Core Subsystem: 17526 17527Implemented support in AcpiLoadTable to allow loading of FACS and 17528FADT tables. 17529 17530Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17531been removed. All 64-bit platforms should be migrated to the ACPI 175322.0 tables. The actbl71.h header has been removed from the source 17533tree. 17534 17535All C macros defined within the subsystem have been prefixed with 17536"ACPI_" to avoid collision with other system include files. 17537 17538Removed the return value for the two AcpiOsPrint interfaces, since 17539it is never used and causes lint warnings for ignoring the return 17540value. 17541 17542Added error checking to all internal mutex acquire and release 17543calls. Although a failure from one of these interfaces is 17544probably a fatal system error, these checks will cause the 17545immediate abort of the currently executing method or interface. 17546 17547Fixed a problem where the AcpiSetCurrentResources interface could 17548fault. This was a side effect of the deployment of the new memory 17549allocation model. 17550 17551Fixed a couple of problems with the Global Lock support introduced 17552in the last major build. The "common" (1.0/2.0) internal FACS was 17553being overwritten with the FACS signature and clobbering the 17554Global Lock pointer. Also, the actual firmware FACS was being 17555unmapped after construction of the "common" FACS, preventing 17556access to the actual Global Lock field within it. The "common" 17557internal FACS is no longer installed as an actual ACPI table; it 17558is used simply as a global. 17559 17560Code and Data Size: Current core subsystem library sizes are shown 17561below. These are the code and data sizes for the acpica.lib 17562produced by the Microsoft Visual C++ 6.0 compiler, and these 17563values do not include any ACPI driver or OSPM code. The debug 17564version of the code includes the debug output trace mechanism and 17565has a larger code and data size. Note that these values will vary 17566depending on the efficiency of the compiler and the compiler 17567options used during generation. 17568 17569 Previous Release (02_07_01) 17570 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17571 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17572 Current Release: 17573 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17574 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17575 17576 175772) Linux 17578 17579Updated Linux-specific code for core macro and OSL interface 17580changes described above. 17581 17582Improved /proc/acpi/event. It now can be opened only once and has 17583proper poll functionality. 17584 17585Fixed and restructured power management (acpi_bus). 17586 17587Only create /proc "view by type" when devices of that class exist. 17588 17589Fixed "charging/discharging" bug (and others) in acpi_battery. 17590 17591Improved thermal zone code. 17592 17593 175943) ASL Compiler, version X2039: 17595 17596 17597Implemented the new compiler restriction on ASL String hex/octal 17598escapes to non-null, ASCII values. An error results if an invalid 17599value is used. (This will require an ACPI 2.0 specification 17600change.) 17601 17602AML object labels that are output to the optional C and ASM source 17603are now prefixed with both the ACPI table signature and table ID 17604to help guarantee uniqueness within a large BIOS project. 17605 17606 17607---------------------------------------- 17608Summary of changes for this label: 02_01_02 17609 176101) ACPI CA Core Subsystem: 17611 17612ACPI 2.0 support is complete in the entire Core Subsystem and the 17613ASL compiler. All new ACPI 2.0 operators are implemented and all 17614other changes for ACPI 2.0 support are complete. With 17615simultaneous code and data optimizations throughout the subsystem, 17616ACPI 2.0 support has been implemented with almost no additional 17617cost in terms of code and data size. 17618 17619Implemented a new mechanism for allocation of return buffers. If 17620the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17621be allocated on behalf of the caller. Consolidated all return 17622buffer validation and allocation to a common procedure. Return 17623buffers will be allocated via the primary OSL allocation interface 17624since it appears that a separate pool is not needed by most users. 17625If a separate pool is required for these buffers, the caller can 17626still use the original mechanism and pre-allocate the buffer(s). 17627 17628Implemented support for string operands within the DerefOf 17629operator. 17630 17631Restructured the Hardware and Event managers to be table driven, 17632simplifying the source code and reducing the amount of generated 17633code. 17634 17635Split the common read/write low-level ACPI register bitfield 17636procedure into a separate read and write, simplifying the code 17637considerably. 17638 17639Obsoleted the AcpiOsCallocate OSL interface. This interface was 17640used only a handful of times and didn't have enough critical mass 17641for a separate interface. Replaced with a common calloc procedure 17642in the core. 17643 17644Fixed a reported problem with the GPE number mapping mechanism 17645that allows GPE1 numbers to be non-contiguous with GPE0. 17646Reorganized the GPE information and shrunk a large array that was 17647originally large enough to hold info for all possible GPEs (256) 17648to simply large enough to hold all GPEs up to the largest GPE 17649number on the machine. 17650 17651Fixed a reported problem with resource structure alignment on 64- 17652bit platforms. 17653 17654Changed the AcpiEnableEvent and AcpiDisableEvent external 17655interfaces to not require any flags for the common case of 17656enabling/disabling a GPE. 17657 17658Implemented support to allow a "Notify" on a Processor object. 17659 17660Most TBDs in comments within the source code have been resolved 17661and eliminated. 17662 17663 17664Fixed a problem in the interpreter where a standalone parent 17665prefix (^) was not handled correctly in the interpreter and 17666debugger. 17667 17668Removed obsolete and unnecessary GPE save/restore code. 17669 17670Implemented Field support in the ASL Load operator. This allows a 17671table to be loaded from a named field, in addition to loading a 17672table directly from an Operation Region. 17673 17674Implemented timeout and handle support in the external Global Lock 17675interfaces. 17676 17677Fixed a problem in the AcpiDump utility where pathnames were no 17678longer being generated correctly during the dump of named objects. 17679 17680Modified the AML debugger to give a full display of if/while 17681predicates instead of just one AML opcode at a time. (The 17682predicate can have several nested ASL statements.) The old method 17683was confusing during single stepping. 17684 17685Code and Data Size: Current core subsystem library sizes are shown 17686below. These are the code and data sizes for the acpica.lib 17687produced by the Microsoft Visual C++ 6.0 compiler, and these 17688values do not include any ACPI driver or OSPM code. The debug 17689version of the code includes the debug output trace mechanism and 17690has a larger code and data size. Note that these values will vary 17691depending on the efficiency of the compiler and the compiler 17692options used during generation. 17693 17694 Previous Release (12_18_01) 17695 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17696 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17697 Current Release: 17698 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17699 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17700 177012) Linux 17702 17703 Implemented fix for PIIX reverse throttling errata (Processor 17704driver) 17705 17706Added new Limit interface (Processor and Thermal drivers) 17707 17708New thermal policy (Thermal driver) 17709 17710Many updates to /proc 17711 17712Battery "low" event support (Battery driver) 17713 17714Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17715 17716IA32 - IA64 initialization unification, no longer experimental 17717 17718Menuconfig options redesigned 17719 177203) ASL Compiler, version X2037: 17721 17722Implemented several new output features to simplify integration of 17723AML code into firmware: 1) Output the AML in C source code with 17724labels for each named ASL object. The original ASL source code 17725is interleaved as C comments. 2) Output the AML in ASM source code 17726with labels and interleaved ASL source. 3) Output the AML in 17727raw hex table form, in either C or ASM. 17728 17729Implemented support for optional string parameters to the 17730LoadTable operator. 17731 17732Completed support for embedded escape sequences within string 17733literals. The compiler now supports all single character escapes 17734as well as the Octal and Hex escapes. Note: the insertion of a 17735null byte into a string literal (via the hex/octal escape) causes 17736the string to be immediately terminated. A warning is issued. 17737 17738Fixed a problem where incorrect AML was generated for the case 17739where an ASL namepath consists of a single parent prefix ( 17740 17741) with no trailing name segments. 17742 17743The compiler has been successfully generated with a 64-bit C 17744compiler. 17745 17746 17747 17748 17749---------------------------------------- 17750Summary of changes for this label: 12_18_01 17751 177521) Linux 17753 17754Enhanced blacklist with reason and severity fields. Any table's 17755signature may now be used to identify a blacklisted system. 17756 17757Call _PIC control method to inform the firmware which interrupt 17758model the OS is using. Turn on any disabled link devices. 17759 17760Cleaned up busmgr /proc error handling (Andreas Dilger) 17761 17762 2) ACPI CA Core Subsystem: 17763 17764Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17765while loop) 17766 17767Completed implementation of the ACPI 2.0 "Continue", 17768"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17769operators. All new ACPI 2.0 operators are now implemented in both 17770the ASL compiler and the AML interpreter. The only remaining ACPI 177712.0 task is support for the String data type in the DerefOf 17772operator. Fixed a problem with AcquireMutex where the status code 17773was lost if the caller had to actually wait for the mutex. 17774 17775Increased the maximum ASL Field size from 64K bits to 4G bits. 17776 17777Completed implementation of the external Global Lock interfaces -- 17778AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17779Handler parameters were added. 17780 17781Completed another pass at removing warnings and issues when 17782compiling with 64-bit compilers. The code now compiles cleanly 17783with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17784add and subtract (diff) macros have changed considerably. 17785 17786 17787Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1778864-bit platforms, 32-bits on all others. This type is used 17789wherever memory allocation and/or the C sizeof() operator is used, 17790and affects the OSL memory allocation interfaces AcpiOsAllocate 17791and AcpiOsCallocate. 17792 17793Implemented sticky user breakpoints in the AML debugger. 17794 17795Code and Data Size: Current core subsystem library sizes are shown 17796below. These are the code and data sizes for the acpica.lib 17797produced by the Microsoft Visual C++ 6.0 compiler, and these 17798values do not include any ACPI driver or OSPM code. The debug 17799version of the code includes the debug output trace mechanism and 17800has a larger code and data size. Note that these values will vary 17801depending on the efficiency of the compiler and the compiler 17802options used during generation. 17803 17804 Previous Release (12_05_01) 17805 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17806 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17807 Current Release: 17808 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17809 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17810 17811 3) ASL Compiler, version X2034: 17812 17813Now checks for (and generates an error if detected) the use of a 17814Break or Continue statement without an enclosing While statement. 17815 17816 17817Successfully generated the compiler with the Intel 64-bit C 17818compiler. 17819 17820 ---------------------------------------- 17821Summary of changes for this label: 12_05_01 17822 17823 1) ACPI CA Core Subsystem: 17824 17825The ACPI 2.0 CopyObject operator is fully implemented. This 17826operator creates a new copy of an object (and is also used to 17827bypass the "implicit conversion" mechanism of the Store operator.) 17828 17829The ACPI 2.0 semantics for the SizeOf operator are fully 17830implemented. The change is that performing a SizeOf on a 17831reference object causes an automatic dereference of the object to 17832the actual value before the size is evaluated. This behavior was 17833undefined in ACPI 1.0. 17834 17835The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17836have been implemented. The interrupt polarity and mode are now 17837independently set. 17838 17839Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17840appearing in Package objects were not properly converted to 17841integers when the internal Package was converted to an external 17842object (via the AcpiEvaluateObject interface.) 17843 17844Fixed a problem with the namespace object deletion mechanism for 17845objects created by control methods. There were two parts to this 17846problem: 1) Objects created during the initialization phase method 17847parse were not being deleted, and 2) The object owner ID mechanism 17848to track objects was broken. 17849 17850Fixed a problem where the use of the ASL Scope operator within a 17851control method would result in an invalid opcode exception. 17852 17853Fixed a problem introduced in the previous label where the buffer 17854length required for the _PRT structure was not being returned 17855correctly. 17856 17857Code and Data Size: Current core subsystem library sizes are shown 17858below. These are the code and data sizes for the acpica.lib 17859produced by the Microsoft Visual C++ 6.0 compiler, and these 17860values do not include any ACPI driver or OSPM code. The debug 17861version of the code includes the debug output trace mechanism and 17862has a larger code and data size. Note that these values will vary 17863depending on the efficiency of the compiler and the compiler 17864options used during generation. 17865 17866 Previous Release (11_20_01) 17867 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17868 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17869 17870 Current Release: 17871 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17872 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17873 17874 2) Linux: 17875 17876Updated all files to apply cleanly against 2.4.16. 17877 17878Added basic PCI Interrupt Routing Table (PRT) support for IA32 17879(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17880version supports both static and dynamic PRT entries, but dynamic 17881entries are treated as if they were static (not yet 17882reconfigurable). Architecture- specific code to use this data is 17883absent on IA32 but should be available shortly. 17884 17885Changed the initialization sequence to start the ACPI interpreter 17886(acpi_init) prior to initialization of the PCI driver (pci_init) 17887in init/main.c. This ordering is required to support PRT and 17888facilitate other (future) enhancement. A side effect is that the 17889ACPI bus driver and certain device drivers can no longer be loaded 17890as modules. 17891 17892Modified the 'make menuconfig' options to allow PCI Interrupt 17893Routing support to be included without the ACPI Bus and other 17894device drivers. 17895 17896 3) ASL Compiler, version X2033: 17897 17898Fixed some issues with the use of the new CopyObject and 17899DataTableRegion operators. Both are fully functional. 17900 17901 ---------------------------------------- 17902Summary of changes for this label: 11_20_01 17903 17904 20 November 2001. Summary of changes for this release. 17905 17906 1) ACPI CA Core Subsystem: 17907 17908Updated Index support to match ACPI 2.0 semantics. Storing a 17909Integer, String, or Buffer to an Index of a Buffer will store only 17910the least-significant byte of the source to the Indexed buffer 17911byte. Multiple writes are not performed. 17912 17913Fixed a problem where the access type used in an AccessAs ASL 17914operator was not recorded correctly into the field object. 17915 17916Fixed a problem where ASL Event objects were created in a 17917signalled state. Events are now created in an unsignalled state. 17918 17919The internal object cache is now purged after table loading and 17920initialization to reduce the use of dynamic kernel memory -- on 17921the assumption that object use is greatest during the parse phase 17922of the entire table (versus the run-time use of individual control 17923methods.) 17924 17925ACPI 2.0 variable-length packages are now fully operational. 17926 17927Code and Data Size: Code and Data optimizations have permitted new 17928feature development with an actual reduction in the library size. 17929Current core subsystem library sizes are shown below. These are 17930the code and data sizes for the acpica.lib produced by the 17931Microsoft Visual C++ 6.0 compiler, and these values do not include 17932any ACPI driver or OSPM code. The debug version of the code 17933includes the debug output trace mechanism and has a larger code 17934and data size. Note that these values will vary depending on the 17935efficiency of the compiler and the compiler options used during 17936generation. 17937 17938 Previous Release (11_09_01): 17939 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17940 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17941 17942 Current Release: 17943 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17944 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17945 17946 2) Linux: 17947 17948Enhanced the ACPI boot-time initialization code to allow the use 17949of Local APIC tables for processor enumeration on IA-32, and to 17950pave the way for a fully MPS-free boot (on SMP systems) in the 17951near future. This functionality replaces 17952arch/i386/kernel/acpitables.c, which was introduced in an earlier 179532.4.15-preX release. To enable this feature you must add 17954"acpi_boot=on" to the kernel command line -- see the help entry 17955for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17956the works... 17957 17958Restructured the configuration options to allow boot-time table 17959parsing support without inclusion of the ACPI Interpreter (and 17960other) code. 17961 17962NOTE: This release does not include fixes for the reported events, 17963power-down, and thermal passive cooling issues (coming soon). 17964 17965 3) ASL Compiler: 17966 17967Added additional typechecking for Fields within restricted access 17968Operation Regions. All fields within EC and CMOS regions must be 17969declared with ByteAcc. All fields within SMBus regions must be 17970declared with the BufferAcc access type. 17971 17972Fixed a problem where the listing file output of control methods 17973no longer interleaved the actual AML code with the ASL source 17974code. 17975 17976 17977 17978 17979---------------------------------------- 17980Summary of changes for this label: 11_09_01 17981 179821) ACPI CA Core Subsystem: 17983 17984Implemented ACPI 2.0-defined support for writes to fields with a 17985Buffer, String, or Integer source operand that is smaller than the 17986target field. In these cases, the source operand is zero-extended 17987to fill the target field. 17988 17989Fixed a problem where a Field starting bit offset (within the 17990parent operation region) was calculated incorrectly if the 17991 17992alignment of the field differed from the access width. This 17993affected CreateWordField, CreateDwordField, CreateQwordField, and 17994possibly other fields that use the "AccessAny" keyword. 17995 17996Fixed a problem introduced in the 11_02_01 release where indirect 17997stores through method arguments did not operate correctly. 17998 179992) Linux: 18000 18001Implemented boot-time ACPI table parsing support 18002(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18003facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18004legacy BIOS interfaces (e.g. MPS) for the configuration of system 18005processors, memory, and interrupts during setup_arch(). Note that 18006this patch does not include the required architecture-specific 18007changes required to apply this information -- subsequent patches 18008will be posted for both IA32 and IA64 to achieve this. 18009 18010Added low-level sleep support for IA32 platforms, courtesy of Pat 18011Mochel. This allows IA32 systems to transition to/from various 18012sleeping states (e.g. S1, S3), although the lack of a centralized 18013driver model and power-manageable drivers will prevent its 18014(successful) use on most systems. 18015 18016Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18017submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18018tables" option, etc. 18019 18020Increased the default timeout for the EC driver from 1ms to 10ms 18021(1000 cycles of 10us) to try to address AE_TIME errors during EC 18022transactions. 18023 18024 ---------------------------------------- 18025Summary of changes for this label: 11_02_01 18026 180271) ACPI CA Core Subsystem: 18028 18029ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18030(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18031implemented. 18032 18033OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18034changes to support ACPI 2.0 Qword field access. Read/Write 18035PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18036accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18037the value parameter for the address space handler interface is now 18038an ACPI_INTEGER. OSL implementations of these interfaces must now 18039handle the case where the Width parameter is 64. 18040 18041Index Fields: Fixed a problem where unaligned bit assembly and 18042disassembly for IndexFields was not supported correctly. 18043 18044Index and Bank Fields: Nested Index and Bank Fields are now 18045supported. During field access, a check is performed to ensure 18046that the value written to an Index or Bank register is not out of 18047the range of the register. The Index (or Bank) register is 18048written before each access to the field data. Future support will 18049include allowing individual IndexFields to be wider than the 18050DataRegister width. 18051 18052Fields: Fixed a problem where the AML interpreter was incorrectly 18053attempting to write beyond the end of a Field/OpRegion. This was 18054a boundary case that occurred when a DWORD field was written to a 18055BYTE access OpRegion, forcing multiple writes and causing the 18056interpreter to write one datum too many. 18057 18058Fields: Fixed a problem with Field/OpRegion access where the 18059starting bit address of a field was incorrectly calculated if the 18060current access type was wider than a byte (WordAcc, DwordAcc, or 18061QwordAcc). 18062 18063Fields: Fixed a problem where forward references to individual 18064FieldUnits (individual Field names within a Field definition) were 18065not resolved during the AML table load. 18066 18067Fields: Fixed a problem where forward references from a Field 18068definition to the parent Operation Region definition were not 18069resolved during the AML table load. 18070 18071Fields: Duplicate FieldUnit names within a scope are now detected 18072during AML table load. 18073 18074Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18075returned an incorrect name for the root node. 18076 18077Code and Data Size: Code and Data optimizations have permitted new 18078feature development with an actual reduction in the library size. 18079Current core subsystem library sizes are shown below. These are 18080the code and data sizes for the acpica.lib produced by the 18081Microsoft Visual C++ 6.0 compiler, and these values do not include 18082any ACPI driver or OSPM code. The debug version of the code 18083includes the debug output trace mechanism and has a larger code 18084and data size. Note that these values will vary depending on the 18085efficiency of the compiler and the compiler options used during 18086generation. 18087 18088 Previous Release (10_18_01): 18089 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18090 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18091 18092 Current Release: 18093 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18094 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18095 18096 2) Linux: 18097 18098Improved /proc processor output (Pavel Machek) Re-added 18099MODULE_LICENSE("GPL") to all modules. 18100 18101 3) ASL Compiler version X2030: 18102 18103Duplicate FieldUnit names within a scope are now detected and 18104flagged as errors. 18105 18106 4) Documentation: 18107 18108Programmer Reference updated to reflect OSL and address space 18109handler interface changes described above. 18110 18111---------------------------------------- 18112Summary of changes for this label: 10_18_01 18113 18114ACPI CA Core Subsystem: 18115 18116Fixed a problem with the internal object reference count mechanism 18117that occasionally caused premature object deletion. This resolves 18118all of the outstanding problem reports where an object is deleted 18119in the middle of an interpreter evaluation. Although this problem 18120only showed up in rather obscure cases, the solution to the 18121problem involved an adjustment of all reference counts involving 18122objects attached to namespace nodes. 18123 18124Fixed a problem with Field support in the interpreter where 18125writing to an aligned field whose length is an exact multiple (2 18126or greater) of the field access granularity would cause an attempt 18127to write beyond the end of the field. 18128 18129The top level AML opcode execution functions within the 18130interpreter have been renamed with a more meaningful and 18131consistent naming convention. The modules exmonad.c and 18132exdyadic.c were eliminated. New modules are exoparg1.c, 18133exoparg2.c, exoparg3.c, and exoparg6.c. 18134 18135Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18136 18137Fixed a problem where the AML debugger was causing some internal 18138objects to not be deleted during subsystem termination. 18139 18140Fixed a problem with the external AcpiEvaluateObject interface 18141where the subsystem would fault if the named object to be 18142evaluated referred to a constant such as Zero, Ones, etc. 18143 18144Fixed a problem with IndexFields and BankFields where the 18145subsystem would fault if the index, data, or bank registers were 18146not defined in the same scope as the field itself. 18147 18148Added printf format string checking for compilers that support 18149this feature. Corrected more than 50 instances of issues with 18150format specifiers within invocations of ACPI_DEBUG_PRINT 18151throughout the core subsystem code. 18152 18153The ASL "Revision" operator now returns the ACPI support level 18154implemented in the core - the value "2" since the ACPI 2.0 support 18155is more than 50% implemented. 18156 18157Enhanced the output of the AML debugger "dump namespace" command 18158to output in a more human-readable form. 18159 18160Current core subsystem library code sizes are shown below. These 18161 18162are the code and data sizes for the acpica.lib produced by the 18163Microsoft Visual C++ 6.0 compiler, and these values do not include 18164any ACPI driver or OSPM code. The debug version of the code 18165includes the full debug trace mechanism -- leading to a much 18166 18167larger code and data size. Note that these values will vary 18168depending on the efficiency of the compiler and the compiler 18169options used during generation. 18170 18171 Previous Label (09_20_01): 18172 Non-Debug Version: 65K Code, 5K Data, 70K Total 18173 Debug Version: 138K Code, 58K Data, 196K Total 18174 18175 This Label: 18176 18177 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18178 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18179 18180Linux: 18181 18182Implemented a "Bad BIOS Blacklist" to track machines that have 18183known ASL/AML problems. 18184 18185Enhanced the /proc interface for the thermal zone driver and added 18186support for _HOT (the critical suspend trip point). The 'info' 18187file now includes threshold/policy information, and allows setting 18188of _SCP (cooling preference) and _TZP (polling frequency) values 18189to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18190frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18191preference to the passive/quiet mode (if supported by the ASL). 18192 18193Implemented a workaround for a gcc bug that resuted in an OOPs 18194when loading the control method battery driver. 18195 18196 ---------------------------------------- 18197Summary of changes for this label: 09_20_01 18198 18199 ACPI CA Core Subsystem: 18200 18201The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18202modified to allow individual GPE levels to be flagged as wake- 18203enabled (i.e., these GPEs are to remain enabled when the platform 18204sleeps.) 18205 18206The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18207support wake-enabled GPEs. This means that upon entering the 18208sleep state, all GPEs that are not wake-enabled are disabled. 18209When leaving the sleep state, these GPEs are re-enabled. 18210 18211A local double-precision divide/modulo module has been added to 18212enhance portability to OS kernels where a 64-bit math library is 18213not available. The new module is "utmath.c". 18214 18215Several optimizations have been made to reduce the use of CPU 18216stack. Originally over 2K, the maximum stack usage is now below 182172K at 1860 bytes (1.82k) 18218 18219Fixed a problem with the AcpiGetFirmwareTable interface where the 18220root table pointer was not mapped into a logical address properly. 18221 18222Fixed a problem where a NULL pointer was being dereferenced in the 18223interpreter code for the ASL Notify operator. 18224 18225Fixed a problem where the use of the ASL Revision operator 18226returned an error. This operator now returns the current version 18227of the ACPI CA core subsystem. 18228 18229Fixed a problem where objects passed as control method parameters 18230to AcpiEvaluateObject were always deleted at method termination. 18231However, these objects may end up being stored into the namespace 18232by the called method. The object reference count mechanism was 18233applied to these objects instead of a force delete. 18234 18235Fixed a problem where static strings or buffers (contained in the 18236AML code) that are declared as package elements within the ASL 18237code could cause a fault because the interpreter would attempt to 18238delete them. These objects are now marked with the "static 18239object" flag to prevent any attempt to delete them. 18240 18241Implemented an interpreter optimization to use operands directly 18242from the state object instead of extracting the operands to local 18243variables. This reduces stack use and code size, and improves 18244performance. 18245 18246The module exxface.c was eliminated as it was an unnecessary extra 18247layer of code. 18248 18249Current core subsystem library code sizes are shown below. These 18250are the code and data sizes for the acpica.lib produced by the 18251Microsoft Visual C++ 6.0 compiler, and these values do not include 18252any ACPI driver or OSPM code. The debug version of the code 18253includes the full debug trace mechanism -- leading to a much 18254larger code and data size. Note that these values will vary 18255depending on the efficiency of the compiler and the compiler 18256options used during generation. 18257 18258 Non-Debug Version: 65K Code, 5K Data, 70K Total 18259(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18260Total (Previously 195K) 18261 18262Linux: 18263 18264Support for ACPI 2.0 64-bit integers has been added. All ACPI 18265Integer objects are now 64 bits wide 18266 18267All Acpi data types and structures are now in lower case. Only 18268Acpi macros are upper case for differentiation. 18269 18270 Documentation: 18271 18272Changes to the external interfaces as described above. 18273 18274 ---------------------------------------- 18275Summary of changes for this label: 08_31_01 18276 18277 ACPI CA Core Subsystem: 18278 18279A bug with interpreter implementation of the ASL Divide operator 18280was found and fixed. The implicit function return value (not the 18281explicit store operands) was returning the remainder instead of 18282the quotient. This was a longstanding bug and it fixes several 18283known outstanding issues on various platforms. 18284 18285The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18286been further optimized for size. There are 700 invocations of the 18287DEBUG_PRINT macro alone, so each optimization reduces the size of 18288the debug version of the subsystem significantly. 18289 18290A stack trace mechanism has been implemented. The maximum stack 18291usage is about 2K on 32-bit platforms. The debugger command "stat 18292stack" will display the current maximum stack usage. 18293 18294All public symbols and global variables within the subsystem are 18295now prefixed with the string "Acpi". This keeps all of the 18296symbols grouped together in a kernel map, and avoids conflicts 18297with other kernel subsystems. 18298 18299Most of the internal fixed lookup tables have been moved into the 18300code segment via the const operator. 18301 18302Several enhancements have been made to the interpreter to both 18303reduce the code size and improve performance. 18304 18305Current core subsystem library code sizes are shown below. These 18306are the code and data sizes for the acpica.lib produced by the 18307Microsoft Visual C++ 6.0 compiler, and these values do not include 18308any ACPI driver or OSPM code. The debug version of the code 18309includes the full debug trace mechanism which contains over 700 18310invocations of the DEBUG_PRINT macro, 500 function entry macro 18311invocations, and over 900 function exit macro invocations -- 18312leading to a much larger code and data size. Note that these 18313values will vary depending on the efficiency of the compiler and 18314the compiler options used during generation. 18315 18316 Non-Debug Version: 64K Code, 5K Data, 69K Total 18317Debug Version: 137K Code, 58K Data, 195K Total 18318 18319 Linux: 18320 18321Implemented wbinvd() macro, pending a kernel-wide definition. 18322 18323Fixed /proc/acpi/event to handle poll() and short reads. 18324 18325 ASL Compiler, version X2026: 18326 18327Fixed a problem introduced in the previous label where the AML 18328 18329code emitted for package objects produced packages with zero 18330length. 18331 18332 ---------------------------------------- 18333Summary of changes for this label: 08_16_01 18334 18335ACPI CA Core Subsystem: 18336 18337The following ACPI 2.0 ASL operators have been implemented in the 18338AML interpreter (These are already supported by the Intel ASL 18339compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18340ToBuffer. Support for 64-bit AML constants is implemented in the 18341AML parser, debugger, and disassembler. 18342 18343The internal memory tracking mechanism (leak detection code) has 18344been upgraded to reduce the memory overhead (a separate tracking 18345block is no longer allocated for each memory allocation), and now 18346supports all of the internal object caches. 18347 18348The data structures and code for the internal object caches have 18349been coelesced and optimized so that there is a single cache and 18350memory list data structure and a single group of functions that 18351implement generic cache management. This has reduced the code 18352size in both the debug and release versions of the subsystem. 18353 18354The DEBUG_PRINT macro(s) have been optimized for size and replaced 18355by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18356different, because it generates a single call to an internal 18357function. This results in a savings of about 90 bytes per 18358invocation, resulting in an overall code and data savings of about 1835916% in the debug version of the subsystem. 18360 18361 Linux: 18362 18363Fixed C3 disk corruption problems and re-enabled C3 on supporting 18364machines. 18365 18366Integrated low-level sleep code by Patrick Mochel. 18367 18368Further tweaked source code Linuxization. 18369 18370Other minor fixes. 18371 18372 ASL Compiler: 18373 18374Support for ACPI 2.0 variable length packages is fixed/completed. 18375 18376Fixed a problem where the optional length parameter for the ACPI 183772.0 ToString operator. 18378 18379Fixed multiple extraneous error messages when a syntax error is 18380detected within the declaration line of a control method. 18381 18382 ---------------------------------------- 18383Summary of changes for this label: 07_17_01 18384 18385ACPI CA Core Subsystem: 18386 18387Added a new interface named AcpiGetFirmwareTable to obtain any 18388ACPI table via the ACPI signature. The interface can be called at 18389any time during kernel initialization, even before the kernel 18390virtual memory manager is initialized and paging is enabled. This 18391allows kernel subsystems to obtain ACPI tables very early, even 18392before the ACPI CA subsystem is initialized. 18393 18394Fixed a problem where Fields defined with the AnyAcc attribute 18395could be resolved to the incorrect address under the following 18396conditions: 1) the field width is larger than 8 bits and 2) the 18397parent operation region is not defined on a DWORD boundary. 18398 18399Fixed a problem where the interpreter is not being locked during 18400namespace initialization (during execution of the _INI control 18401methods), causing an error when an attempt is made to release it 18402later. 18403 18404ACPI 2.0 support in the AML Interpreter has begun and will be 18405ongoing throughout the rest of this year. In this label, The Mod 18406operator is implemented. 18407 18408Added a new data type to contain full PCI addresses named 18409ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18410and Function values. 18411 18412 Linux: 18413 18414Enhanced the Linux version of the source code to change most 18415capitalized ACPI type names to lowercase. For example, all 18416instances of ACPI_STATUS are changed to acpi_status. This will 18417result in a large diff, but the change is strictly cosmetic and 18418aligns the CA code closer to the Linux coding standard. 18419 18420OSL Interfaces: 18421 18422The interfaces to the PCI configuration space have been changed to 18423add the PCI Segment number and to split the single 32-bit combined 18424DeviceFunction field into two 16-bit fields. This was 18425accomplished by moving the four values that define an address in 18426PCI configuration space (segment, bus, device, and function) to 18427the new ACPI_PCI_ID structure. 18428 18429The changes to the PCI configuration space interfaces led to a 18430reexamination of the complete set of address space access 18431interfaces for PCI, I/O, and Memory. The previously existing 18 18432interfaces have proven difficult to maintain (any small change 18433must be propagated across at least 6 interfaces) and do not easily 18434allow for future expansion to 64 bits if necessary. Also, on some 18435systems, it would not be appropriate to demultiplex the access 18436width (8, 16, 32,or 64) before calling the OSL if the 18437corresponding native OS interfaces contain a similar access width 18438parameter. For these reasons, the 18 address space interfaces 18439have been replaced by these 6 new ones: 18440 18441AcpiOsReadPciConfiguration 18442AcpiOsWritePciConfiguration 18443AcpiOsReadMemory 18444AcpiOsWriteMemory 18445AcpiOsReadPort 18446AcpiOsWritePort 18447 18448Added a new interface named AcpiOsGetRootPointer to allow the OSL 18449to perform the platform and/or OS-specific actions necessary to 18450obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18451interface will simply call down to the CA core to perform the low- 18452memory search for the table. On IA-64, the RSDP is obtained from 18453EFI. Migrating this interface to the OSL allows the CA core to 18454 18455remain OS and platform independent. 18456 18457Added a new interface named AcpiOsSignal to provide a generic 18458"function code and pointer" interface for various miscellaneous 18459signals and notifications that must be made to the host OS. The 18460first such signals are intended to support the ASL Fatal and 18461Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18462interface has been obsoleted. 18463 18464The definition of the AcpiFormatException interface has been 18465changed to simplify its use. The caller no longer must supply a 18466buffer to the call; A pointer to a const string is now returned 18467directly. This allows the call to be easily used in printf 18468statements, etc. since the caller does not have to manage a local 18469buffer. 18470 18471 18472 ASL Compiler, Version X2025: 18473 18474The ACPI 2.0 Switch/Case/Default operators have been implemented 18475and are fully functional. They will work with all ACPI 1.0 18476interpreters, since the operators are simply translated to If/Else 18477pairs. 18478 18479The ACPI 2.0 ElseIf operator is implemented and will also work 18480with 1.0 interpreters, for the same reason. 18481 18482Implemented support for ACPI 2.0 variable-length packages. These 18483packages have a separate opcode, and their size is determined by 18484the interpreter at run-time. 18485 18486Documentation The ACPI CA Programmer Reference has been updated to 18487reflect the new interfaces and changes to existing interfaces. 18488 18489 ------------------------------------------ 18490Summary of changes for this label: 06_15_01 18491 18492 ACPI CA Core Subsystem: 18493 18494Fixed a problem where a DWORD-accessed field within a Buffer 18495object would get its byte address inadvertently rounded down to 18496the nearest DWORD. Buffers are always Byte-accessible. 18497 18498 ASL Compiler, version X2024: 18499 18500Fixed a problem where the Switch() operator would either fault or 18501hang the compiler. Note however, that the AML code for this ACPI 185022.0 operator is not yet implemented. 18503 18504Compiler uses the new AcpiOsGetTimer interface to obtain compile 18505timings. 18506 18507Implementation of the CreateField operator automatically converts 18508a reference to a named field within a resource descriptor from a 18509byte offset to a bit offset if required. 18510 18511Added some missing named fields from the resource descriptor 18512support. These are the names that are automatically created by the 18513compiler to reference fields within a descriptor. They are only 18514valid at compile time and are not passed through to the AML 18515interpreter. 18516 18517Resource descriptor named fields are now typed as Integers and 18518subject to compile-time typechecking when used in expressions. 18519 18520 ------------------------------------------ 18521Summary of changes for this label: 05_18_01 18522 18523 ACPI CA Core Subsystem: 18524 18525Fixed a couple of problems in the Field support code where bits 18526from adjacent fields could be returned along with the proper field 18527bits. Restructured the field support code to improve performance, 18528readability and maintainability. 18529 18530New DEBUG_PRINTP macro automatically inserts the procedure name 18531into the output, saving hundreds of copies of procedure name 18532strings within the source, shrinking the memory footprint of the 18533debug version of the core subsystem. 18534 18535 Source Code Structure: 18536 18537The source code directory tree was restructured to reflect the 18538current organization of the component architecture. Some files 18539and directories have been moved and/or renamed. 18540 18541 Linux: 18542 18543Fixed leaking kacpidpc processes. 18544 18545Fixed queueing event data even when /proc/acpi/event is not 18546opened. 18547 18548 ASL Compiler, version X2020: 18549 18550Memory allocation performance enhancement - over 24X compile time 18551improvement on large ASL files. Parse nodes and namestring 18552buffers are now allocated from a large internal compiler buffer. 18553 18554The temporary .SRC file is deleted unless the "-s" option is 18555specified 18556 18557The "-d" debug output option now sends all output to the .DBG file 18558instead of the console. 18559 18560"External" second parameter is now optional 18561 18562"ElseIf" syntax now properly allows the predicate 18563 18564Last operand to "Load" now recognized as a Target operand 18565 18566Debug object can now be used anywhere as a normal object. 18567 18568ResourceTemplate now returns an object of type BUFFER 18569 18570EISAID now returns an object of type INTEGER 18571 18572"Index" now works with a STRING operand 18573 18574"LoadTable" now accepts optional parameters 18575 18576"ToString" length parameter is now optional 18577 18578"Interrupt (ResourceType," parse error fixed. 18579 18580"Register" with a user-defined region space parse error fixed 18581 18582Escaped backslash at the end of a string ("\\") scan/parse error 18583fixed 18584 18585"Revision" is now an object of type INTEGER. 18586 18587 18588 18589------------------------------------------ 18590Summary of changes for this label: 05_02_01 18591 18592Linux: 18593 18594/proc/acpi/event now blocks properly. 18595 18596Removed /proc/sys/acpi. You can still dump your DSDT from 18597/proc/acpi/dsdt. 18598 18599 ACPI CA Core Subsystem: 18600 18601Fixed a problem introduced in the previous label where some of the 18602"small" resource descriptor types were not recognized. 18603 18604Improved error messages for the case where an ASL Field is outside 18605the range of the parent operation region. 18606 18607 ASL Compiler, version X2018: 18608 18609 18610Added error detection for ASL Fields that extend beyond the length 18611of the parent operation region (only if the length of the region 18612is known at compile time.) This includes fields that have a 18613minimum access width that is smaller than the parent region, and 18614individual field units that are partially or entirely beyond the 18615extent of the parent. 18616 18617 18618 18619------------------------------------------ 18620Summary of changes for this label: 04_27_01 18621 18622 ACPI CA Core Subsystem: 18623 18624Fixed a problem where the namespace mutex could be released at the 18625wrong time during execution of AcpiRemoveAddressSpaceHandler. 18626 18627Added optional thread ID output for debug traces, to simplify 18628debugging of multiple threads. Added context switch notification 18629when the debug code realizes that a different thread is now 18630executing ACPI code. 18631 18632Some additional external data types have been prefixed with the 18633string "ACPI_" for consistency. This may effect existing code. 18634The data types affected are the external callback typedefs - e.g., 18635 18636WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18637 18638 Linux: 18639 18640Fixed an issue with the OSL semaphore implementation where a 18641thread was waking up with an error from receiving a SIGCHLD 18642signal. 18643 18644Linux version of ACPI CA now uses the system C library for string 18645manipulation routines instead of a local implementation. 18646 18647Cleaned up comments and removed TBDs. 18648 18649 ASL Compiler, version X2017: 18650 18651Enhanced error detection and reporting for all file I/O 18652operations. 18653 18654 Documentation: 18655 18656Programmer Reference updated to version 1.06. 18657 18658 18659 18660------------------------------------------ 18661Summary of changes for this label: 04_13_01 18662 18663 ACPI CA Core Subsystem: 18664 18665Restructured support for BufferFields and RegionFields. 18666BankFields support is now fully operational. All known 32-bit 18667limitations on field sizes have been removed. Both BufferFields 18668and (Operation) RegionFields are now supported by the same field 18669management code. 18670 18671Resource support now supports QWORD address and IO resources. The 1867216/32/64 bit address structures and the Extended IRQ structure 18673have been changed to properly handle Source Resource strings. 18674 18675A ThreadId of -1 is now used to indicate a "mutex not acquired" 18676condition internally and must never be returned by AcpiOsThreadId. 18677This reserved value was changed from 0 since Unix systems allow a 18678thread ID of 0. 18679 18680Linux: 18681 18682Driver code reorganized to enhance portability 18683 18684Added a kernel configuration option to control ACPI_DEBUG 18685 18686Fixed the EC driver to honor _GLK. 18687 18688ASL Compiler, version X2016: 18689 18690Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18691address space was set to 0, not 0x7f as it should be. 18692 18693 ------------------------------------------ 18694Summary of changes for this label: 03_13_01 18695 18696 ACPI CA Core Subsystem: 18697 18698During ACPI initialization, the _SB_._INI method is now run if 18699present. 18700 18701Notify handler fix - notifies are deferred until the parent method 18702completes execution. This fixes the "mutex already acquired" 18703issue seen occasionally. 18704 18705Part of the "implicit conversion" rules in ACPI 2.0 have been 18706found to cause compatibility problems with existing ASL/AML. The 18707convert "result-to-target-type" implementation has been removed 18708for stores to method Args and Locals. Source operand conversion 18709is still fully implemented. Possible changes to ACPI 2.0 18710specification pending. 18711 18712Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18713length. 18714 18715Fix for compiler warnings for 64-bit compiles. 18716 18717 Linux: 18718 18719/proc output aligned for easier parsing. 18720 18721Release-version compile problem fixed. 18722 18723New kernel configuration options documented in Configure.help. 18724 18725IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18726context" message. 18727 18728 OSPM: 18729 18730Power resource driver integrated with bus manager. 18731 18732Fixed kernel fault during active cooling for thermal zones. 18733 18734Source Code: 18735 18736The source code tree has been restructured. 18737 18738 18739 18740------------------------------------------ 18741Summary of changes for this label: 03_02_01 18742 18743 Linux OS Services Layer (OSL): 18744 18745Major revision of all Linux-specific code. 18746 18747Modularized all ACPI-specific drivers. 18748 18749Added new thermal zone and power resource drivers. 18750 18751Revamped /proc interface (new functionality is under /proc/acpi). 18752 18753New kernel configuration options. 18754 18755 Linux known issues: 18756 18757New kernel configuration options not documented in Configure.help 18758yet. 18759 18760 18761Module dependencies not currently implemented. If used, they 18762should be loaded in this order: busmgr, power, ec, system, 18763processor, battery, ac_adapter, button, thermal. 18764 18765Modules will not load if CONFIG_MODVERSION is set. 18766 18767IBM 600E - entering S5 may reboot instead of shutting down. 18768 18769IBM 600E - Sleep button may generate "Invalid <NULL> context" 18770message. 18771 18772Some systems may fail with "execution mutex already acquired" 18773message. 18774 18775 ACPI CA Core Subsystem: 18776 18777Added a new OSL Interface, AcpiOsGetThreadId. This was required 18778for the deadlock detection code. Defined to return a non-zero, 32- 18779bit thread ID for the currently executing thread. May be a non- 18780zero constant integer on single-thread systems. 18781 18782Implemented deadlock detection for internal subsystem mutexes. We 18783may add conditional compilation for this code (debug only) later. 18784 18785ASL/AML Mutex object semantics are now fully supported. This 18786includes multiple acquires/releases by owner and support for the 18787 18788Mutex SyncLevel parameter. 18789 18790A new "Force Release" mechanism automatically frees all ASL 18791Mutexes that have been acquired but not released when a thread 18792exits the interpreter. This forces conformance to the ACPI spec 18793("All mutexes must be released when an invocation exits") and 18794prevents deadlocked ASL threads. This mechanism can be expanded 18795(later) to monitor other resource acquisitions if OEM ASL code 18796continues to misbehave (which it will). 18797 18798Several new ACPI exception codes have been added for the Mutex 18799support. 18800 18801Recursive method calls are now allowed and supported (the ACPI 18802spec does in fact allow recursive method calls.) The number of 18803recursive calls is subject to the restrictions imposed by the 18804SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18805parameter. 18806 18807Implemented support for the SyncLevel parameter for control 18808methods (ACPI 2.0 feature) 18809 18810Fixed a deadlock problem when multiple threads attempted to use 18811the interpreter. 18812 18813Fixed a problem where the string length of a String package 18814element was not always set in a package returned from 18815AcpiEvaluateObject. 18816 18817Fixed a problem where the length of a String package element was 18818not always included in the length of the overall package returned 18819from AcpiEvaluateObject. 18820 18821Added external interfaces (Acpi*) to the ACPI debug memory 18822manager. This manager keeps a list of all outstanding 18823allocations, and can therefore detect memory leaks and attempts to 18824free memory blocks more than once. Useful for code such as the 18825power manager, etc. May not be appropriate for device drivers. 18826Performance with the debug code enabled is slow. 18827 18828The ACPI Global Lock is now an optional hardware element. 18829 18830 ASL Compiler Version X2015: 18831 18832Integrated changes to allow the compiler to be generated on 18833multiple platforms. 18834 18835Linux makefile added to generate the compiler on Linux 18836 18837 Source Code: 18838 18839All platform-specific headers have been moved to their own 18840subdirectory, Include/Platform. 18841 18842New source file added, Interpreter/ammutex.c 18843 18844New header file, Include/acstruct.h 18845 18846 Documentation: 18847 18848The programmer reference has been updated for the following new 18849interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18850 18851 ------------------------------------------ 18852Summary of changes for this label: 02_08_01 18853 18854Core ACPI CA Subsystem: Fixed a problem where an error was 18855incorrectly returned if the return resource buffer was larger than 18856the actual data (in the resource interfaces). 18857 18858References to named objects within packages are resolved to the 18859 18860full pathname string before packages are returned directly (via 18861the AcpiEvaluateObject interface) or indirectly via the resource 18862interfaces. 18863 18864Linux OS Services Layer (OSL): 18865 18866Improved /proc battery interface. 18867 18868 18869Added C-state debugging output and other miscellaneous fixes. 18870 18871ASL Compiler Version X2014: 18872 18873All defined method arguments can now be used as local variables, 18874including the ones that are not actually passed in as parameters. 18875The compiler tracks initialization of the arguments and issues an 18876exception if they are used without prior assignment (just like 18877locals). 18878 18879The -o option now specifies a filename prefix that is used for all 18880output files, including the AML output file. Otherwise, the 18881default behavior is as follows: 1) the AML goes to the file 18882specified in the DSDT. 2) all other output files use the input 18883source filename as the base. 18884 18885 ------------------------------------------ 18886Summary of changes for this label: 01_25_01 18887 18888Core ACPI CA Subsystem: Restructured the implementation of object 18889store support within the interpreter. This includes support for 18890the Store operator as well as any ASL operators that include a 18891target operand. 18892 18893Partially implemented support for Implicit Result-to-Target 18894conversion. This is when a result object is converted on the fly 18895to the type of an existing target object. Completion of this 18896support is pending further analysis of the ACPI specification 18897concerning this matter. 18898 18899CPU-specific code has been removed from the subsystem (hardware 18900directory). 18901 18902New Power Management Timer functions added 18903 18904Linux OS Services Layer (OSL): Moved system state transition code 18905to the core, fixed it, and modified Linux OSL accordingly. 18906 18907Fixed C2 and C3 latency calculations. 18908 18909 18910We no longer use the compilation date for the version message on 18911initialization, but retrieve the version from AcpiGetSystemInfo(). 18912 18913Incorporated for fix Sony VAIO machines. 18914 18915Documentation: The Programmer Reference has been updated and 18916reformatted. 18917 18918 18919ASL Compiler: Version X2013: Fixed a problem where the line 18920numbering and error reporting could get out of sync in the 18921presence of multiple include files. 18922 18923 ------------------------------------------ 18924Summary of changes for this label: 01_15_01 18925 18926Core ACPI CA Subsystem: 18927 18928Implemented support for type conversions in the execution of the 18929ASL Concatenate operator (The second operand is converted to 18930match the type of the first operand before concatenation.) 18931 18932Support for implicit source operand conversion is partially 18933implemented. The ASL source operand types Integer, Buffer, and 18934String are freely interchangeable for most ASL operators and are 18935converted by the interpreter on the fly as required. Implicit 18936Target operand conversion (where the result is converted to the 18937target type before storing) is not yet implemented. 18938 18939Support for 32-bit and 64-bit BCD integers is implemented. 18940 18941Problem fixed where a field read on an aligned field could cause a 18942read past the end of the field. 18943 18944New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18945does not return a value, but the caller expects one. (The ASL 18946compiler flags this as a warning.) 18947 18948ASL Compiler: 18949 18950Version X2011: 189511. Static typechecking of all operands is implemented. This 18952prevents the use of invalid objects (such as using a Package where 18953an Integer is required) at compile time instead of at interpreter 18954run-time. 189552. The ASL source line is printed with ALL errors and warnings. 189563. Bug fix for source EOF without final linefeed. 189574. Debug option is split into a parse trace and a namespace trace. 189585. Namespace output option (-n) includes initial values for 18959integers and strings. 189606. Parse-only option added for quick syntax checking. 189617. Compiler checks for duplicate ACPI name declarations 18962 18963Version X2012: 189641. Relaxed typechecking to allow interchangeability between 18965strings, integers, and buffers. These types are now converted by 18966the interpreter at runtime. 189672. Compiler reports time taken by each internal subsystem in the 18968debug output file. 18969 18970 18971 ------------------------------------------ 18972Summary of changes for this label: 12_14_00 18973 18974ASL Compiler: 18975 18976This is the first official release of the compiler. Since the 18977compiler requires elements of the Core Subsystem, this label 18978synchronizes everything. 18979 18980------------------------------------------ 18981Summary of changes for this label: 12_08_00 18982 18983 18984Fixed a problem where named references within the ASL definition 18985of both OperationRegions and CreateXXXFields did not work 18986properly. The symptom was an AE_AML_OPERAND_TYPE during 18987initialization of the region/field. This is similar (but not 18988related internally) to the problem that was fixed in the last 18989label. 18990 18991Implemented both 32-bit and 64-bit support for the BCD ASL 18992functions ToBCD and FromBCD. 18993 18994Updated all legal headers to include "2000" in the copyright 18995years. 18996 18997 ------------------------------------------ 18998Summary of changes for this label: 12_01_00 18999 19000Fixed a problem where method invocations within the ASL definition 19001of both OperationRegions and CreateXXXFields did not work 19002properly. The symptom was an AE_AML_OPERAND_TYPE during 19003initialization of the region/field: 19004 19005 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19006[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19007(0x3005) 19008 19009Fixed a problem where operators with more than one nested 19010subexpression would fail. The symptoms were varied, by mostly 19011AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19012problem that has gone unnoticed until now. 19013 19014 Subtract (Add (1,2), Multiply (3,4)) 19015 19016Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19017previous build (The prefix part of a relative path was handled 19018incorrectly). 19019 19020Fixed a problem where Operation Region initialization failed if 19021the operation region name was a "namepath" instead of a simple 19022"nameseg". Symptom was an AE_NO_OPERAND error. 19023 19024Fixed a problem where an assignment to a local variable via the 19025indirect RefOf mechanism only worked for the first such 19026assignment. Subsequent assignments were ignored. 19027 19028 ------------------------------------------ 19029Summary of changes for this label: 11_15_00 19030 19031ACPI 2.0 table support with backwards support for ACPI 1.0 and the 190320.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19033the AML interpreter does NOT have support for the new 2.0 ASL 19034grammar terms at this time. 19035 19036All ACPI hardware access is via the GAS structures in the ACPI 2.0 19037FADT. 19038 19039All physical memory addresses across all platforms are now 64 bits 19040wide. Logical address width remains dependent on the platform 19041(i.e., "void *"). 19042 19043AcpiOsMapMemory interface changed to a 64-bit physical address. 19044 19045The AML interpreter integer size is now 64 bits, as per the ACPI 190462.0 specification. 19047 19048For backwards compatibility with ACPI 1.0, ACPI tables with a 19049revision number less than 2 use 32-bit integers only. 19050 19051Fixed a problem where the evaluation of OpRegion operands did not 19052always resolve them to numbers properly. 19053 19054------------------------------------------ 19055Summary of changes for this label: 10_20_00 19056 19057Fix for CBN_._STA issue. This fix will allow correct access to 19058CBN_ OpRegions when the _STA returns 0x8. 19059 19060Support to convert ACPI constants (Ones, Zeros, One) to actual 19061values before a package object is returned 19062 19063Fix for method call as predicate to if/while construct causing 19064incorrect if/while behavior 19065 19066Fix for Else block package lengths sometimes calculated wrong (if 19067block > 63 bytes) 19068 19069Fix for Processor object length field, was always zero 19070 19071Table load abort if FACP sanity check fails 19072 19073Fix for problem with Scope(name) if name already exists 19074 19075Warning emitted if a named object referenced cannot be found 19076(resolved) during method execution. 19077 19078 19079 19080 19081 19082------------------------------------------ 19083Summary of changes for this label: 9_29_00 19084 19085New table initialization interfaces: AcpiInitializeSubsystem no 19086longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19087necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19088>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19089AcpiLoadTables 19090 19091Note: These interface changes require changes to all existing OSDs 19092 19093The PCI_Config default address space handler is always installed 19094at the root namespace object. 19095 19096------------------------------------------- 19097Summary of changes for this label: 09_15_00 19098 19099The new initialization architecture is implemented. New 19100interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19101AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19102 19103(Namespace is automatically loaded when a table is loaded) 19104 19105The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1910652 bytes to 32 bytes. There is usually one of these for every 19107namespace object, so the memory savings is significant. 19108 19109Implemented just-in-time evaluation of the CreateField operators. 19110 19111Bug fixes for IA-64 support have been integrated. 19112 19113Additional code review comments have been implemented 19114 19115The so-called "third pass parse" has been replaced by a final walk 19116through the namespace to initialize all operation regions (address 19117spaces) and fields that have not yet been initialized during the 19118execution of the various _INI and REG methods. 19119 19120New file - namespace/nsinit.c 19121 19122------------------------------------------- 19123Summary of changes for this label: 09_01_00 19124 19125Namespace manager data structures have been reworked to change the 19126primary object from a table to a single object. This has 19127resulted in dynamic memory savings of 3X within the namespace and 191282X overall in the ACPI CA subsystem. 19129 19130Fixed problem where the call to AcpiEvFindPciRootBuses was 19131inadvertently left commented out. 19132 19133Reduced the warning count when generating the source with the GCC 19134compiler. 19135 19136Revision numbers added to each module header showing the 19137SourceSafe version of the file. Please refer to this version 19138number when giving us feedback or comments on individual modules. 19139 19140The main object types within the subsystem have been renamed to 19141clarify their purpose: 19142 19143ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19144ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19145ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19146 19147NOTE: no changes to the initialization sequence are included in 19148this label. 19149 19150------------------------------------------- 19151Summary of changes for this label: 08_23_00 19152 19153Fixed problem where TerminateControlMethod was being called 19154multiple times per method 19155 19156Fixed debugger problem where single stepping caused a semaphore to 19157be oversignalled 19158 19159Improved performance through additional parse object caching - 19160added ACPI_EXTENDED_OP type 19161 19162------------------------------------------- 19163Summary of changes for this label: 08_10_00 19164 19165Parser/Interpreter integration: Eliminated the creation of 19166complete parse trees for ACPI tables and control methods. 19167Instead, parse subtrees are created and then deleted as soon as 19168they are processed (Either entered into the namespace or executed 19169by the interpreter). This reduces the use of dynamic kernel 19170memory significantly. (about 10X) 19171 19172Exception codes broken into classes and renumbered. Be sure to 19173recompile all code that includes acexcep.h. Hopefully we won't 19174have to renumber the codes again now that they are split into 19175classes (environment, programmer, AML code, ACPI table, and 19176internal). 19177 19178Fixed some additional alignment issues in the Resource Manager 19179subcomponent 19180 19181Implemented semaphore tracking in the AcpiExec utility, and fixed 19182several places where mutexes/semaphores were being unlocked 19183without a corresponding lock operation. There are no known 19184semaphore or mutex "leaks" at this time. 19185 19186Fixed the case where an ASL Return operator is used to return an 19187unnamed package. 19188 19189------------------------------------------- 19190Summary of changes for this label: 07_28_00 19191 19192Fixed a problem with the way addresses were calculated in 19193AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19194manifested itself when a Field was created with WordAccess or 19195DwordAccess, but the field unit defined within the Field was less 19196 19197than a Word or Dword. 19198 19199Fixed a problem in AmlDumpOperands() module's loop to pull 19200operands off of the operand stack to display information. The 19201problem manifested itself as a TLB error on 64-bit systems when 19202accessing an operand stack with two or more operands. 19203 19204Fixed a problem with the PCI configuration space handlers where 19205context was getting confused between accesses. This required a 19206change to the generic address space handler and address space 19207setup definitions. Handlers now get both a global handler context 19208(this is the one passed in by the user when executing 19209AcpiInstallAddressSpaceHandler() and a specific region context 19210that is unique to each region (For example, the _ADR, _SEG and 19211_BBN values associated with a specific region). The generic 19212function definitions have changed to the following: 19213 19214typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19215UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19216*HandlerContext, // This used to be void *Context void 19217*RegionContext); // This is an additional parameter 19218 19219typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19220RegionHandle, UINT32 Function, void *HandlerContext, void 19221**RegionContext); // This used to be **ReturnContext 19222 19223------------------------------------------- 19224Summary of changes for this label: 07_21_00 19225 19226Major file consolidation and rename. All files within the 19227interpreter have been renamed as well as most header files. This 19228was done to prevent collisions with existing files in the host 19229OSs -- filenames such as "config.h" and "global.h" seem to be 19230quite common. The VC project files have been updated. All 19231makefiles will require modification. 19232 19233The parser/interpreter integration continues in Phase 5 with the 19234implementation of a complete 2-pass parse (the AML is parsed 19235twice) for each table; This avoids the construction of a huge 19236parse tree and therefore reduces the amount of dynamic memory 19237required by the subsystem. Greater use of the parse object cache 19238means that performance is unaffected. 19239 19240Many comments from the two code reviews have been rolled in. 19241 19242The 64-bit alignment support is complete. 19243 19244------------------------------------------- 19245Summary of changes for this label: 06_30_00 19246 19247With a nod and a tip of the hat to the technology of yesteryear, 19248we've added support in the source code for 80 column output 19249devices. The code is now mostly constrained to 80 columns or 19250less to support environments and editors that 1) cannot display 19251or print more than 80 characters on a single line, and 2) cannot 19252disable line wrapping. 19253 19254A major restructuring of the namespace data structure has been 19255completed. The result is 1) cleaner and more 19256understandable/maintainable code, and 2) a significant reduction 19257in the dynamic memory requirement for each named ACPI object 19258(almost half). 19259 19260------------------------------------------- 19261Summary of changes for this label: 06_23_00 19262 19263Linux support has been added. In order to obtain approval to get 19264the ACPI CA subsystem into the Linux kernel, we've had to make 19265quite a few changes to the base subsystem that will affect all 19266users (all the changes are generic and OS- independent). The 19267effects of these global changes have been somewhat far reaching. 19268Files have been merged and/or renamed and interfaces have been 19269renamed. The major changes are described below. 19270 19271Osd* interfaces renamed to AcpiOs* to eliminate namespace 19272pollution/confusion within our target kernels. All OSD 19273interfaces must be modified to match the new naming convention. 19274 19275Files merged across the subsystem. A number of the smaller source 19276and header files have been merged to reduce the file count and 19277increase the density of the existing files. There are too many 19278to list here. In general, makefiles that call out individual 19279files will require rebuilding. 19280 19281Interpreter files renamed. All interpreter files now have the 19282prefix am* instead of ie* and is*. 19283 19284Header files renamed: The acapi.h file is now acpixf.h. The 19285acpiosd.h file is now acpiosxf.h. We are removing references to 19286the acronym "API" since it is somewhat windowsy. The new name is 19287"external interface" or xface or xf in the filenames.j 19288 19289 19290All manifest constants have been forced to upper case (some were 19291mixed case.) Also, the string "ACPI_" has been prepended to many 19292(not all) of the constants, typedefs, and structs. 19293 19294The globals "DebugLevel" and "DebugLayer" have been renamed 19295"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19296 19297All other globals within the subsystem are now prefixed with 19298"AcpiGbl_" Internal procedures within the subsystem are now 19299prefixed with "Acpi" (with only a few exceptions). The original 19300two-letter abbreviation for the subcomponent remains after "Acpi" 19301- for example, CmCallocate became AcpiCmCallocate. 19302 19303Added a source code translation/conversion utility. Used to 19304generate the Linux source code, it can be modified to generate 19305other types of source as well. Can also be used to cleanup 19306existing source by removing extraneous spaces and blank lines. 19307Found in tools/acpisrc/* 19308 19309OsdUnMapMemory was renamed to OsdUnmapMemory and then 19310AcpiOsUnmapMemory. (UnMap became Unmap). 19311 19312A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19313When set to one, this indicates that the caller wants to use the 19314 19315semaphore as a mutex, not a counting semaphore. ACPI CA uses 19316both types. However, implementers of this call may want to use 19317different OS primitives depending on the type of semaphore 19318requested. For example, some operating systems provide separate 19319 19320"mutex" and "semaphore" interfaces - where the mutex interface is 19321much faster because it doesn't have all the overhead of a full 19322semaphore implementation. 19323 19324Fixed a deadlock problem where a method that accesses the PCI 19325address space can block forever if it is the first access to the 19326space. 19327 19328------------------------------------------- 19329Summary of changes for this label: 06_02_00 19330 19331Support for environments that cannot handle unaligned data 19332accesses (e.g. firmware and OS environments devoid of alignment 19333handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19334been added (via configurable macros) in these three areas: - 19335Transfer of data from the raw AML byte stream is done via byte 19336moves instead of word/dword/qword moves. - External objects are 19337aligned within the user buffer, including package elements (sub- 19338objects). - Conversion of name strings to UINT32 Acpi Names is now 19339done byte-wise. 19340 19341The Store operator was modified to mimic Microsoft's 19342implementation when storing to a Buffer Field. 19343 19344Added a check of the BM_STS bit before entering C3. 19345 19346The methods subdirectory has been obsoleted and removed. A new 19347file, cmeval.c subsumes the functionality. 19348 19349A 16-bit (DOS) version of AcpiExec has been developed. The 19350makefile is under the acpiexec directory. 19351