1---------------------------------------- 2 3 425 September 2020. Summary of changes for version 20200925: 5 6This release is available at https://acpica.org/downloads 7 8 91) ACPICA kernel-resident subsystem: 10 11Preserve memory opregion mappings. The ACPICA's strategy with respect to 12the handling of memory mappings associated with memory operation regions 13is to avoid mapping the entire region at once which may be problematic at 14least in principle (for example, it may lead to conflicts with 15overlapping mappings having different attributes created by drivers). It 16may also be wasteful, because memory opregions on some systems take up 17vastchunks of address space while the fields in those regions actually 18accessed by AML are sparsely distributed. 19 20For this reason, a one-page "window" is mapped for a given opregion on 21the first memory access through it and if that "window" does not cover an 22address range accessed through that opregion subsequently, it is unmapped 23and a new "window" is mapped to replace it. Next, if the new "window" is 24not sufficient to access memory through the opregion in question in the 25future, it will be replaced with yet another "window" and so on. That 26may lead to a suboptimal sequence of memory mapping and unmapping 27operations, for example if two fields in one opregion separated from each 28other by a sufficiently wide chunk of unused address space are accessed 29in an alternating pattern. 30 31Added support for 64 bit risc-v compilation. Useful for acpica tools and 32incorporating ACPICA into the Firmware Test Suite. Colin Ian King 33<colin.king@canonical.com>. 34 35Added support for SMBus predefined names (from SMBus Control Method 36Interface Specification, Version 1.0, December 10, 1999. New predefined 37names: 38 _SBA 39 _SBI 40 _SBR 41 _SBT 42 _SBW 43 44AML Disassembler: Added a new command, "All <NameSeg". This command will 45evaluate all objects in the current namespace whose NameString contains 46the input NameSeg as the last element of the NameString. Useful for 47debugging. 48 49 502) iASL Compiler/Disassembler and ACPICA tools: 51 52iASL: fixed a crash that occurred when predefined objects return packages 53with lengths that exceed the initializer list. 54 55iASL: added more detail to external resolution error message when 56compiling multiple definition blocks. 57 58iASL: improve alias analysis by saving object type. If the alias is a 59method type, the parameter count is also recorded. 60 61AcpiExec: Increase the default loop timeout value. Was 1 second, is now 6210 seconds. Prevents unnecessary timeouts when executing control methods 63from the command line. 64 65AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 66list. Includes: 67 Memory Device 68 Generic Buttons Device 69 NVDIMM Root Device 70 Control Method Battery 71 Device Graphs for _DSD method 72 Hierarchical Data Extension 73....ARM CoreSight Graph 74 75---------------------------------------- 76 77 7817 July 2020. Summary of changes for version 20200717: 79 80This release is available at https://acpica.org/downloads 81 82 831) ACPICA kernel-resident subsystem: 84 85Do not increment OperationRegion reference counts for field units. Recent 86server firmware has revealed that this reference count can overflow on 87large servers that declare many field units (thousands) under the same 88OperationRegion. This occurs because each field unit declaration will add 89a reference count to the source OperationRegion. This release solves the 90reference count overflow for OperationRegion objects by preventing 91fieldUnits from incrementing their parent OperationRegion's reference 92count. 93 94Replaced one-element arrays with flexible-arrays, which were introduced 95in C99. 96 97Restored the readme file containing the directions for generation of 98ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 99located at: generate/msvc2017/readme.txt 100 1012) iASL Compiler/Disassembler and ACPICA tools: 102 103iASL: Fixed a regression found in version 20200214. Prevent iASL from 104emitting an extra byte of garbage data when control methods declared a 105single parameter type without using braces. This extra byte is known to 106cause a blue screen on the Windows AML interpreter. 107 108iASL: Made a change to allow external declarations to specify the type of 109a named object even when some name segments are not defined. 110This change allows the following ASL code to compile (When DEV0 is not 111defined or not defined yet): 112 113 External (\_SB.DEV0.OBJ1, IntObj) 114 External (\_SB.DEV0, DeviceObj) 115 116iASL: Fixed a problem where method names in "Alias ()" statement could be 117misinterpreted. They are now interpreted correctly as method invocations. 118 119iASL: capture a method parameter count (Within the Method info segment, 120as well as the argument node) when using parameter type lists. 121 122---------------------------------------- 123 124 12528 May 2020. Summary of changes for version 20200528: 126 127 1281) ACPICA kernel-resident subsystem: 129 130Removed old/obsolete Visual Studio files which were used to build the 131Windows versions of the ACPICA tools. Since we have moved to Visual 132Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 133project files. The new subdirectory and solution file are located at: 134 135 acpica/generate/msvc2017/AcpiComponents.sln 136 137 1382) iASL Compiler/Disassembler and ACPICA tools: 139 140iASL: added support for a new OperationRegion Address Space (subtype): 141PlatformRtMechanism. Support for this new keyword is being released for 142early prototyping. It will appear in the next release of the ACPI 143specification. 144 145iASL: do not optimize the NameString parameter of the CondRefOf operator. 146In the previous iASL compiler release, the NameString parameter of the 147CondRefOf was optimized. There is evidence that some implementations of 148the AML interpreter do not perform the recursive search-to-parent search 149during the execution of the CondRefOf operator. Therefore, the CondRefOf 150operator behaves differently when the NameString parameter is a single 151name segment (a NameSeg) as opposed to a full NamePath (starting at the 152root scope) or a NameString containing parent prefixes. 153 154iASL: Prevent an inadvertent remark message. This change prevents a 155remark if within a control method the following exist: 1561) An Operation Region is defined, and 1572) A Field operator is defined that refers to the region. 158This happens because at the top level, the Field operator does not 159actually create a new named object, it simply references the operation 160region. 161 162Removed support for the acpinames utility. The acpinames was a simple 163utility used to populate and display the ACPI namespace without executing 164any AML code. However, ACPICA now supports executable opcodes outside of 165control methods. This means that executable AML opcodes such as If and 166Store opcodes need to be executed during table load. Therefore, acpinames 167would need to be updated to match the same behavior as the acpiexec 168utility and since acpiexec can already dump the entire namespace (via the 169'namespace' command), we no longer have the need to maintain acpinames. 170 171 In order to dump the contents of the ACPI namespace using acpiexec, 172execute the following command from the command line: 173 174 acpiexec -b "n" [aml files] 175 176---------------------------------------- 177 178 17930 April 2020. Summary of changes for version 20200430: 180 1811) ACPICA kernel-resident subsystem: 182 183Cleaned up the coding style of a couple of global variables 184(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 185AcpiProtocolLengths was made static, and the definition of 186AcpiGbl_NextCmdNum was moved to acglobal.h. 187 188 1892) iASL Compiler/Disassembler and ACPICA tools: 190 191iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 192associated with a field. 193 194Disassembler: has been made more resilient so that it will continue to 195parse AML even if the AML generates ACPI namespace errors. This enables 196iASL to disassemble some AML that may have been compiled using older 197versions of iASL that no longer compile with newer versions of iASL. 198 199iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 200was a mixup where _NIG required one parameter and _NIH required zero 201parameters. This change swaps these parameter requirements. Now it is 202required that _NIH must be called with one parameter and _NIG requires 203zero parameters. 204 205iASL: Allow use of undefined externals as long as they are protected by 206an if (CondRefOf (...)) block when compiling multiple definition blocks. 207 208iASL: Fixed the type override behavior of named objects that are declared 209as External. External declarations will no longer override the type of 210the actual definition if it already exists. 211 212AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 213command line wildcard support on Windows. Note: the AcpiNames utility is 214essentially redundant with the AcpiExec utility (using the "namespace" 215command) and is therefore deprecated. It will be removed in future 216releases of ACPICA. 217 218Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 219operators. The disassembler is intended to emit existing ASL code as-is. 220Therefore, error messages emitted during disassembly should be ignored or 221handled in a way such that the disassembler can continue to parse the 222AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 223parsing for create operators in order to complete parsing ASL termlists. 224 225iASL DataTable Compiler: IVRS table: fix potentially uninitialized 226variable warning. Some compilers catch potential uninitialized variables. 227This is done by examining branches of if/else statements. This change 228replaces an "else if" with an "else" to fix the uninitialized variable 229warning. 230 231 232---------------------------------------- 23326 March 2020. Summary of changes for version 20200326: 234 235 2361) ACPICA kernel-resident subsystem: 237 238Performed a code clean-up to prevent build errors on early versions of 239GCC-10. 240 241Added the NHLT table signature. iASL data table compiler/disassembler 242support for this table is coming soon. 243 244 2452) iASL Compiler/Disassembler and ACPICA tools: 246 247AcpiExec: Fixed several problems with the namespace initialization file 248(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 249errors, several seg faults, and enhancements to line parsing within the 250init file. In addition, each object found in the init file and it's new 251value is displayed, as well as any such entries that do not have a 252corresponding name in the namespace. For reference, the syntax for the 253various supported data types are presented below: 254 PCHG 0x777788889999BBBB // Integer 255 \DEV1.STR1 "XYZ" // String 256 BUF1 (88 99 AA) // Buffer 257 PKG1 [0x1111 0x2222] // Package 258 \BF1 0x7980 // BufferField 259 RCRV 0x0123456789ABCDEF // Field Unit 260 261iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 262can be used anywhere in a given ASL file to configure iASL to expect an 263iASL compiler error code on the line where this macro was placed. If the 264error code does not exist, an error is generated. This is intended to be 265used for ACPICA's ASL test suite, but can be used by ASL developers as 266well. 267 268iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 269IVRS table parsing supported only IVHD type 10h structures. Parsing an 270IVHD type 11h caused the iasl to report unknown subtable type. Add 271necessary structure definition for IVHD type 11h and apply correct 272parsing method based on subtable type. Micha? ?ygowski. 273 274iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 275According to AMD IOMMU Specification Revision 3.05 the reserved field 276should be IOMMU Feature Reporting. Change the name of the field to the 277correct one. Micha? ?ygowski. 278 279acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 280based on suggestions by David Seifert and Benjamin Berg. 281 282iASL: table compiler: removed an unused variable (DtCompilerParserResult) 283causing linking errors. Patch based on suggestions by David Seifert and 284Benjamin Berg. 285 286iASL: table compiler: make LexBuffer static to avoid linking errors in 287newer compilers. Patch based on suggestions by David Seifert and Benjamin 288Berg. 289 290iASL: fixed type matching between External and Named objects. External 291object types can only be expressed with ACPI object type values that are 292defined in the ACPI spec. However, iASL uses ACPI object type values that 293are local to ACPICA in addition to the values defined in the ACPI spec. 294This change implements type matching to map some object type values 295specific to ACPICA to ones that are defined in the ACPI spec. 296 297iASL: Dropped the type mismatch compiler error that can arise from 298External declarations to a warning. This warning can occur when there is 299a type difference between the external declaration and the actual object 300declaration (when compiling multiple files/modules simultaneously). 301 302iASL: removed an incorrect error message regarding externals. This change 303removes an incorrect error that is emitted when a duplicate external 304declaration does not contain a type that opens a scope. This is incorrect 305because the duplicate external with conflicting types are already caught 306by iASL and it doesn't make any sense to enforce what this conflicting 307type should be. 308 309AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 310surrounded by parens. Otherwise, a logical statement that applies a 311logical not operator to this macro could result in a computation that 312applies the operator to the left side of the logical and but not the 313right. Reported-by: John Levon <john.levon@joyent.com> 314 315Fixed a problem with the local version of sprint(): On 32-bit, the 316provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 317String + Size will wrap, meaning End < Start, and 318AcpiUtBoundStringOutput() will never output anything as a result. The 319symptom seen of this was acpixtract failing to output anything -- with a 320custom build that included utprint.c. Signed-off-by: John Levon 321<john.levon@joyent.com> 322 323iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 324ACPI specification. 325 326 327---------------------------------------- 32814 February 2020. Summary of changes for version 20200214: 329 330 3311) ACPICA kernel-resident subsystem: 332 333Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 334in a guest when it receives a sleep trigger from the hypervisor. When the 335guest resumes from this power state, it does not see the SleepEnabled 336bit. In other words, the sleepHibernation (S4) is triggered in a guest 337when it receives a sleep trigger from the hypervisor. When the guest 338resumes from this power state, it does not see the SleepEnabled bit. In 339other words, the sleep button is not enabled on waking from an S4 state. 340This causes subsequent invocation of sleep state to fail since the 341guest.button is not enabled on waking from an S4 state. This causes 342subsequent invocation of sleep state to fail in the guest. Fix this 343problem by enabling the sleep button in ACPI legacy wake. From Anchal 344Agarwal <anchalag@amazon.com>. 345 346Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 347for checking the status bits of all enabled GPEs in one go. It is needed 348to distinguish spurious SCIs from genuine ones when deciding whether or 349not to wake up the system from suspend-to-idle. 350 351Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 352using HOST in their environment to represent the host name for their 353machines. Avoid this problem by renaming this variable from HOST to 354ACPI_HOST. 355 356MSVC 2017 project files: Enable multiprocessor generation to improve 357build performance. 358 359Added a macro to get the byte width of a Generic Address structure. New 360ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 361ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 362 363 3642) iASL Compiler/Disassembler and ACPICA tools: 365 366iASL: Implemented full support for the (optional, rarely used) ReturnType 367and ParameterTypesList for the Method, Function, and External operators. 368For Method declarations, the number of individual ParameterTypes must 369match the declaration of the number of arguments (NumArgs). This also 370Fixes a problem with the External operator where extra/extraneous bytes 371were emitted in the AML code if the optional ReturnType/ParameterTypes 372were specified for a MethodObj declaration. 373New error message: 3741) Method NumArgs count does not match length of ParameterTypes list 375 376iASL: Implemented detection of type mismatches between External 377declarations and named object declarations. Also, detect type mismatches 378between multiple External declarations of the same Name. 379New error messages: 3801) Type mismatch between external declaration and actual object 381declaration detected 3822) Type mismatch between multiple external declarations detected 383 384iASL: Implemented new error messages for External operators that specify 385a ReturnType and/or ParameterTypesList for any object type other than 386control methods (MethodObj). 387New error messages: 3881) Return type is only allowed for Externals declared as MethodObj 3892) Parameter type is only allowed for Externals declared as MethodObj 390 391iASL: Implemented two new remark/warning messages for ASL code that 392creates named objects from within a control method. This is very 393inefficient since the named object must be created and deleted each time 394the method is executed. 395New messages: 3961) Creation of named objects within a method is highly inefficient, use 397globals or method local variables instead (remark) 3982) Static OperationRegion should be declared outside control method 399(warning) 400 401iASL: Improved illegal forward reference detection by adding support to 402detect forward-reference method invocations. 403 404iASL: Detect and issue an error message for NameStrings that contain too 405many individual NameSegs (>255). This is an AML limitation that is 406defined in the ACPI specification. 407New message: 4081) NameString contains too many NameSegs (>255) 409 410acpidump: windows: use GetSystemFirmwareTable API for all tables except 411SSDT. By using this API, acpidump is able to get all tables in the XSDT 412 413iASL: Removed unused parser file and updated msvc2017 project files. 414Removed the obsolete AslCompiler.y from the repository. 415 416iASL: msvc2017: Fixed macros in the file dependency list to prevent 417unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 418 419Disassembler: Prevent spilling error messages to the output file. All 420errors are directed to the console instead. These error messages 421prevented re-compilation of the resulting disassembled ASL output file 422(.DSL). 423 424 425---------------------------------------- 42610 January 2020. Summary of changes for version 20200110: 427 428 4291) ACPICA kernel-resident subsystem: 430 431Updated all copyrights to 2020. This affects all ACPICA source code 432modules. 433 434 4352) iASL Compiler/Disassembler and ACPICA tools: 436 437ASL test suite (ASLTS): Updated all copyrights to 2020. 438 439Tools and utilities: Updated all signon copyrights to 2020. 440 441iASL: fix forward reference analysis for field declarations. Fixes 442forward reference analysis for field declarations by searching the 443parent scope for the named object when the object is not present in 444the current scope. 445 446iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 447full pathname of the name that already exists is printed. 448 449iASL: Enhance duplicate Case() detection for buffers. Add check for 450buffers with no initializer list (these buffers will be filled with 451zeros at runtime.) 452 453 454---------------------------------------- 45513 December 2019. Summary of changes for version 20191213: 456 457 4581) ACPICA kernel-resident subsystem: 459 460Return a Buffer object for all fields created via the CreateField 461operator. Previously, an Integer would be returned if the size of 462the field was less than or equal to the current size of an Integer. 463Although this goes against the ACPI specification, it provides 464compatibility with other ACPI implementations. Also updated the 465ASLTS test suite to reflect this new behavior. 466 4672) iASL Compiler/Disassembler and ACPICA tools: 468 469iASL: Implemented detection of (and throw an error for) duplicate 470values for Case statements within a single Switch statement. Duplicate 471Integers, Strings, and Buffers are supported. 472 473iASL: Fix error logging issue during multiple file compilation -- 474Switch to the correct input file during error node creation. 475 476iASL: For duplicate named object creation, now emit an error instead 477of a warning - since this will cause a runtime error. 478 479AcpiSrc: Add unix line-ending support for non-Windows builds. 480 481iASL: Add an error condition for an attempt to create a NameString 482with > 255 NameSegs (the max allowable via the AML definition). 483 484 485---------------------------------------- 48618 October 2019. Summary of changes for version 20191018: 487 488 4891) ACPICA kernel-resident subsystem: 490 491Debugger: added a new command: ?Fields [address space ID]?. This command 492dumps the contents of all field units that are defined within the 493namespace with a particular address space ID. 494 495Modified the external interface AcpiLoadTable() to return a table index. 496This table index can be used for unloading a table for debugging. 497 ACPI_STATUS 498 AcpiLoadTable ( 499 ACPI_TABLE_HEADER *Table, 500 UINT32 *TableIndex)) 501 502Implemented a new external interface: AcpiUnloadTable() This new function 503takes a table index as an argument and unloads the table. Useful for 504debugging only. 505 ACPI_STATUS 506 AcpiUnloadTable ( 507 UINT32 TableIndex)) 508 509Ported the AcpiNames utility to use the new table initialization 510sequence. The utility was broken before this change. Also, it was 511required to include most of the AML interpreter into the utility in order 512to process table initialization (module-level code execution.) 513 514Update for results from running Clang V8.0.1. This fixes all "dead 515assignment" warnings. There are still several "Dereference of NULL 516pointer" warnings, but these have been found to be false positive 517warnings. 518 519 5202) iASL Compiler/Disassembler and ACPICA tools: 521 522iASL: numerous table compiler changes to ensure that the usage of 523yacc/bison syntax is POSIX-compliant. 524 525iASL/disassembler: several simple bug fixes in the data table 526disassembler. 527 528Acpiexec: expanded the initialization file (the -fi option) to initialize 529strings, buffers, packages, and field units. 530 531 532---------------------------------------- 53316 August 2019. Summary of changes for version 20190816: 534 535This release is available at https://acpica.org/downloads 536 537 5381) ACPICA kernel-resident subsystem: 539 540Modified the OwnerId mechanism to allow for more Owner Ids. The previous 541limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 542exceptions on machines with a large number of initialization threads, 543many CPU cores and nested initialization control methods. 544 545Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 546checking if the given GPE (as represented by a GPE device handle and a 547GPE number) is currently active and dispatching it (if that's the case) 548outside of interrupt context. 549 550Table load: exit the interpreter before initializing objects within the 551new table This prevents re-acquiring the interpreter lock when loading 552tables 553 554Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 555uk Kim 556 557Macros: removed pointer math on a null pointer. Causes warnings on some 558compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 559instead of using arithmetic. 560 561Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 562across all "printf-like" internal functions. Also, cleanup all calls to 563such functions (both in 32-bit mode and 64-bit mode) now that they are 564analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 565 566 5672) iASL Compiler/Disassembler and ACPICA tools: 568 569iASL: implemented a new data table compiler flex/bison front-end. This 570change is internal and is not intended to result in changes to the 571compiled code. This new compiler front-end can be invoked using the -tp 572option for now, until the old mechanism is removed. 573 574ASLTS: Implemented a new data table compiler test suite. This test suite 575generates all table templates and compile/disassemble/re-compile/binary- 576compare each file. 577 578iASL: return -1 if AML files were not generated due to compiler errors 579 580iASL: added a warning on use of the now-legacy ASL Processor () keyword. 581 582iASL: added an error on _UID object declaration that returns a String 583within a Processor () declaration. A _UID for a processor must be an 584Integer. 585 586iASL: added a null terminator to name strings that consist only of 587multiple parent prefixes (^) 588 589iASL: added support to compile both ASL and data table files in a single 590command. 591 592Updated the tool generation project files that were recently migrated to 593MSVC 2017 to eliminate all new warnings. The new project files appear in 594the directory \acpica\generate\msvc2017. This change effectively 595deprecates the older project files in \acpica\generate\msvc9. 596 597 598---------------------------------------- 59903 July 2019. Summary of changes for version 20190703: 600 601 6021) ACPICA kernel-resident subsystem: 603 604Remove legacy module-level support code. There were still some remnants 605of the legacy module-level code executions. Since we no longer support 606this option, this is essentially dead code and has been removed from the 607ACPICA source. 608 609iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 610scope. If these named objects are declared outside the root scope, they 611will not be invoked by any host Operating System. 612 613Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 614one) can be enabled in two situations. First, the GPEs with existing _Lxx 615and _Exx methods are enabled implicitly by ACPICA during system 616initialization. Second, the GPEs without these methods (like GPEs listed 617by _PRW objects for wakeup devices) need to be enabled directly by the 618code that is going to use them (e.g. ACPI power management or device 619drivers). 620 621In the former case, if the status of a given GPE is set to start with, 622its handler method (either _Lxx or _Exx) needs to be invoked to take care 623of the events (possibly) signaled before the GPE was enabled. In the 624latter case, however, the first caller of AcpiEnableGpe() for a given GPE 625should not be expected to care about any events that might be signaled 626through it earlier. In that case, it is better to clear the status of 627the GPE before enabling it, to prevent stale events from triggering 628unwanted actions (like spurious system resume, for example). 629 630For this reason, modify AcpiEvAddGpeReference() to take an additional 631boolean argument indicating whether or not the GPE status needs to be 632cleared when its reference counter changes from zero to one and make 633AcpiEnableGpe() pass TRUE to it through that new argument. 634 635 6362) iASL Compiler/Disassembler and ACPICA tools: 637 638The tool generation process has been migrated to MSVC 2017, and all 639project files have been upgraded. The new project files appear in the 640directory \acpica\generate\msvc2017. This change effectively deprecates 641the older project files in \acpica\generate\msvc9. 642 643iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 644scope. If these named objects are declared outside the root scope, they 645will not be invoked by any host Operating System 646 647---------------------------------------- 64809 May 2019. Summary of changes for version 20190509: 649 650 6511) ACPICA kernel-resident subsystem: 652 653Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 654them") that causes problems with Thunderbolt controllers to occur if a 655dock device is connected at init time (the xhci_hcd and thunderbolt 656modules crash which prevents peripherals connected through them from 657working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 658Dispatch active GPEs at init time") to get undone, so the problem 659addressed by commit ecc1165b8b74 appears again as a result of it. 660 661 6622) iASL Compiler/Disassembler and ACPICA tools: 663 664Reverted iASL: Additional forward reference detection. This change 665reverts forward reference detection for field declarations. The feature 666unintentionally emitted AML bytecode with incorrect package lengths for 667some ASL code related to Fields and OperationRegions. This malformed AML 668can cause systems to crash 669during boot. The malformed AML bytecode is emitted in iASL version 67020190329 and 20190405. 671 672iASL: improve forward reference detection. This change improves forward 673reference detection for named objects inside of scopes. If a parse object 674has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 675a named object that is declared later in the AML bytecode. This is 676allowed if the reference is inside of a method and the declaration is 677outside of a method like so: 678 679DefinitionBlock(...) 680{ 681 Method (TEST) 682 { 683 Return (NUM0) 684 } 685 Name (NUM0,0) 686} 687 688However, if the declaration and reference are both in the same method or 689outside any methods, this is a forward reference and should be marked as 690an error because it would result in runtime errors. 691 692DefinitionBlock(...) 693{ 694 Name (BUFF, Buffer (NUM0) {}) // Forward reference 695 Name (NUM0, 0x0) 696 697 Method (TEST) 698 { 699 Local0 = NUM1 700 Name (NUM1, 0x1) // Forward reference 701 return (Local0) 702 } 703} 704 705iASL: Implemented additional buffer overflow analysis for BufferField 706declarations. Check if a buffer index argument to a create buffer field 707operation is beyond the end of the target buffer. 708 709This affects these AML operators: 710 711 AML_CREATE_FIELD_OP 712 AML_CREATE_BIT_FIELD_OP 713 AML_CREATE_BYTE_FIELD_OP 714 AML_CREATE_WORD_FIELD_OP 715 AML_CREATE_DWORD_FIELD_OP 716 AML_CREATE_QWORD_FIELD_OP 717 718 There are three conditions that must be satisfied in order to allow this 719validation at compile time: 720 721 1) The length of the target buffer must be an integer constant 722 2) The index specified in the create* must be an integer constant 723 3) For CreateField, the bit length argument must be non-zero. 724 725Example: 726 Name (BUF1, Buffer() {1,2}) 727 CreateField (BUF1, 7, 9, CF03) // 3: ERR 728 729dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 730Error 6165 - ^ Buffer index beyond end of 731target buffer 732 733 734---------------------------------------- 73505 April 2019. Summary of changes for version 20190405: 736 737 7381) ACPICA kernel-resident subsystem: 739 740Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 741unconditionally clearing ACPI IRQs during suspend/resume") was added 742earlier to stop clearing of event status bits unconditionally on suspend 743and resume paths. Though this change fixed an issue on suspend path, it 744introduced regressions on several resume paths. In the case of S0ix, 745events are enabled as part of device suspend path. If status bits for the 746events are set when they are enabled, it could result in premature wake 747from S0ix. If status is cleared for any event that is being enabled so 748that any stale events are cleared out. In case of S0ix, events are 749enabled as part of device suspend path. If status bits for the events are 750set when they are enabled, it could result in premature wake from S0ix. 751 752This change ensures that status is cleared for any event that is being 753enabled so that any stale events are cleared out. 754 755 7562) iASL Compiler/Disassembler and ACPICA tools: 757 758iASL: Implemented an enhanced multiple file compilation that combines 759named objects from all input files to a single namespace. With this 760feature, any unresolved external declarations as well as duplicate named 761object declarations can be detected during compilation rather than 762generating errors much later at runtime. The following commands are 763examples that utilize this feature: 764 iasl dsdt.asl ssdt.asl 765 iasl dsdt.asl ssdt1.asl ssdt2.asl 766 iasl dsdt.asl ssdt*.asl 767 768---------------------------------------- 76929 March 2019. Summary of changes for version 20190329: 770 771 7721) ACPICA kernel-resident subsystem: 773 774Namespace support: Remove the address nodes from global list after method 775termination. The global address list contains pointers to namespace nodes 776that represent Operation Regions. This change properly removes Operation 777Region namespace nodes that are declared dynamically during method 778execution. 779 780Linux: Use a different debug default than ACPICA. There was a divergence 781between Linux and the ACPICA codebases. In order to resolve this 782divergence, Linux now declares its own debug default in aclinux.h 783 784Renamed some internal macros to improve code understanding and 785maintenance. The macros below all operate on single 4-character ACPI 786NameSegs, not generic strings (old -> new): 787 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 788 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 789 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 790 791Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 792table. 793 794Test suite: Update makefiles, add PCC operation region support 795 796 7972) iASL Compiler/Disassembler and Tools: 798 799iASL: Implemented additional illegal forward reference detection. Now 800detect and emit an error upon detection of a forward reference from a 801Field to an Operation Region. This will fail at runtime if allowed to 802pass the compiler. 803 804AcpiExec: Add an address list check for dynamic Operation Regions. This 805feature performs a sanity test for each node the global address list. 806This is done in order to ensure that all dynamic operation regions are 807properly removed from the global address list and no dangling pointers 808are left behind. 809 810Disassembler: Improved generation of resource pathnames. This change 811improves the code that generates resource descriptor and resource tag 812pathnames. The original code used a bunch of str* C library functions 813that caused warnings on some compilers. 814 815iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 816function can overwrite buffers if the calling code is not very careful. 817In the case of generating a module/table header, use of memmove is a 818better implementation. 819 820 8213) Status of new features that have not been completed at this time: 822 823iASL: Implementing an enhanced multiple file compilation into a single 824namespace feature (Status): This feature will be released soon, and 825allows multiple ASL files to be compiled into the same single namespace. 826By doing so, any unresolved external declarations as well as duplicate 827named object declarations can be detected during compilation (rather than 828later during runtime). The following commands are examples that utilize 829this feature: 830 iasl dsdt.asl ssdt.asl 831 iasl dsdt.asl ssdt1.asl ssdt2.asl 832 iasl dsdt.asl ssdt*.asl 833 834ASL tutorial status: Feedback is being gathered internally and the 835current plan is to publish this tutorial on the ACPICA website after a 836final review by a tech writer. 837 838---------------------------------------- 83915 February 2019. Summary of changes for version 20190215: 840 841 8420) Support for ACPI specification version 6.3: 843 844Add PCC operation region support for the AML interpreter. This adds PCC 845operation region support in the AML interpreter and a default handler for 846acpiexec. The change also renames the PCC region address space keyword to 847PlatformCommChannel. 848 849Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 850These methods provide OSPM with health information and device boot 851status. 852 853PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 854defines if the trigger needs to be invoked by OSPM before or at the end 855of kernel crash dump processing/handling operation. 856 857SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 858is used for describing devices such as heterogeneous processors, 859accelerators, GPUs, and IO devices with integrated compute or DMA 860engines. 861 862MADT: Add support for statistical profiling in GICC. Statistical 863profiling extension (SPE) is an architecture-specific feature for ARM. 864 865MADT: Add online capable flag. If this bit is set, system hardware 866supports enabling this processor during OS runtime. 867 868New Error Disconnect Recover Notification value. There are a number of 869scenarios where system Firmware in collaboration with hardware may 870disconnect one or more devices from the rest of the system for purposes 871of error containment. Firmware can use this new notification value to 872alert OSPM of such a removal. 873 874PPTT: New additional fields in Processor Structure Flags. These flags 875provide more information about processor topology. 876 877NFIT/Disassembler: Change a field name from "Address Range" to "Region 878Type". 879 880HMAT updates: make several existing fields to be reserved as well as 881rename subtable 0 to "memory proximity domain attributes". 882 883GTDT: Add support for new GTDT Revision 3. This revision adds information 884for the EL2 timer. 885 886iASL: Update the HMAT example template for new fields. 887 888iASL: Add support for the new revision of the GTDT (Rev 3). 889 890 8911) ACPICA kernel-resident subsystem: 892 893AML Parser: fix the main AML parse loop to correctly skip erroneous 894extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 895byte extended opcodes. If an error occurs during an AML table load, the 896AML parser will continue loading the table by skipping the offending 897opcode. This implements a "load table at any cost" philosophy. 898 899 9002) iASL Compiler/Disassembler and Tools: 901 902iASL: Add checks for illegal object references, such as a reference 903outside of method to an object within a method. Such an object is only 904temporary. 905 906iASL: Emit error for creation of a zero-length operation region. Such a 907region is rather pointless. If encountered, a runtime error is also 908implemented in the interpreter. 909 910Debugger: Fix a possible fault with the "test objects" command. 911 912iASL: Makefile: support parent directory filenames containing embedded 913spaces. 914 915iASL: Update the TPM2 template to revision 4. 916 917iASL: Add the ability to report specific warnings or remarks as errors. 918 919Disassembler: Disassemble OEMx tables as actual AML byte code. 920Previously, these tables were treated as "unknown table". 921 922iASL: Add definition and disassembly for TPM2 revision 3. 923 924iASL: Add support for TPM2 rev 3 compilation. 925 926 927---------------------------------------- 92808 January 2019. Summary of changes for version 20190108: 929 930 9311) ACPICA kernel-resident subsystem: 932 933Updated all copyrights to 2019. This affects all source code modules. 934 935 9362) iASL Compiler/Disassembler and Tools: 937 938ASL test suite (ASLTS): Updated all copyrights to 2019. 939 940Tools: Updated all signon copyrights to 2019. 941 942AcpiExec: Added a new option to dump extra information concerning any 943memory leaks detected by the internal object/cache tracking mechanism. - 944va 945 946iASL: Updated the table template for the TPM2 table to the newest version 947of the table (Revision 4) 948 949 950---------------------------------------- 95113 December 2018. Summary of changes for version 20181213: 952 953 9541) ACPICA Kernel-resident Subsystem: 955 956Fixed some buffer length issues with the GenericSerialBus, related to two 957of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 958which are rarely seen in the field. For these, the LEN field of the ASL 959buffer is now ignored. Hans de Goede 960 961Implemented a new object evaluation trace mechanism for control methods 962and data objects. This includes nested control methods. It is 963particularly useful for examining the ACPI execution during system 964initialization since the output is relatively terse. The flag below 965enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 966 #define ACPI_LV_EVALUATION 0x00080000 967 968Examples: 969 Enter evaluation : _SB.PCI0._INI (Method) 970 Exit evaluation : _SB.PCI0._INI 971 Enter evaluation : _OSI (Method) 972 Exit evaluation : _OSI 973 Enter evaluation : _SB.PCI0.TEST (Method) 974 Nested method call : _SB.PCI0.NST1 975 Exit nested method : _SB.PCI0.NST1 976 Exit evaluation : _SB.PCI0.TEST 977 978Added two recently-defined _OSI strings. See 979https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 980osi. 981 "Windows 2018" 982 "Windows 2018.2" 983 984Update for buffer-to-string conversions via the ToHexString ASL operator. 985A "0x" is now prepended to each of the hex values in the output string. 986This provides compatibility with other ACPI implementations. The ACPI 987specification is somewhat vague on this issue. 988 Example output string after conversion: 989"0x01,0x02,0x03,0x04,0x05,0x06" 990 991Return a run-time error for TermArg expressions within individual package 992elements. Although this is technically supported by the ASL grammar, 993other ACPI implementations do not support this either. Also, this fixes a 994fault if this type of construct is ever encountered (it never has been). 995 996 9972) iASL Compiler/Disassembler and Tools: 998 999iASL: Implemented a new compile option (-ww) that will promote individual 1000warnings and remarks to errors. This is intended to enhance the firmware 1001build process. 1002 1003AcpiExec: Implemented a new command-line option (-eo) to support the new 1004object evaluation trace mechanism described above. 1005 1006Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1007instead of a "unknown table" message. 1008 1009AcpiHelp: Improved support for the "special" predefined names such as 1010_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1011used for "xx" and "x". 1012 1013---------------------------------------- 101431 October 2018. Summary of changes for version 20181031: 1015 1016 1017An Operation Region regression was fixed by properly adding address 1018ranges to a global list during initialization. This allows OS to 1019accurately check for overlapping regions between native devices (such as 1020PCI) and Operation regions as well as checking for region conflicts 1021between two Operation Regions. 1022 1023Added support for the 2-byte extended opcodes in the code/feature that 1024attempts to continue parsing during the table load phase. Skip parsing 1025Device declarations (and other extended opcodes) when an error occurs 1026during parsing. Previously, only single-byte opcodes were supported. 1027 1028Cleanup: Simplified the module-level code support by eliminating a 1029useless global variable (AcpiGbl_GroupModuleLeveCode). 1030 1031 10322) iASL Compiler/Disassembler and Tools: 1033 1034iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1035could cause a fault in the preprocessor. This was an inadvertent side- 1036effect from moving more allocations/frees to the local cache/memory 1037mechanism. 1038 1039iASL: Enhanced error detection by validating that all NameSeg elements 1040within a NamePatch actually exist. The previous behavior was spotty at 1041best, and such errors could be improperly ignored at compiler time (never 1042at runtime, however. There are two new error messages, as shown in the 1043examples below: 1044 1045dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1046Error 6161 - ^ One or more objects within 1047the Pathname do not exist (TTTT.BXXX) 1048 1049dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1050Error 6160 - One or more prefix Scopes do not exist ^ 1051(BBBB.CBF1) 1052 1053iASL: Disassembler/table-compiler: Added support for the static data 1054table TPM2 revision 3 (an older version of TPM2). The support has been 1055added for the compiler and the disassembler. 1056 1057Fixed compilation of DOS format data table file on Unix/Linux systems. 1058iASL now properly detects line continuations (\) for DOS format data 1059table definition language files on when executing on Unix/Linux. 1060 1061---------------------------------------- 106203 October 2018. Summary of changes for version 20181003: 1063 1064 10652) iASL Compiler/Disassembler and Tools: 1066 1067Fixed a regression introduced in version 20180927 that could cause the 1068compiler to fault, especially with NamePaths containing one or more 1069carats (^). Such as: ^^_SB_PCI0 1070 1071Added a new remark for the Sleep() operator when the sleep time operand 1072is larger than one second. This is a very long time for the ASL/BIOS code 1073and may not be what was intended by the ASL writer. 1074 1075---------------------------------------- 107627 September 2018. Summary of changes for version 20180927: 1077 1078 10791) ACPICA kernel-resident subsystem: 1080 1081Updated the GPE support to clear the status of all ACPI events when 1082entering any/all sleep states in order to avoid premature wakeups. In 1083theory, this may cause some wakeup events to be missed, but the 1084likelihood of this is small. This change restores the original behavior 1085of the ACPICA code in order to fix a regression seen from the previous 1086"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1087This regression could cause some systems to incorrectly wake immediately. 1088 1089Updated the execution of the _REG methods during initialization and 1090namespace loading to bring the behavior into closer conformance to the 1091ACPI specification and other ACPI implementations: 1092 1093From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1094 "Control methods must assume all operation regions are inaccessible 1095until the _REG(RegionSpace, 1) method is executed" 1096 1097 "The exceptions to this rule are: 10981. OSPM must guarantee that the following operation regions are always 1099accessible: 1100 SystemIO operation regions. 1101 SystemMemory operation regions when accessing memory returned by the 1102System Address Map reporting interfaces." 1103 1104Since the state of both the SystemIO and SystemMemory address spaces are 1105defined by the specification to never change, this ACPICA change ensures 1106that now _REG is never called on them. This solves some problems seen in 1107the field and provides compatibility with other ACPI implementations. An 1108update to the upcoming new version of the ACPI specification will help 1109clarify this behavior. 1110 1111Updated the implementation of support for the Generic Serial Bus. For the 1112"bidirectional" protocols, the internal implementation now automatically 1113creates a return data buffer of the maximum size (255). This handles the 1114worst-case for data that is returned from the serial bus handler, and 1115fixes some problems seen in the field. This new buffer is directly 1116returned to the ASL. As such, there is no true "bidirectional" buffer, 1117which matches the ACPI specification. This is the reason for the "double 1118store" seen in the example ASL code in the specification, shown below: 1119 1120Word Process Call (AttribProcessCall): 1121 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1122 Field(TOP1, BufferAcc, NoLock, Preserve) 1123 { 1124 FLD1, 8, // Virtual register at command value 1. 1125 } 1126 1127 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1128 // as BUFF 1129 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1130 1131 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1132 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1133transaction 1134 // This is the "double store". The write to 1135 // FLD1 returns a new buffer, which is stored 1136 // back into BUFF with the second Store. 1137 1138 11392) iASL Compiler/Disassembler and Tools: 1140 1141iASL: Implemented detection of extraneous/redundant uses of the Offset() 1142operator within a Field Unit list. A remark is now issued for these. For 1143example, the first two of the Offset() operators below are extraneous. 1144Because both the compiler and the interpreter track the offsets 1145automatically, these Offsets simply refer to the current offset and are 1146unnecessary. Note, when optimization is enabled, the iASL compiler will 1147in fact remove the redundant Offset operators and will not emit any AML 1148code for them. 1149 1150 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1151 Field (OPR1) 1152 { 1153 Offset (0), // Never needed 1154 FLD1, 32, 1155 Offset (4), // Redundant, offset is already 4 (bytes) 1156 FLD2, 8, 1157 Offset (64), // OK use of Offset. 1158 FLD3, 16, 1159 } 1160dsdt.asl 14: Offset (0), 1161Remark 2158 - ^ Unnecessary/redundant use of Offset 1162operator 1163 1164dsdt.asl 16: Offset (4), 1165Remark 2158 - ^ Unnecessary/redundant use of Offset 1166operator 1167 1168---------------------------------------- 116910 August 2018. Summary of changes for version 20180810: 1170 1171 11721) ACPICA kernel-resident subsystem: 1173 1174Initial ACPI table loading: Attempt to continue loading ACPI tables 1175regardless of malformed AML. Since migrating table initialization to the 1176new module-level code support, the AML interpreter rejected tables upon 1177any ACPI error encountered during table load. This is a problem because 1178non-serious ACPI errors during table load do not necessarily mean that 1179the entire definition block (DSDT or SSDT) is invalid. This change 1180improves the table loading by ignoring some types of errors that can be 1181generated by incorrect AML. This can range from object type errors, scope 1182errors, and index errors. 1183 1184Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1185during suspend/resume. The status of ACPI events is no longer cleared 1186when entering the ACPI S5 system state (power off) which caused some 1187systems to power up immediately after turning off power in certain 1188situations. This was a functional regression. It was fixed by clearing 1189the status of all ACPI events again when entering S5 (for system-wide 1190suspend or hibernation the clearing of the status of all events is not 1191desirable, as it might cause the kernel to miss wakeup events sometimes). 1192Rafael Wysocki. 1193 1194 11952) iASL Compiler/Disassembler and Tools: 1196 1197AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1198elements listed in the initialization file were previously initialized 1199after the table load and before executing module-level code blocks. 1200Recent changes in the module-level code support means that the table load 1201becomes a large control method execution. If fields are used within 1202module-level code and we are executing with the -fi option, the 1203initialization values were used to initialize the namespace object(s) 1204only after the table was finished loading. This change Provides an early 1205initialization of objects specified in the initialization file so that 1206field unit values are populated during the table load (not after the 1207load). 1208 1209AcpiExec: Fixed a small memory leak regression that could result in 1210warnings during exit of the utility. These warnings were similar to 1211these: 1212 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1213 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1214 1215---------------------------------------- 121629 June 2018. Summary of changes for version 20180629: 1217 1218 12191) iASL Compiler/Disassembler and Tools: 1220 1221iASL: Fixed a regression related to the use of the ASL External 1222statement. Error checking for the use of the External() statement has 1223been relaxed. Previously, a restriction on the use of External meant that 1224the referenced named object was required to be defined in a different 1225table (an SSDT). Thus it would be an error to declare an object as an 1226external and then define the same named object in the same table. For 1227example: 1228 DefinitionBlock (...) 1229 { 1230 External (DEV1) 1231 Device (DEV1){...} // This was an error 1232 } 1233However, this behavior has caused regressions in some existing ASL code, 1234because there is code that depends on named objects and externals (with 1235the same name) being declared in the same table. This change will allow 1236the ASL code above to compile without errors or warnings. 1237 1238iASL: Implemented ASL language extensions for four operators to make some 1239of their arguments optional instead of required: 1240 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1241 2) BankField (RegionName, BankName, BankValue, 1242 AccessType, LockRule, UpdateRule) 1243 3) IndexField (IndexName, DataName, 1244 AccessType, LockRule, UpdateRule) 1245For the Field operators above, the AccessType, LockRule, and UpdateRule 1246are now optional arguments. The default values are: 1247 AccessType: AnyAcc 1248 LockRule: NoLock 1249 UpdateRule: Preserve 1250 4) Mutex (MutexName, SyncLevel) 1251For this operator, the SyncLevel argument is now optional. This argument 1252is rarely used in any meaningful way by ASL code, and thus it makes sense 1253to make it optional. The default value is: 1254 SyncLevel: 0 1255 1256iASL: Attempted use of the ASL Unload() operator now results in the 1257following warning: 1258 "Unload is not supported by all operating systems" 1259This is in fact very true, and the Unload operator may be completely 1260deprecated in the near future. 1261 1262AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1263file. Recent changes in the ACPICA module-level code support altered the 1264table load/initialization sequence . This means that the table load has 1265become a large method execution of the table itself. If Operation Region 1266Fields are used within any module-level code and the -fi option was 1267specified, the initialization values were populated only after the table 1268had completely finished loading (and thus the module-level code had 1269already been executed). This change moves the initialization of objects 1270listed in the initialization file to before the table is executed as a 1271method. Field unit values are now initialized before the table execution 1272is performed. 1273 1274---------------------------------------- 127531 May 2018. Summary of changes for version 20180531: 1276 1277 12781) ACPICA kernel-resident Subsystem: 1279 1280Implemented additional support to help ensure that a DSDT or SSDT is 1281fully loaded even if errors are incurred during the load. The majority of 1282the problems that are seen is the failure of individual AML operators 1283that occur during execution of any module-level code (MLC) existing in 1284the table. This support adds a mechanism to abort the current ASL 1285statement (AML opcode), emit an error message, and to simply move on to 1286the next opcode -- instead of aborting the entire table load. This is 1287different than the execution of a control method where the entire method 1288is aborted upon any error. The goal is to perform a very "best effort" to 1289load the ACPI tables. The most common MLC errors that have been seen in 1290the field are direct references to unresolved ASL/AML symbols (referenced 1291directly without the use of the CondRefOf operator to validate the 1292symbol). This new ACPICA behavior is now compatible with other ACPI 1293implementations. 1294 1295Interpreter: The Unload AML operator is no longer supported for the 1296reasons below. An AE_NOT_IMPLEMENTED exception is returned. 12971) A correct implementation on at least some hosts may not be possible. 12982) Other ACPI implementations do not correctly/fully support it. 12993) It requires host device driver support which is not known to exist. 1300 (To properly support namespace unload out from underneath.) 13014) This AML operator has never been seen in the field. 1302 1303Parser: Added a debug option to dump AML parse sub-trees as they are 1304being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1305ACPI_DB_PARSE_TREES. 1306 1307Debugger: Reduced the verbosity for errors incurred during table load and 1308module-level code execution. 1309 1310Completed an investigation into adding a namespace node "owner list" 1311instead of the current "owner ID" associated with namespace nodes. This 1312list would link together all nodes that are owned by an individual 1313control method. The purpose would be to enhance control method execution 1314by speeding up cleanup during method exit (all namespace nodes created by 1315a method are deleted upon method termination.) Currently, the entire 1316namespace must be searched for matching owner IDs if (and only if) the 1317method creates named objects outside of the local scope. However, by far 1318the most common case is that methods create objects locally, not outside 1319the method scope. There is already an ACPICA optimization in place that 1320only searches the entire namespace in the rare case of a method creating 1321objects elsewhere in the namespace. Therefore, it is felt that the 1322overhead of adding an additional pointer to each namespace node to 1323implement the owner list makes this feature unnecessary. 1324 1325 13262) iASL Compiler/Disassembler and Tools: 1327 1328iASL, Disassembler, and Template generator: Implemented support for 1329Revision D of the IORT table. Adds a new subtable that is used to specify 1330SMMUv3 PMCGs. rmurphy-arm. 1331 1332Disassembler: Restored correct table header validation for the "special" 1333ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1334table header and must be special-cased. This was a regression that has 1335been present for apparently a long time. 1336 1337AcpiExec: Reduced verbosity of the local exception handler implemented 1338within acpiexec. This handler is invoked by ACPICA upon any exceptions 1339generated during control method execution. A new option was added: -vh 1340restores the original verbosity level if desired. 1341 1342AcpiExec: Changed the default base from decimal to hex for the -x option 1343(set debug level). This simplifies the use of this option and matches the 1344behavior of the corresponding iASL -x option. 1345 1346AcpiExec: Restored a force-exit on multiple control-c (sigint) 1347interrupts. This allows program termination even if other issues cause 1348the control-c to fail. 1349 1350ASL test suite (ASLTS): Added tests for the recently implemented package 1351element resolution mechanism that allows forward references to named 1352objects from individual package elements (this mechanism provides 1353compatibility with other ACPI implementations.) 1354 1355 1356---------------------------------------- 13578 May 2018. Summary of changes for version 20180508: 1358 1359 13601) ACPICA kernel-resident subsystem: 1361 1362Completed the new (recently deployed) package resolution mechanism for 1363the Load and LoadTable ASL/AML operators. This fixes a regression that 1364was introduced in version 20180209 that could result in an 1365AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1366(SSDT) that contains package objects. 1367 1368 13692) iASL Compiler/Disassembler and Tools: 1370 1371AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 13721 MB. This change allows for table offsets within the acpidump file to be 1373up to 8 characters. These changes are backwards compatible with existing 1374acpidump files. 1375 1376 1377---------------------------------------- 137827 April 2018. Summary of changes for version 20180427: 1379 1380 13811) ACPICA kernel-resident subsystem: 1382 1383Debugger: Added support for Package objects in the "Test Objects" 1384command. This command walks the entire namespace and evaluates all named 1385data objects (Integers, Strings, Buffers, and now Packages). 1386 1387Improved error messages for the namespace root node. Originally, the root 1388was referred to by the confusing string "\___". This has been replaced by 1389"Namespace Root" for clarification. 1390 1391Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1392Ian King <colin.king@canonical.com>. 1393 1394 13952) iASL Compiler/Disassembler and Tools: 1396 1397iASL: Implemented support to detect and flag illegal forward references. 1398For compatibility with other ACPI implementations, these references are 1399now illegal at the root level of the DSDT or SSDTs. Forward references 1400have always been illegal within control methods. This change should not 1401affect existing ASL/AML code because of the fact that these references 1402have always been illegal in the other ACPI implementation. 1403 1404iASL: Added error messages for the case where a table OEM ID and OEM 1405TABLE ID strings are longer than the ACPI-defined length. Previously, 1406these strings were simply silently truncated. 1407 1408iASL: Enhanced the -tc option (which creates an AML hex file in C, 1409suitable for import into a firmware project): 1410 1) Create a unique name for the table, to simplify use of multiple 1411SSDTs. 1412 2) Add a protection #ifdef in the file, similar to a .h header file. 1413With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1414evan.lloyd@arm.com 1415 1416AcpiExec: Added a new option, -df, to disable the local fault handler. 1417This is useful during debugging, where it may be desired to drop into a 1418debugger on a fault. 1419 1420---------------------------------------- 142113 March 2018. Summary of changes for version 20180313: 1422 1423 14241) ACPICA kernel-resident subsystem: 1425 1426Implemented various improvements to the GPE support: 1427 14281) Dispatch all active GPEs at initialization time so that no GPEs are 1429lost. 14302) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1431before devices are enumerated. 14323) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1433IRQs are not lost. 14344) Add parallel GPE handling to eliminate the possibility of dispatching 1435the same GPE twice. 14365) Dispatch any pending GPEs after enabling for the first time. 1437 1438AcpiGetObjectInfo - removed support for the _STA method. This was causing 1439problems on some platforms. 1440 1441Added a new _OSI string, "Windows 2017.2". 1442 1443Cleaned up and simplified the module-level code support. These changes 1444are in preparation for the eventual removal of the legacy MLC support 1445(deferred execution), replaced by the new MLC architecture which executes 1446the MLC as a table is loaded (DSDT/SSDTs). 1447 1448Changed a compile-time option to a runtime option. Changes the option to 1449ignore ACPI table load-time package resolution errors into a runtime 1450option. Used only for platforms that generate many AE_NOT_FOUND errors 1451during boot. AcpiGbl_IgnorePackageResolutionErrors. 1452 1453Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1454ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1455compilation errors from unused variables (seen with some compilers). 1456 1457 14582) iASL Compiler/Disassembler and Tools: 1459 1460ASLTS: parallelized execution in order to achieve an (approximately) 2X 1461performance increase. 1462 1463ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1464error reporting. 1465 1466---------------------------------------- 146709 February 2018. Summary of changes for version 20180209: 1468 1469 14701) ACPICA kernel-resident subsystem: 1471 1472Completed the final integration of the recent changes to Package Object 1473handling and the module-level AML code support. This allows forward 1474references from individual package elements when the package object is 1475declared from within module-level code blocks. Provides compatibility 1476with other ACPI implementations. 1477 1478The new architecture for the AML module-level code has been completed and 1479is now the default for the ACPICA code. This new architecture executes 1480the module-level code in-line as the ACPI table is loaded/parsed instead 1481of the previous architecture which deferred this code until after the 1482table was fully loaded. This solves some ASL code ordering issues and 1483provides compatibility with other ACPI implementations. At this time, 1484there is an option to fallback to the earlier architecture, but this 1485support is deprecated and is planned to be completely removed later this 1486year. 1487 1488Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1489resolution of named reference elements within Package objects. Although 1490this is potentially a serious problem, it can generate a lot of 1491noise/errors on platforms whose firmware carries around a bunch of unused 1492Package objects. To disable these errors, define 1493ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1494errors are always reported for ACPICA applications such as AcpiExec. 1495 1496Fixed a regression related to the explicit type-conversion AML operators 1497(ToXXXX). The regression was introduced early in 2017 but was not seen 1498until recently because these operators are not fully supported by other 1499ACPI implementations and are thus rarely used by firmware developers. The 1500operators are defined by the ACPI specification to not implement the 1501"implicit result object conversion". The regression incorrectly 1502introduced this object conversion for the following explicit conversion 1503operators: 1504 ToInteger 1505 ToString 1506 ToBuffer 1507 ToDecimalString 1508 ToHexString 1509 ToBCD 1510 FromBCD 1511 1512 15132) iASL Compiler/Disassembler and Tools: 1514 1515iASL: Fixed a problem with the compiler constant folding feature as 1516related to the ToXXXX explicit conversion operators. These operators do 1517not support the "implicit result object conversion" by definition. Thus, 1518ASL expressions that use these operators cannot be folded to a simple 1519Store operator because Store implements the implicit conversion. This 1520change uses the CopyObject operator for the ToXXXX operator folding 1521instead. CopyObject is defined to not implement implicit result 1522conversions and is thus appropriate for folding the ToXXXX operators. 1523 1524iASL: Changed the severity of an error condition to a simple warning for 1525the case where a symbol is declared both locally and as an external 1526symbol. This accommodates existing ASL code. 1527 1528AcpiExec: The -ep option to enable the new architecture for module-level 1529code has been removed. It is replaced by the -dp option which instead has 1530the opposite effect: it disables the new architecture (the default) and 1531enables the legacy architecture. When the legacy code is removed in the 1532future, the -dp option will be removed also. 1533 1534---------------------------------------- 153505 January 2018. Summary of changes for version 20180105: 1536 1537 15381) ACPICA kernel-resident subsystem: 1539 1540Updated all copyrights to 2018. This affects all source code modules. 1541 1542Fixed a possible build error caused by an unresolved reference to the 1543AcpiUtSafeStrncpy function. 1544 1545Removed NULL pointer arithmetic in the various pointer manipulation 1546macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1547This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1548 1549Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1550Mittal. 1551 1552 15532) iASL Compiler/Disassembler and Tools: 1554 1555ASLTS: Updated all copyrights to 2018. 1556 1557Tools: Updated all signon copyrights to 2018. 1558 1559AcpiXtract: Fixed a regression related to ACPI table signatures where the 1560signature was truncated to 3 characters (instead of 4). 1561 1562AcpiExec: Restore the original terminal mode after the use of the -v and 1563-vd options. 1564 1565ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1566 1567---------------------------------------- 156814 December 2017. Summary of changes for version 20171214: 1569 1570 15711) ACPICA kernel-resident subsystem: 1572 1573Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1574interface where the optional "pathname" argument had inadvertently become 1575a required argument returning an error if omitted (NULL pointer 1576argument). 1577 1578Fixed two possible memory leaks related to the recently developed "late 1579resolution" of reference objects within ASL Package Object definitions. 1580 1581Added two recently defined _OSI strings: "Windows 2016" and "Windows 15822017". Mario Limonciello. 1583 1584Implemented and deployed a safer version of the C library function 1585strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1586creation of unterminated strings as a possible result of a standard 1587strncpy. 1588 1589Cleaned up and restructured the global variable file (acglobal.h). There 1590are many changes, but no functional changes. 1591 1592 15932) iASL Compiler/Disassembler and Tools: 1594 1595iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1596optional OemData field at the end of the table was incorrectly required 1597for proper compilation. It is now correctly an optional field. 1598 1599ASLTS: The entire suite was converted from standard ASL to the ASL+ 1600language, using the ASL-to-ASL+ converter which is integrated into the 1601iASL compiler. A binary compare of all output files has verified the 1602correctness of the conversion. 1603 1604iASL: Fixed the source code build for platforms where "char" is unsigned. 1605This affected the iASL lexer only. Jung-uk Kim. 1606 1607---------------------------------------- 160810 November 2017. Summary of changes for version 20171110: 1609 1610 16111) ACPICA kernel-resident subsystem: 1612 1613This release implements full support for ACPI 6.2A: 1614 NFIT - Added a new subtable, "Platform Capabilities Structure" 1615No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1616errata release of the specification. 1617 1618Other ACPI table changes: 1619 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1620 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1621Linton 1622 1623Utilities: Modified the string/integer conversion functions to use 1624internal 64-bit divide support instead of a native divide. On 32-bit 1625platforms, a 64-bit divide typically requires a library function which 1626may not be present in the build (kernel or otherwise). 1627 1628Implemented a targeted error message for timeouts returned from the 1629Embedded Controller device driver. This is seen frequently enough to 1630special-case an AE_TIME returned from an EC operation region access: 1631 "Timeout from EC hardware or EC device driver" 1632 1633Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1634runtime error messages have the identical prefix. 1635 1636 16372) iASL Compiler/Disassembler and Tools: 1638 1639AcpiXtract: Fixed a problem with table header detection within the 1640acpidump file. Processing a table could be ended early if a 0x40 (@) 1641appears in the original binary table, resulting in the @ symbol appearing 1642in the decoded ASCII field at the end of the acpidump text line. The 1643symbol caused acpixtract to incorrectly think it had reached the end of 1644the current table and the beginning of a new table. 1645 1646AcpiXtract: Added an option (-f) to ignore some errors during table 1647extraction. This initial implementation ignores non-ASCII and non- 1648printable characters found in the acpidump text file. 1649 1650TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1651for ASLTS. This feature is used to track memory allocations from 1652different memory caches within the ACPICA code. At the end of an ASLTS 1653run, these memory statistics are recorded and stored in a log file. 1654 1655Debugger (user-space version): Implemented a simple "Background" command. 1656Creates a new thread to execute a control method in the background, while 1657control returns to the debugger prompt to allow additional commands. 1658 Syntax: Background <Namepath> [Arguments] 1659 1660---------------------------------------- 166129 September 2017. Summary of changes for version 20170929: 1662 1663 16641) ACPICA kernel-resident subsystem: 1665 1666Redesigned and implemented an improved ASL While() loop timeout 1667mechanism. This mechanism is used to prevent infinite loops in the kernel 1668AML interpreter caused by either non-responsive hardware or incorrect AML 1669code. The new implementation uses AcpiOsGetTimer instead of a simple 1670maximum loop count, and is thus more accurate and constant across 1671different machines. The default timeout is currently 30 seconds, but this 1672may be adjusted later. 1673 1674Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1675better reflect the new implementation of the loop timeout mechanism. 1676 1677Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1678and to fix an off-by-one error. Jung-uk Kim. 1679 1680Fixed an EFI build problem by updating the makefiles to for a new file 1681that was added, utstrsuppt.c 1682 1683 16842) iASL Compiler/Disassembler and Tools: 1685 1686Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1687includes support in the table disassembler, compiler, and template 1688generator. 1689 1690iASL: Added an exception for an illegal type of recursive method 1691invocation. If a method creates named objects, the first recursive call 1692will fail at runtime. This change adds an error detection at compile time 1693to catch the problem up front. Note: Marking such a method as 1694"serialized" will not help with this problem, because the same thread can 1695acquire the method mutex more than once. Example compiler and runtime 1696output: 1697 1698 Method (MTH1) 1699 { 1700 Name (INT1, 1) 1701 MTH1 () 1702 } 1703 1704 dsdt.asl 22: MTH1 () 1705 Error 6152 - ^ Illegal recursive call to method 1706 that creates named objects (MTH1) 1707 1708Previous runtime exception: 1709 ACPI Error: [INT1] Namespace lookup failure, 1710 AE_ALREADY_EXISTS (20170831/dswload2-465) 1711 1712iASL: Updated support for External() opcodes to improve namespace 1713management and error detection. These changes are related to issues seen 1714with multiple-segment namespace pathnames within External declarations, 1715such as below: 1716 1717 External(\_SB.PCI0.GFX0, DeviceObj) 1718 External(\_SB.PCI0.GFX0.ALSI) 1719 1720iASL: Implemented support for multi-line error/warning messages. This 1721enables more detailed and helpful error messages as below, from the 1722initial deployment for the duplicate names error: 1723 1724 DSDT.iiii 1692: Device(PEG2) { 1725 Error 6074 - ^ Name already exists in scope 1726(PEG2) 1727 1728 Original name creation/declaration below: 1729 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1730 1731AcpiXtract: Added additional flexibility to support differing input hex 1732dump formats. Specifically, hex dumps that contain partial disassembly 1733and/or comments within the ACPI table data definition. There exist some 1734dump utilities seen in the field that create this type of hex dump (such 1735as Simics). For example: 1736 1737 DSDT @ 0xdfffd0c0 (10999 bytes) 1738 Signature DSDT 1739 Length 10999 1740 Revision 1 1741 Checksum 0xf3 (Ok) 1742 OEM_ID BXPC 1743 OEM_table_id BXDSDT 1744 OEM_revision 1 1745 Creator_id 1280593481 1746 Creator_revision 537399345 1747 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1748 ... 1749 2af0: 5f 4c 30 46 00 a4 01 1750 1751Test suite: Miscellaneous changes/fixes: 1752 More cleanup and simplification of makefiles 1753 Continue compilation of test cases after a compile failure 1754 Do not perform binary compare unless both files actually exist 1755 1756iASL: Performed some code/module restructuring. Moved all memory 1757allocation functions to new modules. Two new files, aslallocate.c and 1758aslcache.c 1759 1760---------------------------------------- 176131 August 2017. Summary of changes for version 20170831: 1762 1763 17641) ACPICA kernel-resident subsystem: 1765 1766Implemented internal support for full 64-bit addresses that appear in all 1767Generic Address Structure (GAS) structures. Previously, only the lower 32 1768bits were used. Affects the use of GAS structures in the FADT and other 1769tables, as well as the GAS structures passed to the AcpiRead and 1770AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1771 1772Added header support for the PDTT ACPI table (Processor Debug Trigger 1773Table). Full support in the iASL Data Table Compiler and disassembler is 1774forthcoming. 1775 1776 17772) iASL Compiler/Disassembler and Tools: 1778 1779iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1780Properties Topology Table) where a flag bit was specified in the wrong 1781bit position ("Line Size Valid", bit 6). 1782 1783iASL: Implemented support for Octal integer constants as defined by the 1784ASL language grammar, per the ACPI specification. Any integer constant 1785that starts with a zero is an octal constant. For example, 1786 Store (037777, Local0) /* Octal constant */ 1787 Store (0x3FFF, Local0) /* Hex equivalent */ 1788 Store (16383, Local0) /* Decimal equivalent */ 1789 1790iASL: Improved overflow detection for 64-bit string conversions during 1791compilation of integer constants. "Overflow" in this case means a string 1792that represents an integer that is too large to fit into a 64-bit value. 1793Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1794the low-order 32 bits with a warning, as previously implemented. Several 1795new exceptions are defined that indicate a 64-bit overflow, as well as 1796the base (radix) that was used during the attempted conversion. Examples: 1797 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1798 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1799 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1800 1801iASL: Added a warning for the case where a ResourceTemplate is declared 1802with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1803this case, the resulting template is created with a single END_TAG 1804descriptor, which is essentially useless. 1805 1806iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1807include compilation error codes as well. 1808 1809---------------------------------------- 181028 July 2017. Summary of changes for version 20170728: 1811 1812 18131) ACPICA kernel-resident subsystem: 1814 1815Fixed a regression seen with small resource descriptors that could cause 1816an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1817 1818AML interpreter: Implemented a new feature that allows forward references 1819from individual named references within package objects that are 1820contained within blocks of "module-level code". This provides 1821compatibility with other ACPI implementations and supports existing 1822firmware that depends on this feature. Example: 1823 1824 Name (ABCD, 1) 1825 If (ABCD) /* An If() at module-level */ 1826 { 1827 Name (PKG1, Package() 1828 { 1829 INT1 /* Forward reference to object INT1 1830*/ 1831 }) 1832 Name (INT1, 0x1234) 1833 } 1834 1835AML Interpreter: Fixed a problem with the Alias() operator where aliases 1836to some ASL objects were not handled properly. Objects affected are: 1837Mutex, Event, and OperationRegion. 1838 1839AML Debugger: Enhanced to properly handle AML Alias objects. These 1840objects have one level of indirection which was not fully supported by 1841the debugger. 1842 1843Table Manager: Added support to detect and ignore duplicate SSDTs within 1844the XSDT/RSDT. This error in the XSDT has been seen in the field. 1845 1846EFI and EDK2 support: 1847 Enabled /WX flag for MSVC builds 1848 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1849 Added local support for 64-bit multiply and shift operations 1850 Added support to compile acpidump.efi on Windows 1851 Added OSL function stubs for interfaces not used under EFI 1852 1853Added additional support for the _DMA predefined name. _DMA returns a 1854buffer containing a resource template. This change add support within the 1855resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1856resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1857 1858 18592) iASL Compiler/Disassembler and Tools: 1860 1861iASL: Fixed a problem where the internal input line buffer(s) could 1862overflow if there are very long lines in the input ASL source code file. 1863Implemented buffer management that automatically increases the size of 1864the buffers as necessary. 1865 1866iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1867errors. If the specified exception is not raised during compilation, the 1868compiler emits an error. This is intended to support the ASL test suite, 1869but may be useful in other contexts. 1870 1871iASL: Implemented a new predefined macro, __METHOD__, which returns a 1872string containing the name of the current control method that is being 1873compiled. 1874 1875iASL: Implemented debugger and table compiler support for the SDEI ACPI 1876table (Software Delegated Exception Interface). James Morse 1877<james.morse@arm.com> 1878 1879Unix/Linux makefiles: Added an option to disable compile optimizations. 1880The disable occurs when the NOOPT flag is set to TRUE. 1881theracermaster@gmail.com 1882 1883Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1884when there are different tables for 32-bit versus 64-bit. 1885 1886Enhanced error reporting for the ASL test suite (ASLTS) by removing 1887unnecessary/verbose text, and emit the actual line number where an error 1888has occurred. These changes are intended to improve the usefulness of the 1889test suite. 1890 1891---------------------------------------- 189229 June 2017. Summary of changes for version 20170629: 1893 1894 18951) ACPICA kernel-resident subsystem: 1896 1897Tables: Implemented a deferred ACPI table verification. This is useful 1898for operating systems where the tables cannot be verified in the early 1899initialization stage due to early memory mapping limitations on some 1900architectures. Lv Zheng. 1901 1902Tables: Removed the signature validation for dynamically loaded tables. 1903Provides compatibility with other ACPI implementations. Previously, only 1904SSDT tables were allowed, as per the ACPI specification. Now, any table 1905signature can be used via the Load() operator. Lv Zheng. 1906 1907Tables: Fixed several mutex issues that could cause errors during table 1908acquisition. Lv Zheng. 1909 1910Tables: Fixed a problem where an ACPI warning could be generated if a 1911null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1912 1913Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1914AcpiPutTable interfaces. This applies to the "late stage" table loading 1915when the use of AcpiPutTable is no longer required (since the system 1916memory manager is fully running and available). Lv Zheng. 1917 1918Fixed/Reverted a regression during processing of resource descriptors 1919that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1920exception in this case. 1921 1922Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1923I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1924 1925Interpreter: Fixed a possible fault if an Alias operator with an invalid 1926or duplicate target is encountered during Alias creation in 1927AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1928 1929Added an option to use designated initializers for function pointers. 1930Kees Cook <keescook@google.com> 1931 1932 19332) iASL Compiler/Disassembler and Tools: 1934 1935iASL: Allow compilation of External declarations with target pathnames 1936that refer to existing named objects within the table. Erik Schmauss. 1937 1938iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1939FieldUnit name also is declared via External in the same table. Erik 1940Schmauss. 1941 1942iASL: Allow existing scope names within pathnames used in External 1943statements. For example: 1944 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1945 Device (ABCD) 1946 1947iASL: IORT ACPI table: Implemented changes required to decode the new 1948Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1949compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1950 1951Disassembler: Don't abort disassembly on errors from External() 1952statements. Erik Schmauss. 1953 1954Disassembler: fixed a possible fault when one of the Create*Field 1955operators references a Resource Template. ACPICA Bugzilla 1396. 1956 1957iASL: In the source code, resolved some naming inconsistences across the 1958parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1959Adds a new file, aslparseop.c 1960 1961---------------------------------------- 196231 May 2017. Summary of changes for version 20170531: 1963 1964 19650) ACPI 6.2 support: 1966 1967The ACPI specification version 6.2 has been released and is available at 1968http://uefi.org/specifications 1969 1970This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1971are summarized below. 1972 1973New ACPI tables (Table Compiler/Disassembler/Templates): 1974 HMAT (Heterogeneous Memory Attributes Table) 1975 WSMT (Windows SMM Security Mitigation Table) 1976 PPTT (Processor Properties Topology Table) 1977 1978New subtables for existing ACPI tables: 1979 HEST (New subtable, Arch-deferred machine check) 1980 SRAT (New subtable, Arch-specific affinity structure) 1981 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1982 1983Simple updates for existing ACPI tables: 1984 BGRT (two new flag bits) 1985 HEST (New bit defined for several subtables, GHES_ASSIST) 1986 1987New Resource Descriptors and Resource macros (Compiler/Disassembler): 1988 PinConfig() 1989 PinFunction() 1990 PinGroup() 1991 PinGroupConfig() 1992 PinGroupFunction() 1993 New type for hardware error notification (section 18.3.2.9) 1994 1995New predefined names/methods (Compiler/Interpreter): 1996 _HMA (Heterogeneous Memory Attributes) 1997 _LSI (Label Storage Information) 1998 _LSR (Label Storage Read) 1999 _LSW (Label Storage Write) 2000 2001ASL grammar/macro changes (Compiler): 2002 For() ASL macro, implemented with the AML while operator 2003 Extensions to Concatenate operator 2004 Support for multiple definition blocks in same ASL file 2005 Clarification for Buffer operator 2006 Allow executable AML code underneath all scopes (Devices, etc.) 2007 Clarification/change for the _OSI return value 2008 ASL grammar update for reference operators 2009 Allow a zero-length string for AML filename in DefinitionBlock 2010 2011Miscellaneous: 2012 New device object notification value 2013 Remove a notify value (0x0C) for graceful shutdown 2014 New UUIDs for processor/cache properties and 2015 physical package property 2016 New _HID, ACPI0014 (Wireless Power Calibration Device) 2017 2018 20191) ACPICA kernel-resident subsystem: 2020 2021Added support to disable ACPI events on hardware-reduced platforms. 2022Eliminates error messages of the form "Could not enable fixed event". Lv 2023Zheng 2024 2025Fixed a problem using Device/Thermal objects with the ObjectType and 2026DerefOf ASL operators. This support had not been fully/properly 2027implemented. 2028 2029Fixed a problem where if a Buffer object containing a resource template 2030was longer than the actual resource template, an error was generated -- 2031even though the AML is legal. This case has been seen in the field. 2032 2033Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2034The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2035 2036Added header file changes for the TPM2 ACPI table. Update to new version 2037of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2038 2039Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2040These interfaces are intended to be used only in conjunction with the 2041predefined _DLM method (Device Lock Method). "This object appears in a 2042device scope when AML access to the device must be synchronized with the 2043OS environment". 2044 2045Example Code and Data Size: These are the sizes for the OS-independent 2046acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2047debug version of the code includes the debug output trace mechanism and 2048has a much larger code and data size. 2049 2050 Current Release: 2051 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2052 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2053 Previous Release: 2054 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2055 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2056 2057 20582) iASL Compiler/Disassembler and Tools: 2059 2060iASL: Fixed a problem where an External() declaration could not refer to 2061a Field Unit. Erik Schmauss. 2062 2063Disassembler: Improved support for the Switch/Case operators. This 2064feature will disassemble AML code back to the original Switch operators 2065when possible, instead of an If..Else sequence. David Box 2066 2067iASL and disassembler: Improved the handling of multiple extraneous 2068parentheses for both ASL input and disassembled ASL output. 2069 2070Improved the behavior of the iASL compiler and disassembler to detect 2071improper use of external declarations 2072 2073Disassembler: Now aborts immediately upon detection of an unknown AML 2074opcode. The AML parser has no real way to recover from this, and can 2075result in the creation of an ill-formed parse tree that causes errors 2076later during the disassembly. 2077 2078All tools: Fixed a problem where the Unix application OSL did not handle 2079control-c correctly. For example, a control-c could incorrectly wake the 2080debugger. 2081 2082AcpiExec: Improved the Control-C handling and added a handler for 2083segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2084environments. 2085 2086Reduced the verbosity of the generic unix makefiles. Previously, each 2087compilation displayed the full set of compiler options. This has been 2088eliminated as the options are easily inspected within the makefiles. Each 2089compilation now results in a single line of output. 2090 2091---------------------------------------- 209203 March 2017. Summary of changes for version 20170303: 2093 2094 20950) ACPICA licensing: 2096 2097The licensing information at the start of each source code module has 2098been updated. In addition to the Intel license, the dual GPLv2/BSD 2099license has been added for completeness. Now, a single version of the 2100source code should be suitable for all ACPICA customers. This is the 2101major change for this release since it affects all source code modules. 2102 2103 21041) ACPICA kernel-resident subsystem: 2105 2106Fixed two issues with the common asltypes.h header that could cause 2107problems in some environments: (Kim Jung-uk) 2108 Removed typedef for YY_BUFFER_STATE ? 2109 Fixes an error with earlier versions of Flex. 2110 Removed use of FILE typedef (which is only defined in stdio.h) 2111 2112 21132) iASL Compiler/Disassembler and Tools: 2114 2115Disassembler: fixed a regression introduced in 20170224. A fix for a 2116memory leak related to resource descriptor tags (names) could fault when 2117the disassembler was generated with 64-bit compilers. 2118 2119The ASLTS test suite has been updated to implement a new testing 2120architecture. During generation of the suite from ASL source, both the 2121ASL and ASL+ compilers are now validated, as well as the disassembler 2122itself (Erik Schmauss). The architecture executes as follows: 2123 2124 For every ASL source module: 2125 Compile (legacy ASL compilation) 2126 Disassemble the resulting AML to ASL+ source code 2127 Compile the new ASL+ module 2128 Perform a binary compare on the legacy AML and the new ASL+ AML 2129 The ASLTS suite then executes normally using the AML binaries. 2130 2131---------------------------------------- 213224 February 2017. Summary of changes for version 20170224: 2133 2134 21351) ACPICA kernel-resident subsystem: 2136 2137Interpreter: Fixed two issues with the control method return value auto- 2138repair feature, where an attempt to double-delete an internal object 2139could result in an ACPICA warning (for _CID repair and others). No fault 2140occurs, however, because the attempted deletion (actually a release to an 2141internal cache) is detected and ignored via object poisoning. 2142 2143Debugger: Fixed an AML interpreter mutex issue during the single stepping 2144of control methods. If certain debugger commands are executed during 2145stepping, a mutex acquire/release error could occur. Lv Zheng. 2146 2147Fixed some issues generating ACPICA with the Intel C compiler by 2148restoring the original behavior and compiler-specific include file in 2149acenv.h. Lv Zheng. 2150 2151Example Code and Data Size: These are the sizes for the OS-independent 2152acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2153debug version of the code includes the debug output trace mechanism and 2154has a much larger code and data size. 2155 2156 Current Release: 2157 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2158 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2159 Previous Release: 2160 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2161 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2162 2163 21642) iASL Compiler/Disassembler and Tools: 2165 2166iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2167tool has been designed, implemented, and included in this release. The 2168key feature of this utility is that the original comments within the 2169input ASL file are preserved during the conversion process, and included 2170within the converted ASL+ file -- thus creating a transparent conversion 2171of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2172 2173 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2174converted code 2175 2176iASL/Disassembler: Improved the detection and correct disassembly of 2177Switch/Case operators. This feature detects sequences of if/elseif/else 2178operators that originated from ASL Switch/Case/Default operators and 2179emits the original operators. David Box. 2180 2181iASL: Improved the IORT ACPI table support in the following areas. Lv 2182Zheng: 2183 Clear MappingOffset if the MappingCount is zero. 2184 Fix the disassembly of the SMMU GSU interrupt offset. 2185 Update the template file for the IORT table. 2186 2187Disassembler: Enhanced the detection and disassembly of resource 2188template/descriptor within a Buffer object. An EndTag descriptor is now 2189required to have a zero second byte, since all known ASL compilers emit 2190this. This helps eliminate incorrect decisions when a buffer is 2191disassembled (false positives on resource templates). 2192 2193---------------------------------------- 219419 January 2017. Summary of changes for version 20170119: 2195 2196 21971) General ACPICA software: 2198 2199Entire source code base: Added the 2017 copyright to all source code 2200legal/licensing module headers and utility/tool signons. This includes 2201the standard Linux dual-license header. This affects virtually every file 2202in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2203the ACPICA test suite. 2204 2205 22062) iASL Compiler/Disassembler and Tools: 2207 2208iASL: Removed/fixed an inadvertent remark when a method argument 2209containing a reference is used as a target operand within the method (and 2210never used as a simple argument), as in the example below. Jeffrey Hugo. 2211 2212 dsdt.asl 1507: Store(0x1, Arg0) 2213 Remark 2146 - ^ Method Argument is never used (Arg0) 2214 2215All tools: Removed the bit width of the compiler that generated the tool 2216from the common signon for all user space tools. This proved to be 2217confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2218from the generic makefiles (Thomas Petazzoni). Example below. 2219 2220 Old: 2221 ASL+ Optimizing Compiler version 20170119-32 2222 ASL+ Optimizing Compiler version 20170119-64 2223 2224 New: 2225 ASL+ Optimizing Compiler version 20170119 2226 2227---------------------------------------- 222822 December 2016. Summary of changes for version 20161222: 2229 2230 22311) ACPICA kernel-resident subsystem: 2232 2233AML Debugger: Implemented a new mechanism to simplify and enhance 2234debugger integration into all environments, including kernel debuggers 2235and user-space utilities, as well as remote debug services. This 2236mechanism essentially consists of new OSL interfaces to support debugger 2237initialization/termination, as well as wait/notify interfaces to perform 2238the debugger handshake with the host. Lv Zheng. 2239 2240 New OSL interfaces: 2241 AcpiOsInitializeDebugger (void) 2242 AcpiOsTerminateDebugger (void) 2243 AcpiOsWaitCommandReady (void) 2244 AcpiOsNotifyCommandComplete (void) 2245 2246 New OS services layer: 2247 osgendbg.c -- Example implementation, and used for AcpiExec 2248 2249Update for Generic Address Space (GAS) support: Although the AccessWidth 2250and/or BitOffset fields of the GAS are not often used, this change now 2251fully supports these fields. This affects the internal support for FADT 2252registers, registers in other ACPI data tables, and the AcpiRead and 2253AcpiWrite public interfaces. Lv Zheng. 2254 2255Sleep support: In order to simplify integration of ACPI sleep for the 2256various host operating systems, a new OSL interface has been introduced. 2257AcpiOsEnterSleep allows the host to perform any required operations 2258before the final write to the sleep control register(s) is performed by 2259ACPICA. Lv Zheng. 2260 2261 New OSL interface: 2262 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2263 2264 Called from these internal interfaces: 2265 AcpiHwLegacySleep 2266 AcpiHwExtendedSleep 2267 2268EFI support: Added a very small EFI/ACPICA example application. Provides 2269a simple demo for EFI integration, as well as assisting with resolution 2270of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2271 2272 source/tools/efihello/efihello.c 2273 2274Local C library: Implemented several new functions to enhance ACPICA 2275portability, for environments where these clib functions are not 2276available (such as EFI). Lv Zheng: 2277 putchar 2278 getchar 2279 strpbrk 2280 strtok 2281 memmove 2282 2283Fixed a regression where occasionally a valid resource descriptor was 2284incorrectly detected as invalid at runtime, and a 2285AE_AML_NO_RESOURCE_END_TAG was returned. 2286 2287Fixed a problem with the recently implemented support that enables 2288control method invocations as Target operands to many ASL operators. 2289Warnings of this form: "Needed type [Reference], found [Processor]" were 2290seen at runtime for some method invocations. 2291 2292Example Code and Data Size: These are the sizes for the OS-independent 2293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2294debug version of the code includes the debug output trace mechanism and 2295has a much larger code and data size. 2296 2297 Current Release: 2298 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2299 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2300 Previous Release: 2301 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2302 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2303 2304 23052) iASL Compiler/Disassembler and Tools: 2306 2307Disassembler: Enhanced output by adding the capability to detect and 2308disassemble ASL Switch/Case statements back to the original ASL source 2309code instead of if/else blocks. David Box. 2310 2311AcpiHelp: Split a large file into separate files based upon 2312functionality/purpose. New files are: 2313 ahaml.c 2314 ahasl.c 2315 2316---------------------------------------- 231717 November 2016. Summary of changes for version 20161117: 2318 2319 23201) ACPICA kernel-resident subsystem: 2321 2322Table Manager: Fixed a regression introduced in 20160729, "FADT support 2323cleanup". This was an attempt to remove all references in the source to 2324the FADT version 2, which never was a legal version number. It was 2325skipped because it was an early version of 64-bit support that was 2326eventually abandoned for the current 64-bit support. 2327 2328Interpreter: Fixed a problem where runtime implicit conversion was 2329incorrectly disabled for the ASL operators below. This brings the 2330behavior into compliance with the ACPI specification: 2331 FromBCD 2332 ToBCD 2333 ToDecimalString 2334 ToHexString 2335 ToInteger 2336 ToBuffer 2337 2338Table Manager: Added a new public interface, AcpiPutTable, used to 2339release and free an ACPI table returned by AcpiGetTable and related 2340interfaces. Lv Zheng. 2341 2342Example Code and Data Size: These are the sizes for the OS-independent 2343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2344debug version of the code includes the debug output trace mechanism and 2345has a much larger code and data size. 2346 2347 Current Release: 2348 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2349 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2350 Previous Release: 2351 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2352 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2353 2354 23552) iASL Compiler/Disassembler and Tools: 2356 2357Disassembler: Fixed a regression for disassembly of Resource Template. 2358Detection of templates in the AML stream missed some types of templates. 2359 2360iASL: Fixed a problem where an Access Size error was returned for the PCC 2361address space when the AccessSize of the GAS register is greater than a 2362DWORD. Hoan Tran. 2363 2364iASL: Implemented several grammar changes for the operators below. These 2365changes are slated for the next version of the ACPI specification: 2366 RefOf - Disallow method invocation as an operand 2367 CondRefOf - Disallow method invocation as an operand 2368 DerefOf - Disallow operands that use the result from operators 2369that 2370 do not return a reference (Changed TermArg to 2371SuperName). 2372 2373iASL: Control method invocations are now allowed for Target operands, as 2374per the ACPI specification. Removed error for using a control method 2375invocation as a Target operand. 2376 2377Disassembler: Improved detection of Resource Templates, Unicode, and 2378Strings within Buffer objects. These subtypes do not contain a specific 2379opcode to indicate the originating ASL code, and they must be detected by 2380other means within the disassembler. 2381 2382iASL: Implemented an optimization improvement for 32-bit ACPI tables 2383(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2384only after 64-bit to 32-bit truncation. A truncation warning message is 2385still emitted, however. 2386 2387AcpiXtract: Implemented handling for both types of line terminators (LF 2388or CR/LF) so that it can accept AcpiDump output files from any system. 2389Peter Wu. 2390 2391AcpiBin: Added two new options for comparing AML files: 2392 -a: compare and display ALL mismatches 2393 -o: start compare at this offset into the second file 2394 2395---------------------------------------- 239630 September 2016. Summary of changes for version 20160930: 2397 2398 23991) ACPICA kernel-resident subsystem: 2400 2401Fixed a regression in the internal AcpiTbFindTable function where a non 2402AE_OK exception could inadvertently be returned even if the function did 2403not fail. This problem affects the following operators: 2404 DataTableRegion 2405 LoadTable 2406 2407Fixed a regression in the LoadTable operator where a load to any 2408namespace location other than the root no longer worked properly. 2409 2410Increased the maximum loop count value that will result in the 2411AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2412prevent infinite loops within the AML interpreter and thus the host OS 2413kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 24141,048,575). 2415 2416Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 2417acpixf.h file. This allows hosts to easily configure the maximum loop 2418count at runtime. 2419 2420Removed an illegal character in the strtoul64.c file. This character 2421caused errors with some C compilers. 2422 2423Example Code and Data Size: These are the sizes for the OS-independent 2424acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2425debug version of the code includes the debug output trace mechanism and 2426has a much larger code and data size. 2427 2428 Current Release: 2429 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2430 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2431 Previous Release: 2432 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2433 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2434 2435 24362) iASL Compiler/Disassembler and Tools: 2437 2438Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2439the simpler ASL ElseIf keyword. During the conversion, a trailing If 2440block could be lost and missing from the disassembled output. 2441 2442iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2443the missing rule caused a parse error when using the Index operator as an 2444operand to ObjectType. This construct now compiles properly. Example: 2445 ObjectType(PKG1[4]). 2446 2447iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2448option). Previously, unresolved symbols could cause a protection fault. 2449Such symbols are now marked as unresolved in the map file. 2450 2451iASL: Implemented support to allow control method invocations as an 2452operand to the ASL DeRefOf operator. Example: 2453 DeRefOf(MTH1(Local0)) 2454 2455Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2456possible _PLD buffer now includes examination of both the normal buffer 2457length (16 or 20) as well as the surrounding AML package length. 2458 2459Disassembler: Fixed a problem with the decoding of complex expressions 2460within the Divide operator for ASL+. For the case where both the quotient 2461and remainder targets are specified, the entire statement cannot be 2462disassembled. Previously, the output incorrectly contained a mix of ASL- 2463and ASL+ operators. This mixed statement causes a syntax error when 2464compiled. Example: 2465 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2466disassembled to: 2467 Divide (INT1 + 6, 128, RSLT, QUOT) 2468 2469iASL/Tools: Added support to process AML and non-AML ACPI tables 2470consistently. For the disassembler and AcpiExec, allow all types of ACPI 2471tables (AML and data tables). For the iASL -e option, allow only AML 2472tables (DSDT/SSDT). 2473 2474---------------------------------------- 247531 August 2016. Summary of changes for version 20160831: 2476 2477 24781) ACPICA kernel-resident subsystem: 2479 2480Improve support for the so-called "module-level code", which is defined 2481to be math, logical and control AML opcodes that appear outside of any 2482control method. This change improves the support by adding more opcodes 2483that can be executed in the manner. Some other issues have been solved, 2484and the ASL grammar changes to support such code under all scope 2485operators (Device, etc.) are complete. Lv Zheng. 2486 2487UEFI support: these OSL functions have been implemented. This is an 2488additional step toward supporting the AcpiExec utility natively (with 2489full hardware access) under UEFI. Marcelo Ferreira. 2490 AcpiOsReadPciConfiguration 2491 AcpiOsWritePciConfiguration 2492 2493Fixed a possible mutex error during control method auto-serialization. Lv 2494Zheng. 2495 2496Updated support for the Generic Address Structure by fully implementing 2497all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2498Zheng. 2499 2500Updated the return value for the internal _OSI method. Instead of 25010xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2502for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2503implementations, and will be reflected and clarified in the next version 2504of the ACPI specification. 2505 2506Implemented two new table events that can be passed to an ACPICA table 2507handler. These events are used to indicate a table installation or 2508uninstallation. These events are used in addition to existed table load 2509and unload events. Lv Zheng. 2510 2511Implemented a cleanup for all internal string-to-integer conversions. 2512Consolidate multiple versions of this functionality and limit possible 2513bases to either 10 or 16 to simplify the code. Adds a new file, 2514utstrtoul64. 2515 2516Cleanup the inclusion order of the various compiler-specific headers. 2517This simplifies build configuration management. The compiler-specific 2518headers are now split out from the host-specific headers. Lv Zheng. 2519 2520Example Code and Data Size: These are the sizes for the OS-independent 2521acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2522debug version of the code includes the debug output trace mechanism and 2523has a much larger code and data size. 2524 2525 Current Release: 2526 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2527 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2528 2529 25302) iASL Compiler/Disassembler and Tools: 2531 2532iASL/AcpiExec: Added a command line option to display the build date/time 2533of the tool (-vd). This can be useful to verify that the correct version 2534of the tools are being used. 2535 2536AML Debugger: Implemented a new subcommand ("execute predef") to execute 2537all predefined control methods and names within the current namespace. 2538This can be useful for debugging problems with ACPI tables and the ACPI 2539namespace. 2540 2541---------------------------------------- 254229 July 2016. Summary of changes for version 20160729: 2543 2544 25451) ACPICA kernel-resident subsystem: 2546 2547Implemented basic UEFI support for the various ACPICA tools. This 2548includes: 25491) An OSL to implement the various AcpiOs* interfaces on UEFI. 25502) Support to obtain the ACPI tables on UEFI. 25513) Local implementation of required C library functions not available on 2552UEFI. 25534) A front-end (main) function for the tools for UEFI-related 2554initialization. 2555 2556The initial deployment of this support is the AcpiDump utility executing 2557as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2558Current environments supported are Linux/Unix. MSVC generation is not 2559supported at this time. See the generate/efi/README file for build 2560instructions. Lv Zheng. 2561 2562Future plans include porting the AcpiExec utility to execute natively on 2563the platform with I/O and memory access. This will allow viewing/dump of 2564the platform namespace and native execution of ACPI control methods that 2565access the actual hardware. To fully implement this support, the OSL 2566functions below must be implemented with UEFI interfaces. Any community 2567help in the implementation of these functions would be appreciated: 2568 AcpiOsReadPort 2569 AcpiOsWritePort 2570 AcpiOsReadMemory 2571 AcpiOsWriteMemory 2572 AcpiOsReadPciConfiguration 2573 AcpiOsWritePciConfiguration 2574 2575Restructured and standardized the C library configuration for ACPICA, 2576resulting in the various configuration options below. This includes a 2577global restructuring of the compiler-dependent and platform-dependent 2578include files. These changes may affect the existing platform-dependent 2579configuration files on some hosts. Lv Zheng. 2580 2581The current C library configuration options appear below. For any issues, 2582it may be helpful to examine the existing compiler-dependent and 2583platform-dependent files as examples. Lv Zheng. 2584 25851) Linux kernel: 2586 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2587library. 2588 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 25892) Unix/Windows/BSD applications: 2590 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2591library. 2592 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 25933) UEFI applications: 2594 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2595library. 2596 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 25974) UEFI applications (EDK2/StdLib): 2598 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2599 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2600 2601 2602AML interpreter: "module-level code" support. Allows for execution of so- 2603called "executable" AML code (math/logical operations, etc.) outside of 2604control methods not just at the module level (top level) but also within 2605any scope declared outside of a control method - Scope{}, Device{}, 2606Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2607 2608Simplified the configuration of the "maximum AML loops" global option by 2609adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2610modified at runtime. 2611 2612 2613Example Code and Data Size: These are the sizes for the OS-independent 2614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2615debug version of the code includes the debug output trace mechanism and 2616has a much larger code and data size. 2617 2618 Current Release: 2619 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2620 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2621 2622 26232) iASL Compiler/Disassembler and Tools: 2624 2625iASL: Add full support for the RASF ACPI table (RAS Features Table). 2626Includes disassembler, data table compiler, and header support. 2627 2628iASL Expand "module-level code" support. Allows for 2629compilation/disassembly of so-called "executable" AML code (math/logical 2630operations, etc.) outside of control methods not just at the module level 2631(top level) but also within any scope declared outside of a control 2632method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2633ThermalZone{}. 2634 2635AcpiDump: Added support for dumping all SSDTs on newer versions of 2636Windows. These tables are now easily available -- SSDTs are not available 2637through the registry on older versions. 2638 2639---------------------------------------- 264027 May 2016. Summary of changes for version 20160527: 2641 2642 26431) ACPICA kernel-resident subsystem: 2644 2645Temporarily reverted the new arbitrary bit length/alignment support in 2646AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2647a number of regressions with the new code that need to be fully resolved 2648and tested before this support can be finally integrated into ACPICA. 2649Apologies for any inconveniences these issues may have caused. 2650 2651The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2652ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2653and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2654 2655Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2656option. Adds a new return macro, return_STR. Junk-uk Kim. 2657 2658Example Code and Data Size: These are the sizes for the OS-independent 2659acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2660debug version of the code includes the debug output trace mechanism and 2661has a much larger code and data size. 2662 2663 Current Release: 2664 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2665 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2666 Previous Release: 2667 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2668 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2669 2670---------------------------------------- 267122 April 2016. Summary of changes for version 20160422: 2672 26731) ACPICA kernel-resident subsystem: 2674 2675Fixed a regression in the GAS (generic address structure) arbitrary bit 2676support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2677and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2678 2679ACPI 6.0: Added support for new/renamed resource macros. One new argument 2680was added to each of these macros, and the original name has been 2681deprecated. The AML disassembler will always disassemble to the new 2682names. Support for the new macros was added to iASL, disassembler, 2683resource manager, and the acpihelp utility. ACPICA BZ 1274. 2684 2685 I2cSerialBus -> I2cSerialBusV2 2686 SpiSerialBus -> SpiSerialBusV2 2687 UartSerialBus -> UartSerialBusV2 2688 2689ACPI 6.0: Added support for a new integer field that was appended to the 2690package object returned by the _BIX method. This adds iASL compile-time 2691and AML runtime error checking. ACPICA BZ 1273. 2692 2693ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2694Subspace Type2" (Headers, Disassembler, and data table compiler). 2695 2696Example Code and Data Size: These are the sizes for the OS-independent 2697acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2698debug version of the code includes the debug output trace mechanism and 2699has a much larger code and data size. 2700 2701 Current Release: 2702 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2703 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2704 Previous Release: 2705 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2706 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2707 2708 27092) iASL Compiler/Disassembler and Tools: 2710 2711iASL: Implemented an ASL grammar extension to allow/enable executable 2712"module-level code" to be created and executed under the various 2713operators that create new scopes. This type of AML code is already 2714supported in all known AML interpreters, and the grammar change will 2715appear in the next version of the ACPI specification. Simplifies the 2716conditional runtime creation of named objects under these object types: 2717 2718 Device 2719 PowerResource 2720 Processor 2721 Scope 2722 ThermalZone 2723 2724iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2725ease-of-use to the ASL language. The syntax is similar to the 2726corresponding C operator, and is implemented with the existing AML While 2727opcode -- thus requiring no changes to existing AML interpreters. 2728 2729 For (Initialize, Predicate, Update) {TermList} 2730 2731Grammar: 2732 ForTerm := 2733 For ( 2734 Initializer // Nothing | TermArg => ComputationalData 2735 Predicate // Nothing | TermArg => ComputationalData 2736 Update // Nothing | TermArg => ComputationalData 2737 ) {TermList} 2738 2739 2740iASL: The _HID/_ADR detection and validation has been enhanced to search 2741under conditionals in order to allow these objects to be conditionally 2742created at runtime. 2743 2744iASL: Fixed several issues with the constant folding feature. The 2745improvement allows better detection and resolution of statements that can 2746be folded at compile time. ACPICA BZ 1266. 2747 2748iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2749conversion to the ASL ElseIf operator where incorrect ASL code could be 2750generated. 2751 2752iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2753sometimes an extra (and extraneous) set of parentheses were emitted for 2754some combinations of operators. Although this did not cause any problems 2755with recompilation of the disassembled code, it made the code more 2756difficult to read. David Box. ACPICA BZ 1231. 2757 2758iASL: Changed to ignore the unreferenced detection for predefined names 2759of resource descriptor elements, when the resource descriptor is 2760created/defined within a control method. 2761 2762iASL: Disassembler: Fix a possible fault with externally declared Buffer 2763objects. 2764 2765---------------------------------------- 276618 March 2016. Summary of changes for version 20160318: 2767 27681) ACPICA kernel-resident subsystem: 2769 2770Added support for arbitrary bit lengths and bit offsets for registers 2771defined by the Generic Address Structure. Previously, only aligned bit 2772lengths of 8/16/32/64 were supported. This was sufficient for many years, 2773but recently some machines have been seen that require arbitrary bit- 2774level support. ACPICA BZ 1240. Lv Zheng. 2775 2776Fixed an issue where the \_SB._INI method sometimes must be evaluated 2777before any _REG methods are evaluated. Lv Zheng. 2778 2779Implemented several changes related to ACPI table support 2780(Headers/Disassembler/TableCompiler): 2781NFIT: For ACPI 6.1, updated to add some additional new fields and 2782constants. 2783FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 27846). 2785DMAR: Added new constants per the 10/2014 DMAR spec. 2786IORT: Added new subtable per the 10/2015 IORT spec. 2787HEST: For ACPI 6.1, added new constants and new subtable. 2788DBG2: Added new constants per the 12/2015 DBG2 spec. 2789FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2790ACPICA BZ 1249. 2791ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2792 2793Updated header support for the DMAR table to match the current version of 2794the related spec. 2795 2796Added extensions to the ASL Concatenate operator to allow any ACPI object 2797to be passed as an operand. Any object other than Integer/String/Buffer 2798simply returns a string containing the object type. This extends the 2799usefulness of the Printf macros. Previously, Concatenate would abort the 2800control method if a non-data object was encountered. 2801 2802ACPICA source code: Deployed the C "const" keyword across the source code 2803where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2804 2805Example Code and Data Size: These are the sizes for the OS-independent 2806acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2807debug version of the code includes the debug output trace mechanism and 2808has a much larger code and data size. 2809 2810 Current Release: 2811 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2812 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2813 Previous Release: 2814 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2815 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2816 2817 28182) iASL Compiler/Disassembler and Tools: 2819 2820iASL/Disassembler: Improved the heuristic used to determine the number of 2821arguments for an externally defined control method (a method in another 2822table). Although this is an improvement, there is no deterministic way to 2823"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2824will completely solve this problem as it is deployed (automatically) in 2825newer BIOS code. 2826 2827iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2828statements that could cause errors when the disassembled file is 2829compiled. ACPICA BZ 1243. David Box. 2830 2831iASL: Fixed a regression caused by the merger of the two versions of the 2832local strtoul64. Because of a dependency on a global variable, strtoul64 2833could return an error for integers greater than a 32-bit value. ACPICA BZ 28341260. 2835 2836iASL: Fixed a regression where a fault could occur for an ASL Return 2837statement if it invokes a control method that is not resolved. ACPICA BZ 28381264. 2839 2840AcpiXtract: Improved input file validation: detection of binary files and 2841non-acpidump text files. 2842 2843---------------------------------------- 284412 February 2016. Summary of changes for version 20160212: 2845 28461) ACPICA kernel-resident subsystem: 2847 2848Implemented full support for the ACPI 6.1 specification (released in 2849January). This version of the specification is available at: 2850http://www.uefi.org/specifications 2851 2852Only a relatively small number of changes were required in ACPICA to 2853support ACPI 6.1, in these areas: 2854- New predefined names 2855- New _HID values 2856- A new subtable for HEST 2857- A few other header changes for new values 2858 2859Ensure \_SB_._INI is executed before any _REG methods are executed. There 2860appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2861 2862Reverted a change made in version 20151218 which enabled method 2863invocations to be targets of various ASL operators (SuperName and Target 2864grammar elements). While the new behavior is supported by the ACPI 2865specification, other AML interpreters do not support this behavior and 2866never will. The ACPI specification will be updated for ACPI 6.2 to remove 2867this support. Therefore, the change was reverted to the original ACPICA 2868behavior. 2869 2870ACPICA now supports the GCC 6 compiler. 2871 2872Current Release: (Note: build changes increased sizes) 2873 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2874 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2875Previous Release: 2876 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2877 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2878 2879 28802) iASL Compiler/Disassembler and Tools: 2881 2882Completed full support for the ACPI 6.0 External() AML opcode. The 2883compiler emits an external AML opcode for each ASL External statement. 2884This opcode is used by the disassembler to assist with the disassembly of 2885external control methods by specifying the required number of arguments 2886for the method. AML interpreters do not use this opcode. To ensure that 2887interpreters do not even see the opcode, a block of one or more external 2888opcodes is surrounded by an "If(0)" construct. As this feature becomes 2889commonly deployed in BIOS code, the ability of disassemblers to correctly 2890disassemble AML code will be greatly improved. David Box. 2891 2892iASL: Implemented support for an optional cross-reference output file. 2893The -lx option will create a the cross-reference file with the suffix 2894"xrf". Three different types of cross-reference are created in this file: 2895- List of object references made from within each control method 2896- Invocation (caller) list for each user-defined control method 2897- List of references to each non-method object in the namespace 2898 2899iASL: Method invocations as ASL Target operands are now disallowed and 2900flagged as errors in preparation for ACPI 6.2 (see the description of the 2901problem above). 2902 2903---------------------------------------- 29048 January 2016. Summary of changes for version 20160108: 2905 29061) ACPICA kernel-resident subsystem: 2907 2908Updated all ACPICA copyrights and signons to 2016: Added the 2016 2909copyright to all source code module headers and utility/tool signons. 2910This includes the standard Linux dual-license header. This affects 2911virtually every file in the ACPICA core subsystem, iASL compiler, all 2912ACPICA utilities, and the ACPICA test suite. 2913 2914Fixed a regression introduced in version 20151218 concerning the 2915execution of so-called module-level ASL/AML code. Namespace objects 2916created under a module-level If() construct were not properly/fully 2917entered into the namespace and could cause an interpreter fault when 2918accessed. 2919 2920Example Code and Data Size: These are the sizes for the OS-independent 2921acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2922debug version of the code includes the debug output trace mechanism and 2923has a much larger code and data size. 2924 2925Current Release: 2926 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2927 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2928 Previous Release: 2929 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2930 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2931 2932 29332) iASL Compiler/Disassembler and Tools: 2934 2935Fixed a problem with the compilation of the GpioIo and GpioInt resource 2936descriptors. The _PIN field name was incorrectly defined to be an array 2937of 32-bit values, but the _PIN values are in fact 16 bits each. This 2938would cause incorrect bit width warnings when using Word (16-bit) fields 2939to access the descriptors. 2940 2941 2942---------------------------------------- 294318 December 2015. Summary of changes for version 20151218: 2944 29451) ACPICA kernel-resident subsystem: 2946 2947Implemented per-AML-table execution of "module-level code" as individual 2948ACPI tables are loaded into the namespace during ACPICA initialization. 2949In other words, any module-level code within an AML table is executed 2950immediately after the table is loaded, instead of batched and executed 2951after all of the tables have been loaded. This provides compatibility 2952with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2953David Box. 2954 2955To fully support the feature above, the default operation region handlers 2956for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2957installed before any ACPI tables are loaded. This enables module-level 2958code to access these address spaces during the table load and module- 2959level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2960Box. 2961 2962Implemented several changes to the internal _REG support in conjunction 2963with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2964utilities for the changes above. Although these tools were changed, host 2965operating systems that simply use the default handlers for SystemMemory, 2966SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2967 2968For example, in the code below, DEV1 is conditionally added to the 2969namespace by the DSDT via module-level code that accesses an operation 2970region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2971created immediately after the DSDT is loaded in order for the SSDT to 2972successfully reference DEV1. Previously, this code would cause an 2973AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2974fully supported by ACPICA. 2975 2976 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2977 { 2978 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2979 Field (OPR1, AnyAcc, NoLock, Preserve) 2980 { 2981 FLD1, 1 2982 } 2983 If (FLD1) 2984 { 2985 Device (\DEV1) 2986 { 2987 } 2988 } 2989 } 2990 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2991 { 2992 External (\DEV1, DeviceObj) 2993 Scope (\DEV1) 2994 { 2995 } 2996 } 2997 2998Fixed an AML interpreter problem where control method invocations were 2999not handled correctly when the invocation was itself a SuperName argument 3000to another ASL operator. In these cases, the method was not invoked. 3001ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3002argument: 3003 Store 3004 Acquire, Wait 3005 CondRefOf, RefOf 3006 Decrement, Increment 3007 Load, Unload 3008 Notify 3009 Signal, Release, Reset 3010 SizeOf 3011 3012Implemented automatic String-to-ObjectReference conversion support for 3013packages returned by predefined names (such as _DEP). A common BIOS error 3014is to add double quotes around an ObjectReference namepath, which turns 3015the reference into an unexpected string object. This support detects the 3016problem and corrects it before the package is returned to the caller that 3017invoked the method. Lv Zheng. 3018 3019Implemented extensions to the Concatenate operator. Concatenate now 3020accepts any type of object, it is not restricted to simply 3021Integer/String/Buffer. For objects other than these 3 basic data types, 3022the argument is treated as a string containing the name of the object 3023type. This expands the utility of Concatenate and the Printf/Fprintf 3024macros. ACPICA BZ 1222. 3025 3026Cleaned up the output of the ASL Debug object. The timer() value is now 3027optional and no longer emitted by default. Also, the basic data types of 3028Integer/String/Buffer are simply emitted as their values, without a data 3029type string -- since the data type is obvious from the output. ACPICA BZ 30301221. 3031 3032Example Code and Data Size: These are the sizes for the OS-independent 3033acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3034debug version of the code includes the debug output trace mechanism and 3035has a much larger code and data size. 3036 3037 Current Release: 3038 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3039 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3040 Previous Release: 3041 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3042 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3043 3044 30452) iASL Compiler/Disassembler and Tools: 3046 3047iASL: Fixed some issues with the ASL Include() operator. This operator 3048was incorrectly defined in the iASL parser rules, causing a new scope to 3049be opened for the code within the include file. This could lead to 3050several issues, including allowing ASL code that is technically illegal 3051and not supported by AML interpreters. Note, this does not affect the 3052related #include preprocessor operator. ACPICA BZ 1212. 3053 3054iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3055operator is essentially an ASL macro since there is no AML opcode 3056associated with it. The code emitted by the iASL compiler for ElseIf is 3057an Else opcode followed immediately by an If opcode. The disassembler 3058will now emit an ElseIf if it finds an Else immediately followed by an 3059If. This simplifies the decoded ASL, especially for deeply nested 3060If..Else and large Switch constructs. Thus, the disassembled code more 3061closely follows the original source ASL. ACPICA BZ 1211. Example: 3062 3063 Old disassembly: 3064 Else 3065 { 3066 If (Arg0 == 0x02) 3067 { 3068 Local0 = 0x05 3069 } 3070 } 3071 3072 New disassembly: 3073 ElseIf (Arg0 == 0x02) 3074 { 3075 Local0 = 0x05 3076 } 3077 3078AcpiExec: Added support for the new module level code behavior and the 3079early region installation. This required a small change to the 3080initialization, since AcpiExec must install its own operation region 3081handlers. 3082 3083AcpiExec: Added support to make the debug object timer optional. Default 3084is timer disabled. This cleans up the debug object output -- the timer 3085data is rarely used. 3086 3087AcpiExec: Multiple ACPI tables are now loaded in the order that they 3088appear on the command line. This can be important when there are 3089interdependencies/references between the tables. 3090 3091iASL/Templates. Add support to generate template files with multiple 3092SSDTs within a single output file. Also added ommand line support to 3093specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 30941223, 1225. 3095 3096 3097---------------------------------------- 309824 November 2015. Summary of changes for version 20151124: 3099 31001) ACPICA kernel-resident subsystem: 3101 3102Fixed a possible regression for a previous update to FADT handling. The 3103FADT no longer has a fixed table ID, causing some issues with code that 3104was hardwired to a specific ID. Lv Zheng. 3105 3106Fixed a problem where the method auto-serialization could interfere with 3107the current SyncLevel. This change makes the auto-serialization support 3108transparent to the SyncLevel support and management. 3109 3110Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3111interface is intended for early access to the namespace during the 3112initial namespace device discovery walk. The _SUB method has been seen to 3113access operation regions in some cases, causing errors because the 3114operation regions are not fully initialized. 3115 3116AML Debugger: Fixed some issues with the terminate/quit/exit commands 3117that can cause faults. Lv Zheng. 3118 3119AML Debugger: Add thread ID support so that single-step mode only applies 3120to the AML Debugger thread. This prevents runtime errors within some 3121kernels. Lv Zheng. 3122 3123Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3124methods that are invoked by this interface are optional, removed warnings 3125emitted for the case where one or more of these methods do not exist. 3126ACPICA BZ 1208, original change by Prarit Bhargava. 3127 3128Made a major pass through the entire ACPICA source code base to 3129standardize formatting that has diverged a bit over time. There are no 3130functional changes, but this will of course cause quite a few code 3131differences from the previous ACPICA release. 3132 3133Example Code and Data Size: These are the sizes for the OS-independent 3134acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3135debug version of the code includes the debug output trace mechanism and 3136has a much larger code and data size. 3137 3138 Current Release: 3139 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3140 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3141 Previous Release: 3142 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3143 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3144 3145 31462) iASL Compiler/Disassembler and Tools: 3147 3148iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3149definition blocks within a single ASL file and the resulting AML file. 3150Support for this type of file was also added to the various tools that 3151use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3152example code below shows two definition blocks within the same file: 3153 3154 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 31550x12345678) 3156 { 3157 } 3158 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3159 { 3160 } 3161 3162iASL: Enhanced typechecking for the Name() operator. All expressions for 3163the value of the named object must be reduced/folded to a single constant 3164at compile time, as per the ACPI specification (the AML definition of 3165Name()). 3166 3167iASL: Fixed some code indentation issues for the -ic and -ia options (C 3168and assembly headers). Now all emitted code correctly begins in column 1. 3169 3170iASL: Added an error message for an attempt to open a Scope() on an 3171object defined in an SSDT. The DSDT is always loaded into the namespace 3172first, so any attempt to open a Scope on an SSDT object will fail at 3173runtime. 3174 3175 3176---------------------------------------- 317730 September 2015. Summary of changes for version 20150930: 3178 31791) ACPICA kernel-resident subsystem: 3180 3181Debugger: Implemented several changes and bug fixes to assist support for 3182the in-kernel version of the AML debugger. Lv Zheng. 3183- Fix the "predefined" command for in-kernel debugger. 3184- Do not enter debug command loop for the help and version commands. 3185- Disallow "execute" command during execution/single-step of a method. 3186 3187Interpreter: Updated runtime typechecking for all operators that have 3188target operands. The operand is resolved and validated that it is legal. 3189For example, the target cannot be a non-data object such as a Device, 3190Mutex, ThermalZone, etc., as per the ACPI specification. 3191 3192Debugger: Fixed the double-mutex user I/O handshake to work when local 3193deadlock detection is enabled. 3194 3195Debugger: limited display of method locals and arguments (LocalX and 3196ArgX) to only those that have actually been initialized. This prevents 3197lines of extraneous output. 3198 3199Updated the definition of the NFIT table to correct the bit polarity of 3200one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3201 3202Example Code and Data Size: These are the sizes for the OS-independent 3203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3204debug version of the code includes the debug output trace mechanism and 3205has a much larger code and data size. 3206 3207 Current Release: 3208 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3209 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3210 Previous Release: 3211 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3212 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3213 3214 32152) iASL Compiler/Disassembler and Tools: 3216 3217iASL: Improved the compile-time typechecking for operands of many of the 3218ASL operators: 3219 3220-- Added an option to disable compiler operand/operator typechecking (- 3221ot). 3222 3223-- For the following operators, the TermArg operands are now validated 3224when possible to be Integer data objects: BankField, OperationRegion, 3225DataTableRegion, Buffer, and Package. 3226 3227-- Store (Source, Target): Both the source and target operands are 3228resolved and checked that the operands are both legal. For example, 3229neither operand can be a non-data object such as a Device, Mutex, 3230ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3231operator can be used to store an object to any type of target object. 3232 3233-- Store (Source, Target): If the source is a Package object, the target 3234must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3235is a Package, the source must also be a Package. 3236 3237-- Store (Source, Target): A warning is issued if the source and target 3238resolve to the identical named object. 3239 3240-- Store (Source, <method invocation>): An error is generated for the 3241target method invocation, as this construct is not supported by the AML 3242interpreter. 3243 3244-- For all ASL math and logic operators, the target operand must be a 3245data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3246includes the function return value also. 3247 3248-- External declarations are also included in the typechecking where 3249possible. External objects defined using the UnknownObj keyword cannot be 3250typechecked, however. 3251 3252iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3253operator: 3254- Legacy code: Index(PKG1, 3) 3255- New ASL+ code: PKG1[3] 3256This completes the ACPI 6.0 ASL+ support as it was the only operator not 3257supported. 3258 3259iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3260spaces were inadvertently appended to the filename, causing file access 3261and deletion problems on some systems. 3262 3263ASL Test Suite (ASLTS): Updated the master makefile to generate all 3264possible compiler output files when building the test suite -- thus 3265exercising these features of the compiler. These files are automatically 3266deleted when the test suite exits. 3267 3268 3269---------------------------------------- 327018 August 2015. Summary of changes for version 20150818: 3271 32721) ACPICA kernel-resident subsystem: 3273 3274Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3275Zheng. ACPICA BZ 1186. 3276 3277Completed development to ensure that the ACPICA Disassembler and Debugger 3278are fully standalone components of ACPICA. Removed cross-component 3279dependences. Lv Zheng. 3280 3281The max-number-of-AML-loops is now runtime configurable (previously was 3282compile-time only). This is essentially a loop timeout to force-abort 3283infinite AML loops. ACPCIA BZ 1192. 3284 3285Debugger: Cleanup output to dump ACPI names and namepaths without any 3286trailing underscores. Lv Zheng. ACPICA BZ 1135. 3287 3288Removed unnecessary conditional compilations across the Debugger and 3289Disassembler components where entire modules could be left uncompiled. 3290 3291The aapits test is deprecated and has been removed from the ACPICA git 3292tree. The test has never been completed and has not been maintained, thus 3293becoming rather useless. ACPICA BZ 1015, 794. 3294 3295A batch of small changes to close bugzilla and other reports: 3296- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3297- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3298- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3299- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3300Moore. 3301- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3302ACPICA BZ 1184. 3303- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3304operators. 3305- Debugger: Split debugger initialization/termination interfaces. Lv 3306Zheng. 3307- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3308identification. 3309- AcpiExec: Add debug message during _REG method phase during table 3310load/init. 3311- AcpiNames: Fix a regression where some output was missing and no longer 3312emitted. 3313- Debugger: General cleanup and simplification. Lv Zheng. 3314- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3315 3316Example Code and Data Size: These are the sizes for the OS-independent 3317acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3318debug version of the code includes the debug output trace mechanism and 3319has a much larger code and data size. 3320 3321 Current Release: 3322 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3323 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3324 Previous Release: 3325 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3326 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3327 3328 33292) iASL Compiler/Disassembler and Tools: 3330 3331AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3332were not handled properly and caused load errors. Now, properly invoke 3333and use the ACPICA auto-reallocate mechanism for ACPI table data 3334structures. ACPICA BZ 1188 3335 3336AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3337BZ 1190. 3338 3339AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3340AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3341executed during initialization. ACPICA BZ 1187, 1189. 3342 3343iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3344that corresponds to each disassembled ASL statement, to simplify 3345debugging. ACPICA BZ 1191. 3346 3347Debugger: Add option to the "objects" command to display a summary of the 3348current namespace objects (Object type and count). This is displayed if 3349the command is entered with no arguments. 3350 3351AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3352 3353 3354---------------------------------------- 335517 July 2015. Summary of changes for version 20150717: 3356 33571) ACPICA kernel-resident subsystem: 3358 3359Improved the partitioning between the Debugger and Disassembler 3360components. This allows the Debugger to be used standalone within kernel 3361code without the Disassembler (which is used for single stepping also). 3362This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3363 3364Debugger: Implemented a new command to trace the execution of control 3365methods (Trace). This is especially useful for the in-kernel version of 3366the debugger when file I/O may not be available for method trace output. 3367See the ACPICA reference for more information. Lv Zheng. 3368 3369Moved all C library prototypes (used for the local versions of these 3370functions when requested) to a new header, acclib.h 3371Cleaned up the use of non-ANSI C library functions. These functions are 3372implemented locally in ACPICA. Moved all such functions to a common 3373source file, utnonansi.c 3374 3375Debugger: Fixed a problem with the "!!" command (get last command 3376executed) where the debugger could enter an infinite loop and eventually 3377crash. 3378 3379Removed the use of local macros that were used for some of the standard C 3380library functions to automatically cast input parameters. This mostly 3381affected the is* functions where the input parameter is defined to be an 3382int. This required a few modifications to the main ACPICA source code to 3383provide casting for these functions and eliminate possible compiler 3384warnings for these parameters. 3385 3386Across the source code, added additional status/error checking to resolve 3387issues discovered by static source code analysis tools such as Coverity. 3388 3389Example Code and Data Size: These are the sizes for the OS-independent 3390acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3391debug version of the code includes the debug output trace mechanism and 3392has a much larger code and data size. 3393 3394 Current Release: 3395 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3396 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3397 Previous Release: 3398 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3399 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3400 3401 34022) iASL Compiler/Disassembler and Tools: 3403 3404iASL: Fixed a regression where the device map file feature no longer 3405worked properly when used in conjunction with the disassembler. It only 3406worked properly with the compiler itself. 3407 3408iASL: Implemented a new warning for method LocalX variables that are set 3409but never used (similar to a C compiler such as gcc). This also applies 3410to ArgX variables that are not defined by the parent method, and are 3411instead (legally) used as local variables. 3412 3413iASL/Preprocessor: Finished the pass-through of line numbers from the 3414preprocessor to the compiler. This ensures that compiler errors/warnings 3415have the correct original line numbers and filenames, regardless of any 3416#include files. 3417 3418iASL/Preprocessor: Fixed a couple of issues with comment handling and the 3419pass-through of comments to the preprocessor output file (which becomes 3420the compiler input file). Also fixed a problem with // comments that 3421appear after a math expression. 3422 3423iASL: Added support for the TCPA server table to the table compiler and 3424template generator. (The client table was already previously supported) 3425 3426iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3427identify the iASL compiler. 3428 3429Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3430multiple times. The new names are ACPI_SIGN_NEGATIVE and 3431ACPI_SIGN_POSITIVE. 3432 3433AcpiHelp: Update to expand help messages for the iASL preprocessor 3434directives. 3435 3436 3437---------------------------------------- 343819 June 2015. Summary of changes for version 20150619: 3439 3440Two regressions in version 20150616 have been addressed: 3441 3442Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3443etc.) This update changes ACPICA to only use the standard headers for 3444functions, or the prototypes for the local versions of the C library 3445functions. Across the source code, this required some additional casts 3446for some Clib invocations for portability. Moved all local prototypes to 3447a new file, acclib.h 3448 3449Fixes several problems with recent changes to the handling of the FACS 3450table that could cause some systems not to boot. 3451 3452 3453---------------------------------------- 345416 June 2015. Summary of changes for version 20150616: 3455 3456 34571) ACPICA kernel-resident subsystem: 3458 3459Across the entire ACPICA source code base, the various macros for the C 3460library functions (such as ACPI_STRLEN, etc.) have been removed and 3461replaced by the standard C library names (strlen, etc.) The original 3462purpose for these macros is no longer applicable. This simplification 3463reduces the number of macros used in the ACPICA source code 3464significantly, improving readability and maintainability. 3465 3466Implemented support for a new ACPI table, the OSDT. This table, the 3467"override" SDT, can be loaded directly by the host OS at boot time. It 3468enables the replacement of existing namespace objects that were installed 3469via the DSDT and/or SSDTs. The primary purpose for this is to replace 3470buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3471for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3472Moore. 3473 3474Added support for systems with (improperly) two FACS tables -- a "32-bit" 3475table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3476X field). This change will support both automatically. There continues to 3477be systems found with this issue. This support requires a change to the 3478AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3479been added to allow the host to select which FACS is desired 3480(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3481details Lv Zheng. 3482 3483Added a new feature to allow for systems that do not contain an FACS. 3484Although this is already supported on hardware-reduced platforms, the 3485feature has been extended for all platforms. The reasoning is that we do 3486not want to abort the entire ACPICA initialization just because the 3487system is seriously buggy and has no FACS. 3488 3489Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3490not correctly transcribed from the ACPI specification in ACPICA version 349120150515. 3492 3493Implemented support for the _CLS object in the AcpiGetObjectInfo external 3494interface. 3495 3496Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3497recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3498compiler also updated. Note: The TCPA "server" table is not supported by 3499the disassembler/table-compiler at this time. 3500 3501ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3502 3503Example Code and Data Size: These are the sizes for the OS-independent 3504acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3505debug version of the code includes the debug output trace mechanism and 3506has a much larger code and data size. 3507 3508 Current Release: 3509 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3510 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3511 Previous Release: 3512 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3513 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3514 3515 35162) iASL Compiler/Disassembler and Tools: 3517 3518Disassembler: Fixed a problem with the new symbolic operator disassembler 3519where incorrect ASL code could be emitted in some cases for the "non- 3520commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3521ShiftRight. The actual problem cases seem to be rather unusual in common 3522ASL code, however. David Box. 3523 3524Modified the linux version of acpidump to obtain ACPI tables from not 3525just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3526Zheng. 3527 3528iASL: Fixed a problem where the user preprocessor output file (.i) 3529contained extra data that was not expected. The compiler was using this 3530file as a temporary file and passed through #line directives in order to 3531keep compiler error messages in sync with the input file and line number 3532across multiple include files. The (.i) is no longer a temporary file as 3533the compiler uses a new, different file for the original purpose. 3534 3535iASL: Fixed a problem where comments within the original ASL source code 3536file were not passed through to the preprocessor output file, nor any 3537listing files. 3538 3539iASL: Fixed some issues for the handling of the "#include" preprocessor 3540directive and the similar (but not the same) "Include" ASL operator. 3541 3542iASL: Add support for the new OSDT in both the disassembler and compiler. 3543 3544iASL: Fixed a problem with the constant folding support where a Buffer 3545object could be incorrectly generated (incorrectly formed) during a 3546conversion to a Store() operator. 3547 3548AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3549description text for the _REV predefined name. _REV now permanently 3550returns 2, as per the ACPI 6.0 specification. 3551 3552Debugger: Enhanced the output of the Debug ASL object for references 3553produced by the Index operator. For Buffers and strings, only output the 3554actual byte pointed to by the index. For packages, only print the single 3555package element decoded by the index. Previously, the entire 3556buffer/string/package was emitted. 3557 3558iASL/Table-compiler: Fixed a regression where the "generic" data types 3559were no longer recognized, causing errors. 3560 3561 3562---------------------------------------- 356315 May 2015. Summary of changes for version 20150515: 3564 3565This release implements most of ACPI 6.0 as described below. 3566 35671) ACPICA kernel-resident subsystem: 3568 3569Implemented runtime argument checking and return value checking for all 3570new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3571_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3572 3573Example Code and Data Size: These are the sizes for the OS-independent 3574acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3575debug version of the code includes the debug output trace mechanism and 3576has a much larger code and data size. 3577 3578 Current Release: 3579 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3580 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3581 Previous Release: 3582 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3583 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3584 3585 35862) iASL Compiler/Disassembler and Tools: 3587 3588iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3589names (argument count validation and return value typechecking.) 3590 3591iASL disassembler and table compiler: implemented support for all new 3592ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3593 3594iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3595tables: FADT, MADT. 3596 3597iASL preprocessor: Added a new directive to enable inclusion of binary 3598blobs into ASL code. The new directive is #includebuffer. It takes a 3599binary file as input and emits a named ascii buffer object into the ASL 3600code. 3601 3602AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3603 3604AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3605directives. 3606 3607AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3608tables. 3609 3610 3611---------------------------------------- 361210 April 2015. Summary of changes for version 20150410: 3613 3614Reverted a change introduced in version 20150408 that caused 3615a regression in the disassembler where incorrect operator 3616symbols could be emitted. 3617 3618 3619---------------------------------------- 362008 April 2015. Summary of changes for version 20150408: 3621 3622 36231) ACPICA kernel-resident subsystem: 3624 3625Permanently set the return value for the _REV predefined name. It now 3626returns 2 (was 5). This matches other ACPI implementations. _REV will be 3627deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3628for ACPI 2.0 and later. It should never be used to differentiate or 3629identify operating systems. 3630 3631Added the "Windows 2015" string to the _OSI support. ACPICA will now 3632return TRUE to a query with this string. 3633 3634Fixed several issues with the local version of the printf function. 3635 3636Added the C99 compiler option (-std=c99) to the Unix makefiles. 3637 3638 Current Release: 3639 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3640 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3641 Previous Release: 3642 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3643 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3644 3645 36462) iASL Compiler/Disassembler and Tools: 3647 3648iASL: Implemented an enhancement to the constant folding feature to 3649transform the parse tree to a simple Store operation whenever possible: 3650 Add (2, 3, X) ==> is converted to: Store (5, X) 3651 X = 2 + 3 ==> is converted to: Store (5, X) 3652 3653Updated support for the SLIC table (Software Licensing Description Table) 3654in both the Data Table compiler and the disassembler. The SLIC table 3655support now conforms to "Microsoft Software Licensing Tables (SLIC and 3656MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3657following the ACPI header is now defined to be "Proprietary Data", and as 3658such, can only be entered or displayed as a hex data block. 3659 3660Implemented full support for the MSDM table as described in the document 3661above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3662following the ACPI header is defined to be "Proprietary Data", and can 3663only be entered or displayed as a hex data block. 3664 3665Implemented the -Pn option for the iASL Table Compiler (was only 3666implemented for the ASL compiler). This option disables the iASL 3667preprocessor. 3668 3669Disassembler: For disassembly of Data Tables, added a comment field 3670around the Ascii equivalent data that is emitted as part of the "Raw 3671Table Data" block. This prevents the iASL Preprocessor from possible 3672confusion if/when the table is compiled. 3673 3674Disassembler: Added an option (-df) to force the disassembler to assume 3675that the table being disassembled contains valid AML. This feature is 3676useful for disassembling AML files that contain ACPI signatures other 3677than DSDT or SSDT (such as OEMx or other signatures). 3678 3679Changes for the EFI version of the tools: 36801) Fixed a build error/issue 36812) Fixed a cast warning 3682 3683iASL: Fixed a path issue with the __FILE__ operator by making the 3684directory prefix optional within the internal SplitInputFilename 3685function. 3686 3687Debugger: Removed some unused global variables. 3688 3689Tests: Updated the makefile for proper generation of the AAPITS suite. 3690 3691 3692---------------------------------------- 369304 February 2015. Summary of changes for version 20150204: 3694 3695ACPICA kernel-resident subsystem: 3696 3697Updated all ACPICA copyrights and signons to 2014. Added the 2014 3698copyright to all module headers and signons, including the standard Linux 3699header. This affects virtually every file in the ACPICA core subsystem, 3700iASL compiler, all ACPICA utilities, and the test suites. 3701 3702Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3703A raw gpe handling mechanism was created to allow better handling of GPE 3704storms that aren't easily managed by the normal handler. The raw handler 3705allows disabling/renabling of the the GPE so that interrupt storms can be 3706avoided in cases where events cannot be timely serviced. In this 3707scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3708GPE. This API will leave the reference counts undisturbed, thereby 3709preventing unintentional clearing of the GPE when the intent in only to 3710temporarily disable it. Raw handlers allow enabling and disabling of a 3711GPE by removing GPE register locking. As such, raw handlers much provide 3712their own locks while using GPE API's to protect access to GPE data 3713structures. 3714Lv Zheng 3715 3716Events: Always modify GPE registers under the GPE lock. 3717Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3718values. Reported as bug by joe.liu@apple.com. 3719 3720Unix makefiles: Separate option to disable optimizations and 3721_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3722NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3723purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3724errors when building ACPICA. This allows disabling the option without 3725also having to disable optimazations. 3726David Box 3727 3728 Current Release: 3729 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3730 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3731 3732-- 3733-------------------------------------- 373407 November 2014. Summary of changes for version 20141107: 3735 3736This release is available at https://acpica.org/downloads 3737 3738This release introduces and implements language extensions to ASL that 3739provide support for symbolic ("C-style") operators and expressions. These 3740language extensions are known collectively as ASL+. 3741 3742 37431) iASL Compiler/Disassembler and Tools: 3744 3745Disassembler: Fixed a problem with disassembly of the UartSerialBus 3746macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3747Box. 3748 3749Disassembler: Fixed the Unicode macro support to add escape sequences. 3750All non-printable ASCII values are emitted as escape sequences, as well 3751as the standard escapes for quote and backslash. Ensures that the 3752disassembled macro can be correctly recompiled. 3753 3754iASL: Added Printf/Fprintf macros for formatted output. These macros are 3755translated to existing AML Concatenate and Store operations. Printf 3756writes to the ASL Debug object. Fprintf allows the specification of an 3757ASL name as the target. Only a single format specifier is required, %o, 3758since the AML interpreter dynamically converts objects to the required 3759type. David E. Box. 3760 3761 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3762 (Concatenate (Concatenate (Concatenate ("", Arg0), 3763 ": Unexpected value for "), Arg1), ", "), Arg2), 3764 " at line "), Arg3), Debug) 3765 3766 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3767 Arg0, Arg1, Arg2, Arg3) 3768 3769 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3770 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3771 3772 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3773 3774iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3775ASL parse tree before the AML code is generated. This allows blocks of 3776ASL code to be removed in order to help locate and identify problem 3777devices and/or code. David E. Box. 3778 3779AcpiExec: Added support (-fi) for an optional namespace object 3780initialization file. This file specifies initial values for namespace 3781objects as necessary for debugging and testing different ASL code paths 3782that may be taken as a result of BIOS options. 3783 3784 37852) Overview of symbolic operator support for ASL (ASL+) 3786------------------------------------------------------- 3787 3788As an extension to the ASL language, iASL implements support for symbolic 3789(C-style) operators for math and logical expressions. This can greatly 3790simplify ASL code as well as improve both readability and 3791maintainability. These language extensions can exist concurrently with 3792all legacy ASL code and expressions. 3793 3794The symbolic extensions are 100% compatible with existing AML 3795interpreters, since no new AML opcodes are created. To implement the 3796extensions, the iASL compiler transforms the symbolic expressions into 3797the legacy ASL/AML equivalents at compile time. 3798 3799Full symbolic expressions are supported, along with the standard C 3800precedence and associativity rules. 3801 3802Full disassembler support for the symbolic expressions is provided, and 3803creates an automatic migration path for existing ASL code to ASL+ code 3804via the disassembly process. By default, the disassembler now emits ASL+ 3805code with symbolic expressions. An option (-dl) is provided to force the 3806disassembler to emit legacy ASL code if desired. 3807 3808Below is the complete list of the currently supported symbolic operators 3809with examples. See the iASL User Guide for additional information. 3810 3811 3812ASL+ Syntax Legacy ASL Equivalent 3813----------- --------------------- 3814 3815 // Math operators 3816 3817Z = X + Y Add (X, Y, Z) 3818Z = X - Y Subtract (X, Y, Z) 3819Z = X * Y Multiply (X, Y, Z) 3820Z = X / Y Divide (X, Y, , Z) 3821Z = X % Y Mod (X, Y, Z) 3822Z = X << Y ShiftLeft (X, Y, Z) 3823Z = X >> Y ShiftRight (X, Y, Z) 3824Z = X & Y And (X, Y, Z) 3825Z = X | Y Or (X, Y, Z) 3826Z = X ^ Y Xor (X, Y, Z) 3827Z = ~X Not (X, Z) 3828X++ Increment (X) 3829X-- Decrement (X) 3830 3831 // Logical operators 3832 3833(X == Y) LEqual (X, Y) 3834(X != Y) LNotEqual (X, Y) 3835(X < Y) LLess (X, Y) 3836(X > Y) LGreater (X, Y) 3837(X <= Y) LLessEqual (X, Y) 3838(X >= Y) LGreaterEqual (X, Y) 3839(X && Y) LAnd (X, Y) 3840(X || Y) LOr (X, Y) 3841(!X) LNot (X) 3842 3843 // Assignment and compound assignment operations 3844 3845X = Y Store (Y, X) 3846X += Y Add (X, Y, X) 3847X -= Y Subtract (X, Y, X) 3848X *= Y Multiply (X, Y, X) 3849X /= Y Divide (X, Y, , X) 3850X %= Y Mod (X, Y, X) 3851X <<= Y ShiftLeft (X, Y, X) 3852X >>= Y ShiftRight (X, Y, X) 3853X &= Y And (X, Y, X) 3854X |= Y Or (X, Y, X) 3855X ^= Y Xor (X, Y, X) 3856 3857 38583) ASL+ Examples: 3859----------------- 3860 3861Legacy ASL: 3862 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3863 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 38640x03FB), 3865 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3866 { 3867 And (MEMB, 0xFFFFFFF0, SRMB) 3868 Store (MEMB, Local2) 3869 Store (PDBM, Local1) 3870 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3871 Store (SRMB, MEMB) 3872 Or (PDBM, 0x02, PDBM) 3873 } 3874 3875ASL+ version: 3876 If (((R510 & 0x03FB) == 0x02E0) || 3877 ((R520 & 0x03FB) == 0x02E0) || 3878 ((R530 & 0x03FB) == 0x02E0) || 3879 ((R540 & 0x03FB) == 0x02E0)) 3880 { 3881 SRMB = (MEMB & 0xFFFFFFF0) 3882 Local2 = MEMB 3883 Local1 = PDBM 3884 PDBM &= 0xFFFFFFFFFFFFFFF9 3885 MEMB = SRMB 3886 PDBM |= 0x02 3887 } 3888 3889Legacy ASL: 3890 Store (0x1234, Local1) 3891 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3892 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3893 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3894 Store (Index (PKG1, 0x03), Local6) 3895 Store (Add (Local3, Local2), Debug) 3896 Add (Local1, 0x0F, Local2) 3897 Add (Local1, Multiply (Local2, Local3), Local2) 3898 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3899 3900ASL+ version: 3901 Local1 = 0x1234 3902 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3903 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3904 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3905 Local6 = Index (PKG1, 0x03) 3906 Debug = (Local3 + Local2) 3907 Local2 = (Local1 + 0x0F) 3908 Local2 = (Local1 + (Local2 * Local3)) 3909 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3910 3911 3912---------------------------------------- 391326 September 2014. Summary of changes for version 20140926: 3914 39151) ACPICA kernel-resident subsystem: 3916 3917Updated the GPIO operation region handler interface (GeneralPurposeIo). 3918In order to support GPIO Connection objects with multiple pins, along 3919with the related Field objects, the following changes to the interface 3920have been made: The Address is now defined to be the offset in bits of 3921the field unit from the previous invocation of a Connection. It can be 3922viewed as a "Pin Number Index" into the connection resource descriptor. 3923The BitWidth is the exact bit width of the field. It is usually one bit, 3924but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3925additional information and examples. 3926 3927GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3928corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3929by the firmware), so that they cannot fire until they are enabled via 3930AcpiUpdateAllGpes. Rafael J. Wysocki. 3931 3932Added a new return flag for the Event/GPE status interfaces -- 3933AcpiGetEventStatus and AcpiGetGpeStatus. The new 3934ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3935GPE currently has a handler associated with it, and can thus actually 3936affect the system. Lv Zheng. 3937 3938Example Code and Data Size: These are the sizes for the OS-independent 3939acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3940debug version of the code includes the debug output trace mechanism and 3941has a much larger code and data size. 3942 3943 Current Release: 3944 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3945 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3946 Previous Release: 3947 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3948 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3949 39502) iASL Compiler/Disassembler and Tools: 3951 3952iASL: Fixed a memory allocation/free regression introduced in 20140828 3953that could cause the compiler to crash. This was introduced inadvertently 3954during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 39551113. 3956 3957iASL: Removed two error messages that have been found to create false 3958positives, until they can be fixed and fully validated (ACPICA BZ 1112): 39591) Illegal forward reference within a method 39602) Illegal reference across two methods 3961 3962iASL: Implemented a new option (-lm) to create a hardware mapping file 3963that summarizes all GPIO, I2C, SPI, and UART connections. This option 3964works for both the compiler and disassembler. See the iASL compiler user 3965guide for additional information and examples (section 6.4.6). 3966 3967AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3968version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3969a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3970 3971AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3972unless STDIN is actually a terminal. Assists with batch-mode processing. 3973ACPICA BZ 1114. 3974 3975Disassembler/AcpiHelp: Added another large group of recognized _HID 3976values. 3977 3978 3979---------------------------------------- 398028 August 2014. Summary of changes for version 20140828: 3981 39821) ACPICA kernel-resident subsystem: 3983 3984Fixed a problem related to the internal use of the Timer() operator where 3985a 64-bit divide could cause an attempted link to a double-precision math 3986library. This divide is not actually necessary, so the code was 3987restructured to eliminate it. Lv Zheng. 3988 3989ACPI 5.1: Added support for the runtime validation of the _DSD package 3990(similar to the iASL support). 3991 3992ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3993SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3994 3995Example Code and Data Size: These are the sizes for the OS-independent 3996acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3997debug version of the code includes the debug output trace mechanism and 3998has a much larger code and data size. 3999 4000 Current Release: 4001 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4002 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4003 Previous Release: 4004 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4005 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4006 40072) iASL Compiler/Disassembler and Tools: 4008 4009AcpiExec: Fixed a problem on unix systems where the original terminal 4010state was not always properly restored upon exit. Seen when using the -v 4011option. ACPICA BZ 1104. 4012 4013iASL: Fixed a problem with the validation of the ranges/length within the 4014Memory24 resource descriptor. There was a boundary condition when the 4015range was equal to the (length -1) caused by the fact that these values 4016are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4017 4018Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4019polarity 4020flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4021is 4022now supported properly. 4023 4024ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4025in the disassembler, data table compiler, and table template generator. 4026 4027iASL: Added a requirement for Device() objects that one of either a _HID 4028or _ADR must exist within the scope of a Device, as per the ACPI 4029specification. Remove a similar requirement that was incorrectly in place 4030for the _DSD object. 4031 4032iASL: Added error detection for illegal named references within control 4033methods that would cause runtime failures. Now trapped as errors are: 1) 4034References to objects within a non-parent control method. 2) Forward 4035references (within a method) -- for control methods, AML interpreters use 4036a one-pass parse of control methods. ACPICA BZ 1008. 4037 4038iASL: Added error checking for dependencies related to the _PSx power 4039methods. ACPICA BZ 1029. 40401) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4041_PS3. 40422) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4043scope. 4044 4045iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4046deploying the existing object and string caches and adding new caches for 4047the table compiler. 4048 4049iASL: Split the huge parser source file into multiple subfiles to improve 4050manageability. Generation now requires the M4 macro preprocessor, which 4051is part of the Bison distribution on both unix and windows platforms. 4052 4053AcpiSrc: Fixed and removed all extraneous warnings generated during 4054entire ACPICA source code scan and/or conversion. 4055 4056 4057---------------------------------------- 4058 405924 July 2014. Summary of changes for version 20140724: 4060 4061The ACPI 5.1 specification has been released and is available at: 4062http://uefi.org/specs/access 4063 4064 40650) ACPI 5.1 support in ACPICA: 4066 4067ACPI 5.1 is fully supported in ACPICA as of this release. 4068 4069New predefined names. Support includes iASL and runtime ACPICA 4070validation. 4071 _CCA (Cache Coherency Attribute). 4072 _DSD (Device-Specific Data). David Box. 4073 4074Modifications to existing ACPI tables. Support includes headers, iASL 4075Data Table compiler, disassembler, and the template generator. 4076 FADT - New fields and flags. Graeme Gregory. 4077 GTDT - One new subtable and new fields. Tomasz Nowicki. 4078 MADT - Two new subtables. Tomasz Nowicki. 4079 PCCT - One new subtable. 4080 4081Miscellaneous. 4082 New notification type for System Resource Affinity change events. 4083 4084 40851) ACPICA kernel-resident subsystem: 4086 4087Fixed a regression introduced in 20140627 where a fault can happen during 4088the deletion of Alias AML namespace objects. The problem affected both 4089the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4090 4091Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4092simple mechanism to enable wake GPEs that have no associated handler or 4093control method. Rafael Wysocki. 4094 4095Updated the AcpiEnableGpe interface to disallow the enable if there is no 4096handler or control method associated with the particular GPE. This will 4097help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4098 4099Updated GPE handling and dispatch by disabling the GPE before clearing 4100the status bit for edge-triggered GPEs. Lv Zheng. 4101 4102Added Timer() support to the AML Debug object. The current timer value is 4103now displayed with each invocation of (Store to) the debug object to 4104enable simple generation of execution times for AML code (method 4105execution for example.) ACPICA BZ 1093. 4106 4107Example Code and Data Size: These are the sizes for the OS-independent 4108acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4109debug version of the code includes the debug output trace mechanism and 4110has a much larger code and data size. 4111 4112 Current Release: 4113 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4114 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4115 Previous Release: 4116 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4117 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4118 4119 41202) iASL Compiler/Disassembler and Tools: 4121 4122Fixed an issue with the recently added local printf implementation, 4123concerning width/precision specifiers that could cause incorrect output. 4124Lv Zheng. ACPICA BZ 1094. 4125 4126Disassembler: Added support to detect buffers that contain UUIDs and 4127disassemble them to an invocation of the ToUUID operator. Also emit 4128commented descriptions of known ACPI-related UUIDs. 4129 4130AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4131-u. Adds three new files. 4132 4133iASL: Update table compiler and disassembler for DMAR table changes that 4134were introduced in September 2013. With assistance by David Woodhouse. 4135 4136---------------------------------------- 413727 June 2014. Summary of changes for version 20140627: 4138 41391) ACPICA kernel-resident subsystem: 4140 4141Formatted Output: Implemented local versions of standard formatted output 4142utilities such as printf, etc. Over time, it has been discovered that 4143there are in fact many portability issues with printf, and the addition 4144of this feature will fix/prevent these issues once and for all. Some 4145known issues are summarized below: 4146 41471) Output of 64-bit values is not portable. For example, UINT64 is %ull 4148for the Linux kernel and is %uI64 for some MSVC versions. 41492) Invoking printf consistently in a manner that is portable across both 415032-bit and 64-bit platforms is difficult at best in many situations. 41513) The output format for pointers varies from system to system (leading 4152zeros especially), and leads to inconsistent output from ACPICA across 4153platforms. 41544) Certain platform-specific printf formats may conflict with ACPICA use. 41555) If there is no local C library available, ACPICA now has local support 4156for printf. 4157 4158-- To address these printf issues in a complete manner, ACPICA now 4159directly implements a small subset of printf format specifiers, only 4160those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4161 4162Implemented support for ACPICA generation within the EFI environment. 4163Initially, the AcpiDump utility is supported in the UEFI shell 4164environment. Lv Zheng. 4165 4166Added a new external interface, AcpiLogError, to improve ACPICA 4167portability. This allows the host to redirect error messages from the 4168ACPICA utilities. Lv Zheng. 4169 4170Added and deployed new OSL file I/O interfaces to improve ACPICA 4171portability: 4172 AcpiOsOpenFile 4173 AcpiOsCloseFile 4174 AcpiOsReadFile 4175 AcpiOsWriteFile 4176 AcpiOsGetFileOffset 4177 AcpiOsSetFileOffset 4178There are C library implementations of these functions in the new file 4179service_layers/oslibcfs.c -- however, the functions can be implemented by 4180the local host in any way necessary. Lv Zheng. 4181 4182Implemented a mechanism to disable/enable ACPI table checksum validation 4183at runtime. This can be useful when loading tables very early during OS 4184initialization when it may not be possible to map the entire table in 4185order to compute the checksum. Lv Zheng. 4186 4187Fixed a buffer allocation issue for the Generic Serial Bus support. 4188Originally, a fixed buffer length was used. This change allows for 4189variable-length buffers based upon the protocol indicated by the field 4190access attributes. Reported by Lan Tianyu. Lv Zheng. 4191 4192Fixed a problem where an object detached from a namespace node was not 4193properly terminated/cleared and could cause a circular list problem if 4194reattached. ACPICA BZ 1063. David Box. 4195 4196Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4197 4198Fixed a possible memory leak in an error return path within the function 4199AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4200 4201Example Code and Data Size: These are the sizes for the OS-independent 4202acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4203debug version of the code includes the debug output trace mechanism and 4204has a much larger code and data size. 4205 4206 Current Release: 4207 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4208 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4209 Previous Release: 4210 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4211 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4212 4213 42142) iASL Compiler/Disassembler and Tools: 4215 4216Disassembler: Add dump of ASCII equivalent text within a comment at the 4217end of each line of the output for the Buffer() ASL operator. 4218 4219AcpiDump: Miscellaneous changes: 4220 Fixed repetitive table dump in -n mode. 4221 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4222the ACPI 2.0 GUID fails. 4223 4224iASL: Fixed a problem where the compiler could fault if incorrectly given 4225an acpidump output file as input. ACPICA BZ 1088. David Box. 4226 4227AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4228they are invoked without any arguments. 4229 4230Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 42311086. Colin Ian King. 4232 4233Disassembler: Cleaned up a block of code that extracts a parent Op 4234object. Added a comment that explains that the parent is guaranteed to be 4235valid in this case. ACPICA BZ 1069. 4236 4237 4238---------------------------------------- 423924 April 2014. Summary of changes for version 20140424: 4240 42411) ACPICA kernel-resident subsystem: 4242 4243Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4244Some of these tables are known to contain a trailing NULL entry. Lv 4245Zheng. 4246 4247Removed an extraneous error message for the case where there are a large 4248number of system GPEs (> 124). This was the "32-bit FADT register is too 4249long to convert to GAS struct" message, which is irrelevant for GPEs 4250since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4251(limited capacity) GAS bit length. Also, several changes to ensure proper 4252support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4253internally. 4254 4255Implemented and deployed additional configuration support for the public 4256ACPICA external interfaces. Entire classes of interfaces can now be 4257easily modified or configured out, replaced by stubbed inline functions 4258by default. Lv Zheng. 4259 4260Moved all public ACPICA runtime configuration globals to the public 4261ACPICA external interface file for convenience. Also, removed some 4262obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4263 4264Documentation: Added a new section to the ACPICA reference describing the 4265maximum number of GPEs that can be supported by the FADT-defined GPEs in 4266block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4267reference. 4268 4269Example Code and Data Size: These are the sizes for the OS-independent 4270acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4271debug version of the code includes the debug output trace mechanism and 4272has a much larger code and data size. 4273 4274 Current Release: 4275 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4276 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4277 Previous Release: 4278 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4279 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4280 4281 42822) iASL Compiler/Disassembler and Tools: 4283 4284iASL and disassembler: Add full support for the LPIT table (Low Power 4285Idle Table). Includes support in the disassembler, data table compiler, 4286and template generator. 4287 4288AcpiDump utility: 42891) Add option to force the use of the RSDT (over the XSDT). 42902) Improve validation of the RSDP signature (use 8 chars instead of 4). 4291 4292iASL: Add check for predefined packages that are too large. For 4293predefined names that contain subpackages, check if each subpackage is 4294too large. (Check for too small already exists.) 4295 4296Debugger: Updated the GPE command (which simulates a GPE by executing the 4297GPE code paths in ACPICA). The GPE device is now optional, and defaults 4298to the GPE 0/1 FADT-defined blocks. 4299 4300Unix application OSL: Update line-editing support. Add additional error 4301checking and take care not to reset terminal attributes on exit if they 4302were never set. This should help guarantee that the terminal is always 4303left in the previous state on program exit. 4304 4305 4306---------------------------------------- 430725 March 2014. Summary of changes for version 20140325: 4308 43091) ACPICA kernel-resident subsystem: 4310 4311Updated the auto-serialize feature for control methods. This feature 4312automatically serializes all methods that create named objects in order 4313to prevent runtime errors. The update adds support to ignore the 4314currently executing AML SyncLevel when invoking such a method, in order 4315to prevent disruption of any existing SyncLevel priorities that may exist 4316in the AML code. Although the use of SyncLevels is relatively rare, this 4317change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4318appear on some machines starting with the 20140214 release. 4319 4320Added a new external interface to allow the host to install ACPI tables 4321very early, before the namespace is even created. AcpiInstallTable gives 4322the host additional flexibility for ACPI table management. Tables can be 4323installed directly by the host as if they had originally appeared in the 4324XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4325(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4326with additional internal restructuring and cleanup. See the ACPICA 4327Reference for interface details. Lv Zheng. 4328 4329Added validation of the checksum for all incoming dynamically loaded 4330tables (via external interfaces or via AML Load/LoadTable operators). Lv 4331Zheng. 4332 4333Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4334and GPE handler removal. Restructured calls to eliminate possible race 4335conditions. Lv Zheng. 4336 4337Added a warning for the use/execution of the ASL/AML Unload (table) 4338operator. This will help detect and identify machines that use this 4339operator if and when it is ever used. This operator has never been seen 4340in the field and the usage model and possible side-effects of the drastic 4341runtime action of a full table removal are unknown. 4342 4343Reverted the use of #pragma push/pop which was introduced in the 20140214 4344release. It appears that push and pop are not implemented by enough 4345compilers to make the use of this feature feasible for ACPICA at this 4346time. However, these operators may be deployed in a future ACPICA 4347release. 4348 4349Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4350handler interfaces. 4351 4352Source code generation: 43531) Disabled the use of the "strchr" macro for the gcc-specific 4354generation. For some versions of gcc, this macro can periodically expose 4355a compiler bug which in turn causes compile-time error(s). 43562) Added support for PPC64 compilation. Colin Ian King. 4357 4358Example Code and Data Size: These are the sizes for the OS-independent 4359acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4360debug version of the code includes the debug output trace mechanism and 4361has a much larger code and data size. 4362 4363 Current Release: 4364 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4365 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4366 Previous Release: 4367 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4368 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4369 4370 43712) iASL Compiler/Disassembler and Tools: 4372 4373Disassembler: Added several new features to improve the readability of 4374the resulting ASL code. Extra information is emitted within comment 4375fields in the ASL code: 43761) Known _HID/_CID values are decoded to descriptive text. 43772) Standard values for the Notify() operator are decoded to descriptive 4378text. 43793) Target operands are expanded to full pathnames (in a comment) when 4380possible. 4381 4382Disassembler: Miscellaneous updates for extern() handling: 43831) Abort compiler if file specified by -fe option does not exist. 43842) Silence unnecessary warnings about argument count mismatches. 43853) Update warning messages concerning unresolved method externals. 43864) Emit "UnknownObj" keyword for externals whose type cannot be 4387determined. 4388 4389AcpiHelp utility: 43901) Added the -a option to display both the ASL syntax and the AML 4391encoding for an input ASL operator. This effectively displays all known 4392information about an ASL operator with one AcpiHelp invocation. 43932) Added substring match support (similar to a wildcard) for the -i 4394(_HID/PNP IDs) option. 4395 4396iASL/Disassembler: Since this tool does not yet support execution on big- 4397endian machines, added detection of endianness and an error message if 4398execution is attempted on big-endian. Support for big-endian within iASL 4399is a feature that is on the ACPICA to-be-done list. 4400 4401AcpiBin utility: 44021) Remove option to extract binary files from an acpidump; this function 4403is made obsolete by the AcpiXtract utility. 44042) General cleanup of open files and allocated buffers. 4405 4406 4407---------------------------------------- 440814 February 2014. Summary of changes for version 20140214: 4409 44101) ACPICA kernel-resident subsystem: 4411 4412Implemented a new mechanism to proactively prevent problems with ill- 4413behaved reentrant control methods that create named ACPI objects. This 4414behavior is illegal as per the ACPI specification, but is nonetheless 4415frequently seen in the field. Previously, this could lead to an 4416AE_ALREADY_EXISTS exception if the method was actually entered by more 4417than one thread. This new mechanism detects such methods at table load 4418time and marks them "serialized" to prevent reentrancy. A new global 4419option, AcpiGbl_AutoSerializeMethods, has been added to disable this 4420feature if desired. This mechanism and global option obsoletes and 4421supersedes the previous AcpiGbl_SerializeAllMethods option. 4422 4423Added the "Windows 2013" string to the _OSI support. ACPICA will now 4424respond TRUE to _OSI queries with this string. It is the stated policy of 4425ACPICA to add new strings to the _OSI support as soon as possible after 4426they are defined. See the full ACPICA _OSI policy which has been added to 4427the utilities/utosi.c file. 4428 4429Hardened/updated the _PRT return value auto-repair code: 44301) Do not abort the repair on a single subpackage failure, continue to 4431check all subpackages. 44322) Add check for the minimum subpackage length (4). 44333) Properly handle extraneous NULL package elements. 4434 4435Added support to avoid the possibility of infinite loops when traversing 4436object linked lists. Never allow an infinite loop, even in the face of 4437corrupted object lists. 4438 4439ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4440pack(pop) directives to ensure that the ACPICA headers are independent of 4441compiler settings or other host headers. 4442 4443Example Code and Data Size: These are the sizes for the OS-independent 4444acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4445debug version of the code includes the debug output trace mechanism and 4446has a much larger code and data size. 4447 4448 Current Release: 4449 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4450 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4451 Previous Release: 4452 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4453 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4454 4455 44562) iASL Compiler/Disassembler and Tools: 4457 4458iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4459first reserved field was incorrectly forced to have a value of zero. This 4460change correctly forces the field to have a value of one. ACPICA BZ 1081. 4461 4462Debugger: Added missing support for the "Extra" and "Data" subobjects 4463when displaying object data. 4464 4465Debugger: Added support to display entire object linked lists when 4466displaying object data. 4467 4468iASL: Removed the obsolete -g option to obtain ACPI tables from the 4469Windows registry. This feature has been superseded by the acpidump 4470utility. 4471 4472 4473---------------------------------------- 447414 January 2014. Summary of changes for version 20140114: 4475 44761) ACPICA kernel-resident subsystem: 4477 4478Updated all ACPICA copyrights and signons to 2014. Added the 2014 4479copyright to all module headers and signons, including the standard Linux 4480header. This affects virtually every file in the ACPICA core subsystem, 4481iASL compiler, all ACPICA utilities, and the test suites. 4482 4483Improved parameter validation for AcpiInstallGpeBlock. Added the 4484following checks: 44851) The incoming device handle refers to type ACPI_TYPE_DEVICE. 44862) There is not already a GPE block attached to the device. 4487Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4488device. 4489 4490Correctly support "references" in the ACPI_OBJECT. This change fixes the 4491support to allow references (namespace nodes) to be passed as arguments 4492to control methods via the evaluate object interface. This is probably 4493most useful for testing purposes, however. 4494 4495Improved support for 32/64 bit physical addresses in printf()-like 4496output. This change improves the support for physical addresses in printf 4497debug statements and other output on both 32-bit and 64-bit hosts. It 4498consistently outputs the appropriate number of bytes for each host. The 4499%p specifier is unsatisfactory since it does not emit uniform output on 4500all hosts/clib implementations (on some, leading zeros are not supported, 4501leading to difficult-to-read output). 4502 4503Example Code and Data Size: These are the sizes for the OS-independent 4504acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4505debug version of the code includes the debug output trace mechanism and 4506has a much larger code and data size. 4507 4508 Current Release: 4509 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4510 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4511 Previous Release: 4512 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4513 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4514 4515 45162) iASL Compiler/Disassembler and Tools: 4517 4518iASL: Fix a possible fault when using the Connection() operator. Fixes a 4519problem if the parent Field definition for the Connection operator refers 4520to an operation region that does not exist. ACPICA BZ 1064. 4521 4522AcpiExec: Load of local test tables is now optional. The utility has the 4523capability to load some various tables to test features of ACPICA. 4524However, there are enough of them that the output of the utility became 4525confusing. With this change, only the required local tables are displayed 4526(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4527line specification. This makes the default output simler and easier to 4528understand. The -el command line option restores the original behavior 4529for testing purposes. 4530 4531AcpiExec: Added support for overlapping operation regions. This change 4532expands the simulation of operation regions by supporting regions that 4533overlap within the given address space. Supports SystemMemory and 4534SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4535 4536AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4537allows AcpiExec to simulate these address spaces, similar to the current 4538support for SystemMemory and SystemIO. 4539 4540Debugger: Added new command to read/write/compare all namespace objects. 4541The command "test objects" will exercise the entire namespace by writing 4542new values to each data object, and ensuring that the write was 4543successful. The original value is then restored and verified. 4544 4545Debugger: Added the "test predefined" command. This change makes this 4546test public and puts it under the new "test" command. The test executes 4547each and every predefined name within the current namespace. 4548 4549 4550---------------------------------------- 455118 December 2013. Summary of changes for version 20131218: 4552 4553Global note: The ACPI 5.0A specification was released this month. There 4554are no changes needed for ACPICA since this release of ACPI is an 4555errata/clarification release. The specification is available at 4556acpi.info. 4557 4558 45591) ACPICA kernel-resident subsystem: 4560 4561Added validation of the XSDT root table if it is present. Some older 4562platforms contain an XSDT that is ill-formed or otherwise invalid (such 4563as containing some or all entries that are NULL pointers). This change 4564adds a new function to validate the XSDT before actually using it. If the 4565XSDT is found to be invalid, ACPICA will now automatically fall back to 4566using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4567ACPICA and enhanced by Lv Zheng and Bob Moore. 4568 4569Added a runtime option to ignore the XSDT and force the use of the RSDT. 4570This change adds a runtime option that will force ACPICA to use the RSDT 4571instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4572requires that an XSDT be used instead of the RSDT, the XSDT has been 4573found to be corrupt or ill-formed on some machines. Lv Zheng. 4574 4575Added a runtime option to favor 32-bit FADT register addresses over the 457664-bit addresses. This change adds an option to favor 32-bit FADT 4577addresses when there is a conflict between the 32-bit and 64-bit versions 4578of the same register. The default behavior is to use the 64-bit version 4579in accordance with the ACPI specification. This can now be overridden via 4580the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4581 4582During the change above, the internal "Convert FADT" and "Verify FADT" 4583functions have been merged to simplify the code, making it easier to 4584understand and maintain. ACPICA BZ 933. 4585 4586Improve exception reporting and handling for GPE block installation. 4587Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4588status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4589 4590Added helper macros to extract bus/segment numbers from the HEST table. 4591This change adds two macros to extract the encoded bus and segment 4592numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4593Betty Dall <betty.dall@hp.com> 4594 4595Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4596by ACPICA. It is not a public macro, so it should have no effect on 4597existing OSV code. Lv Zheng. 4598 4599Example Code and Data Size: These are the sizes for the OS-independent 4600acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4601debug version of the code includes the debug output trace mechanism and 4602has a much larger code and data size. 4603 4604 Current Release: 4605 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4606 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4607 Previous Release: 4608 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4609 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4610 4611 46122) iASL Compiler/Disassembler and Tools: 4613 4614Disassembler: Improved pathname support for emitted External() 4615statements. This change adds full pathname support for external names 4616that have been resolved internally by the inclusion of additional ACPI 4617tables (via the iASL -e option). Without this change, the disassembler 4618can emit multiple externals for the same object, or it become confused 4619when the Scope() operator is used on an external object. Overall, greatly 4620improves the ability to actually recompile the emitted ASL code when 4621objects a referenced across multiple ACPI tables. Reported by Michael 4622Tsirkin (mst@redhat.com). 4623 4624Tests/ASLTS: Updated functional control suite to execute with no errors. 4625David Box. Fixed several errors related to the testing of the interpreter 4626slack mode. Lv Zheng. 4627 4628iASL: Added support to detect names that are declared within a control 4629method, but are unused (these are temporary names that are only valid 4630during the time the method is executing). A remark is issued for these 4631cases. ACPICA BZ 1022. 4632 4633iASL: Added full support for the DBG2 table. Adds full disassembler, 4634table compiler, and template generator support for the DBG2 table (Debug 4635Port 2 table). 4636 4637iASL: Added full support for the PCCT table, update the table definition. 4638Updates the PCCT table definition in the actbl3.h header and adds table 4639compiler and template generator support. 4640 4641iASL: Added an option to emit only error messages (no warnings/remarks). 4642The -ve option will enable only error messages, warnings and remarks are 4643suppressed. This can simplify debugging when only the errors are 4644important, such as when an ACPI table is disassembled and there are many 4645warnings and remarks -- but only the actual errors are of real interest. 4646 4647Example ACPICA code (source/tools/examples): Updated the example code so 4648that it builds to an actual working program, not just example code. Added 4649ACPI tables and execution of an example control method in the DSDT. Added 4650makefile support for Unix generation. 4651 4652 4653---------------------------------------- 465415 November 2013. Summary of changes for version 20131115: 4655 4656This release is available at https://acpica.org/downloads 4657 4658 46591) ACPICA kernel-resident subsystem: 4660 4661Resource Manager: Fixed loop termination for the "get AML length" 4662function. The loop previously had an error termination on a NULL resource 4663pointer, which can never happen since the loop simply increments a valid 4664resource pointer. This fix changes the loop to terminate with an error on 4665an invalid end-of-buffer condition. The problem can be seen as an 4666infinite loop by callers to AcpiSetCurrentResources with an invalid or 4667corrupted resource descriptor, or a resource descriptor that is missing 4668an END_TAG descriptor. Reported by Dan Carpenter 4669<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4670 4671Table unload and ACPICA termination: Delete all attached data objects 4672during namespace node deletion. This fix updates namespace node deletion 4673to delete the entire list of attached objects (attached via 4674AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 46751024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4676 4677ACPICA termination: Added support to delete all objects attached to the 4678root namespace node. This fix deletes any and all objects that have been 4679attached to the root node via AcpiAttachData. Previously, none of these 4680objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4681 4682Debug output: Do not emit the function nesting level for the in-kernel 4683build. The nesting level is really only useful during a single-thread 4684execution. Therefore, only enable this output for the AcpiExec utility. 4685Also, only emit the thread ID when executing under AcpiExec (Context 4686switches are still always detected and a message is emitted). ACPICA BZ 4687972. 4688 4689Example Code and Data Size: These are the sizes for the OS-independent 4690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4691debug version of the code includes the debug output trace mechanism and 4692has a much larger code and data size. 4693 4694 Current Release: 4695 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4696 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4697 Previous Release: 4698 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4699 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4700 4701 47022) iASL Compiler/Disassembler and Tools: 4703 4704AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4705correct portable POSIX header for terminal control functions. 4706 4707Disassembler: Fixed control method invocation issues related to the use 4708of the CondRefOf() operator. The problem is seen in the disassembly where 4709control method invocations may not be disassembled properly if the 4710control method name has been used previously as an argument to CondRefOf. 4711The solution is to not attempt to emit an external declaration for the 4712CondRefOf target (it is not necessary in the first place). This prevents 4713disassembler object type confusion. ACPICA BZ 988. 4714 4715Unix Makefiles: Added an option to disable compiler optimizations and the 4716_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4717with optimizations (reportedly, gcc 4.4 for example). This change adds a 4718command line option for make (NOOPT) that disables all compiler 4719optimizations and the _FORTIFY_SOURCE compiler flag. The default 4720optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 47211034. Lv Zheng, Bob Moore. 4722 4723Tests/ASLTS: Added options to specify individual test cases and modes. 4724This allows testers running aslts.sh to optionally specify individual 4725test modes and test cases. Also added an option to disable the forced 4726generation of the ACPICA tools from source if desired. Lv Zheng. 4727 4728---------------------------------------- 472927 September 2013. Summary of changes for version 20130927: 4730 4731This release is available at https://acpica.org/downloads 4732 4733 47341) ACPICA kernel-resident subsystem: 4735 4736Fixed a problem with store operations to reference objects. This change 4737fixes a problem where a Store operation to an ArgX object that contained 4738a 4739reference to a field object did not complete the automatic dereference 4740and 4741then write to the actual field object. Instead, the object type of the 4742field object was inadvertently changed to match the type of the source 4743operand. The new behavior will actually write to the field object (buffer 4744field or field unit), thus matching the correct ACPI-defined behavior. 4745 4746Implemented support to allow the host to redefine individual OSL 4747prototypes. This change enables the host to redefine OSL prototypes found 4748in the acpiosxf.h file. This allows the host to implement OSL interfaces 4749with a macro or inlined function. Further, it allows the host to add any 4750additional required modifiers such as __iomem, __init, __exit, etc., as 4751necessary on a per-interface basis. Enables maximum flexibility for the 4752OSL interfaces. Lv Zheng. 4753 4754Hardcoded the access width for the FADT-defined reset register. The ACPI 4755specification requires the reset register width to be 8 bits. ACPICA now 4756hardcodes the width to 8 and ignores the FADT width value. This provides 4757compatibility with other ACPI implementations that have allowed BIOS code 4758with bad register width values to go unnoticed. Matthew Garett, Bob 4759Moore, 4760Lv Zheng. 4761 4762Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4763used 4764in the OSL header (acpiosxf). The change modifies the position of this 4765macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4766build issues if the OSL defines the implementation of the interface to be 4767an inline stub function. Lv Zheng. 4768 4769Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4770initialization interfaces. This change adds a new macro for the main init 4771and terminate external interfaces in order to support hosts that require 4772additional or different processing for these functions. Changed from 4773ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4774Zheng, Bob Moore. 4775 4776Cleaned up the memory allocation macros for configurability. In the 4777common 4778case, the ACPI_ALLOCATE and related macros now resolve directly to their 4779respective AcpiOs* OSL interfaces. Two options: 47801) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4781default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 47822) For AcpiExec (and for debugging), the macros can optionally be 4783resolved 4784to the local ACPICA interfaces that track each allocation (local tracking 4785is used to immediately detect memory leaks). 4786Lv Zheng. 4787 4788Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4789to predefine this macro to either TRUE or FALSE during the system build. 4790 4791Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4792 4793Example Code and Data Size: These are the sizes for the OS-independent 4794acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4795debug version of the code includes the debug output trace mechanism and 4796has a much larger code and data size. 4797 4798 Current Release: 4799 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4800 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4801 Previous Release: 4802 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4803 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4804 4805 48062) iASL Compiler/Disassembler and Tools: 4807 4808iASL: Implemented wildcard support for the -e option. This simplifies use 4809when there are many SSDTs that must be included to resolve external 4810method 4811declarations. ACPICA BZ 1041. Example: 4812 iasl -e ssdt*.dat -d dsdt.dat 4813 4814AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4815adds a portable module that implements full history and limited line 4816editing for Unix and Linux systems. It does not use readline() due to 4817portability issues. Instead it uses the POSIX termio interface to put the 4818terminal in raw input mode so that the various special keys can be 4819trapped 4820(such as up/down-arrow for history support and left/right-arrow for line 4821editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4822 4823AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4824one or more spaces. This provides compatible with early or different 4825versions of the AcpiDump utility. ACPICA BZ 1044. 4826 4827AcpiDump: Do not ignore tables that contain only an ACPI table header. 4828Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4829no other data. This change adds support to dump these tables. Any tables 4830shorter than the length of an ACPI table header remain in error (an error 4831message is emitted). Reported by Yi Li. 4832 4833Debugger: Echo actual command along with the "unknown command" message. 4834 4835---------------------------------------- 483623 August 2013. Summary of changes for version 20130823: 4837 48381) ACPICA kernel-resident subsystem: 4839 4840Implemented support for host-installed System Control Interrupt (SCI) 4841handlers. Certain ACPI functionality requires the host to handle raw 4842SCIs. For example, the "SCI Doorbell" that is defined for memory power 4843state support requires the host device driver to handle SCIs to examine 4844if the doorbell has been activated. Multiple SCI handlers can be 4845installed to allow for future expansion. New external interfaces are 4846AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4847details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4848 4849Operation region support: Never locally free the handler "context" 4850pointer. This change removes some dangerous code that attempts to free 4851the handler context pointer in some (rare) circumstances. The owner of 4852the handler owns this pointer and the ACPICA code should never touch it. 4853Although not seen to be an issue in any kernel, it did show up as a 4854problem (fault) under AcpiExec. Also, set the internal storage field for 4855the context pointer to zero when the region is deactivated, simply for 4856sanity. David Box. ACPICA BZ 1039. 4857 4858AcpiRead: On error, do not modify the return value target location. If an 4859error happens in the middle of a split 32/32 64-bit I/O operation, do not 4860modify the target of the return value pointer. Makes the code consistent 4861with the rest of ACPICA. Bjorn Helgaas. 4862 4863Example Code and Data Size: These are the sizes for the OS-independent 4864acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4865debug version of the code includes the debug output trace mechanism and 4866has a much larger code and data size. 4867 4868 Current Release: 4869 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4870 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4871 Previous Release: 4872 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4873 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4874 4875 48762) iASL Compiler/Disassembler and Tools: 4877 4878AcpiDump: Implemented several new features and fixed some problems: 48791) Added support to dump the RSDP, RSDT, and XSDT tables. 48802) Added support for multiple table instances (SSDT, UEFI). 48813) Added option to dump "customized" (overridden) tables (-c). 48824) Fixed a problem where some table filenames were improperly 4883constructed. 48845) Improved some error messages, removed some unnecessary messages. 4885 4886iASL: Implemented additional support for disassembly of ACPI tables that 4887contain invocations of external control methods. The -fe<file> option 4888allows the import of a file that specifies the external methods along 4889with the required number of arguments for each -- allowing for the 4890correct disassembly of the table. This is a workaround for a limitation 4891of AML code where the disassembler often cannot determine the number of 4892arguments required for an external control method and generates incorrect 4893ASL code. See the iASL reference for details. ACPICA BZ 1030. 4894 4895Debugger: Implemented a new command (paths) that displays the full 4896pathnames (namepaths) and object types of all objects in the namespace. 4897This is an alternative to the namespace command. 4898 4899Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4900mechanism and any installed handlers. 4901 4902iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4903This can occur if there are too many parent prefixes in a namepath (for 4904example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4905 4906Application OSLs: Set the return value for the PCI read functions. These 4907functions simply return AE_OK, but should set the return value to zero 4908also. This change implements this. ACPICA BZ 1038. 4909 4910Debugger: Prevent possible command line buffer overflow. Increase the 4911size of a couple of the debugger line buffers, and ensure that overflow 4912cannot happen. ACPICA BZ 1037. 4913 4914iASL: Changed to abort immediately on serious errors during the parsing 4915phase. Due to the nature of ASL, there is no point in attempting to 4916compile these types of errors, and they typically end up causing a 4917cascade of hundreds of errors which obscure the original problem. 4918 4919---------------------------------------- 492025 July 2013. Summary of changes for version 20130725: 4921 49221) ACPICA kernel-resident subsystem: 4923 4924Fixed a problem with the DerefOf operator where references to FieldUnits 4925and BufferFields incorrectly returned the parent object, not the actual 4926value of the object. After this change, a dereference of a FieldUnit 4927reference results in a read operation on the field to get the value, and 4928likewise, the appropriate BufferField value is extracted from the target 4929buffer. 4930 4931Fixed a problem where the _WAK method could cause a fault under these 4932circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4933method returned no value. The problem is rarely seen because most kernels 4934run ACPICA in slack mode. 4935 4936For the DerefOf operator, a fatal error now results if an attempt is made 4937to dereference a reference (created by the Index operator) to a NULL 4938package element. Provides compatibility with other ACPI implementations, 4939and this behavior will be added to a future version of the ACPI 4940specification. 4941 4942The ACPI Power Management Timer (defined in the FADT) is now optional. 4943This provides compatibility with other ACPI implementations and will 4944appear in the next version of the ACPI specification. If there is no PM 4945Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4946zero in the FADT indicates no PM timer. 4947 4948Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4949allows the host to globally enable/disable all vendor strings, all 4950feature strings, or both. Intended to be primarily used for debugging 4951purposes only. Lv Zheng. 4952 4953Expose the collected _OSI data to the host via a global variable. This 4954data tracks the highest level vendor ID that has been invoked by the BIOS 4955so that the host (and potentially ACPICA itself) can change behaviors 4956based upon the age of the BIOS. 4957 4958Example Code and Data Size: These are the sizes for the OS-independent 4959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4960debug version of the code includes the debug output trace mechanism and 4961has a much larger code and data size. 4962 4963 Current Release: 4964 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4965 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4966 Previous Release: 4967 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4968 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4969 4970 49712) iASL Compiler/Disassembler and Tools: 4972 4973iASL: Created the following enhancements for the -so option (create 4974offset table): 49751)Add offsets for the last nameseg in each namepath for every supported 4976object type 49772)Add support for Processor, Device, Thermal Zone, and Scope objects 49783)Add the actual AML opcode for the parent object of every supported 4979object type 49804)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4981 4982Disassembler: Emit all unresolved external symbols in a single block. 4983These are external references to control methods that could not be 4984resolved, and thus, the disassembler had to make a guess at the number of 4985arguments to parse. 4986 4987iASL: The argument to the -T option (create table template) is now 4988optional. If not specified, the default table is a DSDT, typically the 4989most common case. 4990 4991---------------------------------------- 499226 June 2013. Summary of changes for version 20130626: 4993 49941) ACPICA kernel-resident subsystem: 4995 4996Fixed an issue with runtime repair of the _CST object. Null or invalid 4997elements were not always removed properly. Lv Zheng. 4998 4999Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5000FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5001the maximum number of GPEs is 1016. Use of multiple GPE block devices 5002makes the system-wide number of GPEs essentially unlimited. 5003 5004Example Code and Data Size: These are the sizes for the OS-independent 5005acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5006debug version of the code includes the debug output trace mechanism and 5007has a much larger code and data size. 5008 5009 Current Release: 5010 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5011 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5012 Previous Release: 5013 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5014 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5015 5016 50172) iASL Compiler/Disassembler and Tools: 5018 5019Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5020hosts. Now supports Linux, FreeBSD, and Windows. 5021 5022Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5023Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5024 5025iASL/Preprocessor: Implemented full support for nested 5026#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5027 5028Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5029max. The original purpose of this constraint was to limit the amount of 5030debug output. However, the string function in question (UtPrintString) is 5031now used for the disassembler also, where 256 bytes is insufficient. 5032Reported by RehabMan@GitHub. 5033 5034iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5035tables. ACPICA BZ 999. Lv Zheng. 5036 5037iASL: Fixed a couple of error exit issues that could result in a "Could 5038not delete <file>" message during ASL compilation. 5039 5040AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5041the actual signatures for these tables are "FACP" and "APIC", 5042respectively. 5043 5044AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5045tables are allowed to have multiple instances. 5046 5047---------------------------------------- 504817 May 2013. Summary of changes for version 20130517: 5049 50501) ACPICA kernel-resident subsystem: 5051 5052Fixed a regression introduced in version 20130328 for _INI methods. This 5053change fixes a problem introduced in 20130328 where _INI methods are no 5054longer executed properly because of a memory block that was not 5055initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5056<tomasz.nowicki@linaro.org>. 5057 5058Fixed a possible problem with the new extended sleep registers in the 5059ACPI 50605.0 FADT. Do not use these registers (even if populated) unless the HW- 5061reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 50621020. Lv Zheng. 5063 5064Implemented return value repair code for _CST predefined objects: Sort 5065the 5066list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5067 5068Implemented a debug-only option to disable loading of SSDTs from the 5069RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5070ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5071acglobal.h - ACPICA BZ 1005. Lv Zheng. 5072 5073Fixed some issues in the ACPICA initialization and termination code: 5074Tomasz Nowicki <tomasz.nowicki@linaro.org> 50751) Clear events initialized flag upon event component termination. ACPICA 5076BZ 1013. 50772) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 50783) Delete global lock pending lock during termination. ACPICA BZ 1012. 50794) Clear debug buffer global on termination to prevent possible multiple 5080delete. ACPICA BZ 1010. 5081 5082Standardized all switch() blocks across the entire source base. After 5083many 5084years, different formatting for switch() had crept in. This change makes 5085the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5086 5087Split some files to enhance ACPICA modularity and configurability: 50881) Split buffer dump routines into utilities/utbuffer.c 50892) Split internal error message routines into utilities/uterror.c 50903) Split table print utilities into tables/tbprint.c 50914) Split iASL command-line option processing into asloptions.c 5092 5093Makefile enhancements: 50941) Support for all new files above. 50952) Abort make on errors from any subcomponent. Chao Guan. 50963) Add build support for Apple Mac OS X. Liang Qi. 5097 5098Example Code and Data Size: These are the sizes for the OS-independent 5099acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5100debug version of the code includes the debug output trace mechanism and 5101has a much larger code and data size. 5102 5103 Current Release: 5104 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5105 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5106 Previous Release: 5107 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5108 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5109 5110 51112) iASL Compiler/Disassembler and Tools: 5112 5113New utility: Implemented an easily portable version of the acpidump 5114utility to extract ACPI tables from the system (or a file) in an ASCII 5115hex 5116dump format. The top-level code implements the various command line 5117options, file I/O, and table dump routines. To port to a new host, only 5118three functions need to be implemented to get tables -- since this 5119functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5120the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 51211) The Windows version obtains the ACPI tables from the Registry. 51222) The Linux version is under development. 51233) Other hosts - If an OS-dependent module is submitted, it will be 5124distributed with ACPICA. 5125 5126iASL: Fixed a regression for -D preprocessor option (define symbol). A 5127restructuring/change to the initialization sequence caused this option to 5128no longer work properly. 5129 5130iASL: Implemented a mechanism to disable specific warnings and remarks. 5131Adds a new command line option, "-vw <messageid> as well as "#pragma 5132disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5133 5134iASL: Fix for too-strict package object validation. The package object 5135validation for return values from the predefined names is a bit too 5136strict, it does not allow names references within the package (which will 5137be resolved at runtime.) These types of references cannot be validated at 5138compile time. This change ignores named references within package objects 5139for names that return or define static packages. 5140 5141Debugger: Fixed the 80-character command line limitation for the History 5142command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5143 5144iASL: Added control method and package support for the -so option 5145(generates AML offset table for BIOS support.) 5146 5147iASL: issue a remark if a non-serialized method creates named objects. If 5148a thread blocks within the method for any reason, and another thread 5149enters the method, the method will fail because an attempt will be made 5150to 5151create the same (named) object twice. In this case, issue a remark that 5152the method should be marked serialized. NOTE: may become a warning later. 5153ACPICA BZ 909. 5154 5155---------------------------------------- 515618 April 2013. Summary of changes for version 20130418: 5157 51581) ACPICA kernel-resident subsystem: 5159 5160Fixed a possible buffer overrun during some rare but specific field unit 5161read operations. This overrun can only happen if the DSDT version is 1 -- 5162meaning that all AML integers are 32 bits -- and the field length is 5163between 33 and 55 bits long. During the read, an internal buffer object 5164is 5165created for the field unit because the field is larger than an integer 5166(32 5167bits). However, in this case, the buffer will be incorrectly written 5168beyond the end because the buffer length is less than the internal 5169minimum 5170of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5171long, but a full 8 bytes will be written. 5172 5173Updated the Embedded Controller "orphan" _REG method support. This refers 5174to _REG methods under the EC device that have no corresponding operation 5175region. This is allowed by the ACPI specification. This update removes a 5176dependency on the existence an ECDT table. It will execute an orphan _REG 5177method as long as the operation region handler for the EC is installed at 5178the EC device node and not the namespace root. Rui Zhang (original 5179update), Bob Moore (update/integrate). 5180 5181Implemented run-time argument typechecking for all predefined ACPI names 5182(_STA, _BIF, etc.) This change performs object typechecking on all 5183incoming arguments for all predefined names executed via 5184AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5185passing correct object types as well as the correct number of arguments 5186(therefore identifying any issues immediately). Also, the ASL/namespace 5187definition of the predefined name is checked against the ACPI 5188specification for the proper argument count. Adds one new file, 5189nsarguments.c 5190 5191Changed an exception code for the ASL UnLoad() operator. Changed the 5192exception code for the case where the input DdbHandle is invalid, from 5193AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5194 5195Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5196global makefile. The use of this flag causes compiler errors on earlier 5197versions of GCC, so it has been removed for compatibility. 5198 5199Miscellaneous cleanup: 52001) Removed some unused/obsolete macros 52012) Fixed a possible memory leak in the _OSI support 52023) Removed an unused variable in the predefined name support 52034) Windows OSL: remove obsolete reference to a memory list field 5204 5205Example Code and Data Size: These are the sizes for the OS-independent 5206acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5207debug version of the code includes the debug output trace mechanism and 5208has a much larger code and data size. 5209 5210 Current Release: 5211 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5212 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5213 Previous Release: 5214 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5215 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5216 5217 52182) iASL Compiler/Disassembler and Tools: 5219 5220AcpiExec: Added installation of a handler for the SystemCMOS address 5221space. This prevents control method abort if a method accesses this 5222space. 5223 5224AcpiExec: Added support for multiple EC devices, and now install EC 5225operation region handler(s) at the actual EC device instead of the 5226namespace root. This reflects the typical behavior of host operating 5227systems. 5228 5229AcpiExec: Updated to ensure that all operation region handlers are 5230installed before the _REG methods are executed. This prevents a _REG 5231method from aborting if it accesses an address space has no handler. 5232AcpiExec installs a handler for every possible address space. 5233 5234Debugger: Enhanced the "handlers" command to display non-root handlers. 5235This change enhances the handlers command to display handlers associated 5236with individual devices throughout the namespace, in addition to the 5237currently supported display of handlers associated with the root 5238namespace 5239node. 5240 5241ASL Test Suite: Several test suite errors have been identified and 5242resolved, reducing the total error count during execution. Chao Guan. 5243 5244---------------------------------------- 524528 March 2013. Summary of changes for version 20130328: 5246 52471) ACPICA kernel-resident subsystem: 5248 5249Fixed several possible race conditions with the internal object reference 5250counting mechanism. Some of the external ACPICA interfaces update object 5251reference counts without holding the interpreter or namespace lock. This 5252change adds a spinlock to protect reference count updates on the internal 5253ACPICA objects. Reported by and with assistance from Andriy Gapon 5254(avg@FreeBSD.org). 5255 5256FADT support: Removed an extraneous warning for very large GPE register 5257sets. This change removes a size mismatch warning if the legacy length 5258field for a GPE register set is larger than the 64-bit GAS structure can 5259accommodate. GPE register sets can be larger than the 255-bit width 5260limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5261 5262_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5263return from this interface. Handles a possible timeout case if 5264ACPI_WAIT_FOREVER is modified by the host to be a value less than 5265"forever". Jung-uk Kim. 5266 5267Predefined name support: Add allowed/required argument type information 5268to 5269the master predefined info table. This change adds the infrastructure to 5270enable typechecking on incoming arguments for all predefined 5271methods/objects. It does not actually contain the code that will fully 5272utilize this information, this is still under development. Also condenses 5273some duplicate code for the predefined names into a new module, 5274utilities/utpredef.c 5275 5276Example Code and Data Size: These are the sizes for the OS-independent 5277acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5278debug version of the code includes the debug output trace mechanism and 5279has a much larger code and data size. 5280 5281 Previous Release: 5282 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5283 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5284 Current Release: 5285 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5286 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5287 5288 52892) iASL Compiler/Disassembler and Tools: 5290 5291iASL: Implemented a new option to simplify the development of ACPI- 5292related 5293BIOS code. Adds support for a new "offset table" output file. The -so 5294option will create a C table containing the AML table offsets of various 5295named objects in the namespace so that BIOS code can modify them easily 5296at 5297boot time. This can simplify BIOS runtime code by eliminating expensive 5298searches for "magic values", enhancing boot times and adding greater 5299reliability. With assistance from Lee Hamel. 5300 5301iASL: Allow additional predefined names to return zero-length packages. 5302Now, all predefined names that are defined by the ACPI specification to 5303return a "variable-length package of packages" are allowed to return a 5304zero length top-level package. This allows the BIOS to tell the host that 5305the requested feature is not supported, and supports existing BIOS/ASL 5306code and practices. 5307 5308iASL: Changed the "result not used" warning to an error. This is the case 5309where an ASL operator is effectively a NOOP because the result of the 5310operation is not stored anywhere. For example: 5311 Add (4, Local0) 5312There is no target (missing 3rd argument), nor is the function return 5313value used. This is potentially a very serious problem -- since the code 5314was probably intended to do something, but for whatever reason, the value 5315was not stored. Therefore, this issue has been upgraded from a warning to 5316an error. 5317 5318AcpiHelp: Added allowable/required argument types to the predefined names 5319info display. This feature utilizes the recent update to the predefined 5320names table (above). 5321 5322---------------------------------------- 532314 February 2013. Summary of changes for version 20130214: 5324 53251) ACPICA Kernel-resident Subsystem: 5326 5327Fixed a possible regression on some hosts: Reinstated the safe return 5328macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5329evaluated only once. Although these macros are not needed for the ACPICA 5330code itself, they are often used by ACPI-related host device drivers 5331where 5332the safe feature may be necessary. 5333 5334Fixed several issues related to the ACPI 5.0 reduced hardware support 5335(SOC): Now ensure that if the platform declares itself as hardware- 5336reduced 5337via the FADT, the following functions become NOOPs (and always return 5338AE_OK) because ACPI is always enabled by definition on these machines: 5339 AcpiEnable 5340 AcpiDisable 5341 AcpiHwGetMode 5342 AcpiHwSetMode 5343 5344Dynamic Object Repair: Implemented additional runtime repairs for 5345predefined name return values. Both of these repairs can simplify code in 5346the related device drivers that invoke these methods: 53471) For the _STR and _MLS names, automatically repair/convert an ASCII 5348string to a Unicode buffer. 53492) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5350a 5351lone end tag descriptor in the following cases: A Return(0) was executed, 5352a null buffer was returned, or no object at all was returned (non-slack 5353mode only). Adds a new file, nsconvert.c 5354ACPICA BZ 998. Bob Moore, Lv Zheng. 5355 5356Resource Manager: Added additional code to prevent possible infinite 5357loops 5358while traversing corrupted or ill-formed resource template buffers. Check 5359for zero-length resource descriptors in all code that loops through 5360resource templates (the length field is used to index through the 5361template). This change also hardens the external AcpiWalkResources and 5362AcpiWalkResourceBuffer interfaces. 5363 5364Local Cache Manager: Enhanced the main data structure to eliminate an 5365unnecessary mechanism to access the next object in the list. Actually 5366provides a small performance enhancement for hosts that use the local 5367ACPICA cache manager. Jung-uk Kim. 5368 5369Example Code and Data Size: These are the sizes for the OS-independent 5370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5371debug version of the code includes the debug output trace mechanism and 5372has a much larger code and data size. 5373 5374 Previous Release: 5375 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5376 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5377 Current Release: 5378 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5379 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5380 5381 53822) iASL Compiler/Disassembler and Tools: 5383 5384iASL/Disassembler: Fixed several issues with the definition of the ACPI 53855.0 RASF table (RAS Feature Table). This change incorporates late changes 5386that were made to the ACPI 5.0 specification. 5387 5388iASL/Disassembler: Added full support for the following new ACPI tables: 5389 1) The MTMR table (MID Timer Table) 5390 2) The VRTC table (Virtual Real Time Clock Table). 5391Includes header file, disassembler, table compiler, and template support 5392for both tables. 5393 5394iASL: Implemented compile-time validation of package objects returned by 5395predefined names. This new feature validates static package objects 5396returned by the various predefined names defined to return packages. Both 5397object types and package lengths are validated, for both parent packages 5398and sub-packages, if any. The code is similar in structure and behavior 5399to 5400the runtime repair mechanism within the AML interpreter and uses the 5401existing predefined name information table. Adds a new file, aslprepkg.c. 5402ACPICA BZ 938. 5403 5404iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5405This feature detects a binary file with a valid ACPI table header and 5406invokes the disassembler automatically. Eliminates the need to 5407specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5408 5409iASL/Disassembler: Added several warnings for the case where there are 5410unresolved control methods during the disassembly. This can potentially 5411cause errors when the output file is compiled, because the disassembler 5412assumes zero method arguments in these cases (it cannot determine the 5413actual number of arguments without resolution/definition of the method). 5414 5415Debugger: Added support to display all resources with a single command. 5416Invocation of the resources command with no arguments will now display 5417all 5418resources within the current namespace. 5419 5420AcpiHelp: Added descriptive text for each ACPICA exception code displayed 5421via the -e option. 5422 5423---------------------------------------- 542417 January 2013. Summary of changes for version 20130117: 5425 54261) ACPICA Kernel-resident Subsystem: 5427 5428Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5429return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5430objects to return a package containing one integer, most BIOS code 5431returns 5432two integers and the previous code reflects that. However, we also need 5433to 5434support BIOS code that actually implements to the ACPI spec, and this 5435change reflects this. 5436 5437Fixed two issues with the ACPI_DEBUG_PRINT macros: 54381) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5439C compilers that require this support. 54402) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5441ACPI_DEBUG is already used by many of the various hosts. 5442 5443Updated all ACPICA copyrights and signons to 2013. Added the 2013 5444copyright to all module headers and signons, including the standard Linux 5445header. This affects virtually every file in the ACPICA core subsystem, 5446iASL compiler, all ACPICA utilities, and the test suites. 5447 5448Example Code and Data Size: These are the sizes for the OS-independent 5449acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5450debug version of the code includes the debug output trace mechanism and 5451has a much larger code and data size. 5452 5453 Previous Release: 5454 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5455 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5456 Current Release: 5457 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5458 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5459 5460 54612) iASL Compiler/Disassembler and Tools: 5462 5463Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5464prevent a possible fault on some hosts. Some C libraries modify the arg 5465pointer parameter to vfprintf making it difficult to call it twice in the 5466AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5467does not affect the Windows OSL since the Win C library does not modify 5468the arg pointer. Chao Guan, Bob Moore. 5469 5470iASL: Fixed a possible infinite loop when the maximum error count is 5471reached. If an output file other than the .AML file is specified (such as 5472a listing file), and the maximum number of errors is reached, do not 5473attempt to flush data to the output file(s) as the compiler is aborting. 5474This can cause an infinite loop as the max error count code essentially 5475keeps calling itself. 5476 5477iASL/Disassembler: Added an option (-in) to ignore NOOP 5478opcodes/operators. 5479Implemented for both the compiler and the disassembler. Often, the NOOP 5480opcode is used as padding for packages that are changed dynamically by 5481the 5482BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5483errors. This option causes the disassembler to ignore all NOOP opcodes 5484(0xA3), and it also causes the compiler to ignore all ASL source code 5485NOOP 5486statements as well. 5487 5488Debugger: Enhanced the Sleep command to execute all sleep states. This 5489change allows Sleep to be invoked with no arguments and causes the 5490debugger to execute all of the sleep states, 0-5, automatically. 5491 5492---------------------------------------- 549320 December 2012. Summary of changes for version 20121220: 5494 54951) ACPICA Kernel-resident Subsystem: 5496 5497Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5498alternate entry point for AcpiWalkResources and improves the usability of 5499the resource manager by accepting as input a buffer containing the output 5500of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5501input buffer is not deleted by this interface so that it can be used by 5502the host later. See the ACPICA reference for details. 5503 5504Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5505(DSDT version < 2). The constant will be truncated and this warning 5506reflects that behavior. 5507 5508Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5509ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5510both get and set the new wake bit in these descriptors, separately from 5511the existing share bit. Reported by Aaron Lu. 5512 5513Interpreter: Fix Store() when an implicit conversion is not possible. For 5514example, in the cases such as a store of a string to an existing package 5515object, implement the store as a CopyObject(). This is a small departure 5516from the ACPI specification which states that the control method should 5517be 5518aborted in this case. However, the ASLTS suite depends on this behavior. 5519 5520Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5521macros: check if debug output is currently enabled as soon as possible to 5522minimize performance impact if debug is in fact not enabled. 5523 5524Source code restructuring: Cleanup to improve modularity. The following 5525new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5526psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5527Associated makefiles and project files have been updated. 5528 5529Changed an exception code for LoadTable operator. For the case where one 5530of the input strings is too long, change the returned exception code from 5531AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5532 5533Fixed a possible memory leak in dispatcher error path. On error, delete 5534the mutex object created during method mutex creation. Reported by 5535tim.gardner@canonical.com. 5536 5537Example Code and Data Size: These are the sizes for the OS-independent 5538acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5539debug version of the code includes the debug output trace mechanism and 5540has a much larger code and data size. 5541 5542 Previous Release: 5543 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5544 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5545 Current Release: 5546 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5547 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5548 5549 55502) iASL Compiler/Disassembler and Tools: 5551 5552iASL: Disallow a method call as argument to the ObjectType ASL operator. 5553This change tracks an errata to the ACPI 5.0 document. The AML grammar 5554will not allow the interpreter to differentiate between a method and a 5555method invocation when these are used as an argument to the ObjectType 5556operator. The ACPI specification change is to disallow a method 5557invocation 5558(UserTerm) for the ObjectType operator. 5559 5560Finish support for the TPM2 and CSRT tables in the headers, table 5561compiler, and disassembler. 5562 5563Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5564always expires immediately if the semaphore is not available. The 5565original 5566code was using a relative-time timeout, but sem_timedwait requires the 5567use 5568of an absolute time. 5569 5570iASL: Added a remark if the Timer() operator is used within a 32-bit 5571table. This operator returns a 64-bit time value that will be truncated 5572within a 32-bit table. 5573 5574iASL Source code restructuring: Cleanup to improve modularity. The 5575following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5576aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5577been updated. 5578 5579 5580---------------------------------------- 558114 November 2012. Summary of changes for version 20121114: 5582 55831) ACPICA Kernel-resident Subsystem: 5584 5585Implemented a performance enhancement for ACPI/AML Package objects. This 5586change greatly increases the performance of Package objects within the 5587interpreter. It changes the processing of reference counts for packages 5588by 5589optimizing for the most common case where the package sub-objects are 5590either Integers, Strings, or Buffers. Increases the overall performance 5591of 5592the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 55932X.) 5594Chao Guan. ACPICA BZ 943. 5595 5596Implemented and deployed common macros to extract flag bits from resource 5597descriptors. Improves readability and maintainability of the code. Fixes 5598a 5599problem with the UART serial bus descriptor for the number of data bits 5600flags (was incorrectly 2 bits, should be 3). 5601 5602Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5603of the macros and changed the SETx macros to the style of (destination, 5604source). Also added ACPI_CASTx companion macros. Lv Zheng. 5605 5606Example Code and Data Size: These are the sizes for the OS-independent 5607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5608debug version of the code includes the debug output trace mechanism and 5609has a much larger code and data size. 5610 5611 Previous Release: 5612 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5613 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5614 Current Release: 5615 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5616 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5617 5618 56192) iASL Compiler/Disassembler and Tools: 5620 5621Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5622adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5623Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5624 5625Disassembler: Fixed a problem with external declaration generation. Fixes 5626a problem where an incorrect pathname could be generated for an external 5627declaration if the original reference to the object includes leading 5628carats (^). ACPICA BZ 984. 5629 5630Debugger: Completed a major update for the Disassemble<method> command. 5631This command was out-of-date and did not properly disassemble control 5632methods that had any reasonable complexity. This fix brings the command 5633up 5634to the same level as the rest of the disassembler. Adds one new file, 5635dmdeferred.c, which is existing code that is now common with the main 5636disassembler and the debugger disassemble command. ACPICA MZ 978. 5637 5638iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5639Newer versions of Bison emit this prototype, so moved the prototype out 5640of 5641the iASL header to where it is actually used in order to avoid a 5642duplicate 5643declaration. 5644 5645iASL/Tools: Standardized use of the stream I/O functions: 5646 1) Ensure check for I/O error after every fopen/fread/fwrite 5647 2) Ensure proper order of size/count arguments for fread/fwrite 5648 3) Use test of (Actual != Requested) after all fwrite, and most fread 5649 4) Standardize I/O error messages 5650Improves reliability and maintainability of the code. Bob Moore, Lv 5651Zheng. 5652ACPICA BZ 981. 5653 5654Disassembler: Prevent duplicate External() statements. During generation 5655of external statements, detect similar pathnames that are actually 5656duplicates such as these: 5657 External (\ABCD) 5658 External (ABCD) 5659Remove all leading '\' characters from pathnames during the external 5660statement generation so that duplicates will be detected and tossed. 5661ACPICA BZ 985. 5662 5663Tools: Replace low-level I/O with stream I/O functions. Replace 5664open/read/write/close with the stream I/O equivalents 5665fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5666Moore. 5667 5668AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5669name header so that AcpiXtract recognizes the output file/table. 5670 5671iASL: Remove obsolete -2 option flag. Originally intended to force the 5672compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5673and the entire concept is now obsolete. 5674 5675---------------------------------------- 567618 October 2012. Summary of changes for version 20121018: 5677 5678 56791) ACPICA Kernel-resident Subsystem: 5680 5681Updated support for the ACPI 5.0 MPST table. Fixes some problems 5682introduced by late changes to the table as it was added to the ACPI 5.0 5683specification. Includes header, disassembler, and data table compiler 5684support as well as a new version of the MPST template. 5685 5686AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 56875.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5688methods: _HID, _CID, and _UID. 5689 5690Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5691ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5692name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5693names for their various drivers. Affects the AcpiGetObjectInfo external 5694interface, and other internal interfaces as well. 5695 5696Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5697This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5698on machines that support non-aligned transfers. Optimizes for this case 5699rather than using a strncpy. With assistance from Zheng Lv. 5700 5701Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5702error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5703 5704Added a new debug print message for AML mutex objects that are force- 5705released. At control method termination, any currently acquired mutex 5706objects are force-released. Adds a new debug-only message for each one 5707that is released. 5708 5709Audited/updated all ACPICA return macros and the function debug depth 5710counter: 1) Ensure that all functions that use the various TRACE macros 5711also use the appropriate ACPICA return macros. 2) Ensure that all normal 5712return statements surround the return expression (value) with parens to 5713ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5714Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5715 5716Global source code changes/maintenance: All extra lines at the start and 5717end of each source file have been removed for consistency. Also, within 5718comments, all new sentences start with a single space instead of a double 5719space, again for consistency across the code base. 5720 5721Example Code and Data Size: These are the sizes for the OS-independent 5722acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5723debug version of the code includes the debug output trace mechanism and 5724has a much larger code and data size. 5725 5726 Previous Release: 5727 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5728 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5729 Current Release: 5730 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5731 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5732 5733 57342) iASL Compiler/Disassembler and Tools: 5735 5736AcpiExec: Improved the algorithm used for memory leak/corruption 5737detection. Added some intelligence to the code that maintains the global 5738list of allocated memory. The list is now ordered by allocated memory 5739address, significantly improving performance. When running AcpiExec on 5740the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5741on the platform and/or the environment. Note, this performance 5742enhancement affects the AcpiExec utility only, not the kernel-resident 5743ACPICA code. 5744 5745Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5746the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5747incorrect table offset reported for invalid opcodes. Report the original 574832-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5749 5750Disassembler: Enhanced the -vt option to emit the binary table data in 5751hex format to assist with debugging. 5752 5753Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5754size of file structure. Colin Ian King. 5755 5756---------------------------------------- 575713 September 2012. Summary of changes for version 20120913: 5758 5759 57601) ACPICA Kernel-resident Subsystem: 5761 5762ACPI 5.0: Added two new notify types for the Hardware Error Notification 5763Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5764and 5765MCE(6). 5766 5767Table Manager: Merged/removed duplicate code in the root table resize 5768functions. One function is external, the other is internal. Lv Zheng, 5769ACPICA 5770BZ 846. 5771 5772Makefiles: Completely removed the obsolete "Linux" makefiles under 5773acpica/generate/linux. These makefiles are obsolete and have been 5774replaced 5775by 5776the generic unix makefiles under acpica/generate/unix. 5777 5778Makefiles: Ensure that binary files always copied properly. Minor rule 5779change 5780to ensure that the final binary output files are always copied up to the 5781appropriate binary directory (bin32 or bin64.) 5782 5783Example Code and Data Size: These are the sizes for the OS-independent 5784acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5785debug 5786version of the code includes the debug output trace mechanism and has a 5787much 5788larger code and data size. 5789 5790 Previous Release: 5791 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5792 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5793 Current Release: 5794 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5795 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5796 5797 57982) iASL Compiler/Disassembler and Tools: 5799 5800Disassembler: Fixed a possible fault during the disassembly of resource 5801descriptors when a second parse is required because of the invocation of 5802external control methods within the table. With assistance from 5803adq@lidskialf.net. ACPICA BZ 976. 5804 5805iASL: Fixed a namepath optimization problem. An error can occur if the 5806parse 5807node that contains the namepath to be optimized does not have a parent 5808node 5809that is a named object. This change fixes the problem. 5810 5811iASL: Fixed a regression where the AML file is not deleted on errors. The 5812AML 5813output file should be deleted if there are any errors during the 5814compiler. 5815The 5816only exception is if the -f (force output) option is used. ACPICA BZ 974. 5817 5818iASL: Added a feature to automatically increase internal line buffer 5819sizes. 5820Via realloc(), automatically increase the internal line buffer sizes as 5821necessary to support very long source code lines. The current version of 5822the 5823preprocessor requires a buffer long enough to contain full source code 5824lines. 5825This change increases the line buffer(s) if the input lines go beyond the 5826current buffer size. This eliminates errors that occurred when a source 5827code 5828line was longer than the buffer. 5829 5830iASL: Fixed a problem with constant folding in method declarations. The 5831SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5832if a 5833Type3 opcode was used. 5834 5835Debugger: Improved command help support. For incorrect argument count, 5836display 5837full help for the command. For help command itself, allow an argument to 5838specify a command. 5839 5840Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5841errors during execution of the suite. Guan Chao. 5842 5843---------------------------------------- 584416 August 2012. Summary of changes for version 20120816: 5845 5846 58471) ACPICA Kernel-resident Subsystem: 5848 5849Removed all use of the deprecated _GTS and _BFS predefined methods. The 5850_GTS 5851(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5852deprecated and will probably be removed from the ACPI specification. 5853Windows 5854does not invoke them, and reportedly never will. The final nail in the 5855coffin 5856is that the ACPI specification states that these methods must be run with 5857interrupts off, which is not going to happen in a kernel interpreter. 5858Note: 5859Linux has removed all use of the methods also. It was discovered that 5860invoking these functions caused failures on some machines, probably 5861because 5862they were never tested since Windows does not call them. Affects two 5863external 5864interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5865ACPICA BZ 969. 5866 5867Implemented support for complex bit-packed buffers returned from the _PLD 5868(Physical Location of Device) predefined method. Adds a new external 5869interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5870C 5871structure. Note: C Bitfields cannot be used for this type of predefined 5872structure since the memory layout of individual bitfields is not defined 5873by 5874the C language. In addition, there are endian concerns where a compiler 5875will 5876change the bitfield ordering based on the machine type. The new ACPICA 5877interface eliminates these issues, and should be called after _PLD is 5878executed. ACPICA BZ 954. 5879 5880Implemented a change to allow a scope change to root (via "Scope (\)") 5881during 5882execution of module-level ASL code (code that is executed at table load 5883time.) Lin Ming. 5884 5885Added the Windows8/Server2012 string for the _OSI method. This change 5886adds 5887a 5888new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 58892012. 5890 5891Added header support for the new ACPI tables DBG2 (Debug Port Table Type 58922) 5893and CSRT (Core System Resource Table). 5894 5895Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5896names. This simplifies access to the buffers returned by these predefined 5897names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5898 5899GPE support: Removed an extraneous parameter from the various low-level 5900internal GPE functions. Tang Feng. 5901 5902Removed the linux makefiles from the unix packages. The generate/linux 5903makefiles are obsolete and have been removed from the unix tarball 5904release 5905packages. The replacement makefiles are under generate/unix, and there is 5906a 5907top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5908 5909Updates for Unix makefiles: 59101) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 59112) Update linker flags (move to end of command line) for AcpiExec 5912utility. 5913Guan Chao. 5914 5915Split ACPICA initialization functions to new file, utxfinit.c. Split from 5916utxface.c to improve modularity and reduce file size. 5917 5918Example Code and Data Size: These are the sizes for the OS-independent 5919acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5920debug version of the code includes the debug output trace mechanism and 5921has a 5922much larger code and data size. 5923 5924 Previous Release: 5925 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5926 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5927 Current Release: 5928 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5929 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5930 5931 59322) iASL Compiler/Disassembler and Tools: 5933 5934iASL: Fixed a problem with constant folding for fixed-length constant 5935expressions. The constant-folding code was not being invoked for constant 5936expressions that allow the use of type 3/4/5 opcodes to generate 5937constants 5938for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5939result 5940in the generation of invalid AML bytecode. ACPICA BZ 970. 5941 5942iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5943apparently automatically emit some of the necessary externals. This 5944change 5945handles these versions in order to eliminate generation warnings. 5946 5947Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5948 5949Disassembler: Add support to decode _PLD buffers. The decoded buffer 5950appears 5951within comments in the output file. 5952 5953Debugger: Fixed a regression with the "Threads" command where 5954AE_BAD_PARAMETER was always returned. 5955 5956---------------------------------------- 595711 July 2012. Summary of changes for version 20120711: 5958 59591) ACPICA Kernel-resident Subsystem: 5960 5961Fixed a possible fault in the return package object repair code. Fixes a 5962problem that can occur when a lone package object is wrapped with an 5963outer 5964package object in order to force conformance to the ACPI specification. 5965Can 5966affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5967_DLM, 5968_CSD, _PSD, _TSD. 5969 5970Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5971PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5972ARB_DIS bit must be implemented in the host-dependent C3 processor power 5973state 5974support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5975both 5976Intel and other vendors. (for Intel: ICH4-M and earlier) 5977 5978This change removes the code to disable/enable bus master arbitration 5979during 5980suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5981causes 5982resume problems on some machines. The change has been in use for over 5983seven 5984years within Linux. 5985 5986Implemented two new external interfaces to support host-directed dynamic 5987ACPI 5988table load and unload. They are intended to simplify the host 5989implementation 5990of hot-plug support: 5991 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5992 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5993table. 5994See the ACPICA reference for additional details. Adds one new file, 5995components/tables/tbxfload.c 5996 5997Implemented and deployed two new interfaces for errors and warnings that 5998are 5999known to be caused by BIOS/firmware issues: 6000 AcpiBiosError: Prints "ACPI Firmware Error" message. 6001 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6002Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6003table 6004and FADT errors. Additional deployment to be completed as appropriate in 6005the 6006future. The associated conditional macros are ACPI_BIOS_ERROR and 6007ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6008ACPICA 6009BZ 6010843. 6011 6012Implicit notify support: ensure that no memory allocation occurs within a 6013critical region. This fix moves a memory allocation outside of the time 6014that a 6015spinlock is held. Fixes issues on systems that do not allow this 6016behavior. 6017Jung-uk Kim. 6018 6019Split exception code utilities and tables into a new file, 6020utilities/utexcep.c 6021 6022Example Code and Data Size: These are the sizes for the OS-independent 6023acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6024debug 6025version of the code includes the debug output trace mechanism and has a 6026much 6027larger code and data size. 6028 6029 Previous Release: 6030 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6031 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6032 Current Release: 6033 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6034 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6035 6036 60372) iASL Compiler/Disassembler and Tools: 6038 6039iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6040of 60410. Jung-uk Kim. 6042 6043Debugger: Enhanced the "tables" command to emit additional information 6044about 6045the current set of ACPI tables, including the owner ID and flags decode. 6046 6047Debugger: Reimplemented the "unload" command to use the new 6048AcpiUnloadParentTable external interface. This command was disable 6049previously 6050due to need for an unload interface. 6051 6052AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6053option 6054will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6055 6056---------------------------------------- 605720 June 2012. Summary of changes for version 20120620: 6058 6059 60601) ACPICA Kernel-resident Subsystem: 6061 6062Implemented support to expand the "implicit notify" feature to allow 6063multiple 6064devices to be notified by a single GPE. This feature automatically 6065generates a 6066runtime device notification in the absence of a BIOS-provided GPE control 6067method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6068notify is 6069provided by ACPICA for Windows compatibility, and is a workaround for 6070BIOS 6071AML 6072code errors. See the description of the AcpiSetupGpeForWake interface in 6073the 6074APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6075 6076Changed some comments and internal function names to simplify and ensure 6077correctness of the Linux code translation. No functional changes. 6078 6079Example Code and Data Size: These are the sizes for the OS-independent 6080acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6081debug 6082version of the code includes the debug output trace mechanism and has a 6083much 6084larger code and data size. 6085 6086 Previous Release: 6087 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6088 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6089 Current Release: 6090 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6091 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6092 6093 60942) iASL Compiler/Disassembler and Tools: 6095 6096Disassembler: Added support to emit short, commented descriptions for the 6097ACPI 6098predefined names in order to improve the readability of the disassembled 6099output. ACPICA BZ 959. Changes include: 6100 1) Emit descriptions for all standard predefined names (_INI, _STA, 6101_PRW, 6102etc.) 6103 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6104 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6105etc.) 6106 6107AcpiSrc: Fixed several long-standing Linux code translation issues. 6108Argument 6109descriptions in function headers are now translated properly to lower 6110case 6111and 6112underscores. ACPICA BZ 961. Also fixes translation problems such as 6113these: 6114(old -> new) 6115 i_aSL -> iASL 6116 00-7_f -> 00-7F 6117 16_k -> 16K 6118 local_fADT -> local_FADT 6119 execute_oSI -> execute_OSI 6120 6121iASL: Fixed a problem where null bytes were inadvertently emitted into 6122some 6123listing files. 6124 6125iASL: Added the existing debug options to the standard help screen. There 6126are 6127no longer two different help screens. ACPICA BZ 957. 6128 6129AcpiHelp: Fixed some typos in the various predefined name descriptions. 6130Also 6131expand some of the descriptions where appropriate. 6132 6133iASL: Fixed the -ot option (display compile times/statistics). Was not 6134working 6135properly for standard output; only worked for the debug file case. 6136 6137---------------------------------------- 613818 May 2012. Summary of changes for version 20120518: 6139 6140 61411) ACPICA Core Subsystem: 6142 6143Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6144defined 6145to block until asynchronous events such as notifies and GPEs have 6146completed. 6147Within ACPICA, it is only called before a notify or GPE handler is 6148removed/uninstalled. It also may be useful for the host OS within related 6149drivers such as the Embedded Controller driver. See the ACPICA reference 6150for 6151additional information. ACPICA BZ 868. 6152 6153ACPI Tables: Added a new error message for a possible overflow failure 6154during 6155the conversion of FADT 32-bit legacy register addresses to internal 6156common 615764- 6158bit GAS structure representation. The GAS has a one-byte "bit length" 6159field, 6160thus limiting the register length to 255 bits. ACPICA BZ 953. 6161 6162Example Code and Data Size: These are the sizes for the OS-independent 6163acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6164debug 6165version of the code includes the debug output trace mechanism and has a 6166much 6167larger code and data size. 6168 6169 Previous Release: 6170 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6171 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6172 Current Release: 6173 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6174 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6175 6176 61772) iASL Compiler/Disassembler and Tools: 6178 6179iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6180macro. 6181This keyword was added late in the ACPI 5.0 release cycle and was not 6182implemented until now. 6183 6184Disassembler: Added support for Operation Region externals. Adds missing 6185support for operation regions that are defined in another table, and 6186referenced locally via a Field or BankField ASL operator. Now generates 6187the 6188correct External statement. 6189 6190Disassembler: Several additional fixes for the External() statement 6191generation 6192related to some ASL operators. Also, order the External() statements 6193alphabetically in the disassembler output. Fixes the External() 6194generation 6195for 6196the Create* field, Alias, and Scope operators: 6197 1) Create* buffer field operators - fix type mismatch warning on 6198disassembly 6199 2) Alias - implement missing External support 6200 3) Scope - fix to make sure all necessary externals are emitted. 6201 6202iASL: Improved pathname support. For include files, merge the prefix 6203pathname 6204with the file pathname and eliminate unnecessary components. Convert 6205backslashes in all pathnames to forward slashes, for readability. Include 6206file 6207pathname changes affect both #include and Include() type operators. 6208 6209iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6210end 6211of a valid line by inserting a newline and then returning the EOF during 6212the 6213next call to GetNextLine. Prevents the line from being ignored due to EOF 6214condition. 6215 6216iASL: Implemented some changes to enhance the IDE support (-vi option.) 6217Error 6218and Warning messages are now correctly recognized for both the source 6219code 6220browser and the global error and warning counts. 6221 6222---------------------------------------- 622320 April 2012. Summary of changes for version 20120420: 6224 6225 62261) ACPICA Core Subsystem: 6227 6228Implemented support for multiple notify handlers. This change adds 6229support 6230to 6231allow multiple system and device notify handlers on Device, Thermal Zone, 6232and 6233Processor objects. This can simplify the host OS notification 6234implementation. 6235Also re-worked and restructured the entire notify support code to 6236simplify 6237handler installation, handler removal, notify event queuing, and notify 6238dispatch to handler(s). Note: there can still only be two global notify 6239handlers - one for system notifies and one for device notifies. There are 6240no 6241changes to the existing handler install/remove interfaces. Lin Ming, Bob 6242Moore, Rafael Wysocki. 6243 6244Fixed a regression in the package repair code where the object reference 6245count was calculated incorrectly. Regression was introduced in the commit 6246"Support to add Package wrappers". 6247 6248Fixed a couple possible memory leaks in the AML parser, in the error 6249recovery 6250path. Jesper Juhl, Lin Ming. 6251 6252Example Code and Data Size: These are the sizes for the OS-independent 6253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6254debug version of the code includes the debug output trace mechanism and 6255has a 6256much larger code and data size. 6257 6258 Previous Release: 6259 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6260 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6261 Current Release: 6262 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6263 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6264 6265 62662) iASL Compiler/Disassembler and Tools: 6267 6268iASL: Fixed a problem with the resource descriptor support where the 6269length 6270of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6271included in cumulative descriptor offset, resulting in incorrect values 6272for 6273resource tags within resource descriptors appearing after a 6274StartDependent* 6275descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6276 6277iASL and Preprocessor: Implemented full support for the #line directive 6278to 6279correctly track original source file line numbers through the .i 6280preprocessor 6281output file - for error and warning messages. 6282 6283iASL: Expand the allowable byte constants for address space IDs. 6284Previously, 6285the allowable range was 0x80-0xFF (user-defined spaces), now the range is 62860x0A-0xFF to allow for custom and new IDs without changing the compiler. 6287 6288iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6289 6290iASL: Add option to completely disable the preprocessor (-Pn). 6291 6292iASL: Now emit all error/warning messages to standard error (stderr) by 6293default (instead of the previous stdout). 6294 6295ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6296Update 6297for resource descriptor offset fix above. Update/cleanup error output 6298routines. Enable and send iASL errors/warnings to an error logfile 6299(error.txt). Send all other iASL output to a logfile (compiler.txt). 6300Fixed 6301several extraneous "unrecognized operator" messages. 6302 6303---------------------------------------- 630420 March 2012. Summary of changes for version 20120320: 6305 6306 63071) ACPICA Core Subsystem: 6308 6309Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6310(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6311apparently 6312does not execute these methods, and therefore these methods are often 6313untested. It has been seen on some systems where the execution of these 6314methods causes errors and also prevents the machine from entering S5. It 6315is 6316therefore suggested that host operating systems do not execute these 6317methods 6318by default. In the future, perhaps these methods can be optionally 6319executed 6320based on the age of the system and/or what is the newest version of 6321Windows 6322that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6323and 6324AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6325Ming. 6326 6327Fixed a problem where the length of the local/common FADT was set too 6328early. 6329The local FADT table length cannot be set to the common length until the 6330original length has been examined. There is code that checks the table 6331length 6332and sets various fields appropriately. This can affect older machines 6333with 6334early FADT versions. For example, this can cause inadvertent writes to 6335the 6336CST_CNT register. Julian Anastasov. 6337 6338Fixed a mapping issue related to a physical table override. Use the 6339deferred 6340mapping mechanism for tables loaded via the physical override OSL 6341interface. 6342This allows for early mapping before the virtual memory manager is 6343available. 6344Thomas Renninger, Bob Moore. 6345 6346Enhanced the automatic return-object repair code: Repair a common problem 6347with 6348predefined methods that are defined to return a variable-length Package 6349of 6350sub-objects. If there is only one sub-object, some BIOS ASL code 6351mistakenly 6352simply returns the single object instead of a Package with one sub- 6353object. 6354This new support will repair this error by wrapping a Package object 6355around 6356the original object, creating the correct and expected Package with one 6357sub- 6358object. Names that can be repaired in this manner include: _ALR, _CSD, 6359_HPX, 6360_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6361939. 6362 6363Changed the exception code returned for invalid ACPI paths passed as 6364parameters to external interfaces such as AcpiEvaluateObject. Was 6365AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6366 6367Example Code and Data Size: These are the sizes for the OS-independent 6368acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6369debug 6370version of the code includes the debug output trace mechanism and has a 6371much 6372larger code and data size. 6373 6374 Previous Release: 6375 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6376 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6377 Current Release: 6378 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6379 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6380 6381 63822) iASL Compiler/Disassembler and Tools: 6383 6384iASL: Added the infrastructure and initial implementation of a integrated 6385C- 6386like preprocessor. This will simplify BIOS development process by 6387eliminating 6388the need for a separate preprocessing step during builds. On Windows, it 6389also 6390eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6391features including full #define() macro support are still under 6392development. 6393These preprocessor directives are supported: 6394 #define 6395 #elif 6396 #else 6397 #endif 6398 #error 6399 #if 6400 #ifdef 6401 #ifndef 6402 #include 6403 #pragma message 6404 #undef 6405 #warning 6406In addition, these new command line options are supported: 6407 -D <symbol> Define symbol for preprocessor use 6408 -li Create preprocessed output file (*.i) 6409 -P Preprocess only and create preprocessor output file (*.i) 6410 6411Table Compiler: Fixed a problem where the equals operator within an 6412expression 6413did not work properly. 6414 6415Updated iASL to use the current versions of Bison/Flex. Updated the 6416Windows 6417project file to invoke these tools from the standard location. ACPICA BZ 6418904. 6419Versions supported: 6420 Flex for Windows: V2.5.4 6421 Bison for Windows: V2.4.1 6422 6423---------------------------------------- 642415 February 2012. Summary of changes for version 20120215: 6425 6426 64271) ACPICA Core Subsystem: 6428 6429There have been some major changes to the sleep/wake support code, as 6430described below (a - e). 6431 6432a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6433AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6434AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6435the 6436time the _BFS method is called and the _WAK method is called. NOTE: all 6437hosts 6438must update their wake/resume code or else sleep/wake will not work 6439properly. 6440Rafael Wysocki. 6441 6442b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6443_WAK 6444method. Some machines require that the GPEs are enabled before the _WAK 6445method 6446is executed. Thomas Renninger. 6447 6448c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6449bit. 6450Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6451to 6452determine whether the system is rebooting or resuming. Matthew Garrett. 6453 6454d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6455Sleep) to 6456match the ACPI specification requirement. Rafael Wysocki. 6457 6458e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6459registers within the V5 FADT. This support adds two new files: 6460hardware/hwesleep.c implements the support for the new registers. Moved 6461all 6462sleep/wake external interfaces to hardware/hwxfsleep.c. 6463 6464 6465Added a new OSL interface for ACPI table overrides, 6466AcpiOsPhysicalTableOverride. This interface allows the host to override a 6467table via a physical address, instead of the logical address required by 6468AcpiOsTableOverride. This simplifies the host implementation. Initial 6469implementation by Thomas Renninger. The ACPICA implementation creates a 6470single 6471shared function for table overrides that attempts both a logical and a 6472physical override. 6473 6474Expanded the OSL memory read/write interfaces to 64-bit data 6475(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6476transfer support for GAS register structures passed to AcpiRead and 6477AcpiWrite. 6478 6479Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6480custom 6481build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6482model. 6483See the ACPICA reference for details. ACPICA BZ 942. This option removes 6484about 648510% of the code and 5% of the static data, and the following hardware 6486ACPI 6487features become unavailable: 6488 PM Event and Control registers 6489 SCI interrupt (and handler) 6490 Fixed Events 6491 General Purpose Events (GPEs) 6492 Global Lock 6493 ACPI PM timer 6494 FACS table (Waking vectors and Global Lock) 6495 6496Updated the unix tarball directory structure to match the ACPICA git 6497source 6498tree. This ensures that the generic unix makefiles work properly (in 6499generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6500867. 6501 6502Updated the return value of the _REV predefined method to integer value 5 6503to 6504reflect ACPI 5.0 support. 6505 6506Moved the external ACPI PM timer interface prototypes to the public 6507acpixf.h 6508file where they belong. 6509 6510Example Code and Data Size: These are the sizes for the OS-independent 6511acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6512debug 6513version of the code includes the debug output trace mechanism and has a 6514much 6515larger code and data size. 6516 6517 Previous Release: 6518 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6519 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6520 Current Release: 6521 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6522 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6523 6524 65252) iASL Compiler/Disassembler and Tools: 6526 6527Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6528descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6529incorrectly displayed. 6530 6531AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6532specification. 6533 6534---------------------------------------- 653511 January 2012. Summary of changes for version 20120111: 6536 6537 65381) ACPICA Core Subsystem: 6539 6540Implemented a new mechanism to allow host device drivers to check for 6541address 6542range conflicts with ACPI Operation Regions. Both SystemMemory and 6543SystemIO 6544address spaces are supported. A new external interface, 6545AcpiCheckAddressRange, 6546allows drivers to check an address range against the ACPI namespace. See 6547the 6548ACPICA reference for additional details. Adds one new file, 6549utilities/utaddress.c. Lin Ming, Bob Moore. 6550 6551Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6552Control 6553and 6554Status registers, update the ACPI 5.0 flags, and update internal data 6555structures to handle an FADT larger than 256 bytes. The size of the ACPI 65565.0 6557FADT is 268 bytes. 6558 6559Updated all ACPICA copyrights and signons to 2012. Added the 2012 6560copyright to 6561all module headers and signons, including the standard Linux header. This 6562affects virtually every file in the ACPICA core subsystem, iASL compiler, 6563and 6564all ACPICA utilities. 6565 6566Example Code and Data Size: These are the sizes for the OS-independent 6567acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6568debug 6569version of the code includes the debug output trace mechanism and has a 6570much 6571larger code and data size. 6572 6573 Previous Release: 6574 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6575 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6576 Current Release: 6577 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6578 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6579 6580 65812) iASL Compiler/Disassembler and Tools: 6582 6583Disassembler: fixed a problem with the automatic resource tag generation 6584support. Fixes a problem where the resource tags are inadvertently not 6585constructed if the table being disassembled contains external references 6586to 6587control methods. Moved the actual construction of the tags to after the 6588final 6589namespace is constructed (after 2nd parse is invoked due to external 6590control 6591method references.) ACPICA BZ 941. 6592 6593Table Compiler: Make all "generic" operators caseless. These are the 6594operators 6595like UINT8, String, etc. Making these caseless improves ease-of-use. 6596ACPICA BZ 6597934. 6598 6599---------------------------------------- 660023 November 2011. Summary of changes for version 20111123: 6601 66020) ACPI 5.0 Support: 6603 6604This release contains full support for the ACPI 5.0 specification, as 6605summarized below. 6606 6607Reduced Hardware Support: 6608------------------------- 6609 6610This support allows for ACPI systems without the usual ACPI hardware. 6611This 6612support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6613will 6614not attempt to initialize or use any of the usual ACPI hardware. Note, 6615when 6616this flag is set, all of the following ACPI hardware is assumed to be not 6617present and is not initialized or accessed: 6618 6619 General Purpose Events (GPEs) 6620 Fixed Events (PM1a/PM1b and PM Control) 6621 Power Management Timer and Console Buttons (power/sleep) 6622 Real-time Clock Alarm 6623 Global Lock 6624 System Control Interrupt (SCI) 6625 The FACS is assumed to be non-existent 6626 6627ACPI Tables: 6628------------ 6629 6630All new tables and updates to existing tables are fully supported in the 6631ACPICA headers (for use by device drivers), the disassembler, and the 6632iASL 6633Data Table Compiler. ACPI 5.0 defines these new tables: 6634 6635 BGRT /* Boot Graphics Resource Table */ 6636 DRTM /* Dynamic Root of Trust for Measurement table */ 6637 FPDT /* Firmware Performance Data Table */ 6638 GTDT /* Generic Timer Description Table */ 6639 MPST /* Memory Power State Table */ 6640 PCCT /* Platform Communications Channel Table */ 6641 PMTT /* Platform Memory Topology Table */ 6642 RASF /* RAS Feature table */ 6643 6644Operation Regions/SpaceIDs: 6645--------------------------- 6646 6647All new operation regions are fully supported by the iASL compiler, the 6648disassembler, and the ACPICA runtime code (for dispatch to region 6649handlers.) 6650The new operation region Space IDs are: 6651 6652 GeneralPurposeIo 6653 GenericSerialBus 6654 6655Resource Descriptors: 6656--------------------- 6657 6658All new ASL resource descriptors are fully supported by the iASL 6659compiler, 6660the 6661ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6662(including 6663all new predefined resource tags). New descriptors are: 6664 6665 FixedDma 6666 GpioIo 6667 GpioInt 6668 I2cSerialBus 6669 SpiSerialBus 6670 UartSerialBus 6671 6672ASL/AML Operators, New and Modified: 6673------------------------------------ 6674 6675One new operator is added, the Connection operator, which is used to 6676associate 6677a GeneralPurposeIo or GenericSerialBus resource descriptor with 6678individual 6679field objects within an operation region. Several new protocols are 6680associated 6681with the AccessAs operator. All are fully supported by the iASL compiler, 6682disassembler, and runtime ACPICA AML interpreter: 6683 6684 Connection // Declare Field Connection 6685attributes 6686 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6687 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6688Protocol 6689 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6690 RawDataBuffer // Data type for Vendor Data 6691fields 6692 6693Predefined ASL/AML Objects: 6694--------------------------- 6695 6696All new predefined objects/control-methods are supported by the iASL 6697compiler 6698and the ACPICA runtime validation/repair (arguments and return values.) 6699New 6700predefined names include the following: 6701 6702Standard Predefined Names (Objects or Control Methods): 6703 _AEI, _CLS, _CPC, _CWS, _DEP, 6704 _DLM, _EVT, _GCP, _CRT, _GWS, 6705 _HRV, _PRE, _PSE, _SRT, _SUB. 6706 6707Resource Tags (Names used to access individual fields within resource 6708descriptors): 6709 _DBT, _DPL, _DRS, _END, _FLC, 6710 _IOR, _LIN, _MOD, _PAR, _PHA, 6711 _PIN, _PPI, _POL, _RXL, _SLV, 6712 _SPE, _STB, _TXL, _VEN. 6713 6714ACPICA External Interfaces: 6715--------------------------- 6716 6717Several new interfaces have been defined for use by ACPI-related device 6718drivers and other host OS services: 6719 6720AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6721to 6722acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6723provided by the BIOS. They are intended to be used in conjunction with 6724the 6725ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6726mutual exclusion with the AML code/interpreter. 6727 6728AcpiGetEventResources: Returns the (formatted) resource descriptors as 6729defined 6730by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6731provides 6732resource descriptors associated with hardware-reduced platform events, 6733similar 6734to the AcpiGetCurrentResources interface. 6735 6736Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6737operation regions, information about the Connection() object and any 6738optional 6739length information is passed to the region handler within the Context 6740parameter. 6741 6742AcpiBufferToResource: This interface converts a raw AML buffer containing 6743a 6744resource template or resource descriptor to the ACPI_RESOURCE internal 6745format 6746suitable for use by device drivers. Can be used by an operation region 6747handler 6748to convert the Connection() buffer object into a ACPI_RESOURCE. 6749 6750Miscellaneous/Tools/TestSuites: 6751------------------------------- 6752 6753Support for extended _HID names (Four alpha characters instead of three). 6754Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6755Support for ACPI 5.0 features in the ASLTS test suite. 6756Fully updated documentation (ACPICA and iASL reference documents.) 6757 6758ACPI Table Definition Language: 6759------------------------------- 6760 6761Support for this language was implemented and released as a subsystem of 6762the 6763iASL compiler in 2010. (See the iASL compiler User Guide.) 6764 6765 6766Non-ACPI 5.0 changes for this release: 6767-------------------------------------- 6768 67691) ACPICA Core Subsystem: 6770 6771Fix a problem with operation region declarations where a failure can 6772occur 6773if 6774the region name and an argument that evaluates to an object (such as the 6775region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6776937. 6777 6778Do not abort an ACPI table load if an invalid space ID is found within. 6779This 6780will be caught later if the offending method is executed. ACPICA BZ 925. 6781 6782Fixed an issue with the FFixedHW space ID where the ID was not always 6783recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6784 6785Fixed a problem with the 32-bit generation of the unix-specific OSL 6786(osunixxf.c). Lin Ming, ACPICA BZ 936. 6787 6788Several changes made to enable generation with the GCC 4.6 compiler. 6789ACPICA BZ 6790935. 6791 6792New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6793Index/Bank 6794field registers out-of-range. 6795 67962) iASL Compiler/Disassembler and Tools: 6797 6798iASL: Implemented the __PATH__ operator, which returns the full pathname 6799of 6800the current source file. 6801 6802AcpiHelp: Automatically display expanded keyword information for all ASL 6803operators. 6804 6805Debugger: Add "Template" command to disassemble/dump resource template 6806buffers. 6807 6808Added a new master script to generate and execute the ASLTS test suite. 6809Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6810 6811iASL: Fix problem with listing generation during processing of the 6812Switch() 6813operator where AML listing was disabled until the entire Switch block was 6814completed. 6815 6816iASL: Improve support for semicolon statement terminators. Fix "invalid 6817character" message for some cases when the semicolon is used. Semicolons 6818are 6819now allowed after every <Term> grammar element. ACPICA BZ 927. 6820 6821iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6822923. 6823 6824Disassembler: Fix problem with disassembly of the DataTableRegion 6825operator 6826where an inadvertent "Unhandled deferred opcode" message could be 6827generated. 6828 68293) Example Code and Data Size 6830 6831These are the sizes for the OS-independent acpica.lib produced by the 6832Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6833includes the debug output trace mechanism and has a much larger code and 6834data 6835size. 6836 6837 Previous Release: 6838 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6839 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6840 Current Release: 6841 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6842 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6843 6844---------------------------------------- 684522 September 2011. Summary of changes for version 20110922: 6846 68470) ACPI 5.0 News: 6848 6849Support for ACPI 5.0 in ACPICA has been underway for several months and 6850will 6851be released at the same time that ACPI 5.0 is officially released. 6852 6853The ACPI 5.0 specification is on track for release in the next few 6854months. 6855 68561) ACPICA Core Subsystem: 6857 6858Fixed a problem where the maximum sleep time for the Sleep() operator was 6859intended to be limited to two seconds, but was inadvertently limited to 686020 6861seconds instead. 6862 6863Linux and Unix makefiles: Added header file dependencies to ensure 6864correct 6865generation of ACPICA core code and utilities. Also simplified the 6866makefiles 6867considerably through the use of the vpath variable to specify search 6868paths. 6869ACPICA BZ 924. 6870 68712) iASL Compiler/Disassembler and Tools: 6872 6873iASL: Implemented support to check the access length for all fields 6874created to 6875access named Resource Descriptor fields. For example, if a resource field 6876is 6877defined to be two bits, a warning is issued if a CreateXxxxField() is 6878used 6879with an incorrect bit length. This is implemented for all current 6880resource 6881descriptor names. ACPICA BZ 930. 6882 6883Disassembler: Fixed a byte ordering problem with the output of 24-bit and 688456- 6885bit integers. 6886 6887iASL: Fixed a couple of issues associated with variable-length package 6888objects. 1) properly handle constants like One, Ones, Zero -- do not make 6889a 6890VAR_PACKAGE when these are used as a package length. 2) Allow the 6891VAR_PACKAGE 6892opcode (in addition to PACKAGE) when validating object types for 6893predefined 6894names. 6895 6896iASL: Emit statistics for all output files (instead of just the ASL input 6897and 6898AML output). Includes listings, hex files, etc. 6899 6900iASL: Added -G option to the table compiler to allow the compilation of 6901custom 6902ACPI tables. The only part of a table that is required is the standard 690336- 6904byte 6905ACPI header. 6906 6907AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6908headers), 6909which also adds correct 64-bit support. Also, now all output filenames 6910are 6911completely lower case. 6912 6913AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6914loading table files. A warning is issued for any such tables. The only 6915exception is an FADT. This also fixes a possible fault when attempting to 6916load 6917non-AML tables. ACPICA BZ 932. 6918 6919AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6920a 6921missing table terminator could cause a fault when using the -p option. 6922 6923AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6924statistics. 6925 69263) Example Code and Data Size 6927 6928These are the sizes for the OS-independent acpica.lib produced by the 6929Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6930includes the debug output trace mechanism and has a much larger code and 6931data 6932size. 6933 6934 Previous Release (VC 9.0): 6935 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6936 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6937 Current Release (VC 9.0): 6938 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6939 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6940 6941 6942---------------------------------------- 694323 June 2011. Summary of changes for version 20110623: 6944 69451) ACPI CA Core Subsystem: 6946 6947Updated the predefined name repair mechanism to not attempt repair of a 6948_TSS 6949return object if a _PSS object is present. We can only sort the _TSS 6950return 6951package if there is no _PSS within the same scope. This is because if 6952_PSS 6953is 6954present, the ACPI specification dictates that the _TSS Power Dissipation 6955field 6956is to be ignored, and therefore some BIOSs leave garbage values in the 6957_TSS 6958Power field(s). In this case, it is best to just return the _TSS package 6959as- 6960is. Reported by, and fixed with assistance from Fenghua Yu. 6961 6962Added an option to globally disable the control method return value 6963validation 6964and repair. This runtime option can be used to disable return value 6965repair 6966if 6967this is causing a problem on a particular machine. Also added an option 6968to 6969AcpiExec (-dr) to set this disable flag. 6970 6971All makefiles and project files: Major changes to improve generation of 6972ACPICA 6973tools. ACPICA BZ 912: 6974 Reduce default optimization levels to improve compatibility 6975 For Linux, add strict-aliasing=0 for gcc 4 6976 Cleanup and simplify use of command line defines 6977 Cleanup multithread library support 6978 Improve usage messages 6979 6980Linux-specific header: update handling of THREAD_ID and pthread. For the 698132- 6982bit case, improve casting to eliminate possible warnings, especially with 6983the 6984acpica tools. 6985 6986Example Code and Data Size: These are the sizes for the OS-independent 6987acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6988debug 6989version of the code includes the debug output trace mechanism and has a 6990much 6991larger code and data size. 6992 6993 Previous Release (VC 9.0): 6994 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6995 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6996 Current Release (VC 9.0): 6997 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6998 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6999 70002) iASL Compiler/Disassembler and Tools: 7001 7002With this release, a new utility named "acpihelp" has been added to the 7003ACPICA 7004package. This utility summarizes the ACPI specification chapters for the 7005ASL 7006and AML languages. It generates under Linux/Unix as well as Windows, and 7007provides the following functionality: 7008 Find/display ASL operator(s) -- with description and syntax. 7009 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7010 Find/display ACPI predefined name(s) -- with description, number 7011 of arguments, and the return value data type. 7012 Find/display AML opcode name(s) -- with opcode, arguments, and 7013grammar. 7014 Decode/display AML opcode -- with opcode name, arguments, and 7015grammar. 7016 7017Service Layers: Make multi-thread support configurable. Conditionally 7018compile 7019the multi-thread support so that threading libraries will not be linked 7020if 7021not 7022necessary. The only tool that requires multi-thread support is AcpiExec. 7023 7024iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7025of 7026Bison appear to want the interface to yyerror to be a const char * (or at 7027least this is a problem when generating iASL on some systems.) ACPICA BZ 7028923 7029Pierre Lejeune. 7030 7031Tools: Fix for systems where O_BINARY is not defined. Only used for 7032Windows 7033versions of the tools. 7034 7035---------------------------------------- 703627 May 2011. Summary of changes for version 20110527: 7037 70381) ACPI CA Core Subsystem: 7039 7040ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7041table 7042signature. Now, only allow SSDT, OEMx, and a null signature. History: 7043 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7044 (PSDT is now obsolete.) 7045 2) We added support for OEMx tables, signature "OEM" plus a fourth 7046 "don't care" character. 7047 3) Valid tables were encountered with a null signature, so we just 7048 gave up on validating the signature, (05/2008). 7049 4) We encountered non-AML tables such as the MADT, which caused 7050 interpreter errors and kernel faults. So now, we once again allow 7051 only SSDT, OEMx, and now, also a null signature. (05/2011). 7052 7053Added the missing _TDL predefined name to the global name list in order 7054to 7055enable validation. Affects both the core ACPICA code and the iASL 7056compiler. 7057 7058Example Code and Data Size: These are the sizes for the OS-independent 7059acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7060debug 7061version of the code includes the debug output trace mechanism and has a 7062much 7063larger code and data size. 7064 7065 Previous Release (VC 9.0): 7066 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7067 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7068 Current Release (VC 9.0): 7069 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7070 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7071 70722) iASL Compiler/Disassembler and Tools: 7073 7074Debugger/AcpiExec: Implemented support for "complex" method arguments on 7075the 7076debugger command line. This adds support beyond simple integers -- 7077including 7078Strings, Buffers, and Packages. Includes support for nested packages. 7079Increased the default command line buffer size to accommodate these 7080arguments. 7081See the ACPICA reference for details and syntax. ACPICA BZ 917. 7082 7083Debugger/AcpiExec: Implemented support for "default" method arguments for 7084the 7085Execute/Debug command. Now, the debugger will always invoke a control 7086method 7087with the required number of arguments -- even if the command line 7088specifies 7089none or insufficient arguments. It uses default integer values for any 7090missing 7091arguments. Also fixes a bug where only six method arguments maximum were 7092supported instead of the required seven. 7093 7094Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7095and 7096also return status in order to prevent buffer overruns. See the ACPICA 7097reference for details and syntax. ACPICA BZ 921 7098 7099iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7100makefiles to simplify support for the two different but similar parser 7101generators, bison and yacc. 7102 7103Updated the generic unix makefile for gcc 4. The default gcc version is 7104now 7105expected to be 4 or greater, since options specific to gcc 4 are used. 7106 7107---------------------------------------- 710813 April 2011. Summary of changes for version 20110413: 7109 71101) ACPI CA Core Subsystem: 7111 7112Implemented support to execute a so-called "orphan" _REG method under the 7113EC 7114device. This change will force the execution of a _REG method underneath 7115the 7116EC 7117device even if there is no corresponding operation region of type 7118EmbeddedControl. Fixes a problem seen on some machines and apparently is 7119compatible with Windows behavior. ACPICA BZ 875. 7120 7121Added more predefined methods that are eligible for automatic NULL 7122package 7123element removal. This change adds another group of predefined names to 7124the 7125list 7126of names that can be repaired by having NULL package elements dynamically 7127removed. This group are those methods that return a single variable- 7128length 7129package containing simple data types such as integers, buffers, strings. 7130This 7131includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7132_PSL, 7133_Sx, 7134and _TZD. ACPICA BZ 914. 7135 7136Split and segregated all internal global lock functions to a new file, 7137evglock.c. 7138 7139Updated internal address SpaceID for DataTable regions. Moved this 7140internal 7141space 7142id in preparation for ACPI 5.0 changes that will include some new space 7143IDs. 7144This 7145change should not affect user/host code. 7146 7147Example Code and Data Size: These are the sizes for the OS-independent 7148acpica.lib 7149produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7150version of 7151the code includes the debug output trace mechanism and has a much larger 7152code 7153and 7154data size. 7155 7156 Previous Release (VC 9.0): 7157 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7158 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7159 Current Release (VC 9.0): 7160 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7161 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7162 71632) iASL Compiler/Disassembler and Tools: 7164 7165iASL/DTC: Major update for new grammar features. Allow generic data types 7166in 7167custom ACPI tables. Field names are now optional. Any line can be split 7168to 7169multiple lines using the continuation char (\). Large buffers now use 7170line- 7171continuation character(s) and no colon on the continuation lines. See the 7172grammar 7173update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7174Moore. 7175 7176iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7177statements. 7178Since the parser stuffs a "zero" as the return value for these statements 7179(due 7180to 7181the underlying AML grammar), they were seen as "return with value" by the 7182iASL 7183semantic checking. They are now seen correctly as "null" return 7184statements. 7185 7186iASL: Check if a_REG declaration has a corresponding Operation Region. 7187Adds a 7188check for each _REG to ensure that there is in fact a corresponding 7189operation 7190region declaration in the same scope. If not, the _REG method is not very 7191useful 7192since it probably won't be executed. ACPICA BZ 915. 7193 7194iASL/DTC: Finish support for expression evaluation. Added a new 7195expression 7196parser 7197that implements c-style operator precedence and parenthesization. ACPICA 7198bugzilla 7199908. 7200 7201Disassembler/DTC: Remove support for () and <> style comments in data 7202tables. 7203Now 7204that DTC has full expression support, we don't want to have comment 7205strings 7206that 7207start with a parentheses or a less-than symbol. Now, only the standard /* 7208and 7209// 7210comments are supported, as well as the bracket [] comments. 7211 7212AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7213"unusual" 7214headers in the acpidump file. Update the header validation to support 7215these 7216tables. Problem introduced in previous AcpiXtract version in the change 7217to 7218support "wrong checksum" error messages emitted by acpidump utility. 7219 7220iASL: Add a * option to generate all template files (as a synonym for 7221ALL) 7222as 7223in 7224"iasl -T *" or "iasl -T ALL". 7225 7226iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7227completely 7228abort the compiler on "fatal" errors, simply should abort the current 7229compile. 7230This allows multiple compiles with a single (possibly wildcard) compiler 7231invocation. 7232 7233---------------------------------------- 723416 March 2011. Summary of changes for version 20110316: 7235 72361) ACPI CA Core Subsystem: 7237 7238Fixed a problem caused by a _PRW method appearing at the namespace root 7239scope 7240during the setup of wake GPEs. A fault could occur if a _PRW directly 7241under 7242the 7243root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7244 7245Implemented support for "spurious" Global Lock interrupts. On some 7246systems, a 7247global lock interrupt can occur without the pending flag being set. Upon 7248a 7249GL 7250interrupt, we now ensure that a thread is actually waiting for the lock 7251before 7252signaling GL availability. Rafael Wysocki, Bob Moore. 7253 7254Example Code and Data Size: These are the sizes for the OS-independent 7255acpica.lib 7256produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7257version of 7258the code includes the debug output trace mechanism and has a much larger 7259code 7260and 7261data size. 7262 7263 Previous Release (VC 9.0): 7264 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7265 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7266 Current Release (VC 9.0): 7267 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7268 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7269 72702) iASL Compiler/Disassembler and Tools: 7271 7272Implemented full support for the "SLIC" ACPI table. Includes support in 7273the 7274header files, disassembler, table compiler, and template generator. Bob 7275Moore, 7276Lin Ming. 7277 7278AcpiXtract: Correctly handle embedded comments and messages from 7279AcpiDump. 7280Apparently some or all versions of acpidump will occasionally emit a 7281comment 7282like 7283"Wrong checksum", etc., into the dump file. This was causing problems for 7284AcpiXtract. ACPICA BZ 905. 7285 7286iASL: Fix the Linux makefile by removing an inadvertent double file 7287inclusion. 7288ACPICA BZ 913. 7289 7290AcpiExec: Update installation of operation region handlers. Install one 7291handler 7292for a user-defined address space. This is used by the ASL test suite 7293(ASLTS). 7294 7295---------------------------------------- 729611 February 2011. Summary of changes for version 20110211: 7297 72981) ACPI CA Core Subsystem: 7299 7300Added a mechanism to defer _REG methods for some early-installed 7301handlers. 7302Most user handlers should be installed before call to 7303AcpiEnableSubsystem. 7304However, Event handlers and region handlers should be installed after 7305AcpiInitializeObjects. Override handlers for the "default" regions should 7306be 7307installed early, however. This change executes all _REG methods for the 7308default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7309chicken/egg issues between them. ACPICA BZ 848. 7310 7311Implemented an optimization for GPE detection. This optimization will 7312simply 7313ignore GPE registers that contain no enabled GPEs -- there is no need to 7314read the register since this information is available internally. This 7315becomes more important on machines with a large GPE space. ACPICA 7316bugzilla 7317884. Lin Ming. Suggestion from Joe Liu. 7318 7319Removed all use of the highly unreliable FADT revision field. The 7320revision 7321number in the FADT has been found to be completely unreliable and cannot 7322be 7323trusted. Only the actual table length can be used to infer the version. 7324This 7325change updates the ACPICA core and the disassembler so that both no 7326longer 7327even look at the FADT version and instead depend solely upon the FADT 7328length. 7329 7330Fix an unresolved name issue for the no-debug and no-error-message source 7331generation cases. The _AcpiModuleName was left undefined in these cases, 7332but 7333it is actually needed as a parameter to some interfaces. Define 7334_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7335 7336Split several large files (makefiles and project files updated) 7337 utglobal.c -> utdecode.c 7338 dbcomds.c -> dbmethod.c dbnames.c 7339 dsopcode.c -> dsargs.c dscontrol.c 7340 dsload.c -> dsload2.c 7341 aslanalyze.c -> aslbtypes.c aslwalks.c 7342 7343Example Code and Data Size: These are the sizes for the OS-independent 7344acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7345debug version of the code includes the debug output trace mechanism and 7346has 7347a much larger code and data size. 7348 7349 Previous Release (VC 9.0): 7350 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7351 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7352 Current Release (VC 9.0): 7353 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7354 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7355 73562) iASL Compiler/Disassembler and Tools: 7357 7358iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7359These are useful C-style macros with the standard definitions. ACPICA 7360bugzilla 898. 7361 7362iASL/DTC: Added support for integer expressions and labels. Support for 7363full 7364expressions for all integer fields in all ACPI tables. Support for labels 7365in 7366"generic" portions of tables such as UEFI. See the iASL reference manual. 7367 7368Debugger: Added a command to display the status of global handlers. The 7369"handlers" command will display op region, fixed event, and miscellaneous 7370global handlers. installation status -- and for op regions, whether 7371default 7372or user-installed handler will be used. 7373 7374iASL: Warn if reserved method incorrectly returns a value. Many 7375predefined 7376names are defined such that they do not return a value. If implemented as 7377a 7378method, issue a warning if such a name explicitly returns a value. ACPICA 7379Bugzilla 855. 7380 7381iASL: Added detection of GPE method name conflicts. Detects a conflict 7382where 7383there are two GPE methods of the form _Lxy and _Exy in the same scope. 7384(For 7385example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7386 7387iASL/DTC: Fixed a couple input scanner issues with comments and line 7388numbers. Comment remover could get confused and miss a comment ending. 7389Fixed 7390a problem with line counter maintenance. 7391 7392iASL/DTC: Reduced the severity of some errors from fatal to error. There 7393is 7394no need to abort on simple errors within a field definition. 7395 7396Debugger: Simplified the output of the help command. All help output now 7397in 7398a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7399 7400---------------------------------------- 740112 January 2011. Summary of changes for version 20110112: 7402 74031) ACPI CA Core Subsystem: 7404 7405Fixed a race condition between method execution and namespace walks that 7406can 7407possibly cause a fault. The problem was apparently introduced in version 740820100528 as a result of a performance optimization that reduces the 7409number 7410of 7411namespace walks upon method exit by using the delete_namespace_subtree 7412function instead of the delete_namespace_by_owner function used 7413previously. 7414Bug is a missing namespace lock in the delete_namespace_subtree function. 7415dana.myers@oracle.com 7416 7417Fixed several issues and a possible fault with the automatic "serialized" 7418method support. History: This support changes a method to "serialized" on 7419the 7420fly if the method generates an AE_ALREADY_EXISTS error, indicating the 7421possibility that it cannot handle reentrancy. This fix repairs a couple 7422of 7423issues seen in the field, especially on machines with many cores: 7424 7425 1) Delete method children only upon the exit of the last thread, 7426 so as to not delete objects out from under other running threads 7427 (and possibly causing a fault.) 7428 2) Set the "serialized" bit for the method only upon the exit of the 7429 Last thread, so as to not cause deadlock when running threads 7430 attempt to exit. 7431 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7432 so that there is no longer any confusion between the two. 7433 7434 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7435 7436Debugger: Now lock the namespace for duration of a namespace dump. 7437Prevents 7438issues if the namespace is changing dynamically underneath the debugger. 7439Especially affects temporary namespace nodes, since the debugger displays 7440these also. 7441 7442Updated the ordering of include files. The ACPICA headers should appear 7443before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7444set 7445any necessary compiler-specific defines, etc. Affects the ACPI-related 7446tools 7447and utilities. 7448 7449Updated all ACPICA copyrights and signons to 2011. Added the 2011 7450copyright 7451to all module headers and signons, including the Linux header. This 7452affects 7453virtually every file in the ACPICA core subsystem, iASL compiler, and all 7454utilities. 7455 7456Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7457project files for VC++ 6.0 are now obsolete. New project files can be 7458found 7459under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7460details. 7461 7462Example Code and Data Size: These are the sizes for the OS-independent 7463acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7464debug version of the code includes the debug output trace mechanism and 7465has a 7466much larger code and data size. 7467 7468 Previous Release (VC 6.0): 7469 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7470 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7471 Current Release (VC 9.0): 7472 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7473 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7474 74752) iASL Compiler/Disassembler and Tools: 7476 7477iASL: Added generic data types to the Data Table compiler. Add "generic" 7478data 7479types such as UINT32, String, Unicode, etc., to simplify the generation 7480of 7481platform-defined tables such as UEFI. Lin Ming. 7482 7483iASL: Added listing support for the Data Table Compiler. Adds listing 7484support 7485(-l) to display actual binary output for each line of input code. 7486 7487---------------------------------------- 748809 December 2010. Summary of changes for version 20101209: 7489 74901) ACPI CA Core Subsystem: 7491 7492Completed the major overhaul of the GPE support code that was begun in 7493July 74942010. Major features include: removal of _PRW execution in ACPICA (host 7495executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7496changes to existing interfaces, simplification of GPE handler operation, 7497and 7498a handful of new interfaces: 7499 7500 AcpiUpdateAllGpes 7501 AcpiFinishGpe 7502 AcpiSetupGpeForWake 7503 AcpiSetGpeWakeMask 7504 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7505 7506See the ACPICA Programmer Reference for full details and programming 7507information. See the new section 4.4 "General Purpose Event (GPE) 7508Support" 7509for a full overview, and section 8.7 "ACPI General Purpose Event 7510Management" 7511for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7512Ming, 7513Bob Moore, Rafael Wysocki. 7514 7515Implemented a new GPE feature for Windows compatibility, the "Implicit 7516Wake 7517GPE Notify". This feature will automatically issue a Notify(2) on a 7518device 7519when a Wake GPE is received if there is no corresponding GPE method or 7520handler. ACPICA BZ 870. 7521 7522Fixed a problem with the Scope() operator during table parse and load 7523phase. 7524During load phase (table load or method execution), the scope operator 7525should 7526not enter the target into the namespace. Instead, it should open a new 7527scope 7528at the target location. Linux BZ 19462, ACPICA BZ 882. 7529 7530Example Code and Data Size: These are the sizes for the OS-independent 7531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7532debug version of the code includes the debug output trace mechanism and 7533has a 7534much larger code and data size. 7535 7536 Previous Release: 7537 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7538 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7539 Current Release: 7540 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7541 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7542 75432) iASL Compiler/Disassembler and Tools: 7544 7545iASL: Relax the alphanumeric restriction on _CID strings. These strings 7546are 7547"bus-specific" per the ACPI specification, and therefore any characters 7548are 7549acceptable. The only checks that can be performed are for a null string 7550and 7551perhaps for a leading asterisk. ACPICA BZ 886. 7552 7553iASL: Fixed a problem where a syntax error that caused a premature EOF 7554condition on the source file emitted a very confusing error message. The 7555premature EOF is now detected correctly. ACPICA BZ 891. 7556 7557Disassembler: Decode the AccessSize within a Generic Address Structure 7558(byte 7559access, word access, etc.) Note, this field does not allow arbitrary bit 7560access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7561 7562New: AcpiNames utility - Example namespace dump utility. Shows an example 7563of 7564ACPICA configuration for a minimal namespace dump utility. Uses table and 7565namespace managers, but no AML interpreter. Does not add any 7566functionality 7567over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7568partition and configure ACPICA. ACPICA BZ 883. 7569 7570AML Debugger: Increased the debugger buffer size for method return 7571objects. 7572Was 4K, increased to 16K. Also enhanced error messages for debugger 7573method 7574execution, including the buffer overflow case. 7575 7576---------------------------------------- 757713 October 2010. Summary of changes for version 20101013: 7578 75791) ACPI CA Core Subsystem: 7580 7581Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7582now 7583clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7584HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7585 7586Changed the type of the predefined namespace object _TZ from ThermalZone 7587to 7588Device. This was found to be confusing to the host software that 7589processes 7590the various thermal zones, since _TZ is not really a ThermalZone. 7591However, 7592a 7593Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7594Zhang. 7595 7596Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7597string is "Windows 2006 SP2". 7598 7599Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7600nsrepair 7601code automatically repairs _HID-related strings, this type of code is no 7602longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7603878. 7604 7605Example Code and Data Size: These are the sizes for the OS-independent 7606acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7607debug version of the code includes the debug output trace mechanism and 7608has a 7609much larger code and data size. 7610 7611 Previous Release: 7612 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7613 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7614 Current Release: 7615 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7616 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7617 76182) iASL Compiler/Disassembler and Tools: 7619 7620iASL: Implemented additional compile-time validation for _HID strings. 7621The 7622non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7623length 7624of 7625the string must be exactly seven or eight characters. For both _HID and 7626_CID 7627strings, all characters must be alphanumeric. ACPICA BZ 874. 7628 7629iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7630descriptors that are mostly or all zeros, with the expectation that they 7631will 7632be filled in at runtime. iASL now allows this as long as there is a 7633"resource 7634tag" (name) associated with the descriptor, which gives the ASL a handle 7635needed to modify the descriptor. ACPICA BZ 873. 7636 7637Added single-thread support to the generic Unix application OSL. 7638Primarily 7639for iASL support, this change removes the use of semaphores in the 7640single- 7641threaded ACPICA tools/applications - increasing performance. The 7642_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7643option. ACPICA BZ 879. 7644 7645AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7646support 7647for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7648 7649iASL: Moved all compiler messages to a new file, aslmessages.h. 7650 7651---------------------------------------- 765215 September 2010. Summary of changes for version 20100915: 7653 76541) ACPI CA Core Subsystem: 7655 7656Removed the AcpiOsDerivePciId OSL interface. The various host 7657implementations 7658of this function were not OS-dependent and are now obsolete and can be 7659removed from all host OSLs. This function has been replaced by 7660AcpiHwDerivePciId, which is now part of the ACPICA core code. 7661AcpiHwDerivePciId has been implemented without recursion. Adds one new 7662module, hwpci.c. ACPICA BZ 857. 7663 7664Implemented a dynamic repair for _HID and _CID strings. The following 7665problems are now repaired at runtime: 1) Remove a leading asterisk in the 7666string, and 2) the entire string is uppercased. Both repairs are in 7667accordance with the ACPI specification and will simplify host driver 7668code. 7669ACPICA BZ 871. 7670 7671The ACPI_THREAD_ID type is no longer configurable, internally it is now 7672always UINT64. This simplifies the ACPICA code, especially any printf 7673output. 7674UINT64 is the only common data type for all thread_id types across all 7675operating systems. It is now up to the host OSL to cast the native 7676thread_id 7677type to UINT64 before returning the value to ACPICA (via 7678AcpiOsGetThreadId). 7679Lin Ming, Bob Moore. 7680 7681Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7682"inline" 7683keyword is not standard across compilers, and this type allows inline to 7684be 7685configured on a per-compiler basis. Lin Ming. 7686 7687Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7688available. 7689Added an extern for this boolean in acpixf.h. Some hosts utilize this 7690value 7691during suspend/restore operations. ACPICA BZ 869. 7692 7693All code that implements error/warning messages with the "ACPI:" prefix 7694has 7695been moved to a new module, utxferror.c. 7696 7697The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7698it 7699is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7700 7701Example Code and Data Size: These are the sizes for the OS-independent 7702acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7703debug version of the code includes the debug output trace mechanism and 7704has a 7705much larger code and data size. 7706 7707 Previous Release: 7708 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7709 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7710 Current Release: 7711 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7712 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7713 77142) iASL Compiler/Disassembler and Tools: 7715 7716iASL/Disassembler: Write ACPI errors to stderr instead of the output 7717file. 7718This keeps the output files free of random error messages that may 7719originate 7720from within the namespace/interpreter code. Used this opportunity to 7721merge 7722all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7723866. Lin Ming, Bob Moore. 7724 7725Tools: update some printfs for ansi warnings on size_t. Handle width 7726change 7727of size_t on 32-bit versus 64-bit generations. Lin Ming. 7728 7729---------------------------------------- 773006 August 2010. Summary of changes for version 20100806: 7731 77321) ACPI CA Core Subsystem: 7733 7734Designed and implemented a new host interface to the _OSI support code. 7735This 7736will allow the host to dynamically add or remove multiple _OSI strings, 7737as 7738well as install an optional handler that is called for each _OSI 7739invocation. 7740Also added a new AML debugger command, 'osi' to display and modify the 7741global 7742_OSI string table, and test support in the AcpiExec utility. See the 7743ACPICA 7744reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7745New Functions: 7746 AcpiInstallInterface - Add an _OSI string. 7747 AcpiRemoveInterface - Delete an _OSI string. 7748 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7749Obsolete Functions: 7750 AcpiOsValidateInterface - no longer used. 7751New Files: 7752 source/components/utilities/utosi.c 7753 7754Re-introduced the support to enable multi-byte transfers for Embedded 7755Controller (EC) operation regions. A reported problem was found to be a 7756bug 7757in the host OS, not in the multi-byte support. Previously, the maximum 7758data 7759size passed to the EC operation region handler was a single byte. There 7760are 7761often EC Fields larger than one byte that need to be transferred, and it 7762is 7763useful for the EC driver to lock these as a single transaction. This 7764change 7765enables single transfers larger than 8 bits. This effectively changes the 7766access to the EC space from ByteAcc to AnyAcc, and will probably require 7767changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7768bit 7769transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7770 7771Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7772prototype in acpiosxf.h had the output value pointer as a (void *). 7773It should be a (UINT64 *). This may affect some host OSL code. 7774 7775Fixed a couple problems with the recently modified Linux makefiles for 7776iASL 7777and AcpiExec. These new makefiles place the generated object files in the 7778local directory so that there can be no collisions between the files that 7779are 7780shared between them that are compiled with different options. 7781 7782Example Code and Data Size: These are the sizes for the OS-independent 7783acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7784debug version of the code includes the debug output trace mechanism and 7785has a 7786much larger code and data size. 7787 7788 Previous Release: 7789 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7790 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7791 Current Release: 7792 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7793 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7794 77952) iASL Compiler/Disassembler and Tools: 7796 7797iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7798the 7799namespace from and disassemble an entire group of AML files. Useful for 7800loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7801and 7802disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7803 7804iASL: Allow multiple invocations of -e option. This change allows 7805multiple 7806uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7807834. 7808Lin Ming. 7809 7810---------------------------------------- 781102 July 2010. Summary of changes for version 20100702: 7812 78131) ACPI CA Core Subsystem: 7814 7815Implemented several updates to the recently added GPE reference count 7816support. The model for "wake" GPEs is changing to give the host OS 7817complete 7818control of these GPEs. Eventually, the ACPICA core will not execute any 7819_PRW 7820methods, since the host already must execute them. Also, additional 7821changes 7822were made to help ensure that the reference counts are kept in proper 7823synchronization with reality. Rafael J. Wysocki. 7824 78251) Ensure that GPEs are not enabled twice during initialization. 78262) Ensure that GPE enable masks stay in sync with the reference count. 78273) Do not inadvertently enable GPEs when writing GPE registers. 78284) Remove the internal wake reference counter and add new AcpiGpeWakeup 7829interface. This interface will set or clear individual GPEs for wakeup. 78305) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7831interfaces 7832are now used for "runtime" GPEs only. 7833 7834Changed the behavior of the GPE install/remove handler interfaces. The 7835GPE 7836is 7837no longer disabled during this process, as it was found to cause problems 7838on 7839some machines. Rafael J. Wysocki. 7840 7841Reverted a change introduced in version 20100528 to enable Embedded 7842Controller multi-byte transfers. This change was found to cause problems 7843with 7844Index Fields and possibly Bank Fields. It will be reintroduced when these 7845problems have been resolved. 7846 7847Fixed a problem with references to Alias objects within Package Objects. 7848A 7849reference to an Alias within the definition of a Package was not always 7850resolved properly. Aliases to objects like Processors, Thermal zones, 7851etc. 7852were resolved to the actual object instead of a reference to the object 7853as 7854it 7855should be. Package objects are only allowed to contain integer, string, 7856buffer, package, and reference objects. Redhat bugzilla 608648. 7857 7858Example Code and Data Size: These are the sizes for the OS-independent 7859acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7860debug version of the code includes the debug output trace mechanism and 7861has a 7862much larger code and data size. 7863 7864 Previous Release: 7865 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7866 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7867 Current Release: 7868 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7869 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7870 78712) iASL Compiler/Disassembler and Tools: 7872 7873iASL: Implemented a new compiler subsystem to allow definition and 7874compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7875These 7876are called "ACPI Data Tables", and the new compiler is the "Data Table 7877Compiler". This compiler is intended to simplify the existing error-prone 7878process of creating these tables for the BIOS, as well as allowing the 7879disassembly, modification, recompilation, and override of existing ACPI 7880data 7881tables. See the iASL User Guide for detailed information. 7882 7883iASL: Implemented a new Template Generator option in support of the new 7884Data 7885Table Compiler. This option will create examples of all known ACPI tables 7886that can be used as the basis for table development. See the iASL 7887documentation and the -T option. 7888 7889Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7890Descriptor Table). 7891 7892Updated the Linux makefiles for iASL and AcpiExec to place the generated 7893object files in the local directory so that there can be no collisions 7894between the shared files between them that are generated with different 7895options. 7896 7897Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7898Use 7899the #define __APPLE__ to enable this support. 7900 7901---------------------------------------- 790228 May 2010. Summary of changes for version 20100528: 7903 7904Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7905available at www.acpi.info. This is primarily an errata release. 7906 79071) ACPI CA Core Subsystem: 7908 7909Undefined ACPI tables: We are looking for the definitions for the 7910following 7911ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7912 7913Implemented support to enable multi-byte transfers for Embedded 7914Controller 7915(EC) operation regions. Previously, the maximum data size passed to the 7916EC 7917operation region handler was a single byte. There are often EC Fields 7918larger 7919than one byte that need to be transferred, and it is useful for the EC 7920driver 7921to lock these as a single transaction. This change enables single 7922transfers 7923larger than 8 bits. This effectively changes the access to the EC space 7924from 7925ByteAcc to AnyAcc, and will probably require changes to the host OS 7926Embedded 7927Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7928bit 7929transfers. Alexey Starikovskiy, Lin Ming 7930 7931Implemented a performance enhancement for namespace search and access. 7932This 7933change enhances the performance of namespace searches and walks by adding 7934a 7935backpointer to the parent in each namespace node. On large namespaces, 7936this 7937change can improve overall ACPI performance by up to 9X. Adding a pointer 7938to 7939each namespace node increases the overall size of the internal namespace 7940by 7941about 5%, since each namespace entry usually consists of both a namespace 7942node and an ACPI operand object. However, this is the first growth of the 7943namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7944 7945Implemented a performance optimization that reduces the number of 7946namespace 7947walks. On control method exit, only walk the namespace if the method is 7948known 7949to have created namespace objects outside of its local scope. Previously, 7950the 7951entire namespace was traversed on each control method exit. This change 7952can 7953improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7954Moore. 7955 7956Added support to truncate I/O addresses to 16 bits for Windows 7957compatibility. 7958Some ASL code has been seen in the field that inadvertently has bits set 7959above bit 15. This feature is optional and is enabled if the BIOS 7960requests 7961any Windows OSI strings. It can also be enabled by the host OS. Matthew 7962Garrett, Bob Moore. 7963 7964Added support to limit the maximum time for the ASL Sleep() operator. To 7965prevent accidental deep sleeps, limit the maximum time that Sleep() will 7966actually sleep. Configurable, the default maximum is two seconds. ACPICA 7967bugzilla 854. 7968 7969Added run-time validation support for the _WDG and_WED Microsoft 7970predefined 7971methods. These objects are defined by "Windows Instrumentation", and are 7972not 7973part of the ACPI spec. ACPICA BZ 860. 7974 7975Expanded all statistic counters used during namespace and device 7976initialization from 16 to 32 bits in order to support very large 7977namespaces. 7978 7979Replaced all instances of %d in printf format specifiers with %u since 7980nearly 7981all integers in ACPICA are unsigned. 7982 7983Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7984returned 7985as AE_NO_HANDLER. 7986 7987Example Code and Data Size: These are the sizes for the OS-independent 7988acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7989debug version of the code includes the debug output trace mechanism and 7990has a 7991much larger code and data size. 7992 7993 Previous Release: 7994 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7995 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7996 Current Release: 7997 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7998 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7999 80002) iASL Compiler/Disassembler and Tools: 8001 8002iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8003methods. These objects are defined by "Windows Instrumentation", and are 8004not 8005part of the ACPI spec. ACPICA BZ 860. 8006 8007AcpiExec: added option to disable the memory tracking mechanism. The -dt 8008option will disable the tracking mechanism, which improves performance 8009considerably. 8010 8011AcpiExec: Restructured the command line options into -d (disable) and -e 8012(enable) options. 8013 8014---------------------------------------- 801528 April 2010. Summary of changes for version 20100428: 8016 80171) ACPI CA Core Subsystem: 8018 8019Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8020including FADT-based and GPE Block Devices, execute any _PRW methods in 8021the 8022new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8023runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8024immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8025Devices. Provides compatibility with other ACPI implementations. Two new 8026files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8027Moore. 8028 8029Fixed a regression introduced in version 20100331 within the table 8030manager 8031where initial table loading could fail. This was introduced in the fix 8032for 8033AcpiReallocateRootTable. Also, renamed some of fields in the table 8034manager 8035data structures to clarify their meaning and use. 8036 8037Fixed a possible allocation overrun during internal object copy in 8038AcpiUtCopySimpleObject. The original code did not correctly handle the 8039case 8040where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8041847. 8042 8043Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8044possible access beyond end-of-allocation. Also, now fully validate 8045descriptor 8046(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8047 8048Example Code and Data Size: These are the sizes for the OS-independent 8049acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8050debug version of the code includes the debug output trace mechanism and 8051has a 8052much larger code and data size. 8053 8054 Previous Release: 8055 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8056 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8057 Current Release: 8058 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8059 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8060 80612) iASL Compiler/Disassembler and Tools: 8062 8063iASL: Implemented Min/Max/Len/Gran validation for address resource 8064descriptors. This change implements validation for the address fields 8065that 8066are common to all address-type resource descriptors. These checks are 8067implemented: Checks for valid Min/Max, length within the Min/Max window, 8068valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8069per 8070table 6-40 in the ACPI 4.0a specification. Also split the large 8071aslrestype1.c 8072and aslrestype2.c files into five new files. ACPICA BZ 840. 8073 8074iASL: Added support for the _Wxx predefined names. This support was 8075missing 8076and these names were not recognized by the compiler as valid predefined 8077names. ACPICA BZ 851. 8078 8079iASL: Added an error for all predefined names that are defined to return 8080no 8081value and thus must be implemented as Control Methods. These include all 8082of 8083the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8084names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8085 8086iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8087an 8088ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8089be 8090dynamically loaded via the Load() operator. Also cleaned up output for 8091the 8092- 8093ta and -tc options. ACPICA BZ 853. 8094 8095Tests: Added a new file with examples of extended iASL error checking. 8096Demonstrates the advanced error checking ability of the iASL compiler. 8097Available at tests/misc/badcode.asl. 8098 8099---------------------------------------- 810031 March 2010. Summary of changes for version 20100331: 8101 81021) ACPI CA Core Subsystem: 8103 8104Completed a major update for the GPE support in order to improve support 8105for 8106shared GPEs and to simplify both host OS and ACPICA code. Added a 8107reference 8108count mechanism to support shared GPEs that require multiple device 8109drivers. 8110Several external interfaces have changed. One external interface has been 8111removed. One new external interface was added. Most of the GPE external 8112interfaces now use the GPE spinlock instead of the events mutex (and the 8113Flags parameter for many GPE interfaces has been removed.) See the 8114updated 8115ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8116Rafael 8117Wysocki. ACPICA BZ 831. 8118 8119Changed: 8120 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8121Removed: 8122 AcpiSetGpeType 8123New: 8124 AcpiSetGpe 8125 8126Implemented write support for DataTable operation regions. These regions 8127are 8128defined via the DataTableRegion() operator. Previously, only read support 8129was 8130implemented. The ACPI specification allows DataTableRegions to be 8131read/write, 8132however. 8133 8134Implemented a new subsystem option to force a copy of the DSDT to local 8135memory. Optionally copy the entire DSDT to local memory (instead of 8136simply 8137mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8138replace 8139the original DSDT, creating the need for this option. Default is FALSE, 8140do 8141not copy the DSDT. 8142 8143Implemented detection of a corrupted or replaced DSDT. This change adds 8144support to detect a DSDT that has been corrupted and/or replaced from 8145outside 8146the OS (by firmware). This is typically catastrophic for the system, but 8147has 8148been seen on some machines. Once this problem has been detected, the DSDT 8149copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8150 8151Fixed two problems with AcpiReallocateRootTable during the root table 8152copy. 8153When copying the root table to the new allocation, the length used was 8154incorrect. The new size was used instead of the current table size, 8155meaning 8156too much data was copied. Also, the count of available slots for ACPI 8157tables 8158was not set correctly. Alexey Starikovskiy, Bob Moore. 8159 8160Example Code and Data Size: These are the sizes for the OS-independent 8161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8162debug version of the code includes the debug output trace mechanism and 8163has a 8164much larger code and data size. 8165 8166 Previous Release: 8167 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8168 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8169 Current Release: 8170 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8171 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8172 81732) iASL Compiler/Disassembler and Tools: 8174 8175iASL: Implement limited typechecking for values returned from predefined 8176control methods. The type of any returned static (unnamed) object is now 8177validated. For example, Return(1). ACPICA BZ 786. 8178 8179iASL: Fixed a predefined name object verification regression. Fixes a 8180problem 8181introduced in version 20100304. An error is incorrectly generated if a 8182predefined name is declared as a static named object with a value defined 8183using the keywords "Zero", "One", or "Ones". Lin Ming. 8184 8185iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8186by 8187reducing the requested registry access rights. ACPICA BZ 842. 8188 8189Disassembler: fixed a possible fault when generating External() 8190statements. 8191Introduced in commit ae7d6fd: Properly handle externals with parent- 8192prefix 8193(carat). Fixes a string length allocation calculation. Lin Ming. 8194 8195---------------------------------------- 819604 March 2010. Summary of changes for version 20100304: 8197 81981) ACPI CA Core Subsystem: 8199 8200Fixed a possible problem with the AML Mutex handling function 8201AcpiExReleaseMutex where the function could fault under the very rare 8202condition when the interpreter has blocked, the interpreter lock is 8203released, 8204the interpreter is then reentered via the same thread, and attempts to 8205acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8206Lin 8207Ming. 8208 8209Implemented additional configuration support for the AML "Debug Object". 8210Output from the debug object can now be enabled via a global variable, 8211AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8212debugging. 8213This debug output is now available in the release version of ACPICA 8214instead 8215of just the debug version. Also, the entire debug output module can now 8216be 8217configured out of the ACPICA build if desired. One new file added, 8218executer/exdebug.c. Lin Ming, Bob Moore. 8219 8220Added header support for the ACPI MCHI table (Management Controller Host 8221Interface Table). This table was added in ACPI 4.0, but the defining 8222document 8223has only recently become available. 8224 8225Standardized output of integer values for ACPICA warnings/errors. Always 8226use 82270x prefix for hex output, always use %u for unsigned integer decimal 8228output. 8229Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8230400 8231invocations.) These invocations were converted from the original 8232ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8233 8234Example Code and Data Size: These are the sizes for the OS-independent 8235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8236debug version of the code includes the debug output trace mechanism and 8237has a 8238much larger code and data size. 8239 8240 Previous Release: 8241 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8242 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8243 Current Release: 8244 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8245 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8246 82472) iASL Compiler/Disassembler and Tools: 8248 8249iASL: Implemented typechecking support for static (non-control method) 8250predefined named objects that are declared with the Name() operator. For 8251example, the type of this object is now validated to be of type Integer: 8252Name(_BBN, 1). This change migrates the compiler to using the core 8253predefined 8254name table instead of maintaining a local version. Added a new file, 8255aslpredef.c. ACPICA BZ 832. 8256 8257Disassembler: Added support for the ACPI 4.0 MCHI table. 8258 8259---------------------------------------- 826021 January 2010. Summary of changes for version 20100121: 8261 82621) ACPI CA Core Subsystem: 8263 8264Added the 2010 copyright to all module headers and signons. This affects 8265virtually every file in the ACPICA core subsystem, the iASL compiler, the 8266tools/utilities, and the test suites. 8267 8268Implemented a change to the AcpiGetDevices interface to eliminate 8269unnecessary 8270invocations of the _STA method. In the case where a specific _HID is 8271requested, do not run _STA until a _HID match is found. This eliminates 8272potentially dozens of _STA calls during a search for a particular 8273device/HID, 8274which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8275 8276Implemented an additional repair for predefined method return values. 8277Attempt 8278to repair unexpected NULL elements within returned Package objects. 8279Create 8280an 8281Integer of value zero, a NULL String, or a zero-length Buffer as 8282appropriate. 8283ACPICA BZ 818. Lin Ming, Bob Moore. 8284 8285Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8286the 8287code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8288(with 828964-bit AML integers). It is now obsolete and this change removes it from 8290the 8291ACPICA code base, replaced by UINT64. The original typedef has been 8292retained 8293for now for compatibility with existing device driver code. ACPICA BZ 8294824. 8295 8296Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8297in 8298the parse tree object. 8299 8300Added additional warning options for the gcc-4 generation. Updated the 8301source 8302accordingly. This includes some code restructuring to eliminate 8303unreachable 8304code, elimination of some gotos, elimination of unused return values, 8305some 8306additional casting, and removal of redundant declarations. 8307 8308Example Code and Data Size: These are the sizes for the OS-independent 8309acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8310debug version of the code includes the debug output trace mechanism and 8311has a 8312much larger code and data size. 8313 8314 Previous Release: 8315 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8316 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8317 Current Release: 8318 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8319 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8320 83212) iASL Compiler/Disassembler and Tools: 8322 8323No functional changes for this release. 8324 8325---------------------------------------- 832614 December 2009. Summary of changes for version 20091214: 8327 83281) ACPI CA Core Subsystem: 8329 8330Enhanced automatic data type conversions for predefined name repairs. 8331This 8332change expands the automatic repairs/conversions for predefined name 8333return 8334values to make Integers, Strings, and Buffers fully interchangeable. 8335Also, 8336a 8337Buffer can be converted to a Package of Integers if necessary. The 8338nsrepair.c 8339module was completely restructured. Lin Ming, Bob Moore. 8340 8341Implemented automatic removal of null package elements during predefined 8342name 8343repairs. This change will automatically remove embedded and trailing NULL 8344package elements from returned package objects that are defined to 8345contain 8346a 8347variable number of sub-packages. The driver is then presented with a 8348package 8349with no null elements to deal with. ACPICA BZ 819. 8350 8351Implemented a repair for the predefined _FDE and _GTM names. The expected 8352return value for both names is a Buffer of 5 DWORDs. This repair fixes 8353two 8354possible problems (both seen in the field), where a package of integers 8355is 8356returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8357Kim. 8358 8359Implemented additional module-level code support. This change will 8360properly 8361execute module-level code that is not at the root of the namespace (under 8362a 8363Device object, etc.). Now executes the code within the current scope 8364instead 8365of the root. ACPICA BZ 762. Lin Ming. 8366 8367Fixed possible mutex acquisition errors when running _REG methods. Fixes 8368a 8369problem where mutex errors can occur when running a _REG method that is 8370in 8371the same scope as a method-defined operation region or an operation 8372region 8373under a module-level IF block. This type of code is rare, so the problem 8374has 8375not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8376 8377Fixed a possible memory leak during module-level code execution. An 8378object 8379could be leaked for each block of executed module-level code if the 8380interpreter slack mode is enabled This change deletes any implicitly 8381returned 8382object from the module-level code block. Lin Ming. 8383 8384Removed messages for successful predefined repair(s). The repair 8385mechanism 8386was considered too wordy. Now, messages are only unconditionally emitted 8387if 8388the return object cannot be repaired. Existing messages for successful 8389repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8390827. 8391 8392Example Code and Data Size: These are the sizes for the OS-independent 8393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8394debug version of the code includes the debug output trace mechanism and 8395has a 8396much larger code and data size. 8397 8398 Previous Release: 8399 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8400 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8401 Current Release: 8402 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8403 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8404 84052) iASL Compiler/Disassembler and Tools: 8406 8407iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8408files 8409were no longer automatically removed at the termination of the compile. 8410 8411acpiexec: Implemented the -f option to specify default region fill value. 8412This option specifies the value used to initialize buffers that simulate 8413operation regions. Default value is zero. Useful for debugging problems 8414that 8415depend on a specific initial value for a region or field. 8416 8417---------------------------------------- 841812 November 2009. Summary of changes for version 20091112: 8419 84201) ACPI CA Core Subsystem: 8421 8422Implemented a post-order callback to AcpiWalkNamespace. The existing 8423interface only has a pre-order callback. This change adds an additional 8424parameter for a post-order callback which will be more useful for bus 8425scans. 8426ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8427 8428Modified the behavior of the operation region memory mapping cache for 8429SystemMemory. Ensure that the memory mappings created for operation 8430regions 8431do not cross 4K page boundaries. Crossing a page boundary while mapping 8432regions can cause kernel warnings on some hosts if the pages have 8433different 8434attributes. Such regions are probably BIOS bugs, and this is the 8435workaround. 8436Linux BZ 14445. Lin Ming. 8437 8438Implemented an automatic repair for predefined methods that must return 8439sorted lists. This change will repair (by sorting) packages returned by 8440_ALR, 8441_PSS, and _TSS. Drivers can now assume that the packages are correctly 8442sorted 8443and do not contain NULL package elements. Adds one new file, 8444namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8445 8446Fixed a possible fault during predefined name validation if a return 8447Package 8448object contains NULL elements. Also adds a warning if a NULL element is 8449followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8450may 8451include repair or removal of all such NULL elements where possible. 8452 8453Implemented additional module-level executable AML code support. This 8454change 8455will execute module-level code that is not at the root of the namespace 8456(under a Device object, etc.) at table load time. Module-level executable 8457AML 8458code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8459 8460Implemented a new internal function to create Integer objects. This 8461function 8462simplifies miscellaneous object creation code. ACPICA BZ 823. 8463 8464Reduced the severity of predefined repair messages, Warning to Info. 8465Since 8466the object was successfully repaired, a warning is too severe. Reduced to 8467an 8468info message for now. These messages may eventually be changed to debug- 8469only. 8470ACPICA BZ 812. 8471 8472Example Code and Data Size: These are the sizes for the OS-independent 8473acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8474debug version of the code includes the debug output trace mechanism and 8475has a 8476much larger code and data size. 8477 8478 Previous Release: 8479 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8480 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8481 Current Release: 8482 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8483 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8484 84852) iASL Compiler/Disassembler and Tools: 8486 8487iASL: Implemented Switch() with While(1) so that Break works correctly. 8488This 8489change correctly implements the Switch operator with a surrounding 8490While(1) 8491so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8492 8493iASL: Added a message if a package initializer list is shorter than 8494package 8495length. Adds a new remark for a Package() declaration if an initializer 8496list 8497exists, but is shorter than the declared length of the package. Although 8498technically legal, this is probably a coding error and it is seen in the 8499field. ACPICA BZ 815. Lin Ming, Bob Moore. 8500 8501iASL: Fixed a problem where the compiler could fault after the maximum 8502number 8503of errors was reached (200). 8504 8505acpixtract: Fixed a possible warning for pointer cast if the compiler 8506warning 8507level set very high. 8508 8509---------------------------------------- 851013 October 2009. Summary of changes for version 20091013: 8511 85121) ACPI CA Core Subsystem: 8513 8514Fixed a problem where an Operation Region _REG method could be executed 8515more 8516than once. If a custom address space handler is installed by the host 8517before 8518the "initialize operation regions" phase of the ACPICA initialization, 8519any 8520_REG methods for that address space could be executed twice. This change 8521fixes the problem. ACPICA BZ 427. Lin Ming. 8522 8523Fixed a possible memory leak for the Scope() ASL operator. When the exact 8524invocation of "Scope(\)" is executed (change scope to root), one internal 8525operand object was leaked. Lin Ming. 8526 8527Implemented a run-time repair for the _MAT predefined method. If the _MAT 8528return value is defined as a Field object in the AML, and the field 8529size is less than or equal to the default width of an integer (32 or 853064),_MAT 8531can incorrectly return an Integer instead of a Buffer. ACPICA now 8532automatically repairs this problem. ACPICA BZ 810. 8533 8534Implemented a run-time repair for the _BIF and _BIX predefined methods. 8535The 8536"OEM Information" field is often incorrectly returned as an Integer with 8537value zero if the field is not supported by the platform. This is due to 8538an 8539ambiguity in the ACPI specification. The field should always be a string. 8540ACPICA now automatically repairs this problem by returning a NULL string 8541within the returned Package. ACPICA BZ 807. 8542 8543Example Code and Data Size: These are the sizes for the OS-independent 8544acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8545debug version of the code includes the debug output trace mechanism and 8546has a 8547much larger code and data size. 8548 8549 Previous Release: 8550 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8551 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8552 Current Release: 8553 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8554 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8555 85562) iASL Compiler/Disassembler and Tools: 8557 8558Disassembler: Fixed a problem where references to external symbols that 8559contained one or more parent-prefixes (carats) were not handled 8560correctly, 8561possibly causing a fault. ACPICA BZ 806. Lin Ming. 8562 8563Disassembler: Restructured the code so that all functions that handle 8564external symbols are in a single module. One new file is added, 8565common/dmextern.c. 8566 8567AML Debugger: Added a max count argument for the Batch command (which 8568executes multiple predefined methods within the namespace.) 8569 8570iASL: Updated the compiler documentation (User Reference.) Available at 8571http://www.acpica.org/documentation/. ACPICA BZ 750. 8572 8573AcpiXtract: Updated for Lint and other formatting changes. Close all open 8574files. 8575 8576---------------------------------------- 857703 September 2009. Summary of changes for version 20090903: 8578 85791) ACPI CA Core Subsystem: 8580 8581For Windows Vista compatibility, added the automatic execution of an _INI 8582method located at the namespace root (\_INI). This method is executed at 8583table load time. This support is in addition to the automatic execution 8584of 8585\_SB._INI. Lin Ming. 8586 8587Fixed a possible memory leak in the interpreter for AML package objects 8588if 8589the package initializer list is longer than the defined size of the 8590package. 8591This apparently can only happen if the BIOS changes the package size on 8592the 8593fly (seen in a _PSS object), as ASL compilers do not allow this. The 8594interpreter will truncate the package to the defined size (and issue an 8595error 8596message), but previously could leave the extra objects undeleted if they 8597were 8598pre-created during the argument processing (such is the case if the 8599package 8600consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8601 8602Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8603This has been reported in the field. Previously, ACPICA would zero out 8604the 8605buffer/string. Now, the operation is treated as a noop. Provides Windows 8606compatibility. ACPICA BZ 803. Lin Ming. 8607 8608Removed an extraneous error message for ASL constructs of the form 8609Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8610statements 8611are seen in many BIOSs and are once again treated as NOOPs and no error 8612is 8613emitted when they are encountered. ACPICA BZ 785. 8614 8615Fixed an extraneous warning message if a _DSM reserved method returns a 8616Package object. _DSM can return any type of object, so validation on the 8617return type cannot be performed. ACPICA BZ 802. 8618 8619Example Code and Data Size: These are the sizes for the OS-independent 8620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8621debug version of the code includes the debug output trace mechanism and 8622has a 8623much larger code and data size. 8624 8625 Previous Release: 8626 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8627 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8628 Current Release: 8629 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8630 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8631 86322) iASL Compiler/Disassembler and Tools: 8633 8634iASL: Fixed a problem with the use of the Alias operator and Resource 8635Templates. The correct alias is now constructed and no error is emitted. 8636ACPICA BZ 738. 8637 8638iASL: Implemented the -I option to specify additional search directories 8639for 8640include files. Allows multiple additional search paths for include files. 8641Directories are searched in the order specified on the command line 8642(after 8643the local directory is searched.) ACPICA BZ 800. 8644 8645iASL: Fixed a problem where the full pathname for include files was not 8646emitted for warnings/errors. This caused the IDE support to not work 8647properly. ACPICA BZ 765. 8648 8649iASL: Implemented the -@ option to specify a Windows-style response file 8650containing additional command line options. ACPICA BZ 801. 8651 8652AcpiExec: Added support to load multiple AML files simultaneously (such 8653as 8654a 8655DSDT and multiple SSDTs). Also added support for wildcards within the AML 8656pathname. These features allow all machine tables to be easily loaded and 8657debugged together. ACPICA BZ 804. 8658 8659Disassembler: Added missing support for disassembly of HEST table Error 8660Bank 8661subtables. 8662 8663---------------------------------------- 866430 July 2009. Summary of changes for version 20090730: 8665 8666The ACPI 4.0 implementation for ACPICA is complete with this release. 8667 86681) ACPI CA Core Subsystem: 8669 8670ACPI 4.0: Added header file support for all new and changed ACPI tables. 8671Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8672new 8673for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8674BERT, 8675EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8676There 8677have been some ACPI 4.0 changes to other existing tables. Split the large 8678actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8679 8680ACPI 4.0: Implemented predefined name validation for all new names. There 8681are 868231 new names in ACPI 4.0. The predefined validation module was split into 8683two 8684files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8685 8686Implemented support for so-called "module-level executable code". This is 8687executable AML code that exists outside of any control method and is 8688intended 8689to be executed at table load time. Although illegal since ACPI 2.0, this 8690type 8691of code still exists and is apparently still being created. Blocks of 8692this 8693code are now detected and executed as intended. Currently, the code 8694blocks 8695must exist under either an If, Else, or While construct; these are the 8696typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8697 8698Implemented an automatic dynamic repair for predefined names that return 8699nested Package objects. This applies to predefined names that are defined 8700to 8701return a variable-length Package of sub-packages. If the number of sub- 8702packages is one, BIOS code is occasionally seen that creates a simple 8703single 8704package with no sub-packages. This code attempts to fix the problem by 8705wrapping a new package object around the existing package. These methods 8706can 8707be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8708BZ 8709790. 8710 8711Fixed a regression introduced in 20090625 for the AcpiGetDevices 8712interface. 8713The _HID/_CID matching was broken and no longer matched IDs correctly. 8714ACPICA 8715BZ 793. 8716 8717Fixed a problem with AcpiReset where the reset would silently fail if the 8718register was one of the protected I/O ports. AcpiReset now bypasses the 8719port 8720validation mechanism. This may eventually be driven into the 8721AcpiRead/Write 8722interfaces. 8723 8724Fixed a regression related to the recent update of the AcpiRead/Write 8725interfaces. A sleep/suspend could fail if the optional PM2 Control 8726register 8727does not exist during an attempt to write the Bus Master Arbitration bit. 8728(However, some hosts already delete the code that writes this bit, and 8729the 8730code may in fact be obsolete at this date.) ACPICA BZ 799. 8731 8732Fixed a problem where AcpiTerminate could fault if inadvertently called 8733twice 8734in succession. ACPICA BZ 795. 8735 8736Example Code and Data Size: These are the sizes for the OS-independent 8737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8738debug version of the code includes the debug output trace mechanism and 8739has a 8740much larger code and data size. 8741 8742 Previous Release: 8743 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8744 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8745 Current Release: 8746 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8747 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8748 87492) iASL Compiler/Disassembler and Tools: 8750 8751ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8752changes to existing tables. ACPICA BZ 775. 8753 8754---------------------------------------- 875525 June 2009. Summary of changes for version 20090625: 8756 8757The ACPI 4.0 Specification was released on June 16 and is available at 8758www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8759continue for the next few releases. 8760 87611) ACPI CA Core Subsystem: 8762 8763ACPI 4.0: Implemented interpreter support for the IPMI operation region 8764address space. Includes support for bi-directional data buffers and an 8765IPMI 8766address space handler (to be installed by an IPMI device driver.) ACPICA 8767BZ 8768773. Lin Ming. 8769 8770ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8771Includes 8772support in both the header files and the disassembler. 8773 8774Completed a major update for the AcpiGetObjectInfo external interface. 8775Changes include: 8776 - Support for variable, unlimited length HID, UID, and CID strings. 8777 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8778etc.) 8779 - Call the _SxW power methods on behalf of a device object. 8780 - Determine if a device is a PCI root bridge. 8781 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8782These changes will require an update to all callers of this interface. 8783See 8784the updated ACPICA Programmer Reference for details. One new source file 8785has 8786been added - utilities/utids.c. ACPICA BZ 368, 780. 8787 8788Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8789transfers. The Value parameter has been extended from 32 bits to 64 bits 8790in 8791order to support new ACPI 4.0 tables. These changes will require an 8792update 8793to 8794all callers of these interfaces. See the ACPICA Programmer Reference for 8795details. ACPICA BZ 768. 8796 8797Fixed several problems with AcpiAttachData. The handler was not invoked 8798when 8799the host node was deleted. The data sub-object was not automatically 8800deleted 8801when the host node was deleted. The interface to the handler had an 8802unused 8803parameter, this was removed. ACPICA BZ 778. 8804 8805Enhanced the function that dumps ACPI table headers. All non-printable 8806characters in the string fields are now replaced with '?' (Signature, 8807OemId, 8808OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8809these fields are occasionally seen in the field. ACPICA BZ 788. 8810 8811Fixed a problem with predefined method repair code where the code that 8812attempts to repair/convert an object of incorrect type is only executed 8813on 8814the first time the predefined method is called. The mechanism that 8815disables 8816warnings on subsequent calls was interfering with the repair mechanism. 8817ACPICA BZ 781. 8818 8819Fixed a possible memory leak in the predefined validation/repair code 8820when 8821a 8822buffer is automatically converted to an expected string object. 8823 8824Removed obsolete 16-bit files from the distribution and from the current 8825git 8826tree head. ACPICA BZ 776. 8827 8828Example Code and Data Size: These are the sizes for the OS-independent 8829acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8830debug version of the code includes the debug output trace mechanism and 8831has a 8832much larger code and data size. 8833 8834 Previous Release: 8835 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8836 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8837 Current Release: 8838 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8839 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8840 88412) iASL Compiler/Disassembler and Tools: 8842 8843ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8844operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8845 8846ACPI 4.0: iASL - implemented compile-time validation support for all new 8847predefined names and control methods (31 total). ACPICA BZ 769. 8848 8849---------------------------------------- 885021 May 2009. Summary of changes for version 20090521: 8851 88521) ACPI CA Core Subsystem: 8853 8854Disabled the preservation of the SCI enable bit in the PM1 control 8855register. 8856The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8857to 8858be 8859a "preserved" bit - "OSPM always preserves this bit position", section 88604.7.3.2.1. However, some machines fail if this bit is in fact preserved 8861because the bit needs to be explicitly set by the OS as a workaround. No 8862machines fail if the bit is not preserved. Therefore, ACPICA no longer 8863attempts to preserve this bit. 8864 8865Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8866incorrectly formed _PRT package could cause a fault. Added validation to 8867ensure that each package element is actually a sub-package. 8868 8869Implemented a new interface to install or override a single control 8870method, 8871AcpiInstallMethod. This interface is useful when debugging in order to 8872repair 8873an existing method or to install a missing method without having to 8874override 8875the entire ACPI table. See the ACPICA Programmer Reference for use and 8876examples. Lin Ming, Bob Moore. 8877 8878Fixed several reference count issues with the DdbHandle object that is 8879created from a Load or LoadTable operator. Prevent premature deletion of 8880the 8881object. Also, mark the object as invalid once the table has been 8882unloaded. 8883This is needed because the handle itself may not be deleted after the 8884table 8885unload, depending on whether it has been stored in a named object by the 8886caller. Lin Ming. 8887 8888Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8889mutexes of the same sync level are acquired but then not released in 8890strict 8891opposite order, the internally maintained Current Sync Level becomes 8892confused 8893and can cause subsequent execution errors. ACPICA BZ 471. 8894 8895Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8896specification has been changed to make the SyncLevel for mutex objects 8897more 8898useful. When releasing a mutex, the SyncLevel of the mutex must now be 8899the 8900same as the current sync level. This makes more sense than the previous 8901rule 8902(SyncLevel less than or equal). This change updates the code to match the 8903specification. 8904 8905Fixed a problem with the local version of the AcpiOsPurgeCache function. 8906The 8907(local) cache must be locked during all cache object deletions. Andrew 8908Baumann. 8909 8910Updated the Load operator to use operation region interfaces. This 8911replaces 8912direct memory mapping with region access calls. Now, all region accesses 8913go 8914through the installed region handler as they should. 8915 8916Simplified and optimized the NsGetNextNode function. Reduced parameter 8917count 8918and reduced code for this frequently used function. 8919 8920Example Code and Data Size: These are the sizes for the OS-independent 8921acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8922debug version of the code includes the debug output trace mechanism and 8923has a 8924much larger code and data size. 8925 8926 Previous Release: 8927 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8928 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8929 Current Release: 8930 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8931 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8932 89332) iASL Compiler/Disassembler and Tools: 8934 8935Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8936problems 8937with sub-table disassembly and handling invalid sub-tables. Attempt 8938recovery 8939after an invalid sub-table ID. 8940 8941---------------------------------------- 894222 April 2009. Summary of changes for version 20090422: 8943 89441) ACPI CA Core Subsystem: 8945 8946Fixed a compatibility issue with the recently released I/O port 8947protection 8948mechanism. For windows compatibility, 1) On a port protection violation, 8949simply ignore the request and do not return an exception (allow the 8950control 8951method to continue execution.) 2) If only part of the request overlaps a 8952protected port, read/write the individual ports that are not protected. 8953Linux 8954BZ 13036. Lin Ming 8955 8956Enhanced the execution of the ASL/AML BreakPoint operator so that it 8957actually 8958breaks into the AML debugger if the debugger is present. This matches the 8959ACPI-defined behavior. 8960 8961Fixed several possible warnings related to the use of the configurable 8962ACPI_THREAD_ID. This type can now be configured as either an integer or a 8963pointer with no warnings. Also fixes several warnings in printf-like 8964statements for the 64-bit build when the type is configured as a pointer. 8965ACPICA BZ 766, 767. 8966 8967Fixed a number of possible warnings when compiling with gcc 4+ (depending 8968on 8969warning options.) Examples include printf formats, aliasing, unused 8970globals, 8971missing prototypes, missing switch default statements, use of non-ANSI 8972library functions, use of non-ANSI constructs. See generate/unix/Makefile 8973for 8974a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8975 8976Example Code and Data Size: These are the sizes for the OS-independent 8977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8978debug version of the code includes the debug output trace mechanism and 8979has a 8980much larger code and data size. 8981 8982 Previous Release: 8983 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8984 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8985 Current Release: 8986 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8987 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8988 89892) iASL Compiler/Disassembler and Tools: 8990 8991iASL: Fixed a generation warning from Bison 2.3 and fixed several 8992warnings 8993on 8994the 64-bit build. 8995 8996iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8997not 8998correctly digest Windows/DOS formatted files (with CR/LF). 8999 9000iASL: Added a new option for "quiet mode" (-va) that produces only the 9001compilation summary, not individual errors and warnings. Useful for large 9002batch compilations. 9003 9004AcpiExec: Implemented a new option (-z) to enable a forced 9005semaphore/mutex 9006timeout that can be used to detect hang conditions during execution of 9007AML 9008code (includes both internal semaphores and AML-defined mutexes and 9009events.) 9010 9011Added new makefiles for the generation of acpica in a generic unix-like 9012environment. These makefiles are intended to generate the acpica tools 9013and 9014utilities from the original acpica git source tree structure. 9015 9016Test Suites: Updated and cleaned up the documentation files. Updated the 9017copyrights to 2009, affecting all source files. Use the new version of 9018iASL 9019with quiet mode. Increased the number of available semaphores in the 9020Windows 9021OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9022added 9023an alternate implementation of the semaphore timeout to allow aslts to 9024execute fully on Cygwin. 9025 9026---------------------------------------- 902720 March 2009. Summary of changes for version 20090320: 9028 90291) ACPI CA Core Subsystem: 9030 9031Fixed a possible race condition between AcpiWalkNamespace and dynamic 9032table 9033unloads. Added a reader/writer locking mechanism to allow multiple 9034concurrent 9035namespace walks (readers), but block a dynamic table unload until it can 9036gain 9037exclusive write access to the namespace. This fixes a problem where a 9038table 9039unload could (possibly catastrophically) delete the portion of the 9040namespace 9041that is currently being examined by a walk. Adds a new file, utlock.c, 9042that 9043implements the reader/writer lock mechanism. ACPICA BZ 749. 9044 9045Fixed a regression introduced in version 20090220 where a change to the 9046FADT 9047handling could cause the ACPICA subsystem to access non-existent I/O 9048ports. 9049 9050Modified the handling of FADT register and table (FACS/DSDT) addresses. 9051The 9052FADT can contain both 32-bit and 64-bit versions of these addresses. 9053Previously, the 64-bit versions were favored, meaning that if both 32 and 905464 9055versions were valid, but not equal, the 64-bit version was used. This was 9056found to cause some machines to fail. Now, in this case, the 32-bit 9057version 9058is used instead. This now matches the Windows behavior. 9059 9060Implemented a new mechanism to protect certain I/O ports. Provides 9061Microsoft 9062compatibility and protects the standard PC I/O ports from access via AML 9063code. Adds a new file, hwvalid.c 9064 9065Fixed a possible extraneous warning message from the FADT support. The 9066message warns of a 32/64 length mismatch between the legacy and GAS 9067definitions for a register. 9068 9069Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9070is 9071made obsolete by the port protection mechanism above. It was previously 9072used 9073to validate the entire address range of an operation region, which could 9074be 9075incorrect if the range included illegal ports, but fields within the 9076operation region did not actually access those ports. Validation is now 9077performed on a per-field basis instead of the entire region. 9078 9079Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9080Ignored bits must be "preserved" according to the ACPI spec. Usually, 9081this 9082means a read/modify/write when writing to the register. However, for 9083status 9084registers, writing a one means clear the event. Writing a zero means 9085preserve 9086the event (do not clear.) This behavior is clarified in the ACPI 4.0 9087spec, 9088and the ACPICA code now simply always writes a zero to the ignored bit. 9089 9090Modified the handling of ignored bits for the PM1 A/B Control Registers. 9091As 9092per the ACPI specification, for the control registers, preserve 9093(read/modify/write) all bits that are defined as either reserved or 9094ignored. 9095 9096Updated the handling of write-only bits in the PM1 A/B Control Registers. 9097When reading the register, zero the write-only bits as per the ACPI spec. 9098ACPICA BZ 443. Lin Ming. 9099 9100Removed "Linux" from the list of supported _OSI strings. Linux no longer 9101wants to reply true to this request. The Windows strings are the only 9102paths 9103through the AML that are tested and known to work properly. 9104 9105 Previous Release: 9106 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9107 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9108 Current Release: 9109 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9110 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9111 91122) iASL Compiler/Disassembler and Tools: 9113 9114Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9115and 9116aetables.c 9117 9118---------------------------------------- 911920 February 2009. Summary of changes for version 20090220: 9120 91211) ACPI CA Core Subsystem: 9122 9123Optimized the ACPI register locking. Removed locking for reads from the 9124ACPI 9125bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9126is 9127not required when reading the single-bit registers. The 9128AcpiGetRegisterUnlocked function is no longer needed and has been 9129removed. 9130This will improve performance for reads on these registers. ACPICA BZ 9131760. 9132 9133Fixed the parameter validation for AcpiRead/Write. Now return 9134AE_BAD_PARAMETER if the input register pointer is null, and 9135AE_BAD_ADDRESS 9136if 9137the register has an address of zero. Previously, these cases simply 9138returned 9139AE_OK. For optional registers such as PM1B status/enable/control, the 9140caller 9141should check for a valid register address before calling. ACPICA BZ 748. 9142 9143Renamed the external ACPI bit register access functions. Renamed 9144AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9145functions. The new names are AcpiReadBitRegister and 9146AcpiWriteBitRegister. 9147Also, restructured the code for these functions by simplifying the code 9148path 9149and condensing duplicate code to reduce code size. 9150 9151Added new functions to transparently handle the possibly split PM1 A/B 9152registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9153functions 9154now handle the split registers for PM1 Status, Enable, and Control. 9155ACPICA 9156BZ 9157746. 9158 9159Added a function to handle the PM1 control registers, 9160AcpiHwWritePm1Control. 9161This function writes both of the PM1 control registers (A/B). These 9162registers 9163are different than the PM1 A/B status and enable registers in that 9164different 9165values can be written to the A/B registers. Most notably, the SLP_TYP 9166bits 9167can be different, as per the values returned from the _Sx predefined 9168methods. 9169 9170Removed an extra register write within AcpiHwClearAcpiStatus. This 9171function 9172was writing an optional PM1B status register twice. The existing call to 9173the 9174low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9175A/B 9176register. ACPICA BZ 751. 9177 9178Split out the PM1 Status registers from the FADT. Added new globals for 9179these 9180registers (A/B), similar to the way the PM1 Enable registers are handled. 9181Instead of overloading the FADT Event Register blocks. This makes the 9182code 9183clearer and less prone to error. 9184 9185Fixed the warning message for when the platform contains too many ACPI 9186tables 9187for the default size of the global root table data structure. The 9188calculation 9189for the truncation value was incorrect. 9190 9191Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9192obsolete macro, since it is now a simple reference to ->common.type. 9193There 9194were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9195 9196Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9197TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9198simply SLEEP_TYPE. ACPICA BZ 754. 9199 9200Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9201function is only needed on 64-bit host operating systems and is thus not 9202included for 32-bit hosts. 9203 9204Debug output: print the input and result for invocations of the _OSI 9205reserved 9206control method via the ACPI_LV_INFO debug level. Also, reduced some of 9207the 9208verbosity of this debug level. Len Brown. 9209 9210Example Code and Data Size: These are the sizes for the OS-independent 9211acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9212debug version of the code includes the debug output trace mechanism and 9213has a 9214much larger code and data size. 9215 9216 Previous Release: 9217 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9218 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9219 Current Release: 9220 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9221 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9222 92232) iASL Compiler/Disassembler and Tools: 9224 9225Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9226various legal performance profiles. 9227 9228---------------------------------------- 922923 January 2009. Summary of changes for version 20090123: 9230 92311) ACPI CA Core Subsystem: 9232 9233Added the 2009 copyright to all module headers and signons. This affects 9234virtually every file in the ACPICA core subsystem, the iASL compiler, and 9235the tools/utilities. 9236 9237Implemented a change to allow the host to override any ACPI table, 9238including 9239dynamically loaded tables. Previously, only the DSDT could be replaced by 9240the 9241host. With this change, the AcpiOsTableOverride interface is called for 9242each 9243table found in the RSDT/XSDT during ACPICA initialization, and also 9244whenever 9245a table is dynamically loaded via the AML Load operator. 9246 9247Updated FADT flag definitions, especially the Boot Architecture flags. 9248 9249Debugger: For the Find command, automatically pad the input ACPI name 9250with 9251underscores if the name is shorter than 4 characters. This enables a 9252match 9253with the actual namespace entry which is itself padded with underscores. 9254 9255Example Code and Data Size: These are the sizes for the OS-independent 9256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9257debug version of the code includes the debug output trace mechanism and 9258has a 9259much larger code and data size. 9260 9261 Previous Release: 9262 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9263 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9264 Current Release: 9265 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9266 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9267 92682) iASL Compiler/Disassembler and Tools: 9269 9270Fix build error under Bison-2.4. 9271 9272Disassembler: Enhanced FADT support. Added decoding of the Boot 9273Architecture 9274flags. Now decode all flags, regardless of the FADT version. Flag output 9275includes the FADT version which first defined each flag. 9276 9277The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9278and 9279DSDT). Windows only. 9280 9281---------------------------------------- 928204 December 2008. Summary of changes for version 20081204: 9283 92841) ACPI CA Core Subsystem: 9285 9286The ACPICA Programmer Reference has been completely updated and revamped 9287for 9288this release. This includes updates to the external interfaces, OSL 9289interfaces, the overview sections, and the debugger reference. 9290 9291Several new ACPICA interfaces have been implemented and documented in the 9292programmer reference: 9293AcpiReset - Writes the reset value to the FADT-defined reset register. 9294AcpiDisableAllGpes - Disable all available GPEs. 9295AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9296AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9297AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9298AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9299AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9300 9301Most of the public ACPI hardware-related interfaces have been moved to a 9302new 9303file, components/hardware/hwxface.c 9304 9305Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9306register lengths within the FADT are now used, and the low level ACPI 9307register access no longer hardcodes the ACPI register lengths. Given that 9308there may be some risk in actually trusting the FADT register lengths, a 9309run- 9310time option was added to fall back to the default hardcoded lengths if 9311the 9312FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9313option is set to true for now, and a warning is issued if a suspicious 9314FADT 9315register length is overridden with the default value. 9316 9317Fixed a reference count issue in NsRepairObject. This problem was 9318introduced 9319in version 20081031 as part of a fix to repair Buffer objects within 9320Packages. Lin Ming. 9321 9322Added semaphore support to the Linux/Unix application OS-services layer 9323(OSL). ACPICA BZ 448. Lin Ming. 9324 9325Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9326will 9327be implemented in the OSL, or will binary semaphores be used instead. 9328 9329Example Code and Data Size: These are the sizes for the OS-independent 9330acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9331debug version of the code includes the debug output trace mechanism and 9332has a 9333much larger code and data size. 9334 9335 Previous Release: 9336 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9337 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9338 Current Release: 9339 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9340 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9341 93422) iASL Compiler/Disassembler and Tools: 9343 9344iASL: Completed the '-e' option to include additional ACPI tables in 9345order 9346to 9347aid with disassembly and External statement generation. ACPICA BZ 742. 9348Lin 9349Ming. 9350 9351iASL: Removed the "named object in while loop" error. The compiler cannot 9352determine how many times a loop will execute. ACPICA BZ 730. 9353 9354Disassembler: Implemented support for FADT revision 2 (MS extension). 9355ACPICA 9356BZ 743. 9357 9358Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9359MCFG). 9360 9361---------------------------------------- 936231 October 2008. Summary of changes for version 20081031: 9363 93641) ACPI CA Core Subsystem: 9365 9366Restructured the ACPICA header files into public/private. acpi.h now 9367includes 9368only the "public" acpica headers. All other acpica headers are "private" 9369and 9370should not be included by acpica users. One new file, accommon.h is used 9371to 9372include the commonly used private headers for acpica code generation. 9373Future 9374plans include moving all private headers to a new subdirectory. 9375 9376Implemented an automatic Buffer->String return value conversion for 9377predefined ACPI methods. For these methods (such as _BIF), added 9378automatic 9379conversion for return objects that are required to be a String, but a 9380Buffer 9381was found instead. This can happen when reading string battery data from 9382an 9383operation region, because it used to be difficult to convert the data 9384from 9385buffer to string from within the ASL. Ensures that the host OS is 9386provided 9387with a valid null-terminated string. Linux BZ 11822. 9388 9389Updated the FACS waking vector interfaces. Split 9390AcpiSetFirmwareWakingVector 9391into two: one for the 32-bit vector, another for the 64-bit vector. This 9392is 9393required because the host OS must setup the wake much differently for 9394each 9395vector (real vs. protected mode, etc.) and the interface itself should 9396not 9397be 9398deciding which vector to use. Also, eliminated the 9399GetFirmwareWakingVector 9400interface, as it served no purpose (only the firmware reads the vector, 9401OS 9402only writes the vector.) ACPICA BZ 731. 9403 9404Implemented a mechanism to escape infinite AML While() loops. Added a 9405loop 9406counter to force exit from AML While loops if the count becomes too 9407large. 9408This can occur in poorly written AML when the hardware does not respond 9409within a while loop and the loop does not implement a timeout. The 9410maximum 9411loop count is configurable. A new exception code is returned when a loop 9412is 9413broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9414 9415Optimized the execution of AML While loops. Previously, a control state 9416object was allocated and freed for each execution of the loop. The 9417optimization is to simply reuse the control state for each iteration. 9418This 9419speeds up the raw loop execution time by about 5%. 9420 9421Enhanced the implicit return mechanism. For Windows compatibility, return 9422an 9423implicit integer of value zero for methods that contain no executable 9424code. 9425Such methods are seen in the field as stubs (presumably), and can cause 9426drivers to fail if they expect a return value. Lin Ming. 9427 9428Allow multiple backslashes as root prefixes in namepaths. In a fully 9429qualified namepath, allow multiple backslash prefixes. This can happen 9430(and 9431is seen in the field) because of the use of a double-backslash in strings 9432(since backslash is the escape character) causing confusion. ACPICA BZ 9433739 9434Lin Ming. 9435 9436Emit a warning if two different FACS or DSDT tables are discovered in the 9437FADT. Checks if there are two valid but different addresses for the FACS 9438and 9439DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9440 9441Consolidated the method argument count validation code. Merged the code 9442that 9443validates control method argument counts into the predefined validation 9444module. Eliminates possible multiple warnings for incorrect argument 9445counts. 9446 9447Implemented ACPICA example code. Includes code for ACPICA initialization, 9448handler installation, and calling a control method. Available at 9449source/tools/examples. 9450 9451Added a global pointer for FACS table to simplify internal FACS access. 9452Use 9453the global pointer instead of using AcpiGetTableByIndex for each FACS 9454access. 9455This simplifies the code for the Global Lock and the Firmware Waking 9456Vector(s). 9457 9458Example Code and Data Size: These are the sizes for the OS-independent 9459acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9460debug version of the code includes the debug output trace mechanism and 9461has a 9462much larger code and data size. 9463 9464 Previous Release: 9465 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9466 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9467 Current Release: 9468 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9469 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9470 94712) iASL Compiler/Disassembler and Tools: 9472 9473iASL: Improved disassembly of external method calls. Added the -e option 9474to 9475allow the inclusion of additional ACPI tables to help with the 9476disassembly 9477of 9478method invocations and the generation of external declarations during the 9479disassembly. Certain external method invocations cannot be disassembled 9480properly without the actual declaration of the method. Use the -e option 9481to 9482include the table where the external method(s) are actually declared. 9483Most 9484useful for disassembling SSDTs that make method calls back to the master 9485DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9486-d 9487-e dsdt.aml ssdt1.aml 9488 9489iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9490problem where the use of an alias within a namepath would result in a not 9491found error or cause the compiler to fault. Also now allows forward 9492references from the Alias operator itself. ACPICA BZ 738. 9493 9494---------------------------------------- 949526 September 2008. Summary of changes for version 20080926: 9496 94971) ACPI CA Core Subsystem: 9498 9499Designed and implemented a mechanism to validate predefined ACPI methods 9500and 9501objects. This code validates the predefined ACPI objects (objects whose 9502names 9503start with underscore) that appear in the namespace, at the time they are 9504evaluated. The argument count and the type of the returned object are 9505validated against the ACPI specification. The purpose of this validation 9506is 9507to detect problems with the BIOS-implemented predefined ACPI objects 9508before 9509the results are returned to the ACPI-related drivers. Future enhancements 9510may 9511include actual repair of incorrect return objects where possible. Two new 9512files are nspredef.c and acpredef.h. 9513 9514Fixed a fault in the AML parser if a memory allocation fails during the 9515Op 9516completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9517 9518Fixed an issue with implicit return compatibility. This change improves 9519the 9520implicit return mechanism to be more compatible with the MS interpreter. 9521Lin 9522Ming, ACPICA BZ 349. 9523 9524Implemented support for zero-length buffer-to-string conversions. Allow 9525zero 9526length strings during interpreter buffer-to-string conversions. For 9527example, 9528during the ToDecimalString and ToHexString operators, as well as implicit 9529conversions. Fiodor Suietov, ACPICA BZ 585. 9530 9531Fixed two possible memory leaks in the error exit paths of 9532AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9533are 9534similar in that they use a stack of state objects in order to eliminate 9535recursion. The stack must be fully unwound and deallocated if an error 9536occurs. Lin Ming. ACPICA BZ 383. 9537 9538Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9539global 9540ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9541Moore ACPICA BZ 442. 9542 9543Removed the obsolete version number in module headers. Removed the 9544"$Revision" number that appeared in each module header. This version 9545number 9546was useful under SourceSafe and CVS, but has no meaning under git. It is 9547not 9548only incorrect, it could also be misleading. 9549 9550Example Code and Data Size: These are the sizes for the OS-independent 9551acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9552debug version of the code includes the debug output trace mechanism and 9553has a 9554much larger code and data size. 9555 9556 Previous Release: 9557 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9558 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9559 Current Release: 9560 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9561 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9562 9563---------------------------------------- 956429 August 2008. Summary of changes for version 20080829: 9565 95661) ACPI CA Core Subsystem: 9567 9568Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9569Reference. Changes include the elimination of cheating on the Object 9570field 9571for the DdbHandle subtype, addition of a reference class field to 9572differentiate the various reference types (instead of an AML opcode), and 9573the 9574cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9575 9576Reduce an error to a warning for an incorrect method argument count. 9577Previously aborted with an error if too few arguments were passed to a 9578control method via the external ACPICA interface. Now issue a warning 9579instead 9580and continue. Handles the case where the method inadvertently declares 9581too 9582many arguments, but does not actually use the extra ones. Applies mainly 9583to 9584the predefined methods. Lin Ming. Linux BZ 11032. 9585 9586Disallow the evaluation of named object types with no intrinsic value. 9587Return 9588AE_TYPE for objects that have no value and therefore evaluation is 9589undefined: 9590Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9591of 9592these types were allowed, but an exception would be generated at some 9593point 9594during the evaluation. Now, the error is generated up front. 9595 9596Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9597(nsnames.c). Fixes a leak in the error exit path. 9598 9599Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9600debug 9601levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9602ACPI_EXCEPTION 9603interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9604ACPI_LV_EVENTS. 9605 9606Removed obsolete and/or unused exception codes from the acexcep.h header. 9607There is the possibility that certain device drivers may be affected if 9608they 9609use any of these exceptions. 9610 9611The ACPICA documentation has been added to the public git source tree, 9612under 9613acpica/documents. Included are the ACPICA programmer reference, the iASL 9614compiler reference, and the changes.txt release logfile. 9615 9616Example Code and Data Size: These are the sizes for the OS-independent 9617acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9618debug version of the code includes the debug output trace mechanism and 9619has a 9620much larger code and data size. 9621 9622 Previous Release: 9623 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9624 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9625 Current Release: 9626 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9627 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9628 96292) iASL Compiler/Disassembler and Tools: 9630 9631Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9632defines _SCP with 3 arguments. Previous versions defined it with only 1 9633argument. iASL now allows both definitions. 9634 9635iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9636zero- 9637length subtables when disassembling ACPI tables. Also fixed a couple of 9638errors where a full 16-bit table type field was not extracted from the 9639input 9640properly. 9641 9642acpisrc: Improve comment counting mechanism for generating source code 9643statistics. Count first and last lines of multi-line comments as 9644whitespace, 9645not comment lines. Handle Linux legal header in addition to standard 9646acpica 9647header. 9648 9649---------------------------------------- 9650 965129 July 2008. Summary of changes for version 20080729: 9652 96531) ACPI CA Core Subsystem: 9654 9655Fix a possible deadlock in the GPE dispatch. Remove call to 9656AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9657attempt 9658to acquire the GPE lock but can deadlock since the GPE lock is already 9659held 9660at dispatch time. This code was introduced in version 20060831 as a 9661response 9662to Linux BZ 6881 and has since been removed from Linux. 9663 9664Add a function to dereference returned reference objects. Examines the 9665return 9666object from a call to AcpiEvaluateObject. Any Index or RefOf references 9667are 9668automatically dereferenced in an attempt to return something useful 9669(these 9670reference types cannot be converted into an external ACPI_OBJECT.) 9671Provides 9672MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9673 9674x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9675subtables for the MADT and one new subtable for the SRAT. Includes 9676disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9677x2APIC 9678Specification, June 2008. 9679 9680Additional error checking for pathname utilities. Add error check after 9681all 9682calls to AcpiNsGetPathnameLength. Add status return from 9683AcpiNsBuildExternalPath and check after all calls. Add parameter 9684validation 9685to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9686 9687Return status from the global init function AcpiUtGlobalInitialize. This 9688is 9689used by both the kernel subsystem and the utilities such as iASL 9690compiler. 9691The function could possibly fail when the caches are initialized. Yang 9692Yi. 9693 9694Add a function to decode reference object types to strings. Created for 9695improved error messages. 9696 9697Improve object conversion error messages. Better error messages during 9698object 9699conversion from internal to the external ACPI_OBJECT. Used for external 9700calls 9701to AcpiEvaluateObject. 9702 9703Example Code and Data Size: These are the sizes for the OS-independent 9704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9705debug version of the code includes the debug output trace mechanism and 9706has a 9707much larger code and data size. 9708 9709 Previous Release: 9710 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9711 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9712 Current Release: 9713 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9714 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9715 97162) iASL Compiler/Disassembler and Tools: 9717 9718Debugger: fix a possible hang when evaluating non-methods. Fixes a 9719problem 9720introduced in version 20080701. If the object being evaluated (via 9721execute 9722command) is not a method, the debugger can hang while trying to obtain 9723non- 9724existent parameters. 9725 9726iASL: relax error for using reserved "_T_x" identifiers. These names can 9727appear in a disassembled ASL file if they were emitted by the original 9728compiler. Instead of issuing an error or warning and forcing the user to 9729manually change these names, issue a remark instead. 9730 9731iASL: error if named object created in while loop. Emit an error if any 9732named 9733object is created within a While loop. If allowed, this code will 9734generate 9735a 9736run-time error on the second iteration of the loop when an attempt is 9737made 9738to 9739create the same named object twice. ACPICA bugzilla 730. 9740 9741iASL: Support absolute pathnames for include files. Add support for 9742absolute 9743pathnames within the Include operator. previously, only relative 9744pathnames 9745were supported. 9746 9747iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9748Descriptor. 9749The ACPI spec requires one interrupt minimum. BZ 423 9750 9751iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9752Handles the case for the Interrupt Resource Descriptor where 9753the ResourceSource argument is omitted but ResourceSourceIndex 9754is present. Now leave room for the Index. BZ 426 9755 9756iASL: Prevent error message if CondRefOf target does not exist. Fixes 9757cases 9758where an error message is emitted if the target does not exist. BZ 516 9759 9760iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9761(get ACPI tables on Windows). This was apparently broken in version 976220070919. 9763 9764AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9765where 9766the EOF happens immediately after the last table in the input file. Print 9767completion message. Previously, no message was displayed in this case. 9768 9769---------------------------------------- 977001 July 2008. Summary of changes for version 20080701: 9771 97720) Git source tree / acpica.org 9773 9774Fixed a problem where a git-clone from http would not transfer the entire 9775source tree. 9776 97771) ACPI CA Core Subsystem: 9778 9779Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9780enable bit. Now performs a read-change-write of the enable register 9781instead 9782of simply writing out the cached enable mask. This will prevent 9783inadvertent 9784enabling of GPEs if a rogue GPE is received during initialization (before 9785GPE 9786handlers are installed.) 9787 9788Implemented a copy for dynamically loaded tables. Previously, dynamically 9789loaded tables were simply mapped - but on some machines this memory is 9790corrupted after suspend. Now copy the table to a local buffer. For the 9791OpRegion case, added checksum verify. Use the table length from the table 9792header, not the region length. For the Buffer case, use the table length 9793also. Dennis Noordsij, Bob Moore. BZ 10734 9794 9795Fixed a problem where the same ACPI table could not be dynamically loaded 9796and 9797unloaded more than once. Without this change, a table cannot be loaded 9798again 9799once it has been loaded/unloaded one time. The current mechanism does not 9800unregister a table upon an unload. During a load, if the same table is 9801found, 9802this no longer returns an exception. BZ 722 9803 9804Fixed a problem where the wrong descriptor length was calculated for the 9805EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9806EndTag 9807are calculated as 12 bytes long, but the actual length in the internal 9808descriptor is 16 because of the round-up to 8 on the 64-bit build. 9809Reported 9810by Linn Crosetto. BZ 728 9811 9812Fixed a possible memory leak in the Unload operator. The DdbHandle 9813returned 9814by Load() did not have its reference count decremented during unload, 9815leading 9816to a memory leak. Lin Ming. BZ 727 9817 9818Fixed a possible memory leak when deleting thermal/processor objects. Any 9819associated notify handlers (and objects) were not being deleted. Fiodor 9820Suietov. BZ 506 9821 9822Fixed the ordering of the ASCII names in the global mutex table to match 9823the 9824actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9825only. 9826Vegard Nossum. BZ 726 9827 9828Enhanced the AcpiGetObjectInfo interface to return the number of required 9829arguments if the object is a control method. Added this call to the 9830debugger 9831so the proper number of default arguments are passed to a method. This 9832prevents a warning when executing methods from AcpiExec. 9833 9834Added a check for an invalid handle in AcpiGetObjectInfo. Return 9835AE_BAD_PARAMETER if input handle is invalid. BZ 474 9836 9837Fixed an extraneous warning from exconfig.c on the 64-bit build. 9838 9839Example Code and Data Size: These are the sizes for the OS-independent 9840acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9841debug version of the code includes the debug output trace mechanism and 9842has a 9843much larger code and data size. 9844 9845 Previous Release: 9846 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9847 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9848 Current Release: 9849 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9850 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9851 98522) iASL Compiler/Disassembler and Tools: 9853 9854iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9855resource descriptor names. 9856 9857iASL: Detect invalid ASCII characters in input (windows version). Removed 9858the 9859"-CF" flag from the flex compile, enables correct detection of non-ASCII 9860characters in the input. BZ 441 9861 9862iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9863the 9864"result of operation not used" warning when the DDB handle returned from 9865LoadTable is not used. The warning is not needed. BZ 590 9866 9867AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9868method 9869to 9870pass address of table to the AML. Added option to disable OpRegion 9871simulation 9872to allow creation of an OpRegion with a real address that was passed to 9873_CFG. 9874All of this allows testing of the Load and Unload operators from 9875AcpiExec. 9876 9877Debugger: update tables command for unloaded tables. Handle unloaded 9878tables 9879and use the standard table header output routine. 9880 9881---------------------------------------- 988209 June 2008. Summary of changes for version 20080609: 9883 98841) ACPI CA Core Subsystem: 9885 9886Implemented a workaround for reversed _PRT entries. A significant number 9887of 9888BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9889change dynamically detects and repairs this problem. Provides 9890compatibility 9891with MS ACPI. BZ 6859 9892 9893Simplified the internal ACPI hardware interfaces to eliminate the locking 9894flag parameter from Register Read/Write. Added a new external interface, 9895AcpiGetRegisterUnlocked. 9896 9897Fixed a problem where the invocation of a GPE control method could hang. 9898This 9899was a regression introduced in 20080514. The new method argument count 9900validation mechanism can enter an infinite loop when a GPE method is 9901dispatched. Problem fixed by removing the obsolete code that passed GPE 9902block 9903information to the notify handler via the control method parameter 9904pointer. 9905 9906Fixed a problem where the _SST execution status was incorrectly returned 9907to 9908the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9909in 991020080514. _SST is optional and a NOT_FOUND exception should never be 9911returned. BZ 716 9912 9913Fixed a problem where a deleted object could be accessed from within the 9914AML 9915parser. This was a regression introduced in version 20080123 as a fix for 9916the 9917Unload operator. Lin Ming. BZ 10669 9918 9919Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9920operands 9921and eliminated the use of a negative index in a loop. Operands are now 9922displayed in the correct order, not backwards. This also fixes a 9923regression 9924introduced in 20080514 on 64-bit systems where the elimination of 9925ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9926715 9927 9928Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9929exit 9930path did not delete a locally allocated structure. 9931 9932Updated definitions for the DMAR and SRAT tables to synchronize with the 9933current specifications. Includes disassembler support. 9934 9935Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9936loop termination value was used. Loop terminated on iteration early, 9937missing 9938one mutex. Linn Crosetto 9939 9940Example Code and Data Size: These are the sizes for the OS-independent 9941acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9942debug version of the code includes the debug output trace mechanism and 9943has a 9944much larger code and data size. 9945 9946 Previous Release: 9947 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9948 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9949 Current Release: 9950 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9951 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9952 99532) iASL Compiler/Disassembler and Tools: 9954 9955Disassembler: Implemented support for EisaId() within _CID objects. Now 9956disassemble integer _CID objects back to EisaId invocations, including 9957multiple integers within _CID packages. Includes single-step support for 9958debugger also. 9959 9960Disassembler: Added support for DMAR and SRAT table definition changes. 9961 9962---------------------------------------- 996314 May 2008. Summary of changes for version 20080514: 9964 99651) ACPI CA Core Subsystem: 9966 9967Fixed a problem where GPEs were enabled too early during the ACPICA 9968initialization. This could lead to "handler not installed" errors on some 9969machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9970This 9971ensures that all operation regions and devices throughout the namespace 9972have 9973been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9974 9975Implemented a change to the enter sleep code. Moved execution of the _GTS 9976method to just before setting sleep enable bit. The execution was moved 9977from 9978AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9979immediately before the SLP_EN bit is set, as per the ACPI specification. 9980Luming Yu, BZ 1653. 9981 9982Implemented a fix to disable unknown GPEs (2nd version). Now always 9983disable 9984the GPE, even if ACPICA thinks that that it is already disabled. It is 9985possible that the AML or some other code has enabled the GPE unbeknownst 9986to 9987the ACPICA code. 9988 9989Fixed a problem with the Field operator where zero-length fields would 9990return 9991an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9992ASL 9993field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9994 9995Implemented a fix for the Load operator, now load the table at the 9996namespace 9997root. This reverts a change introduced in version 20071019. The table is 9998now 9999loaded at the namespace root even though this goes against the ACPI 10000specification. This provides compatibility with other ACPI 10001implementations. 10002The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10003Ming. 10004 10005Fixed a problem where ACPICA would not Load() tables with unusual 10006signatures. 10007Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10008acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10009Therefore, signature validation is worthless. Apparently MS ACPI accepts 10010such 10011signatures, ACPICA must be compatible. BZ 10454. 10012 10013Fixed a possible negative array index in AcpiUtValidateException. Added 10014NULL 10015fields to the exception string arrays to eliminate a -1 subtraction on 10016the 10017SubStatus field. 10018 10019Updated the debug tracking macros to reduce overall code and data size. 10020Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10021instead of pointers to static strings. Jan Beulich and Bob Moore. 10022 10023Implemented argument count checking in control method invocation via 10024AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10025too 10026many. This applies only to extern programmatic control method execution, 10027not 10028method-to-method calls within the AML. Lin Ming. 10029 10030Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10031no 10032longer needed, especially with the removal of 16-bit support. It was 10033replaced 10034mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10035bit 10036on 1003732/64-bit platforms is required. 10038 10039Added the C const qualifier for appropriate string constants -- mostly 10040MODULE_NAME and printf format strings. Jan Beulich. 10041 10042Example Code and Data Size: These are the sizes for the OS-independent 10043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10044debug version of the code includes the debug output trace mechanism and 10045has a 10046much larger code and data size. 10047 10048 Previous Release: 10049 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10050 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10051 Current Release: 10052 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10053 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10054 100552) iASL Compiler/Disassembler and Tools: 10056 10057Implemented ACPI table revision ID validation in the disassembler. Zero 10058is 10059always invalid. For DSDTs, the ID controls the interpreter integer width. 100601 10061means 32-bit and this is unusual. 2 or greater is 64-bit. 10062 10063---------------------------------------- 1006421 March 2008. Summary of changes for version 20080321: 10065 100661) ACPI CA Core Subsystem: 10067 10068Implemented an additional change to the GPE support in order to suppress 10069spurious or stray GPEs. The AcpiEvDisableGpe function will now 10070permanently 10071disable incoming GPEs that are neither enabled nor disabled -- meaning 10072that 10073the GPE is unknown to the system. This should prevent future interrupt 10074floods 10075from that GPE. BZ 6217 (Zhang Rui) 10076 10077Fixed a problem where NULL package elements were not returned to the 10078AcpiEvaluateObject interface correctly. The element was simply ignored 10079instead of returning a NULL ACPI_OBJECT package element, potentially 10080causing 10081a buffer overflow and/or confusing the caller who expected a fixed number 10082of 10083elements. BZ 10132 (Lin Ming, Bob Moore) 10084 10085Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10086Dword, 10087Qword), Field, BankField, and IndexField operators when invoked from 10088inside 10089an executing control method. In this case, these operators created 10090namespace 10091nodes that were incorrectly left marked as permanent nodes instead of 10092temporary nodes. This could cause a problem if there is race condition 10093between an exiting control method and a running namespace walk. (Reported 10094by 10095Linn Crosetto) 10096 10097Fixed a problem where the CreateField and CreateXXXField operators would 10098incorrectly allow duplicate names (the name of the field) with no 10099exception 10100generated. 10101 10102Implemented several changes for Notify handling. Added support for new 10103Notify 10104values (ACPI 2.0+) and improved the Notify debug output. Notify on 10105PowerResource objects is no longer allowed, as per the ACPI 10106specification. 10107(Bob Moore, Zhang Rui) 10108 10109All Reference Objects returned via the AcpiEvaluateObject interface are 10110now 10111marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10112for 10113NULL objects - either NULL package elements or unresolved named 10114references. 10115 10116Fixed a problem where an extraneous debug message was produced for 10117package 10118objects (when debugging enabled). The message "Package List length larger 10119than NumElements count" is now produced in the correct case, and is now 10120an 10121error message rather than a debug message. Added a debug message for the 10122opposite case, where NumElements is larger than the Package List (the 10123package 10124will be padded out with NULL elements as per the ACPI spec.) 10125 10126Implemented several improvements for the output of the ASL "Debug" object 10127to 10128clarify and keep all data for a given object on one output line. 10129 10130Fixed two size calculation issues with the variable-length Start 10131Dependent 10132resource descriptor. 10133 10134Example Code and Data Size: These are the sizes for the OS-independent 10135acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10136debug version of the code includes the debug output trace mechanism and 10137has 10138a much larger code and data size. 10139 10140 Previous Release: 10141 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10142 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10143 Current Release: 10144 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10145 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10146 101472) iASL Compiler/Disassembler and Tools: 10148 10149Fixed a problem with the use of the Switch operator where execution of 10150the 10151containing method by multiple concurrent threads could cause an 10152AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10153actual Switch opcode, it must be simulated with local named temporary 10154variables and if/else pairs. The solution chosen was to mark any method 10155that 10156uses Switch as Serialized, thus preventing multiple thread entries. BZ 10157469. 10158 10159---------------------------------------- 1016013 February 2008. Summary of changes for version 20080213: 10161 101621) ACPI CA Core Subsystem: 10163 10164Implemented another MS compatibility design change for GPE/Notify 10165handling. 10166GPEs are now cleared/enabled asynchronously to allow all pending notifies 10167to 10168complete first. It is expected that the OSL will queue the enable request 10169behind all pending notify requests (may require changes to the local host 10170OSL 10171in AcpiOsExecute). Alexey Starikovskiy. 10172 10173Fixed a problem where buffer and package objects passed as arguments to a 10174control method via the external AcpiEvaluateObject interface could cause 10175an 10176AE_AML_INTERNAL exception depending on the order and type of operators 10177executed by the target control method. 10178 10179Fixed a problem where resource descriptor size optimization could cause a 10180problem when a _CRS resource template is passed to a _SRS method. The 10181_SRS 10182resource template must use the same descriptors (with the same size) as 10183returned from _CRS. This change affects the following resource 10184descriptors: 10185IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 101869487) 10187 10188Fixed a problem where a CopyObject to RegionField, BankField, and 10189IndexField 10190objects did not perform an implicit conversion as it should. These types 10191must 10192retain their initial type permanently as per the ACPI specification. 10193However, 10194a CopyObject to all other object types should not perform an implicit 10195conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10196 10197Fixed a problem with the AcpiGetDevices interface where the mechanism to 10198match device CIDs did not examine the entire list of available CIDs, but 10199instead aborted on the first non-matching CID. Andrew Patterson. 10200 10201Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10202was 10203inadvertently changed to return a 16-bit value instead of a 32-bit value, 10204truncating the upper dword of a 64-bit value. This macro is only used to 10205display debug output, so no incorrect calculations were made. Also, 10206reimplemented the macro so that a 64-bit shift is not performed by 10207inefficient compilers. 10208 10209Added missing va_end statements that should correspond with each va_start 10210statement. 10211 10212Example Code and Data Size: These are the sizes for the OS-independent 10213acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10214debug version of the code includes the debug output trace mechanism and 10215has 10216a much larger code and data size. 10217 10218 Previous Release: 10219 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10220 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10221 Current Release: 10222 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10223 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10224 102252) iASL Compiler/Disassembler and Tools: 10226 10227Implemented full disassembler support for the following new ACPI tables: 10228BERT, EINJ, and ERST. Implemented partial disassembler support for the 10229complicated HEST table. These tables support the Windows Hardware Error 10230Architecture (WHEA). 10231 10232---------------------------------------- 1023323 January 2008. Summary of changes for version 20080123: 10234 102351) ACPI CA Core Subsystem: 10236 10237Added the 2008 copyright to all module headers and signons. This affects 10238virtually every file in the ACPICA core subsystem, the iASL compiler, and 10239the tools/utilities. 10240 10241Fixed a problem with the SizeOf operator when used with Package and 10242Buffer 10243objects. These objects have deferred execution for some arguments, and 10244the 10245execution is now completed before the SizeOf is executed. This problem 10246caused 10247unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10248BZ 102499558 10250 10251Implemented an enhancement to the interpreter "slack mode". In the 10252absence 10253of 10254an explicit return or an implicitly returned object from the last 10255executed 10256opcode, a control method will now implicitly return an integer of value 0 10257for 10258Microsoft compatibility. (Lin Ming) BZ 392 10259 10260Fixed a problem with the Load operator where an exception was not 10261returned 10262in 10263the case where the table is already loaded. (Lin Ming) BZ 463 10264 10265Implemented support for the use of DDBHandles as an Indexed Reference, as 10266per 10267the ACPI spec. (Lin Ming) BZ 486 10268 10269Implemented support for UserTerm (Method invocation) for the Unload 10270operator 10271as per the ACPI spec. (Lin Ming) BZ 580 10272 10273Fixed a problem with the LoadTable operator where the OemId and 10274OemTableId 10275input strings could cause unexpected failures if they were shorter than 10276the 10277maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10278 10279Implemented support for UserTerm (Method invocation) for the Unload 10280operator 10281as per the ACPI spec. (Lin Ming) BZ 580 10282 10283Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10284HEST, 10285IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10286 10287Example Code and Data Size: These are the sizes for the OS-independent 10288acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10289debug version of the code includes the debug output trace mechanism and 10290has 10291a much larger code and data size. 10292 10293 Previous Release: 10294 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10295 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10296 Current Release: 10297 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10298 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10299 103002) iASL Compiler/Disassembler and Tools: 10301 10302Implemented support in the disassembler for checksum validation on 10303incoming 10304binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10305table 10306header dump at the start of the disassembly. 10307 10308Implemented additional debugging information in the namespace listing 10309file 10310created during compilation. In addition to the namespace hierarchy, the 10311full 10312pathname to each namespace object is displayed. 10313 10314Fixed a problem with the disassembler where invalid ACPI tables could 10315cause 10316faults or infinite loops. 10317 10318Fixed an unexpected parse error when using the optional "parameter types" 10319list in a control method declaration. (Lin Ming) BZ 397 10320 10321Fixed a problem where two External declarations with the same name did 10322not 10323cause an error (Lin Ming) BZ 509 10324 10325Implemented support for full TermArgs (adding Argx, Localx and method 10326invocation) for the ParameterData parameter to the LoadTable operator. 10327(Lin 10328Ming) BZ 583,587 10329 10330---------------------------------------- 1033119 December 2007. Summary of changes for version 20071219: 10332 103331) ACPI CA Core Subsystem: 10334 10335Implemented full support for deferred execution for the TermArg string 10336arguments for DataTableRegion. This enables forward references and full 10337operand resolution for the three string arguments. Similar to 10338OperationRegion 10339deferred argument execution.) Lin Ming. BZ 430 10340 10341Implemented full argument resolution support for the BankValue argument 10342to 10343BankField. Previously, only constants were supported, now any TermArg may 10344be 10345used. Lin Ming BZ 387, 393 10346 10347Fixed a problem with AcpiGetDevices where the search of a branch of the 10348device tree could be terminated prematurely. In accordance with the ACPI 10349specification, the search down the current branch is terminated if a 10350device 10351is both not present and not functional (instead of just not present.) 10352Yakui 10353Zhao. 10354 10355Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10356if 10357the underlying AML code changed the GPE enable registers. Now, any 10358unknown 10359incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10360disabled 10361instead of simply ignored. Rui Zhang. 10362 10363Fixed a problem with Index Fields where the Index register was 10364incorrectly 10365limited to a maximum of 32 bits. Now any size may be used. 10366 10367Fixed a couple memory leaks associated with "implicit return" objects 10368when 10369the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10370 10371Example Code and Data Size: These are the sizes for the OS-independent 10372acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10373debug version of the code includes the debug output trace mechanism and 10374has 10375a much larger code and data size. 10376 10377 Previous Release: 10378 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10379 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10380 Current Release: 10381 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10382 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10383 10384---------------------------------------- 1038514 November 2007. Summary of changes for version 20071114: 10386 103871) ACPI CA Core Subsystem: 10388 10389Implemented event counters for each of the Fixed Events, the ACPI SCI 10390(interrupt) itself, and control methods executed. Named 10391AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10392These 10393should be useful for debugging and statistics. 10394 10395Implemented a new external interface, AcpiGetStatistics, to retrieve the 10396contents of the various event counters. Returns the current values for 10397AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10398AcpiMethodCount. The interface can be expanded in the future if new 10399counters 10400are added. Device drivers should use this interface rather than access 10401the 10402counters directly. 10403 10404Fixed a problem with the FromBCD and ToBCD operators. With some 10405compilers, 10406the ShortDivide function worked incorrectly, causing problems with the 10407BCD 10408functions with large input values. A truncation from 64-bit to 32-bit 10409inadvertently occurred. Internal BZ 435. Lin Ming 10410 10411Fixed a problem with Index references passed as method arguments. 10412References 10413passed as arguments to control methods were dereferenced immediately 10414(before 10415control was passed to the called method). The references are now 10416correctly 10417passed directly to the called method. BZ 5389. Lin Ming 10418 10419Fixed a problem with CopyObject used in conjunction with the Index 10420operator. 10421The reference was incorrectly dereferenced before the copy. The reference 10422is 10423now correctly copied. BZ 5391. Lin Ming 10424 10425Fixed a problem with Control Method references within Package objects. 10426These 10427references are now correctly generated. This completes the package 10428construction overhaul that began in version 20071019. 10429 10430Example Code and Data Size: These are the sizes for the OS-independent 10431acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10432debug version of the code includes the debug output trace mechanism and 10433has 10434a much larger code and data size. 10435 10436 Previous Release: 10437 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10438 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10439 Current Release: 10440 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10441 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10442 10443 104442) iASL Compiler/Disassembler and Tools: 10445 10446The AcpiExec utility now installs handlers for all of the predefined 10447Operation Region types. New types supported are: PCI_Config, CMOS, and 10448PCIBARTarget. 10449 10450Fixed a problem with the 64-bit version of AcpiExec where the extended 10451(64- 10452bit) address fields for the DSDT and FACS within the FADT were not being 10453used, causing truncation of the upper 32-bits of these addresses. Lin 10454Ming 10455and Bob Moore 10456 10457---------------------------------------- 1045819 October 2007. Summary of changes for version 20071019: 10459 104601) ACPI CA Core Subsystem: 10461 10462Fixed a problem with the Alias operator when the target of the alias is a 10463named ASL operator that opens a new scope -- Scope, Device, 10464PowerResource, 10465Processor, and ThermalZone. In these cases, any children of the original 10466operator could not be accessed via the alias, potentially causing 10467unexpected 10468AE_NOT_FOUND exceptions. (BZ 9067) 10469 10470Fixed a problem with the Package operator where all named references were 10471created as object references and left otherwise unresolved. According to 10472the 10473ACPI specification, a Package can only contain Data Objects or references 10474to 10475control methods. The implication is that named references to Data Objects 10476(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10477immediately upon package creation. This is the approach taken with this 10478change. References to all other named objects (Methods, Devices, Scopes, 10479etc.) are all now properly created as reference objects. (BZ 5328) 10480 10481Reverted a change to Notify handling that was introduced in version 1048220070508. This version changed the Notify handling from asynchronous to 10483fully synchronous (Device driver Notify handling with respect to the 10484Notify 10485ASL operator). It was found that this change caused more problems than it 10486solved and was removed by most users. 10487 10488Fixed a problem with the Increment and Decrement operators where the type 10489of 10490the target object could be unexpectedly and incorrectly changed. (BZ 353) 10491Lin Ming. 10492 10493Fixed a problem with the Load and LoadTable operators where the table 10494location within the namespace was ignored. Instead, the table was always 10495loaded into the root or current scope. Lin Ming. 10496 10497Fixed a problem with the Load operator when loading a table from a buffer 10498object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10499 10500Fixed a problem with the Debug object where a store of a DdbHandle 10501reference 10502object to the Debug object could cause a fault. 10503 10504Added a table checksum verification for the Load operator, in the case 10505where 10506the load is from a buffer. (BZ 578). 10507 10508Implemented additional parameter validation for the LoadTable operator. 10509The 10510length of the input strings SignatureString, OemIdString, and OemTableId 10511are 10512now checked for maximum lengths. (BZ 582) Lin Ming. 10513 10514Example Code and Data Size: These are the sizes for the OS-independent 10515acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10516debug version of the code includes the debug output trace mechanism and 10517has 10518a much larger code and data size. 10519 10520 Previous Release: 10521 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10522 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10523 Current Release: 10524 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10525 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10526 10527 105282) iASL Compiler/Disassembler: 10529 10530Fixed a problem where if a single file was specified and the file did not 10531exist, no error message was emitted. (Introduced with wildcard support in 10532version 20070917.) 10533 10534---------------------------------------- 1053519 September 2007. Summary of changes for version 20070919: 10536 105371) ACPI CA Core Subsystem: 10538 10539Designed and implemented new external interfaces to install and remove 10540handlers for ACPI table-related events. Current events that are defined 10541are 10542LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10543they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10544AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10545 10546Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10547(acpi_serialized option on Linux) could cause some systems to hang during 10548initialization. (Bob Moore) BZ 8171 10549 10550Fixed a problem where objects of certain types (Device, ThermalZone, 10551Processor, PowerResource) can be not found if they are declared and 10552referenced from within the same control method (Lin Ming) BZ 341 10553 10554Example Code and Data Size: These are the sizes for the OS-independent 10555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10556debug version of the code includes the debug output trace mechanism and 10557has 10558a much larger code and data size. 10559 10560 Previous Release: 10561 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10562 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10563 Current Release: 10564 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10565 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10566 10567 105682) iASL Compiler/Disassembler: 10569 10570Implemented support to allow multiple files to be compiled/disassembled 10571in 10572a 10573single invocation. This includes command line wildcard support for both 10574the 10575Windows and Unix versions of the compiler. This feature simplifies the 10576disassembly and compilation of multiple ACPI tables in a single 10577directory. 10578 10579---------------------------------------- 1058008 May 2007. Summary of changes for version 20070508: 10581 105821) ACPI CA Core Subsystem: 10583 10584Implemented a Microsoft compatibility design change for the handling of 10585the 10586Notify AML operator. Previously, notify handlers were dispatched and 10587executed completely asynchronously in a deferred thread. The new design 10588still executes the notify handlers in a different thread, but the 10589original 10590thread that executed the Notify() now waits at a synchronization point 10591for 10592the notify handler to complete. Some machines depend on a synchronous 10593Notify 10594operator in order to operate correctly. 10595 10596Implemented support to allow Package objects to be passed as method 10597arguments to the external AcpiEvaluateObject interface. Previously, this 10598would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10599implemented since there were no reserved control methods that required it 10600until recently. 10601 10602Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10603that 10604contained invalid non-zero values in reserved fields could cause later 10605failures because these fields have meaning in later revisions of the 10606FADT. 10607For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10608fields 10609are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10610 10611Fixed a problem where the Global Lock handle was not properly updated if 10612a 10613thread that acquired the Global Lock via executing AML code then 10614attempted 10615to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10616Joe 10617Liu. 10618 10619Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10620could be corrupted if the interrupt being removed was at the head of the 10621list. Reported by Linn Crosetto. 10622 10623Example Code and Data Size: These are the sizes for the OS-independent 10624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10625debug version of the code includes the debug output trace mechanism and 10626has 10627a much larger code and data size. 10628 10629 Previous Release: 10630 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10631 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10632 Current Release: 10633 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10634 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10635 10636---------------------------------------- 1063720 March 2007. Summary of changes for version 20070320: 10638 106391) ACPI CA Core Subsystem: 10640 10641Implemented a change to the order of interpretation and evaluation of AML 10642operand objects within the AML interpreter. The interpreter now evaluates 10643operands in the order that they appear in the AML stream (and the 10644corresponding ASL code), instead of in the reverse order (after the 10645entire 10646operand list has been parsed). The previous behavior caused several 10647subtle 10648incompatibilities with the Microsoft AML interpreter as well as being 10649somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10650 10651Implemented a change to the ACPI Global Lock support. All interfaces to 10652the 10653global lock now allow the same thread to acquire the lock multiple times. 10654This affects the AcpiAcquireGlobalLock external interface to the global 10655lock 10656as well as the internal use of the global lock to support AML fields -- a 10657control method that is holding the global lock can now simultaneously 10658access 10659AML fields that require global lock protection. Previously, in both 10660cases, 10661this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10662to 10663AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10664Controller. There is no change to the behavior of the AML Acquire 10665operator, 10666as this can already be used to acquire a mutex multiple times by the same 10667thread. BZ 8066. With assistance from Alexey Starikovskiy. 10668 10669Fixed a problem where invalid objects could be referenced in the AML 10670Interpreter after error conditions. During operand evaluation, ensure 10671that 10672the internal "Return Object" field is cleared on error and only valid 10673pointers are stored there. Caused occasional access to deleted objects 10674that 10675resulted in "large reference count" warning messages. Valery Podrezov. 10676 10677Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10678on 10679deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10680Podrezov. 10681 10682Fixed an internal problem with the handling of result objects on the 10683interpreter result stack. BZ 7872. Valery Podrezov. 10684 10685Removed obsolete code that handled the case where AML_NAME_OP is the 10686target 10687of a reference (Reference.Opcode). This code was no longer necessary. BZ 106887874. Valery Podrezov. 10689 10690Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10691was 10692a 10693remnant from the previously discontinued 16-bit support. 10694 10695Example Code and Data Size: These are the sizes for the OS-independent 10696acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10697debug version of the code includes the debug output trace mechanism and 10698has 10699a much larger code and data size. 10700 10701 Previous Release: 10702 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10703 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10704 Current Release: 10705 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10706 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10707 10708---------------------------------------- 1070926 January 2007. Summary of changes for version 20070126: 10710 107111) ACPI CA Core Subsystem: 10712 10713Added the 2007 copyright to all module headers and signons. This affects 10714virtually every file in the ACPICA core subsystem, the iASL compiler, and 10715the utilities. 10716 10717Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10718during a table load. A bad pointer was passed in the case where the DSDT 10719is 10720overridden, causing a fault in this case. 10721 10722Example Code and Data Size: These are the sizes for the OS-independent 10723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10724debug version of the code includes the debug output trace mechanism and 10725has 10726a much larger code and data size. 10727 10728 Previous Release: 10729 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10730 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10731 Current Release: 10732 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10733 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10734 10735---------------------------------------- 1073615 December 2006. Summary of changes for version 20061215: 10737 107381) ACPI CA Core Subsystem: 10739 10740Support for 16-bit ACPICA has been completely removed since it is no 10741longer 10742necessary and it clutters the code. All 16-bit macros, types, and 10743conditional compiles have been removed, cleaning up and simplifying the 10744code 10745across the entire subsystem. DOS support is no longer needed since the 10746bootable Linux firmware kit is now available. 10747 10748The handler for the Global Lock is now removed during AcpiTerminate to 10749enable a clean subsystem restart, via the implementation of the 10750AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10751HP) 10752 10753Implemented enhancements to the multithreading support within the 10754debugger 10755to enable improved multithreading debugging and evaluation of the 10756subsystem. 10757(Valery Podrezov) 10758 10759Debugger: Enhanced the Statistics/Memory command to emit the total 10760(maximum) 10761memory used during the execution, as well as the maximum memory consumed 10762by 10763each of the various object types. (Valery Podrezov) 10764 10765Example Code and Data Size: These are the sizes for the OS-independent 10766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10767debug version of the code includes the debug output trace mechanism and 10768has 10769a much larger code and data size. 10770 10771 Previous Release: 10772 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10773 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10774 Current Release: 10775 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10776 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10777 10778 107792) iASL Compiler/Disassembler and Tools: 10780 10781AcpiExec: Implemented a new option (-m) to display full memory use 10782statistics upon subsystem/program termination. (Valery Podrezov) 10783 10784---------------------------------------- 1078509 November 2006. Summary of changes for version 20061109: 10786 107871) ACPI CA Core Subsystem: 10788 10789Optimized the Load ASL operator in the case where the source operand is 10790an 10791operation region. Simply map the operation region memory, instead of 10792performing a bytewise read. (Region must be of type SystemMemory, see 10793below.) 10794 10795Fixed the Load ASL operator for the case where the source operand is a 10796region field. A buffer object is also allowed as the source operand. BZ 10797480 10798 10799Fixed a problem where the Load ASL operator allowed the source operand to 10800be 10801an operation region of any type. It is now restricted to regions of type 10802SystemMemory, as per the ACPI specification. BZ 481 10803 10804Additional cleanup and optimizations for the new Table Manager code. 10805 10806AcpiEnable will now fail if all of the required ACPI tables are not 10807loaded 10808(FADT, FACS, DSDT). BZ 477 10809 10810Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10811this 10812header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10813manually optimized to be aligned and will not work if it is byte-packed. 10814 10815Example Code and Data Size: These are the sizes for the OS-independent 10816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10817debug version of the code includes the debug output trace mechanism and 10818has 10819a much larger code and data size. 10820 10821 Previous Release: 10822 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10823 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10824 Current Release: 10825 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10826 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10827 10828 108292) iASL Compiler/Disassembler and Tools: 10830 10831Fixed a problem where the presence of the _OSI predefined control method 10832within complex expressions could cause an internal compiler error. 10833 10834AcpiExec: Implemented full region support for multiple address spaces. 10835SpaceId is now part of the REGION object. BZ 429 10836 10837---------------------------------------- 1083811 October 2006. Summary of changes for version 20061011: 10839 108401) ACPI CA Core Subsystem: 10841 10842Completed an AML interpreter performance enhancement for control method 10843execution. Previously a 2-pass parse/execution, control methods are now 10844completely parsed and executed in a single pass. This improves overall 10845interpreter performance by ~25%, reduces code size, and reduces CPU stack 10846use. (Valery Podrezov + interpreter changes in version 20051202 that 10847eliminated namespace loading during the pass one parse.) 10848 10849Implemented _CID support for PCI Root Bridge detection. If the _HID does 10850not 10851match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10852now 10853obtained and also checked for an ID match. 10854 10855Implemented additional support for the PCI _ADR execution: upsearch until 10856a 10857device scope is found before executing _ADR. This allows PCI_Config 10858operation regions to be declared locally within control methods 10859underneath 10860PCI device objects. 10861 10862Fixed a problem with a possible race condition between threads executing 10863AcpiWalkNamespace and the AML interpreter. This condition was removed by 10864modifying AcpiWalkNamespace to (by default) ignore all temporary 10865namespace 10866entries created during any concurrent control method execution. An 10867additional namespace race condition is known to exist between 10868AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10869investigation. 10870 10871Restructured the AML ParseLoop function, breaking it into several 10872subfunctions in order to reduce CPU stack use and improve 10873maintainability. 10874(Mikhail Kouzmich) 10875 10876AcpiGetHandle: Fix for parameter validation to detect invalid 10877combinations 10878of prefix handle and pathname. BZ 478 10879 10880Example Code and Data Size: These are the sizes for the OS-independent 10881acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10882debug version of the code includes the debug output trace mechanism and 10883has 10884a much larger code and data size. 10885 10886 Previous Release: 10887 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10888 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10889 Current Release: 10890 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10891 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10892 108932) iASL Compiler/Disassembler and Tools: 10894 10895Ported the -g option (get local ACPI tables) to the new ACPICA Table 10896Manager 10897to restore original behavior. 10898 10899---------------------------------------- 1090027 September 2006. Summary of changes for version 20060927: 10901 109021) ACPI CA Core Subsystem: 10903 10904Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10905These functions now use a spinlock for mutual exclusion and the interrupt 10906level indication flag is not needed. 10907 10908Fixed a problem with the Global Lock where the lock could appear to be 10909obtained before it is actually obtained. The global lock semaphore was 10910inadvertently created with one unit instead of zero units. (BZ 464) 10911Fiodor 10912Suietov. 10913 10914Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10915during 10916a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10917 10918Example Code and Data Size: These are the sizes for the OS-independent 10919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10920debug version of the code includes the debug output trace mechanism and 10921has 10922a much larger code and data size. 10923 10924 Previous Release: 10925 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10926 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10927 Current Release: 10928 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10929 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10930 10931 109322) iASL Compiler/Disassembler and Tools: 10933 10934Fixed a compilation problem with the pre-defined Resource Descriptor 10935field 10936names where an "object does not exist" error could be incorrectly 10937generated 10938if the parent ResourceTemplate pathname places the template within a 10939different namespace scope than the current scope. (BZ 7212) 10940 10941Fixed a problem where the compiler could hang after syntax errors 10942detected 10943in an ElseIf construct. (BZ 453) 10944 10945Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10946operator. An incorrect output filename was produced when this parameter 10947was 10948a null string (""). Now, the original input filename is used as the AML 10949output filename, with an ".aml" extension. 10950 10951Implemented a generic batch command mode for the AcpiExec utility 10952(execute 10953any AML debugger command) (Valery Podrezov). 10954 10955---------------------------------------- 1095612 September 2006. Summary of changes for version 20060912: 10957 109581) ACPI CA Core Subsystem: 10959 10960Enhanced the implementation of the "serialized mode" of the interpreter 10961(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10962specified, instead of creating a serialization semaphore per control 10963method, 10964the interpreter lock is simply no longer released before a blocking 10965operation during control method execution. This effectively makes the AML 10966Interpreter single-threaded. The overhead of a semaphore per-method is 10967eliminated. 10968 10969Fixed a regression where an error was no longer emitted if a control 10970method 10971attempts to create 2 objects of the same name. This once again returns 10972AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10973that 10974will dynamically serialize the control method to possible prevent future 10975errors. (BZ 440) 10976 10977Integrated a fix for a problem with PCI Express HID detection in the PCI 10978Config Space setup procedure. (BZ 7145) 10979 10980Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10981AcpiHwInitialize function - the FADT registers are now validated when the 10982table is loaded. 10983 10984Added two new warnings during FADT verification - 1) if the FADT is 10985larger 10986than the largest known FADT version, and 2) if there is a mismatch 10987between 10988a 1098932-bit block address and the 64-bit X counterpart (when both are non- 10990zero.) 10991 10992Example Code and Data Size: These are the sizes for the OS-independent 10993acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10994debug version of the code includes the debug output trace mechanism and 10995has 10996a much larger code and data size. 10997 10998 Previous Release: 10999 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11000 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11001 Current Release: 11002 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11003 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11004 11005 110062) iASL Compiler/Disassembler and Tools: 11007 11008Fixed a problem with the implementation of the Switch() operator where 11009the 11010temporary variable was declared too close to the actual Switch, instead 11011of 11012at method level. This could cause a problem if the Switch() operator is 11013within a while loop, causing an error on the second iteration. (BZ 460) 11014 11015Disassembler - fix for error emitted for unknown type for target of scope 11016operator. Now, ignore it and continue. 11017 11018Disassembly of an FADT now verifies the input FADT and reports any errors 11019found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11020 11021Disassembly of raw data buffers with byte initialization data now 11022prefixes 11023each output line with the current buffer offset. 11024 11025Disassembly of ASF! table now includes all variable-length data fields at 11026the end of some of the subtables. 11027 11028The disassembler now emits a comment if a buffer appears to be a 11029ResourceTemplate, but cannot be disassembled as such because the EndTag 11030does 11031not appear at the very end of the buffer. 11032 11033AcpiExec - Added the "-t" command line option to enable the serialized 11034mode 11035of the AML interpreter. 11036 11037---------------------------------------- 1103831 August 2006. Summary of changes for version 20060831: 11039 110401) ACPI CA Core Subsystem: 11041 11042Miscellaneous fixes for the Table Manager: 11043- Correctly initialize internal common FADT for all 64-bit "X" fields 11044- Fixed a couple table mapping issues during table load 11045- Fixed a couple alignment issues for IA64 11046- Initialize input array to zero in AcpiInitializeTables 11047- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11048AcpiGetTableByIndex 11049 11050Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11051now 11052immediately disabled to prevent the waking GPE from firing again and to 11053prevent other wake GPEs from interrupting the wake process. 11054 11055Added the AcpiGpeCount global that tracks the number of processed GPEs, 11056to 11057be used for debugging systems with a large number of ACPI interrupts. 11058 11059Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11060both the ACPICA headers and the disassembler. 11061 11062Example Code and Data Size: These are the sizes for the OS-independent 11063acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11064debug version of the code includes the debug output trace mechanism and 11065has 11066a much larger code and data size. 11067 11068 Previous Release: 11069 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11070 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11071 Current Release: 11072 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11073 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11074 11075 110762) iASL Compiler/Disassembler and Tools: 11077 11078Disassembler support for the DMAR ACPI table. 11079 11080---------------------------------------- 1108123 August 2006. Summary of changes for version 20060823: 11082 110831) ACPI CA Core Subsystem: 11084 11085The Table Manager component has been completely redesigned and 11086reimplemented. The new design is much simpler, and reduces the overall 11087code 11088and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11089is 11090now possible to obtain the ACPI tables very early during kernel 11091initialization, even before dynamic memory management is initialized. 11092(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11093 11094Obsolete ACPICA interfaces: 11095 11096- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11097init 11098time). 11099- AcpiLoadTable: Not needed. 11100- AcpiUnloadTable: Not needed. 11101 11102New ACPICA interfaces: 11103 11104- AcpiInitializeTables: Must be called before the table manager can be 11105used. 11106- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11107allocated memory after it becomes available. 11108- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11109tables 11110in the RSDT/XSDT. 11111 11112Other ACPICA changes: 11113 11114- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11115Use 11116AcpiOsUnmapMemory to free this mapping. 11117- AcpiGetTable returns the actual mapped table. The mapping is managed 11118internally and must not be deleted by the caller. Use of this interface 11119causes no additional dynamic memory allocation. 11120- AcpiFindRootPointer: Support for physical addressing has been 11121eliminated, 11122it appeared to be unused. 11123- The interface to AcpiOsMapMemory has changed to be consistent with the 11124other allocation interfaces. 11125- The interface to AcpiOsGetRootPointer has changed to eliminate 11126unnecessary 11127parameters. 11128- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1112964- 11130bit platforms. Was previously 64 bits on all platforms. 11131- The interface to the ACPI Global Lock acquire/release macros have 11132changed 11133slightly since ACPICA no longer keeps a local copy of the FACS with a 11134constructed pointer to the actual global lock. 11135 11136Porting to the new table manager: 11137 11138- AcpiInitializeTables: Must be called once, and can be called anytime 11139during the OS initialization process. It allows the host to specify an 11140area 11141of memory to be used to store the internal version of the RSDT/XSDT (root 11142table). This allows the host to access ACPI tables before memory 11143management 11144is initialized and running. 11145- AcpiReallocateRootTable: Can be called after memory management is 11146running 11147to copy the root table to a dynamically allocated array, freeing up the 11148scratch memory specified in the call to AcpiInitializeTables. 11149- AcpiSubsystemInitialize: This existing interface is independent of the 11150Table Manager, and does not have to be called before the Table Manager 11151can 11152be used, it only must be called before the rest of ACPICA can be used. 11153- ACPI Tables: Some changes have been made to the names and structure of 11154the 11155actbl.h and actbl1.h header files and may require changes to existing 11156code. 11157For example, bitfields have been completely removed because of their lack 11158of 11159portability across C compilers. 11160- Update interfaces to the Global Lock acquire/release macros if local 11161versions are used. (see acwin.h) 11162 11163Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11164 11165New files: tbfind.c 11166 11167Example Code and Data Size: These are the sizes for the OS-independent 11168acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11169debug version of the code includes the debug output trace mechanism and 11170has 11171a much larger code and data size. 11172 11173 Previous Release: 11174 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11175 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11176 Current Release: 11177 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11178 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11179 11180 111812) iASL Compiler/Disassembler and Tools: 11182 11183No changes for this release. 11184 11185---------------------------------------- 1118621 July 2006. Summary of changes for version 20060721: 11187 111881) ACPI CA Core Subsystem: 11189 11190The full source code for the ASL test suite used to validate the iASL 11191compiler and the ACPICA core subsystem is being released with the ACPICA 11192source for the first time. The source is contained in a separate package 11193and 11194consists of over 1100 files that exercise all ASL/AML operators. The 11195package 11196should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11197Fiodor 11198Suietov) 11199 11200Completed a new design and implementation for support of the ACPI Global 11201Lock. On the OS side, the global lock is now treated as a standard AML 11202mutex. Previously, multiple OS threads could "acquire" the global lock 11203simultaneously. However, this could cause the BIOS to be starved out of 11204the 11205lock - especially in cases such as the Embedded Controller driver where 11206there is a tight coupling between the OS and the BIOS. 11207 11208Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11209The Global Lock interrupt handler no longer queues the execution of a 11210separate thread to signal the global lock semaphore. Instead, the 11211semaphore 11212is signaled directly from the interrupt handler. 11213 11214Implemented support within the AML interpreter for package objects that 11215contain a larger AML length (package list length) than the package 11216element 11217count. In this case, the length of the package is truncated to match the 11218package element count. Some BIOS code apparently modifies the package 11219length 11220on the fly, and this change supports this behavior. Provides 11221compatibility 11222with the MS AML interpreter. (With assistance from Fiodor Suietov) 11223 11224Implemented a temporary fix for the BankValue parameter of a Bank Field 11225to 11226support all constant values, now including the Zero and One opcodes. 11227Evaluation of this parameter must eventually be converted to a full 11228TermArg 11229evaluation. A not-implemented error is now returned (temporarily) for 11230non- 11231constant values for this parameter. 11232 11233Fixed problem reports (Fiodor Suietov) integrated: 11234- Fix for premature object deletion after CopyObject on Operation Region 11235(BZ 11236350) 11237 11238Example Code and Data Size: These are the sizes for the OS-independent 11239acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11240debug version of the code includes the debug output trace mechanism and 11241has 11242a much larger code and data size. 11243 11244 Previous Release: 11245 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11246 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11247 Current Release: 11248 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11249 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11250 11251 112522) iASL Compiler/Disassembler and Tools: 11253 11254No changes for this release. 11255 11256---------------------------------------- 1125707 July 2006. Summary of changes for version 20060707: 11258 112591) ACPI CA Core Subsystem: 11260 11261Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11262that do not allow the initialization of address pointers within packed 11263structures - even though the hardware itself may support misaligned 11264transfers. Some of the debug data structures are packed by default to 11265minimize size. 11266 11267Added an error message for the case where AcpiOsGetThreadId() returns 11268zero. 11269A non-zero value is required by the core ACPICA code to ensure the proper 11270operation of AML mutexes and recursive control methods. 11271 11272The DSDT is now the only ACPI table that determines whether the AML 11273interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11274but 11275the hooks for per-table 32/64 switching have been removed from the code. 11276A 11277clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11278 11279Fixed a possible leak of an OwnerID in the error path of 11280AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11281deletion to a single place in AcpiTbUninstallTable to correct possible 11282leaks 11283when using the AcpiTbDeleteTablesByType interface (with assistance from 11284Lance Ortiz.) 11285 11286Fixed a problem with Serialized control methods where the semaphore 11287associated with the method could be over-signaled after multiple method 11288invocations. 11289 11290Fixed two issues with the locking of the internal namespace data 11291structure. 11292Both the Unload() operator and AcpiUnloadTable interface now lock the 11293namespace during the namespace deletion associated with the table unload 11294(with assistance from Linn Crosetto.) 11295 11296Fixed problem reports (Valery Podrezov) integrated: 11297- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11298 11299Fixed problem reports (Fiodor Suietov) integrated: 11300- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11301- On Address Space handler deletion, needless deactivation call (BZ 374) 11302- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11303375) 11304- Possible memory leak, Notify sub-objects of Processor, Power, 11305ThermalZone 11306(BZ 376) 11307- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11308- Minimum Length of RSDT should be validated (BZ 379) 11309- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11310Handler (BZ (380) 11311- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11312loaded 11313(BZ 381) 11314 11315Example Code and Data Size: These are the sizes for the OS-independent 11316acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11317debug version of the code includes the debug output trace mechanism and 11318has 11319a much larger code and data size. 11320 11321 Previous Release: 11322 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11323 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11324 Current Release: 11325 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11326 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11327 11328 113292) iASL Compiler/Disassembler and Tools: 11330 11331Fixed problem reports: 11332Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11333436) 11334 11335---------------------------------------- 1133623 June 2006. Summary of changes for version 20060623: 11337 113381) ACPI CA Core Subsystem: 11339 11340Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11341allows the type to be customized to the host OS for improved efficiency 11342(since a spinlock is usually a very small object.) 11343 11344Implemented support for "ignored" bits in the ACPI registers. According 11345to 11346the ACPI specification, these bits should be preserved when writing the 11347registers via a read/modify/write cycle. There are 3 bits preserved in 11348this 11349manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11350 11351Implemented the initial deployment of new OSL mutex interfaces. Since 11352some 11353host operating systems have separate mutex and semaphore objects, this 11354feature was requested. The base code now uses mutexes (and the new mutex 11355interfaces) wherever a binary semaphore was used previously. However, for 11356the current release, the mutex interfaces are defined as macros to map 11357them 11358to the existing semaphore interfaces. Therefore, no OSL changes are 11359required 11360at this time. (See acpiosxf.h) 11361 11362Fixed several problems with the support for the control method SyncLevel 11363parameter. The SyncLevel now works according to the ACPI specification 11364and 11365in concert with the Mutex SyncLevel parameter, since the current 11366SyncLevel 11367is a property of the executing thread. Mutual exclusion for control 11368methods 11369is now implemented with a mutex instead of a semaphore. 11370 11371Fixed three instances of the use of the C shift operator in the bitfield 11372support code (exfldio.c) to avoid the use of a shift value larger than 11373the 11374target data width. The behavior of C compilers is undefined in this case 11375and 11376can cause unpredictable results, and therefore the case must be detected 11377and 11378avoided. (Fiodor Suietov) 11379 11380Added an info message whenever an SSDT or OEM table is loaded dynamically 11381via the Load() or LoadTable() ASL operators. This should improve 11382debugging 11383capability since it will show exactly what tables have been loaded 11384(beyond 11385the tables present in the RSDT/XSDT.) 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.0K Code, 17.6K Data, 97.6K Total 11395 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11396 Current Release: 11397 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11398 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11399 11400 114012) iASL Compiler/Disassembler and Tools: 11402 11403No changes for this release. 11404 11405---------------------------------------- 1140608 June 2006. Summary of changes for version 20060608: 11407 114081) ACPI CA Core Subsystem: 11409 11410Converted the locking mutex used for the ACPI hardware to a spinlock. 11411This 11412change should eliminate all problems caused by attempting to acquire a 11413semaphore at interrupt level, and it means that all ACPICA external 11414interfaces that directly access the ACPI hardware can be safely called 11415from 11416interrupt level. OSL code that implements the semaphore interfaces should 11417be 11418able to eliminate any workarounds for being called at interrupt level. 11419 11420Fixed a regression introduced in 20060526 where the ACPI device 11421initialization could be prematurely aborted with an AE_NOT_FOUND if a 11422device 11423did not have an optional _INI method. 11424 11425Fixed an IndexField issue where a write to the Data Register should be 11426limited in size to the AccessSize (width) of the IndexField itself. (BZ 11427433, 11428Fiodor Suietov) 11429 11430Fixed problem reports (Valery Podrezov) integrated: 11431- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11432 11433Fixed problem reports (Fiodor Suietov) integrated: 11434- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11435 11436Removed four global mutexes that were obsolete and were no longer being 11437used. 11438 11439Example Code and Data Size: These are the sizes for the OS-independent 11440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11441debug version of the code includes the debug output trace mechanism and 11442has 11443a much larger code and data size. 11444 11445 Previous Release: 11446 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11447 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11448 Current Release: 11449 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11450 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11451 11452 114532) iASL Compiler/Disassembler and Tools: 11454 11455Fixed a fault when using -g option (get tables from registry) on Windows 11456machines. 11457 11458Fixed problem reports integrated: 11459- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11460- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11461Suietov) 11462- Global table revision override (-r) is ignored (BZ 413) 11463 11464---------------------------------------- 1146526 May 2006. Summary of changes for version 20060526: 11466 114671) ACPI CA Core Subsystem: 11468 11469Restructured, flattened, and simplified the internal interfaces for 11470namespace object evaluation - resulting in smaller code, less CPU stack 11471use, 11472and fewer interfaces. (With assistance from Mikhail Kouzmich) 11473 11474Fixed a problem with the CopyObject operator where the first parameter 11475was 11476not typed correctly for the parser, interpreter, compiler, and 11477disassembler. 11478Caused various errors and unexpected behavior. 11479 11480Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11481produced incorrect results with some C compilers. Since the behavior of C 11482compilers when the shift value is larger than the datatype width is 11483apparently not well defined, the interpreter now detects this condition 11484and 11485simply returns zero as expected in all such cases. (BZ 395) 11486 11487Fixed problem reports (Valery Podrezov) integrated: 11488- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11489- Allow interpreter to handle nested method declarations (BZ 5361) 11490 11491Fixed problem reports (Fiodor Suietov) integrated: 11492- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11493355) 11494- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11495356) 11496- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11497- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11498- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11499- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11500- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11501- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11502- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11503365) 11504- Status of the Global Initialization Handler call not used (BZ 366) 11505- Incorrect object parameter to Global Initialization Handler (BZ 367) 11506 11507Example Code and Data Size: These are the sizes for the OS-independent 11508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11509debug version of the code includes the debug output trace mechanism and 11510has 11511a much larger code and data size. 11512 11513 Previous Release: 11514 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11515 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11516 Current Release: 11517 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11518 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11519 11520 115212) iASL Compiler/Disassembler and Tools: 11522 11523Modified the parser to allow the names IO, DMA, and IRQ to be used as 11524namespace identifiers with no collision with existing resource descriptor 11525macro names. This provides compatibility with other ASL compilers and is 11526most useful for disassembly/recompilation of existing tables without 11527parse 11528errors. (With assistance from Thomas Renninger) 11529 11530Disassembler: fixed an incorrect disassembly problem with the 11531DataTableRegion and CopyObject operators. Fixed a possible fault during 11532disassembly of some Alias operators. 11533 11534---------------------------------------- 1153512 May 2006. Summary of changes for version 20060512: 11536 115371) ACPI CA Core Subsystem: 11538 11539Replaced the AcpiOsQueueForExecution interface with a new interface named 11540AcpiOsExecute. The major difference is that the new interface does not 11541have 11542a Priority parameter, this appeared to be useless and has been replaced 11543by 11544a 11545Type parameter. The Type tells the host what type of execution is being 11546requested, such as global lock handler, notify handler, GPE handler, etc. 11547This allows the host to queue and execute the request as appropriate for 11548the 11549request type, possibly using different work queues and different 11550priorities 11551for the various request types. This enables fixes for multithreading 11552deadlock problems such as BZ #5534, and will require changes to all 11553existing 11554OS interface layers. (Alexey Starikovskiy and Bob Moore) 11555 11556Fixed a possible memory leak associated with the support for the so- 11557called 11558"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11559Suietov) 11560 11561Fixed a problem with the Load() operator where a table load from an 11562operation region could overwrite an internal table buffer by up to 7 11563bytes 11564and cause alignment faults on IPF systems. (With assistance from Luming 11565Yu) 11566 11567Example Code and Data Size: These are the sizes for the OS-independent 11568acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11569debug version of the code includes the debug output trace mechanism and 11570has 11571a much larger code and data size. 11572 11573 Previous Release: 11574 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11575 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11576 Current Release: 11577 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11578 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11579 11580 11581 115822) iASL Compiler/Disassembler and Tools: 11583 11584Disassembler: Implemented support to cross reference the internal 11585namespace 11586and automatically generate ASL External() statements for symbols not 11587defined 11588within the current table being disassembled. This will simplify the 11589disassembly and recompilation of interdependent tables such as SSDTs 11590since 11591these statements will no longer have to be added manually. 11592 11593Disassembler: Implemented experimental support to automatically detect 11594invocations of external control methods and generate appropriate 11595External() 11596statements. This is problematic because the AML cannot be correctly 11597parsed 11598until the number of arguments for each control method is known. 11599Currently, 11600standalone method invocations and invocations as the source operand of a 11601Store() statement are supported. 11602 11603Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11604LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11605LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11606more readable and likely closer to the original ASL source. 11607 11608---------------------------------------- 1160921 April 2006. Summary of changes for version 20060421: 11610 116111) ACPI CA Core Subsystem: 11612 11613Removed a device initialization optimization introduced in 20051216 where 11614the _STA method was not run unless an _INI was also present for the same 11615device. This optimization could cause problems because it could allow 11616_INI 11617methods to be run within a not-present device subtree. (If a not-present 11618device had no _INI, _STA would not be run, the not-present status would 11619not 11620be discovered, and the children of the device would be incorrectly 11621traversed.) 11622 11623Implemented a new _STA optimization where namespace subtrees that do not 11624contain _INI are identified and ignored during device initialization. 11625Selectively running _STA can significantly improve boot time on large 11626machines (with assistance from Len Brown.) 11627 11628Implemented support for the device initialization case where the returned 11629_STA flags indicate a device not-present but functioning. In this case, 11630_INI 11631is not run, but the device children are examined for presence, as per the 11632ACPI specification. 11633 11634Implemented an additional change to the IndexField support in order to 11635conform to MS behavior. The value written to the Index Register is not 11636simply a byte offset, it is a byte offset in units of the access width of 11637the parent Index Field. (Fiodor Suietov) 11638 11639Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11640interface is called during the creation of all AML operation regions, and 11641allows the host OS to exert control over what addresses it will allow the 11642AML code to access. Operation Regions whose addresses are disallowed will 11643cause a runtime exception when they are actually accessed (will not 11644affect 11645or abort table loading.) See oswinxf or osunixxf for an example 11646implementation. 11647 11648Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11649interface allows the host OS to match the various "optional" 11650interface/behavior strings for the _OSI predefined control method as 11651appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11652for an example implementation. 11653 11654Restructured and corrected various problems in the exception handling 11655code 11656paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11657(with assistance from Takayoshi Kochi.) 11658 11659Modified the Linux source converter to ignore quoted string literals 11660while 11661converting identifiers from mixed to lower case. This will correct 11662problems 11663with the disassembler and other areas where such strings must not be 11664modified. 11665 11666The ACPI_FUNCTION_* macros no longer require quotes around the function 11667name. This allows the Linux source converter to convert the names, now 11668that 11669the converter ignores quoted strings. 11670 11671Example Code and Data Size: These are the sizes for the OS-independent 11672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11673debug version of the code includes the debug output trace mechanism and 11674has 11675a much larger code and data size. 11676 11677 Previous Release: 11678 11679 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11680 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11681 Current Release: 11682 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11683 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11684 11685 116862) iASL Compiler/Disassembler and Tools: 11687 11688Implemented 3 new warnings for iASL, and implemented multiple warning 11689levels 11690(w2 flag). 11691 116921) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11693not 11694WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11695check for the possible timeout, a warning is issued. 11696 116972) Useless operators: If an ASL operator does not specify an optional 11698target 11699operand and it also does not use the function return value from the 11700operator, a warning is issued since the operator effectively does 11701nothing. 11702 117033) Unreferenced objects: If a namespace object is created, but never 11704referenced, a warning is issued. This is a warning level 2 since there 11705are 11706cases where this is ok, such as when a secondary table is loaded that 11707uses 11708the unreferenced objects. Even so, care is taken to only flag objects 11709that 11710don't look like they will ever be used. For example, the reserved methods 11711(starting with an underscore) are usually not referenced because it is 11712expected that the OS will invoke them. 11713 11714---------------------------------------- 1171531 March 2006. Summary of changes for version 20060331: 11716 117171) ACPI CA Core Subsystem: 11718 11719Implemented header file support for the following additional ACPI tables: 11720ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11721support, 11722all current and known ACPI tables are now defined in the ACPICA headers 11723and 11724are available for use by device drivers and other software. 11725 11726Implemented support to allow tables that contain ACPI names with invalid 11727characters to be loaded. Previously, this would cause the table load to 11728fail, but since there are several known cases of such tables on existing 11729machines, this change was made to enable ACPI support for them. Also, 11730this 11731matches the behavior of the Microsoft ACPI implementation. 11732 11733Fixed a couple regressions introduced during the memory optimization in 11734the 1173520060317 release. The namespace node definition required additional 11736reorganization and an internal datatype that had been changed to 8-bit 11737was 11738restored to 32-bit. (Valery Podrezov) 11739 11740Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11741could be passed through to AcpiOsReleaseObject which is unexpected. Such 11742null pointers are now trapped and ignored, matching the behavior of the 11743previous implementation before the deployment of AcpiOsReleaseObject. 11744(Valery Podrezov, Fiodor Suietov) 11745 11746Fixed a memory mapping leak during the deletion of a SystemMemory 11747operation 11748region where a cached memory mapping was not deleted. This became a 11749noticeable problem for operation regions that are defined within 11750frequently 11751used control methods. (Dana Meyers) 11752 11753Reorganized the ACPI table header files into two main files: one for the 11754ACPI tables consumed by the ACPICA core, and another for the 11755miscellaneous 11756ACPI tables that are consumed by the drivers and other software. The 11757various 11758FADT definitions were merged into one common section and three different 11759tables (ACPI 1.0, 1.0+, and 2.0) 11760 11761Example Code and Data Size: These are the sizes for the OS-independent 11762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11763debug version of the code includes the debug output trace mechanism and 11764has 11765a much larger code and data size. 11766 11767 Previous Release: 11768 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11769 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11770 Current Release: 11771 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11772 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11773 11774 117752) iASL Compiler/Disassembler and Tools: 11776 11777Disassembler: Implemented support to decode and format all non-AML ACPI 11778tables (tables other than DSDTs and SSDTs.) This includes the new tables 11779added to the ACPICA headers, therefore all current and known ACPI tables 11780are 11781supported. 11782 11783Disassembler: The change to allow ACPI names with invalid characters also 11784enables the disassembly of such tables. Invalid characters within names 11785are 11786changed to '*' to make the name printable; the iASL compiler will still 11787generate an error for such names, however, since this is an invalid ACPI 11788character. 11789 11790Implemented an option for AcpiXtract (-a) to extract all tables found in 11791the 11792input file. The default invocation extracts only the DSDTs and SSDTs. 11793 11794Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11795makefile for the AcpiXtract utility. 11796 11797---------------------------------------- 1179817 March 2006. Summary of changes for version 20060317: 11799 118001) ACPI CA Core Subsystem: 11801 11802Implemented the use of a cache object for all internal namespace nodes. 11803Since there are about 1000 static nodes in a typical system, this will 11804decrease memory use for cache implementations that minimize per- 11805allocation 11806overhead (such as a slab allocator.) 11807 11808Removed the reference count mechanism for internal namespace nodes, since 11809it 11810was deemed unnecessary. This reduces the size of each namespace node by 11811about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11812case, 11813and 32 bytes for the 64-bit case. 11814 11815Optimized several internal data structures to reduce object size on 64- 11816bit 11817platforms by packing data within the 64-bit alignment. This includes the 11818frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11819instances corresponding to the namespace objects. 11820 11821Added two new strings for the predefined _OSI method: "Windows 2001.1 11822SP1" 11823and "Windows 2006". 11824 11825Split the allocation tracking mechanism out to a separate file, from 11826utalloc.c to uttrack.c. This mechanism appears to be only useful for 11827application-level code. Kernels may wish to not include uttrack.c in 11828distributions. 11829 11830Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11831associated 11832code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11833macros.) 11834 11835Code and Data Size: These are the sizes for the acpica.lib produced by 11836the 11837Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11838ACPI 11839driver or OSPM code. The debug version of the code includes the debug 11840output 11841trace mechanism and has a much larger code and data size. Note that these 11842values will vary depending on the efficiency of the compiler and the 11843compiler options used during generation. 11844 11845 Previous Release: 11846 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11847 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11848 Current Release: 11849 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11850 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11851 11852 118532) iASL Compiler/Disassembler and Tools: 11854 11855Implemented an ANSI C version of the acpixtract utility. This version 11856will 11857automatically extract the DSDT and all SSDTs from the input acpidump text 11858file and dump the binary output to separate files. It can also display a 11859summary of the input file including the headers for each table found and 11860will extract any single ACPI table, with any signature. (See 11861source/tools/acpixtract) 11862 11863---------------------------------------- 1186410 March 2006. Summary of changes for version 20060310: 11865 118661) ACPI CA Core Subsystem: 11867 11868Tagged all external interfaces to the subsystem with the new 11869ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11870assist 11871kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11872macro. The default definition is NULL. 11873 11874Added the ACPI_THREAD_ID type for the return value from 11875AcpiOsGetThreadId. 11876This allows the host to define this as necessary to simplify kernel 11877integration. The default definition is ACPI_NATIVE_UINT. 11878 11879Fixed two interpreter problems related to error processing, the deletion 11880of 11881objects, and placing invalid pointers onto the internal operator result 11882stack. BZ 6028, 6151 (Valery Podrezov) 11883 11884Increased the reference count threshold where a warning is emitted for 11885large 11886reference counts in order to eliminate unnecessary warnings on systems 11887with 11888large namespaces (especially 64-bit.) Increased the value from 0x400 to 118890x800. 11890 11891Due to universal disagreement as to the meaning of the 'c' in the 11892calloc() 11893function, the ACPI_MEM_CALLOCATE macro has been renamed to 11894ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11895ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11896ACPI_FREE. 11897 11898Code and Data Size: These are the sizes for the acpica.lib produced by 11899the 11900Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11901ACPI 11902driver or OSPM code. The debug version of the code includes the debug 11903output 11904trace mechanism and has a much larger code and data size. Note that these 11905values will vary depending on the efficiency of the compiler and the 11906compiler options used during generation. 11907 11908 Previous Release: 11909 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11910 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11911 Current Release: 11912 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11913 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11914 11915 119162) iASL Compiler/Disassembler: 11917 11918Disassembler: implemented support for symbolic resource descriptor 11919references. If a CreateXxxxField operator references a fixed offset 11920within 11921a 11922resource descriptor, a name is assigned to the descriptor and the offset 11923is 11924translated to the appropriate resource tag and pathname. The addition of 11925this support brings the disassembled code very close to the original ASL 11926source code and helps eliminate run-time errors when the disassembled 11927code 11928is modified (and recompiled) in such a way as to invalidate the original 11929fixed offsets. 11930 11931Implemented support for a Descriptor Name as the last parameter to the 11932ASL 11933Register() macro. This parameter was inadvertently left out of the ACPI 11934specification, and will be added for ACPI 3.0b. 11935 11936Fixed a problem where the use of the "_OSI" string (versus the full path 11937"\_OSI") caused an internal compiler error. ("No back ptr to op") 11938 11939Fixed a problem with the error message that occurs when an invalid string 11940is 11941used for a _HID object (such as one with an embedded asterisk: 11942"*PNP010A".) 11943The correct message is now displayed. 11944 11945---------------------------------------- 1194617 February 2006. Summary of changes for version 20060217: 11947 119481) ACPI CA Core Subsystem: 11949 11950Implemented a change to the IndexField support to match the behavior of 11951the 11952Microsoft AML interpreter. The value written to the Index register is now 11953a 11954byte offset, no longer an index based upon the width of the Data 11955register. 11956This should fix IndexField problems seen on some machines where the Data 11957register is not exactly one byte wide. The ACPI specification will be 11958clarified on this point. 11959 11960Fixed a problem where several resource descriptor types could overrun the 11961internal descriptor buffer due to size miscalculation: VendorShort, 11962VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11963affect all platforms. 11964 11965Fixed a problem where individual resource descriptors were misaligned 11966within 11967the internal buffer, causing alignment faults on IA64 platforms. 11968 11969Code and Data Size: These are the sizes for the acpica.lib produced by 11970the 11971Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11972ACPI 11973driver or OSPM code. The debug version of the code includes the debug 11974output 11975trace mechanism and has a much larger code and data size. Note that these 11976values will vary depending on the efficiency of the compiler and the 11977compiler options used during generation. 11978 11979 Previous Release: 11980 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11981 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11982 Current Release: 11983 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11984 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11985 11986 119872) iASL Compiler/Disassembler: 11988 11989Implemented support for new reserved names: _WDG and _WED are Microsoft 11990extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11991defined method (Throttling Depth Limit.) 11992 11993Fixed a problem where a zero-length VendorShort or VendorLong resource 11994descriptor was incorrectly emitted as a descriptor of length one. 11995 11996---------------------------------------- 1199710 February 2006. Summary of changes for version 20060210: 11998 119991) ACPI CA Core Subsystem: 12000 12001Removed a couple of extraneous ACPI_ERROR messages that appeared during 12002normal execution. These became apparent after the conversion from 12003ACPI_DEBUG_PRINT. 12004 12005Fixed a problem where the CreateField operator could hang if the BitIndex 12006or 12007NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12008 12009Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12010failed with an exception. This also fixes a couple of related RefOf and 12011DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12012 12013Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12014of 12015AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12016BZ 120175480) 12018 12019Implemented a memory cleanup at the end of the execution of each 12020iteration 12021of an AML While() loop, preventing the accumulation of outstanding 12022objects. 12023(Valery Podrezov, BZ 5427) 12024 12025Eliminated a chunk of duplicate code in the object resolution code. 12026(Valery 12027Podrezov, BZ 5336) 12028 12029Fixed several warnings during the 64-bit code generation. 12030 12031The AcpiSrc source code conversion tool now inserts one line of 12032whitespace 12033after an if() statement that is followed immediately by a comment, 12034improving 12035readability of the Linux code. 12036 12037Code and Data Size: The current and previous library sizes for the core 12038subsystem are shown below. These are the code and data sizes for the 12039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12040These 12041values do not include any ACPI driver or OSPM code. The debug version of 12042the 12043code includes the debug output trace mechanism and has a much larger code 12044and data size. Note that these values will vary depending on the 12045efficiency 12046of the compiler and the compiler options used during generation. 12047 12048 Previous Release: 12049 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12050 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12051 Current Release: 12052 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12053 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12054 12055 120562) iASL Compiler/Disassembler: 12057 12058Fixed a problem with the disassembly of a BankField operator with a 12059complex 12060expression for the BankValue parameter. 12061 12062---------------------------------------- 1206327 January 2006. Summary of changes for version 20060127: 12064 120651) ACPI CA Core Subsystem: 12066 12067Implemented support in the Resource Manager to allow unresolved 12068namestring 12069references within resource package objects for the _PRT method. This 12070support 12071is in addition to the previously implemented unresolved reference support 12072within the AML parser. If the interpreter slack mode is enabled, these 12073unresolved references will be passed through to the caller as a NULL 12074package 12075entry. 12076 12077Implemented and deployed new macros and functions for error and warning 12078messages across the subsystem. These macros are simpler and generate less 12079code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12080ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12081macros remain defined to allow ACPI drivers time to migrate to the new 12082macros. 12083 12084Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12085the 12086Acquire/Release Lock OSL interfaces. 12087 12088Fixed a problem where Alias ASL operators are sometimes not correctly 12089resolved, in both the interpreter and the iASL compiler. 12090 12091Fixed several problems with the implementation of the 12092ConcatenateResTemplate 12093ASL operator. As per the ACPI specification, zero length buffers are now 12094treated as a single EndTag. One-length buffers always cause a fatal 12095exception. Non-zero length buffers that do not end with a full 2-byte 12096EndTag 12097cause a fatal exception. 12098 12099Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12100interface. (With assistance from Thomas Renninger) 12101 12102Code and Data Size: The current and previous library sizes for the core 12103subsystem are shown below. These are the code and data sizes for the 12104acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12105These 12106values do not include any ACPI driver or OSPM code. The debug version of 12107the 12108code includes the debug output trace mechanism and has a much larger code 12109and data size. Note that these values will vary depending on the 12110efficiency 12111of the compiler and the compiler options used during generation. 12112 12113 Previous Release: 12114 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12115 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12116 Current Release: 12117 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12118 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12119 12120 121212) iASL Compiler/Disassembler: 12122 12123Fixed an internal error that was generated for any forward references to 12124ASL 12125Alias objects. 12126 12127---------------------------------------- 1212813 January 2006. Summary of changes for version 20060113: 12129 121301) ACPI CA Core Subsystem: 12131 12132Added 2006 copyright to all module headers and signons. This affects 12133virtually every file in the ACPICA core subsystem, iASL compiler, and the 12134utilities. 12135 12136Enhanced the ACPICA error reporting in order to simplify user migration 12137to 12138the non-debug version of ACPICA. Replaced all instances of the 12139ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12140debug 12141levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12142respectively. This preserves all error and warning messages in the non- 12143debug 12144version of the ACPICA code (this has been referred to as the "debug lite" 12145option.) Over 200 cases were converted to create a total of over 380 12146error/warning messages across the ACPICA code. This increases the code 12147and 12148data size of the default non-debug version of the code somewhat (about 1214913K), 12150but all error/warning reporting may be disabled if desired (and code 12151eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12152configuration option. The size of the debug version of ACPICA remains 12153about 12154the same. 12155 12156Fixed a memory leak within the AML Debugger "Set" command. One object was 12157not properly deleted for every successful invocation of the command. 12158 12159Code and Data Size: The current and previous library sizes for the core 12160subsystem are shown below. These are the code and data sizes for the 12161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12162These 12163values do not include any ACPI driver or OSPM code. The debug version of 12164the 12165code includes the debug output trace mechanism and has a much larger code 12166and data size. Note that these values will vary depending on the 12167efficiency 12168of the compiler and the compiler options used during generation. 12169 12170 Previous Release: 12171 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12172 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12173 Current Release: 12174 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12175 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12176 12177 121782) iASL Compiler/Disassembler: 12179 12180The compiler now officially supports the ACPI 3.0a specification that was 12181released on December 30, 2005. (Specification is available at 12182www.acpi.info) 12183 12184---------------------------------------- 1218516 December 2005. Summary of changes for version 20051216: 12186 121871) ACPI CA Core Subsystem: 12188 12189Implemented optional support to allow unresolved names within ASL Package 12190objects. A null object is inserted in the package when a named reference 12191cannot be located in the current namespace. Enabled via the interpreter 12192slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12193machines 12194that contain such code. 12195 12196Implemented an optimization to the initialization sequence that can 12197improve 12198boot time. During ACPI device initialization, the _STA method is now run 12199if 12200and only if the _INI method exists. The _STA method is used to determine 12201if 12202the device is present; An _INI can only be run if _STA returns present, 12203but 12204it is a waste of time to run the _STA method if the _INI does not exist. 12205(Prototype and assistance from Dong Wei) 12206 12207Implemented use of the C99 uintptr_t for the pointer casting macros if it 12208is 12209available in the current compiler. Otherwise, the default (void *) cast 12210is 12211used as before. 12212 12213Fixed some possible memory leaks found within the execution path of the 12214Break, Continue, If, and CreateField operators. (Valery Podrezov) 12215 12216Fixed a problem introduced in the 20051202 release where an exception is 12217generated during method execution if a control method attempts to declare 12218another method. 12219 12220Moved resource descriptor string constants that are used by both the AML 12221disassembler and AML debugger to the common utilities directory so that 12222these components are independent. 12223 12224Implemented support in the AcpiExec utility (-e switch) to globally 12225ignore 12226exceptions during control method execution (method is not aborted.) 12227 12228Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12229generation. 12230 12231Code and Data Size: The current and previous library sizes for the core 12232subsystem are shown below. These are the code and data sizes for the 12233acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12234These 12235values do not include any ACPI driver or OSPM code. The debug version of 12236the 12237code includes the debug output trace mechanism and has a much larger code 12238and data size. Note that these values will vary depending on the 12239efficiency 12240of the compiler and the compiler options used during generation. 12241 12242 Previous Release: 12243 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12244 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12245 Current Release: 12246 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12247 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12248 12249 122502) iASL Compiler/Disassembler: 12251 12252Fixed a problem where a CPU stack overflow fault could occur if a 12253recursive 12254method call was made from within a Return statement. 12255 12256---------------------------------------- 1225702 December 2005. Summary of changes for version 20051202: 12258 122591) ACPI CA Core Subsystem: 12260 12261Modified the parsing of control methods to no longer create namespace 12262objects during the first pass of the parse. Objects are now created only 12263during the execute phase, at the moment the namespace creation operator 12264is 12265encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12266This 12267should eliminate ALREADY_EXISTS exceptions seen on some machines where 12268reentrant control methods are protected by an AML mutex. The mutex will 12269now 12270correctly block multiple threads from attempting to create the same 12271object 12272more than once. 12273 12274Increased the number of available Owner Ids for namespace object tracking 12275from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12276on 12277some machines with a large number of ACPI tables (either static or 12278dynamic). 12279 12280Fixed a problem with the AcpiExec utility where a fault could occur when 12281the 12282-b switch (batch mode) is used. 12283 12284Enhanced the namespace dump routine to output the owner ID for each 12285namespace object. 12286 12287Code and Data Size: The current and previous library sizes for the core 12288subsystem are shown below. These are the code and data sizes for the 12289acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12290These 12291values do not include any ACPI driver or OSPM code. The debug version of 12292the 12293code includes the debug output trace mechanism and has a much larger code 12294and data size. Note that these values will vary depending on the 12295efficiency 12296of the compiler and the compiler options used during generation. 12297 12298 Previous Release: 12299 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12300 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12301 Current Release: 12302 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12303 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12304 12305 123062) iASL Compiler/Disassembler: 12307 12308Fixed a parse error during compilation of certain Switch/Case constructs. 12309To 12310simplify the parse, the grammar now allows for multiple Default 12311statements 12312and this error is now detected and flagged during the analysis phase. 12313 12314Disassembler: The disassembly now includes the contents of the original 12315table header within a comment at the start of the file. This includes the 12316name and version of the original ASL compiler. 12317 12318---------------------------------------- 1231917 November 2005. Summary of changes for version 20051117: 12320 123211) ACPI CA Core Subsystem: 12322 12323Fixed a problem in the AML parser where the method thread count could be 12324decremented below zero if any errors occurred during the method parse 12325phase. 12326This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12327machines. 12328This also fixed a related regression with the mechanism that detects and 12329corrects methods that cannot properly handle reentrancy (related to the 12330deployment of the new OwnerId mechanism.) 12331 12332Eliminated the pre-parsing of control methods (to detect errors) during 12333table load. Related to the problem above, this was causing unwind issues 12334if 12335any errors occurred during the parse, and it seemed to be overkill. A 12336table 12337load should not be aborted if there are problems with any single control 12338method, thus rendering this feature rather pointless. 12339 12340Fixed a problem with the new table-driven resource manager where an 12341internal 12342buffer overflow could occur for small resource templates. 12343 12344Implemented a new external interface, AcpiGetVendorResource. This 12345interface 12346will find and return a vendor-defined resource descriptor within a _CRS 12347or 12348_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12349Helgaas. 12350 12351Removed the length limit (200) on string objects as per the upcoming ACPI 123523.0A specification. This affects the following areas of the interpreter: 123531) 12354any implicit conversion of a Buffer to a String, 2) a String object 12355result 12356of the ASL Concatenate operator, 3) the String object result of the ASL 12357ToString operator. 12358 12359Fixed a problem in the Windows OS interface layer (OSL) where a 12360WAIT_FOREVER 12361on a semaphore object would incorrectly timeout. This allows the 12362multithreading features of the AcpiExec utility to work properly under 12363Windows. 12364 12365Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12366the recently added file named "utresrc.c". 12367 12368Code and Data Size: The current and previous library sizes for the core 12369subsystem are shown below. These are the code and data sizes for the 12370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12371These 12372values do not include any ACPI driver or OSPM code. The debug version of 12373the 12374code includes the debug output trace mechanism and has a much larger code 12375and data size. Note that these values will vary depending on the 12376efficiency 12377of the compiler and the compiler options used during generation. 12378 12379 Previous Release: 12380 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12381 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12382 Current Release: 12383 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12384 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12385 12386 123872) iASL Compiler/Disassembler: 12388 12389Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12390specification. For the iASL compiler, this means that string literals 12391within 12392the source ASL can be of any length. 12393 12394Enhanced the listing output to dump the AML code for resource descriptors 12395immediately after the ASL code for each descriptor, instead of in a block 12396at 12397the end of the entire resource template. 12398 12399Enhanced the compiler debug output to dump the entire original parse tree 12400constructed during the parse phase, before any transforms are applied to 12401the 12402tree. The transformed tree is dumped also. 12403 12404---------------------------------------- 1240502 November 2005. Summary of changes for version 20051102: 12406 124071) ACPI CA Core Subsystem: 12408 12409Modified the subsystem initialization sequence to improve GPE support. 12410The 12411GPE initialization has been split into two parts in order to defer 12412execution 12413of the _PRW methods (Power Resources for Wake) until after the hardware 12414is 12415fully initialized and the SCI handler is installed. This allows the _PRW 12416methods to access fields protected by the Global Lock. This will fix 12417systems 12418where a NO_GLOBAL_LOCK exception has been seen during initialization. 12419 12420Converted the ACPI internal object disassemble and display code within 12421the 12422AML debugger to fully table-driven operation, reducing code size and 12423increasing maintainability. 12424 12425Fixed a regression with the ConcatenateResTemplate() ASL operator 12426introduced 12427in the 20051021 release. 12428 12429Implemented support for "local" internal ACPI object types within the 12430debugger "Object" command and the AcpiWalkNamespace external interfaces. 12431These local types include RegionFields, BankFields, IndexFields, Alias, 12432and 12433reference objects. 12434 12435Moved common AML resource handling code into a new file, "utresrc.c". 12436This 12437code is shared by both the Resource Manager and the AML Debugger. 12438 12439Code and Data Size: The current and previous library sizes for the core 12440subsystem are shown below. These are the code and data sizes for the 12441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12442These 12443values do not include any ACPI driver or OSPM code. The debug version of 12444the 12445code includes the debug output trace mechanism and has a much larger code 12446and data size. Note that these values will vary depending on the 12447efficiency 12448of the compiler and the compiler options used during generation. 12449 12450 Previous Release: 12451 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12452 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12453 Current Release: 12454 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12455 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12456 12457 124582) iASL Compiler/Disassembler: 12459 12460Fixed a problem with very large initializer lists (more than 4000 12461elements) 12462for both Buffer and Package objects where the parse stack could overflow. 12463 12464Enhanced the pre-compile source code scan for non-ASCII characters to 12465ignore 12466characters within comment fields. The scan is now always performed and is 12467no 12468longer optional, detecting invalid characters within a source file 12469immediately rather than during the parse phase or later. 12470 12471Enhanced the ASL grammar definition to force early reductions on all 12472list- 12473style grammar elements so that the overall parse stack usage is greatly 12474reduced. This should improve performance and reduce the possibility of 12475parse 12476stack overflow. 12477 12478Eliminated all reduce/reduce conflicts in the iASL parser generation. 12479Also, 12480with the addition of a %expected statement, the compiler generates from 12481source with no warnings. 12482 12483Fixed a possible segment fault in the disassembler if the input filename 12484does not contain a "dot" extension (Thomas Renninger). 12485 12486---------------------------------------- 1248721 October 2005. Summary of changes for version 20051021: 12488 124891) ACPI CA Core Subsystem: 12490 12491Implemented support for the EM64T and other x86-64 processors. This 12492essentially entails recognizing that these processors support non-aligned 12493memory transfers. Previously, all 64-bit processors were assumed to lack 12494hardware support for non-aligned transfers. 12495 12496Completed conversion of the Resource Manager to nearly full table-driven 12497operation. Specifically, the resource conversion code (convert AML to 12498internal format and the reverse) and the debug code to dump internal 12499resource descriptors are fully table-driven, reducing code and data size 12500and 12501improving maintainability. 12502 12503The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12504word 12505on 64-bit processors instead of a fixed 32-bit word. (With assistance 12506from 12507Alexey Starikovskiy) 12508 12509Implemented support within the resource conversion code for the Type- 12510Specific byte within the various ACPI 3.0 *WordSpace macros. 12511 12512Fixed some issues within the resource conversion code for the type- 12513specific 12514flags for both Memory and I/O address resource descriptors. For Memory, 12515implemented support for the MTP and TTP flags. For I/O, split the TRS and 12516TTP flags into two separate fields. 12517 12518Code and Data Size: The current and previous library sizes for the core 12519subsystem are shown below. These are the code and data sizes for the 12520acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12521These 12522values do not include any ACPI driver or OSPM code. The debug version of 12523the 12524code includes the debug output trace mechanism and has a much larger code 12525and data size. Note that these values will vary depending on the 12526efficiency 12527of the compiler and the compiler options used during generation. 12528 12529 Previous Release: 12530 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12531 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12532 Current Release: 12533 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12534 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12535 12536 12537 125382) iASL Compiler/Disassembler: 12539 12540Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12541the 12542corresponding ResourceSource string was not also present in a resource 12543descriptor declaration. This restriction caused problems with existing 12544AML/ASL code that includes the Index byte without the string. When such 12545AML 12546was disassembled, it could not be compiled without modification. Further, 12547the modified code created a resource template with a different size than 12548the 12549original, breaking code that used fixed offsets into the resource 12550template 12551buffer. 12552 12553Removed a recent feature of the disassembler to ignore a lone 12554ResourceIndex 12555byte. This byte is now emitted if present so that the exact AML can be 12556reproduced when the disassembled code is recompiled. 12557 12558Improved comments and text alignment for the resource descriptor code 12559emitted by the disassembler. 12560 12561Implemented disassembler support for the ACPI 3.0 AccessSize field within 12562a 12563Register() resource descriptor. 12564 12565---------------------------------------- 1256630 September 2005. Summary of changes for version 20050930: 12567 125681) ACPI CA Core Subsystem: 12569 12570Completed a major overhaul of the Resource Manager code - specifically, 12571optimizations in the area of the AML/internal resource conversion code. 12572The 12573code has been optimized to simplify and eliminate duplicated code, CPU 12574stack 12575use has been decreased by optimizing function parameters and local 12576variables, and naming conventions across the manager have been 12577standardized 12578for clarity and ease of maintenance (this includes function, parameter, 12579variable, and struct/typedef names.) The update may force changes in some 12580driver code, depending on how resources are handled by the host OS. 12581 12582All Resource Manager dispatch and information tables have been moved to a 12583single location for clarity and ease of maintenance. One new file was 12584created, named "rsinfo.c". 12585 12586The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12587guarantee that the argument is not evaluated twice, making them less 12588prone 12589to macro side-effects. However, since there exists the possibility of 12590additional stack use if a particular compiler cannot optimize them (such 12591as 12592in the debug generation case), the original macros are optionally 12593available. 12594Note that some invocations of the return_VALUE macro may now cause size 12595mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12596to 12597eliminate these. (From Randy Dunlap) 12598 12599Implemented a new mechanism to enable debug tracing for individual 12600control 12601methods. A new external interface, AcpiDebugTrace, is provided to enable 12602this mechanism. The intent is to allow the host OS to easily enable and 12603disable tracing for problematic control methods. This interface can be 12604easily exposed to a user or debugger interface if desired. See the file 12605psxface.c for details. 12606 12607AcpiUtCallocate will now return a valid pointer if a length of zero is 12608specified - a length of one is used and a warning is issued. This matches 12609the behavior of AcpiUtAllocate. 12610 12611Code and Data Size: The current and previous library sizes for the core 12612subsystem are shown below. These are the code and data sizes for the 12613acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12614These 12615values do not include any ACPI driver or OSPM code. The debug version of 12616the 12617code includes the debug output trace mechanism and has a much larger code 12618and data size. Note that these values will vary depending on the 12619efficiency 12620of the compiler and the compiler options used during generation. 12621 12622 Previous Release: 12623 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12624 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12625 Current Release: 12626 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12627 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12628 12629 126302) iASL Compiler/Disassembler: 12631 12632A remark is issued if the effective compile-time length of a package or 12633buffer is zero. Previously, this was a warning. 12634 12635---------------------------------------- 1263616 September 2005. Summary of changes for version 20050916: 12637 126381) ACPI CA Core Subsystem: 12639 12640Fixed a problem within the Resource Manager where support for the Generic 12641Register descriptor was not fully implemented. This descriptor is now 12642fully 12643recognized, parsed, disassembled, and displayed. 12644 12645Completely restructured the Resource Manager code to utilize table-driven 12646dispatch and lookup, eliminating many of the large switch() statements. 12647This 12648reduces overall subsystem code size and code complexity. Affects the 12649resource parsing and construction, disassembly, and debug dump output. 12650 12651Cleaned up and restructured the debug dump output for all resource 12652descriptors. Improved readability of the output and reduced code size. 12653 12654Fixed a problem where changes to internal data structures caused the 12655optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12656 12657Code and Data Size: The current and previous library sizes for the core 12658subsystem are shown below. These are the code and data sizes for the 12659acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12660These 12661values do not include any ACPI driver or OSPM code. The debug version of 12662the 12663code includes the debug output trace mechanism and has a much larger code 12664and data size. Note that these values will vary depending on the 12665efficiency 12666of the compiler and the compiler options used during generation. 12667 12668 Previous Release: 12669 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12670 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12671 Current Release: 12672 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12673 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12674 12675 126762) iASL Compiler/Disassembler: 12677 12678Updated the disassembler to automatically insert an EndDependentFn() 12679macro 12680into the ASL stream if this macro is missing in the original AML code, 12681simplifying compilation of the resulting ASL module. 12682 12683Fixed a problem in the disassembler where a disassembled ResourceSource 12684string (within a large resource descriptor) was not surrounded by quotes 12685and 12686not followed by a comma, causing errors when the resulting ASL module was 12687compiled. Also, escape sequences within a ResourceSource string are now 12688handled correctly (especially "\\") 12689 12690---------------------------------------- 1269102 September 2005. Summary of changes for version 20050902: 12692 126931) ACPI CA Core Subsystem: 12694 12695Fixed a problem with the internal Owner ID allocation and deallocation 12696mechanisms for control method execution and recursive method invocation. 12697This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12698messages seen on some systems. Recursive method invocation depth is 12699currently limited to 255. (Alexey Starikovskiy) 12700 12701Completely eliminated all vestiges of support for the "module-level 12702executable code" until this support is fully implemented and debugged. 12703This 12704should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12705some systems that invoke this support. 12706 12707Fixed a problem within the resource manager code where the transaction 12708flags 12709for a 64-bit address descriptor were handled incorrectly in the type- 12710specific flag byte. 12711 12712Consolidated duplicate code within the address descriptor resource 12713manager 12714code, reducing overall subsystem code size. 12715 12716Fixed a fault when using the AML debugger "disassemble" command to 12717disassemble individual control methods. 12718 12719Removed references to the "release_current" directory within the Unix 12720release package. 12721 12722Code and Data Size: The current and previous core subsystem library sizes 12723are shown below. These are the code and data sizes for the acpica.lib 12724produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12725include any ACPI driver or OSPM code. The debug version of the code 12726includes 12727the debug output trace mechanism and has a much larger code and data 12728size. 12729Note that these values will vary depending on the efficiency of the 12730compiler 12731and the compiler options used during generation. 12732 12733 Previous Release: 12734 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12735 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12736 Current Release: 12737 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12738 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12739 12740 127412) iASL Compiler/Disassembler: 12742 12743Implemented an error check for illegal duplicate values in the interrupt 12744and 12745dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12746Interrupt(). 12747 12748Implemented error checking for the Irq() and IrqNoFlags() macros to 12749detect 12750too many values in the interrupt list (16 max) and invalid values in the 12751list (range 0 - 15) 12752 12753The maximum length string literal within an ASL file is now restricted to 12754200 characters as per the ACPI specification. 12755 12756Fixed a fault when using the -ln option (generate namespace listing). 12757 12758Implemented an error check to determine if a DescriptorName within a 12759resource descriptor has already been used within the current scope. 12760 12761---------------------------------------- 1276215 August 2005. Summary of changes for version 20050815: 12763 127641) ACPI CA Core Subsystem: 12765 12766Implemented a full bytewise compare to determine if a table load request 12767is 12768attempting to load a duplicate table. The compare is performed if the 12769table 12770signatures and table lengths match. This will allow different tables with 12771the same OEM Table ID and revision to be loaded - probably against the 12772ACPI 12773specification, but discovered in the field nonetheless. 12774 12775Added the changes.txt logfile to each of the zipped release packages. 12776 12777Code and Data Size: Current and previous core subsystem library sizes are 12778shown below. These are the code and data sizes for the acpica.lib 12779produced 12780by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12781any ACPI driver or OSPM code. The debug version of the code includes the 12782debug output trace mechanism and has a much larger code and data size. 12783Note 12784that these values will vary depending on the efficiency of the compiler 12785and 12786the compiler options used during generation. 12787 12788 Previous Release: 12789 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12790 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12791 Current Release: 12792 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12793 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12794 12795 127962) iASL Compiler/Disassembler: 12797 12798Fixed a problem where incorrect AML code could be generated for Package 12799objects if optimization is disabled (via the -oa switch). 12800 12801Fixed a problem with where incorrect AML code is generated for variable- 12802length packages when the package length is not specified and the number 12803of 12804initializer values is greater than 255. 12805 12806 12807---------------------------------------- 1280829 July 2005. Summary of changes for version 20050729: 12809 128101) ACPI CA Core Subsystem: 12811 12812Implemented support to ignore an attempt to install/load a particular 12813ACPI 12814table more than once. Apparently there exists BIOS code that repeatedly 12815attempts to load the same SSDT upon certain events. With assistance from 12816Venkatesh Pallipadi. 12817 12818Restructured the main interface to the AML parser in order to correctly 12819handle all exceptional conditions. This will prevent leakage of the 12820OwnerId 12821resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12822some 12823machines. With assistance from Alexey Starikovskiy. 12824 12825Support for "module level code" has been disabled in this version due to 12826a 12827number of issues that have appeared on various machines. The support can 12828be 12829enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12830compilation. When the issues are fully resolved, the code will be enabled 12831by 12832default again. 12833 12834Modified the internal functions for debug print support to define the 12835FunctionName parameter as a (const char *) for compatibility with 12836compiler 12837built-in macros such as __FUNCTION__, etc. 12838 12839Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12840 12841Implemented support to display an object count summary for the AML 12842Debugger 12843commands Object and Methods. 12844 12845Code and Data Size: Current and previous core subsystem library sizes are 12846shown below. These are the code and data sizes for the acpica.lib 12847produced 12848by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12849any ACPI driver or OSPM code. The debug version of the code includes the 12850debug output trace mechanism and has a much larger code and data size. 12851Note 12852that these values will vary depending on the efficiency of the compiler 12853and 12854the compiler options used during generation. 12855 12856 Previous Release: 12857 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12858 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12859 Current Release: 12860 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12861 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12862 12863 128642) iASL Compiler/Disassembler: 12865 12866Fixed a regression that appeared in the 20050708 version of the compiler 12867where an error message was inadvertently emitted for invocations of the 12868_OSI 12869reserved control method. 12870 12871---------------------------------------- 1287208 July 2005. Summary of changes for version 20050708: 12873 128741) ACPI CA Core Subsystem: 12875 12876The use of the CPU stack in the debug version of the subsystem has been 12877considerably reduced. Previously, a debug structure was declared in every 12878function that used the debug macros. This structure has been removed in 12879favor of declaring the individual elements as parameters to the debug 12880functions. This reduces the cumulative stack use during nested execution 12881of 12882ACPI function calls at the cost of a small increase in the code size of 12883the 12884debug version of the subsystem. With assistance from Alexey Starikovskiy 12885and 12886Len Brown. 12887 12888Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12889headers to define a macro that will return the current function name at 12890runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12891by 12892the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12893compiler-dependent header, the function name is saved on the CPU stack 12894(one 12895pointer per function.) This mechanism is used because apparently there 12896exists no standard ANSI-C defined macro that that returns the function 12897name. 12898 12899Redesigned and reimplemented the "Owner ID" mechanism used to track 12900namespace objects created/deleted by ACPI tables and control method 12901execution. A bitmap is now used to allocate and free the IDs, thus 12902solving 12903the wraparound problem present in the previous implementation. The size 12904of 12905the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12906Starikovskiy). 12907 12908Removed the UINT32_BIT and UINT16_BIT types that were used for the 12909bitfield 12910flag definitions within the headers for the predefined ACPI tables. These 12911have been replaced by UINT8_BIT in order to increase the code portability 12912of 12913the subsystem. If the use of UINT8 remains a problem, we may be forced to 12914eliminate bitfields entirely because of a lack of portability. 12915 12916Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12917This 12918is a frequently used function and this improvement increases the 12919performance 12920of the entire subsystem (Alexey Starikovskiy). 12921 12922Fixed several possible memory leaks and the inverse - premature object 12923deletion (Alexey Starikovskiy). 12924 12925Code and Data Size: Current and previous core subsystem library sizes are 12926shown below. These are the code and data sizes for the acpica.lib 12927produced 12928by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12929any ACPI driver or OSPM code. The debug version of the code includes the 12930debug output trace mechanism and has a much larger code and data size. 12931Note 12932that these values will vary depending on the efficiency of the compiler 12933and 12934the compiler options used during generation. 12935 12936 Previous Release: 12937 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12938 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12939 Current Release: 12940 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12941 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12942 12943---------------------------------------- 1294424 June 2005. Summary of changes for version 20050624: 12945 129461) ACPI CA Core Subsystem: 12947 12948Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12949the host-defined cache object. This allows the OSL implementation to 12950define 12951and type this object in any manner desired, simplifying the OSL 12952implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12953Linux, and should be defined in the OS-specific header file for other 12954operating systems as required. 12955 12956Changed the interface to AcpiOsAcquireObject to directly return the 12957requested object as the function return (instead of ACPI_STATUS.) This 12958change was made for performance reasons, since this is the purpose of the 12959interface in the first place. AcpiOsAcquireObject is now similar to the 12960AcpiOsAllocate interface. 12961 12962Implemented a new AML debugger command named Businfo. This command 12963displays 12964information about all devices that have an associate _PRT object. The 12965_ADR, 12966_HID, _UID, and _CID are displayed for these devices. 12967 12968Modified the initialization sequence in AcpiInitializeSubsystem to call 12969the 12970OSL interface AcpiOslInitialize first, before any local initialization. 12971This 12972change was required because the global initialization now calls OSL 12973interfaces. 12974 12975Enhanced the Dump command to display the entire contents of Package 12976objects 12977(including all sub-objects and their values.) 12978 12979Restructured the code base to split some files because of size and/or 12980because the code logically belonged in a separate file. New files are 12981listed 12982below. All makefiles and project files included in the ACPI CA release 12983have 12984been updated. 12985 utilities/utcache.c /* Local cache interfaces */ 12986 utilities/utmutex.c /* Local mutex support */ 12987 utilities/utstate.c /* State object support */ 12988 interpreter/parser/psloop.c /* Main AML parse loop */ 12989 12990Code and Data Size: Current and previous core subsystem library sizes are 12991shown below. These are the code and data sizes for the acpica.lib 12992produced 12993by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12994any ACPI driver or OSPM code. The debug version of the code includes the 12995debug output trace mechanism and has a much larger code and data size. 12996Note 12997that these values will vary depending on the efficiency of the compiler 12998and 12999the compiler options used during generation. 13000 13001 Previous Release: 13002 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13003 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13004 Current Release: 13005 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13006 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13007 13008 130092) iASL Compiler/Disassembler: 13010 13011Fixed a regression introduced in version 20050513 where the use of a 13012Package 13013object within a Case() statement caused a compile time exception. The 13014original behavior has been restored (a Match() operator is emitted.) 13015 13016---------------------------------------- 1301717 June 2005. Summary of changes for version 20050617: 13018 130191) ACPI CA Core Subsystem: 13020 13021Moved the object cache operations into the OS interface layer (OSL) to 13022allow 13023the host OS to handle these operations if desired (for example, the Linux 13024OSL will invoke the slab allocator). This support is optional; the 13025compile 13026time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13027cache 13028code in the ACPI CA core. The new OSL interfaces are shown below. See 13029utalloc.c for an example implementation, and acpiosxf.h for the exact 13030interface definitions. With assistance from Alexey Starikovskiy. 13031 AcpiOsCreateCache 13032 AcpiOsDeleteCache 13033 AcpiOsPurgeCache 13034 AcpiOsAcquireObject 13035 AcpiOsReleaseObject 13036 13037Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13038return 13039and restore a flags parameter. This fits better with many OS lock models. 13040Note: the current execution state (interrupt handler or not) is no longer 13041passed to these interfaces. If necessary, the OSL must determine this 13042state 13043by itself, a simple and fast operation. With assistance from Alexey 13044Starikovskiy. 13045 13046Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13047present if the revision of the RSDP was 2 or greater. According to the 13048ACPI 13049specification, the XSDT is optional in all cases, and the table manager 13050therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13051Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13052contain 13053only the RSDT. 13054 13055Fixed an interpreter problem with the Mid() operator in the case of an 13056input 13057string where the resulting output string is of zero length. It now 13058correctly 13059returns a valid, null terminated string object instead of a string object 13060with a null pointer. 13061 13062Fixed a problem with the control method argument handling to allow a 13063store 13064to an Arg object that already contains an object of type Device. The 13065Device 13066object is now correctly overwritten. Previously, an error was returned. 13067 13068 13069Enhanced the debugger Find command to emit object values in addition to 13070the 13071found object pathnames. The output format is the same as the dump 13072namespace 13073command. 13074 13075Enhanced the debugger Set command. It now has the ability to set the 13076value 13077of any Named integer object in the namespace (Previously, only method 13078locals 13079and args could be set.) 13080 13081Code and Data Size: Current and previous core subsystem library sizes are 13082shown below. These are the code and data sizes for the acpica.lib 13083produced 13084by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13085any ACPI driver or OSPM code. The debug version of the code includes the 13086debug output trace mechanism and has a much larger code and data size. 13087Note 13088that these values will vary depending on the efficiency of the compiler 13089and 13090the compiler options used during generation. 13091 13092 Previous Release: 13093 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13094 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13095 Current Release: 13096 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13097 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13098 13099 131002) iASL Compiler/Disassembler: 13101 13102Fixed a regression in the disassembler where if/else/while constructs 13103were 13104output incorrectly. This problem was introduced in the previous release 13105(20050526). This problem also affected the single-step disassembly in the 13106debugger. 13107 13108Fixed a problem where compiling the reserved _OSI method would randomly 13109(but 13110rarely) produce compile errors. 13111 13112Enhanced the disassembler to emit compilable code in the face of 13113incorrect 13114AML resource descriptors. If the optional ResourceSourceIndex is present, 13115but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13116disassembly. Otherwise, the resulting code cannot be compiled without 13117errors. 13118 13119---------------------------------------- 1312026 May 2005. Summary of changes for version 20050526: 13121 131221) ACPI CA Core Subsystem: 13123 13124Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13125the module level (not within a control method.) These opcodes are 13126executed 13127exactly once at the time the table is loaded. This type of code was legal 13128up 13129until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13130in 13131order to provide backwards compatibility with earlier BIOS 13132implementations. 13133This eliminates the "Encountered executable code at module level" warning 13134that was previously generated upon detection of such code. 13135 13136Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13137inadvertently be generated during the lookup of namespace objects in the 13138second pass parse of ACPI tables and control methods. It appears that 13139this 13140problem could occur during the resolution of forward references to 13141namespace 13142objects. 13143 13144Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13145corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13146allows the deadlock detection debug code to be compiled out in the normal 13147case, improving mutex performance (and overall subsystem performance) 13148considerably. 13149 13150Implemented a handful of miscellaneous fixes for possible memory leaks on 13151error conditions and error handling control paths. These fixes were 13152suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13153 13154Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13155(tbxfroot.c) 13156to prevent a fault in this error case. 13157 13158Code and Data Size: Current and previous core subsystem library sizes are 13159shown below. These are the code and data sizes for the acpica.lib 13160produced 13161by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13162any ACPI driver or OSPM code. The debug version of the code includes the 13163debug output trace mechanism and has a much larger code and data size. 13164Note 13165that these values will vary depending on the efficiency of the compiler 13166and 13167the compiler options used during generation. 13168 13169 Previous Release: 13170 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13171 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13172 Current Release: 13173 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13174 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13175 13176 131772) iASL Compiler/Disassembler: 13178 13179Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13180the module level (not within a control method.) These operators will be 13181executed once at the time the table is loaded. This type of code was 13182legal 13183up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13184compiler in order to provide backwards compatibility with earlier BIOS 13185ASL 13186code. 13187 13188The ACPI integer width (specified via the table revision ID or the -r 13189override, 32 or 64 bits) is now used internally during compile-time 13190constant 13191folding to ensure that constants are truncated to 32 bits if necessary. 13192Previously, the revision ID value was only emitted in the AML table 13193header. 13194 13195An error message is now generated for the Mutex and Method operators if 13196the 13197SyncLevel parameter is outside the legal range of 0 through 15. 13198 13199Fixed a problem with the Method operator ParameterTypes list handling 13200(ACPI 132013.0). Previously, more than 2 types or 2 arguments generated a syntax 13202error. 13203The actual underlying implementation of method argument typechecking is 13204still under development, however. 13205 13206---------------------------------------- 1320713 May 2005. Summary of changes for version 20050513: 13208 132091) ACPI CA Core Subsystem: 13210 13211Implemented support for PCI Express root bridges -- added support for 13212device 13213PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13214 13215The interpreter now automatically truncates incoming 64-bit constants to 1321632 13217bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13218This 13219also affects the iASL compiler constant folding. (Note: as per below, the 13220iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13221 13222Fixed a problem where string and buffer objects with "static" pointers 13223(pointers to initialization data within an ACPI table) were not handled 13224consistently. The internal object copy operation now always copies the 13225data 13226to a newly allocated buffer, regardless of whether the source object is 13227static or not. 13228 13229Fixed a problem with the FromBCD operator where an implicit result 13230conversion was improperly performed while storing the result to the 13231target 13232operand. Since this is an "explicit conversion" operator, the implicit 13233conversion should never be performed on the output. 13234 13235Fixed a problem with the CopyObject operator where a copy to an existing 13236named object did not always completely overwrite the existing object 13237stored 13238at name. Specifically, a buffer-to-buffer copy did not delete the 13239existing 13240buffer. 13241 13242Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13243and 13244structs for consistency. 13245 13246Code and Data Size: Current and previous core subsystem library sizes are 13247shown below. These are the code and data sizes for the acpica.lib 13248produced 13249by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13250any ACPI driver or OSPM code. The debug version of the code includes the 13251debug output trace mechanism and has a much larger code and data size. 13252Note 13253that these values will vary depending on the efficiency of the compiler 13254and 13255the compiler options used during generation. 13256 13257 Previous Release: 13258 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13259 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13260 Current Release: (Same sizes) 13261 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13262 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13263 13264 132652) iASL Compiler/Disassembler: 13266 13267The compiler now emits a warning if an attempt is made to generate a 64- 13268bit 13269integer constant from within a 32-bit ACPI table (Revision < 2). The 13270integer 13271is truncated to 32 bits. 13272 13273Fixed a problem with large package objects: if the static length of the 13274package is greater than 255, the "variable length package" opcode is 13275emitted. Previously, this caused an error. This requires an update to the 13276ACPI spec, since it currently (incorrectly) states that packages larger 13277than 13278255 elements are not allowed. 13279 13280The disassembler now correctly handles variable length packages and 13281packages 13282larger than 255 elements. 13283 13284---------------------------------------- 1328508 April 2005. Summary of changes for version 20050408: 13286 132871) ACPI CA Core Subsystem: 13288 13289Fixed three cases in the interpreter where an "index" argument to an ASL 13290function was still (internally) 32 bits instead of the required 64 bits. 13291This was the Index argument to the Index, Mid, and Match operators. 13292 13293The "strupr" function is now permanently local (AcpiUtStrupr), since this 13294is 13295not a POSIX-defined function and not present in most kernel-level C 13296libraries. All references to the C library strupr function have been 13297removed 13298from the headers. 13299 13300Completed the deployment of static functions/prototypes. All prototypes 13301with 13302the static attribute have been moved from the headers to the owning C 13303file. 13304 13305Implemented an extract option (-e) for the AcpiBin utility (AML binary 13306utility). This option allows the utility to extract individual ACPI 13307tables 13308from the output of AcpiDmp. It provides the same functionality of the 13309acpixtract.pl perl script without the worry of setting the correct perl 13310options. AcpiBin runs on Windows and has not yet been generated/validated 13311in 13312the Linux/Unix environment (but should be soon). 13313 13314Updated and fixed the table dump option for AcpiBin (-d). This option 13315converts a single ACPI table to a hex/ascii file, similar to the output 13316of 13317AcpiDmp. 13318 13319Code and Data Size: Current and previous core subsystem library sizes are 13320shown below. These are the code and data sizes for the acpica.lib 13321produced 13322by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13323any ACPI driver or OSPM code. The debug version of the code includes the 13324debug output trace mechanism and has a much larger code and data size. 13325Note 13326that these values will vary depending on the efficiency of the compiler 13327and 13328the compiler options used during generation. 13329 13330 Previous Release: 13331 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13332 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13333 Current Release: 13334 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13335 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13336 13337 133382) iASL Compiler/Disassembler: 13339 13340Disassembler fix: Added a check to ensure that the table length found in 13341the 13342ACPI table header within the input file is not longer than the actual 13343input 13344file size. This indicates some kind of file or table corruption. 13345 13346---------------------------------------- 1334729 March 2005. Summary of changes for version 20050329: 13348 133491) ACPI CA Core Subsystem: 13350 13351An error is now generated if an attempt is made to create a Buffer Field 13352of 13353length zero (A CreateField with a length operand of zero.) 13354 13355The interpreter now issues a warning whenever executable code at the 13356module 13357level is detected during ACPI table load. This will give some idea of the 13358prevalence of this type of code. 13359 13360Implemented support for references to named objects (other than control 13361methods) within package objects. 13362 13363Enhanced package object output for the debug object. Package objects are 13364now 13365completely dumped, showing all elements. 13366 13367Enhanced miscellaneous object output for the debug object. Any object can 13368now be written to the debug object (for example, a device object can be 13369written, and the type of the object will be displayed.) 13370 13371The "static" qualifier has been added to all local functions across both 13372the 13373core subsystem and the iASL compiler. 13374 13375The number of "long" lines (> 80 chars) within the source has been 13376significantly reduced, by about 1/3. 13377 13378Cleaned up all header files to ensure that all CA/iASL functions are 13379prototyped (even static functions) and the formatting is consistent. 13380 13381Two new header files have been added, acopcode.h and acnames.h. 13382 13383Removed several obsolete functions that were no longer used. 13384 13385Code and Data Size: Current and previous core subsystem library sizes are 13386shown below. These are the code and data sizes for the acpica.lib 13387produced 13388by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13389any ACPI driver or OSPM code. The debug version of the code includes the 13390debug output trace mechanism and has a much larger code and data size. 13391Note 13392that these values will vary depending on the efficiency of the compiler 13393and 13394the compiler options used during generation. 13395 13396 Previous Release: 13397 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13398 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13399 Current Release: 13400 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13401 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13402 13403 13404 134052) iASL Compiler/Disassembler: 13406 13407Fixed a problem with the resource descriptor generation/support. For the 13408ResourceSourceIndex and the ResourceSource fields, both must be present, 13409or 13410both must be not present - can't have one without the other. 13411 13412The compiler now returns non-zero from the main procedure if any errors 13413have 13414occurred during the compilation. 13415 13416 13417---------------------------------------- 1341809 March 2005. Summary of changes for version 20050309: 13419 134201) ACPI CA Core Subsystem: 13421 13422The string-to-buffer implicit conversion code has been modified again 13423after 13424a change to the ACPI specification. In order to match the behavior of 13425the 13426other major ACPI implementation, the target buffer is no longer truncated 13427if 13428the source string is smaller than an existing target buffer. This change 13429requires an update to the ACPI spec, and should eliminate the recent 13430AE_AML_BUFFER_LIMIT issues. 13431 13432The "implicit return" support was rewritten to a new algorithm that 13433solves 13434the general case. Rather than attempt to determine when a method is about 13435to 13436exit, the result of every ASL operator is saved momentarily until the 13437very 13438next ASL operator is executed. Therefore, no matter how the method exits, 13439there will always be a saved implicit return value. This feature is only 13440enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13441eliminate 13442AE_AML_NO_RETURN_VALUE errors when enabled. 13443 13444Implemented implicit conversion support for the predicate (operand) of 13445the 13446If, Else, and While operators. String and Buffer arguments are 13447automatically 13448converted to Integers. 13449 13450Changed the string-to-integer conversion behavior to match the new ACPI 13451errata: "If no integer object exists, a new integer is created. The ASCII 13452string is interpreted as a hexadecimal constant. Each string character is 13453interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13454with the first character as the most significant digit, and ending with 13455the 13456first non-hexadecimal character or end-of-string." This means that the 13457first 13458non-hex character terminates the conversion and this is the code that was 13459changed. 13460 13461Fixed a problem where the ObjectType operator would fail (fault) when 13462used 13463on an Index of a Package which pointed to a null package element. The 13464operator now properly returns zero (Uninitialized) in this case. 13465 13466Fixed a problem where the While operator used excessive memory by not 13467properly popping the result stack during execution. There was no memory 13468leak 13469after execution, however. (Code provided by Valery Podrezov.) 13470 13471Fixed a problem where references to control methods within Package 13472objects 13473caused the method to be invoked, instead of producing a reference object 13474pointing to the method. 13475 13476Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13477to 13478improve performance and reduce code size. (Code provided by Alexey 13479Starikovskiy.) 13480 13481Code and Data Size: Current and previous core subsystem library sizes are 13482shown below. These are the code and data sizes for the acpica.lib 13483produced 13484by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13485any ACPI driver or OSPM code. The debug version of the code includes the 13486debug output trace mechanism and has a much larger code and data size. 13487Note 13488that these values will vary depending on the efficiency of the compiler 13489and 13490the compiler options used during generation. 13491 13492 Previous Release: 13493 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13494 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13495 Current Release: 13496 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13497 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13498 13499 135002) iASL Compiler/Disassembler: 13501 13502Fixed a problem with the Return operator with no arguments. Since the AML 13503grammar for the byte encoding requires an operand for the Return opcode, 13504the 13505compiler now emits a Return(Zero) for this case. An ACPI specification 13506update has been written for this case. 13507 13508For tables other than the DSDT, namepath optimization is automatically 13509disabled. This is because SSDTs can be loaded anywhere in the namespace, 13510the 13511compiler has no knowledge of where, and thus cannot optimize namepaths. 13512 13513Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13514inadvertently omitted from the ACPI specification, and will require an 13515update to the spec. 13516 13517The source file scan for ASCII characters is now optional (-a). This 13518change 13519was made because some vendors place non-ascii characters within comments. 13520However, the scan is simply a brute-force byte compare to ensure all 13521characters in the file are in the range 0x00 to 0x7F. 13522 13523Fixed a problem with the CondRefOf operator where the compiler was 13524inappropriately checking for the existence of the target. Since the point 13525of 13526the operator is to check for the existence of the target at run-time, the 13527compiler no longer checks for the target existence. 13528 13529Fixed a problem where errors generated from the internal AML interpreter 13530during constant folding were not handled properly, causing a fault. 13531 13532Fixed a problem with overly aggressive range checking for the Stall 13533operator. The valid range (max 255) is now only checked if the operand is 13534of 13535type Integer. All other operand types cannot be statically checked. 13536 13537Fixed a problem where control method references within the RefOf, 13538DeRefOf, 13539and ObjectType operators were not treated properly. They are now treated 13540as 13541actual references, not method invocations. 13542 13543Fixed and enhanced the "list namespace" option (-ln). This option was 13544broken 13545a number of releases ago. 13546 13547Improved error handling for the Field, IndexField, and BankField 13548operators. 13549The compiler now cleanly reports and recovers from errors in the field 13550component (FieldUnit) list. 13551 13552Fixed a disassembler problem where the optional ResourceDescriptor fields 13553TRS and TTP were not always handled correctly. 13554 13555Disassembler - Comments in output now use "//" instead of "/*" 13556 13557---------------------------------------- 1355828 February 2005. Summary of changes for version 20050228: 13559 135601) ACPI CA Core Subsystem: 13561 13562Fixed a problem where the result of an Index() operator (an object 13563reference) must increment the reference count on the target object for 13564the 13565life of the object reference. 13566 13567Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13568Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13569WordSpace 13570resource descriptors. 13571 13572Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13573Space Descriptor" string, indicating interpreter support for the 13574descriptors 13575above. 13576 13577Implemented header support for the new ACPI 3.0 FADT flag bits. 13578 13579Implemented header support for the new ACPI 3.0 PCI Express bits for the 13580PM1 13581status/enable registers. 13582 13583Updated header support for the MADT processor local Apic struct and MADT 13584platform interrupt source struct for new ACPI 3.0 fields. 13585 13586Implemented header support for the SRAT and SLIT ACPI tables. 13587 13588Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13589flag 13590at runtime. 13591 13592Code and Data Size: Current and previous core subsystem library sizes are 13593shown below. These are the code and data sizes for the acpica.lib 13594produced 13595by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13596any ACPI driver or OSPM code. The debug version of the code includes the 13597debug output trace mechanism and has a much larger code and data size. 13598Note 13599that these values will vary depending on the efficiency of the compiler 13600and 13601the compiler options used during generation. 13602 13603 Previous Release: 13604 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13605 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13606 Current Release: 13607 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13608 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13609 13610 136112) iASL Compiler/Disassembler: 13612 13613Fixed a problem with the internal 64-bit String-to-integer conversion 13614with 13615strings less than two characters long. 13616 13617Fixed a problem with constant folding where the result of the Index() 13618operator can not be considered a constant. This means that Index() cannot 13619be 13620a type3 opcode and this will require an update to the ACPI specification. 13621 13622Disassembler: Implemented support for the TTP, MTP, and TRS resource 13623descriptor fields. These fields were inadvertently ignored and not output 13624in 13625the disassembly of the resource descriptor. 13626 13627 13628 ---------------------------------------- 1362911 February 2005. Summary of changes for version 20050211: 13630 136311) ACPI CA Core Subsystem: 13632 13633Implemented ACPI 3.0 support for implicit conversion within the Match() 13634operator. MatchObjects can now be of type integer, buffer, or string 13635instead 13636of just type integer. Package elements are implicitly converted to the 13637type 13638of the MatchObject. This change aligns the behavior of Match() with the 13639behavior of the other logical operators (LLess(), etc.) It also requires 13640an 13641errata change to the ACPI specification as this support was intended for 13642ACPI 3.0, but was inadvertently omitted. 13643 13644Fixed a problem with the internal implicit "to buffer" conversion. 13645Strings 13646that are converted to buffers will cause buffer truncation if the string 13647is 13648smaller than the target buffer. Integers that are converted to buffers 13649will 13650not cause buffer truncation, only zero extension (both as per the ACPI 13651spec.) The problem was introduced when code was added to truncate the 13652buffer, but this should not be performed in all cases, only the string 13653case. 13654 13655Fixed a problem with the Buffer and Package operators where the 13656interpreter 13657would get confused if two such operators were used as operands to an ASL 13658operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13659stack was not being popped after the execution of these operators, 13660resulting 13661in an AE_NO_RETURN_VALUE exception. 13662 13663Fixed a problem with constructs of the form Store(Index(...),...). The 13664reference object returned from Index was inadvertently resolved to an 13665actual 13666value. This problem was introduced in version 20050114 when the behavior 13667of 13668Store() was modified to restrict the object types that can be used as the 13669source operand (to match the ACPI specification.) 13670 13671Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13672 13673Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13674 13675Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13676 13677Code and Data Size: Current and previous core subsystem library sizes are 13678shown below. These are the code and data sizes for the acpica.lib 13679produced 13680by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13681any ACPI driver or OSPM code. The debug version of the code includes the 13682debug output trace mechanism and has a much larger code and data size. 13683Note 13684that these values will vary depending on the efficiency of the compiler 13685and 13686the compiler options used during generation. 13687 13688 Previous Release: 13689 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13690 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13691 Current Release: 13692 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13693 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13694 13695 136962) iASL Compiler/Disassembler: 13697 13698Fixed a code generation problem in the constant folding optimization code 13699where incorrect code was generated if a constant was reduced to a buffer 13700object (i.e., a reduced type 5 opcode.) 13701 13702Fixed a typechecking problem for the ToBuffer operator. Caused by an 13703incorrect return type in the internal opcode information table. 13704 13705---------------------------------------- 1370625 January 2005. Summary of changes for version 20050125: 13707 137081) ACPI CA Core Subsystem: 13709 13710Fixed a recently introduced problem with the Global Lock where the 13711underlying semaphore was not created. This problem was introduced in 13712version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13713Acquire() operation on _GL. 13714 13715The local object cache is now optional, and is disabled by default. Both 13716AcpiExec and the iASL compiler enable the cache because they run in user 13717mode and this enhances their performance. #define 13718ACPI_ENABLE_OBJECT_CACHE 13719to enable the local cache. 13720 13721Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13722the 13723optional "implicit return" support where an error was returned if no 13724return 13725object was expected, but one was implicitly returned. AE_OK is now 13726returned 13727in this case and the implicitly returned object is deleted. 13728AcpiUtEvaluateObject is only occasionally used, and only to execute 13729reserved 13730methods such as _STA and _INI where the return type is known up front. 13731 13732Fixed a few issues with the internal convert-to-integer code. It now 13733returns 13734an error if an attempt is made to convert a null string, a string of only 13735blanks/tabs, or a zero-length buffer. This affects both implicit 13736conversion 13737and explicit conversion via the ToInteger() operator. 13738 13739The internal debug code in AcpiUtAcquireMutex has been commented out. It 13740is 13741not needed for normal operation and should increase the performance of 13742the 13743entire subsystem. The code remains in case it is needed for debug 13744purposes 13745again. 13746 13747The AcpiExec source and makefile are included in the Unix/Linux package 13748for 13749the first time. 13750 13751Code and Data Size: Current and previous core subsystem library sizes are 13752shown below. These are the code and data sizes for the acpica.lib 13753produced 13754by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13755any ACPI driver or OSPM code. The debug version of the code includes the 13756debug output trace mechanism and has a much larger code and data size. 13757Note 13758that these values will vary depending on the efficiency of the compiler 13759and 13760the compiler options used during generation. 13761 13762 Previous Release: 13763 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13764 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13765 Current Release: 13766 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13767 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13768 137692) iASL Compiler/Disassembler: 13770 13771Switch/Case support: A warning is now issued if the type of the Switch 13772value 13773cannot be determined at compile time. For example, Switch(Arg0) will 13774generate the warning, and the type is assumed to be an integer. As per 13775the 13776ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13777the 13778warning. 13779 13780Switch/Case support: Implemented support for buffer and string objects as 13781the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13782buffers and strings. 13783 13784Switch/Case support: The emitted code for the LEqual() comparisons now 13785uses 13786the switch value as the first operand, not the second. The case value is 13787now 13788the second operand, and this allows the case value to be implicitly 13789converted to the type of the switch value, not the other way around. 13790 13791Switch/Case support: Temporary variables are now emitted immediately 13792within 13793the control method, not at the global level. This means that there are 13794now 1379536 temps available per-method, not 36 temps per-module as was the case 13796with 13797the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13798 13799---------------------------------------- 1380014 January 2005. Summary of changes for version 20050114: 13801 13802Added 2005 copyright to all module headers. This affects every module in 13803the core subsystem, iASL compiler, and the utilities. 13804 138051) ACPI CA Core Subsystem: 13806 13807Fixed an issue with the String-to-Buffer conversion code where the string 13808null terminator was not included in the buffer after conversion, but 13809there 13810is existing ASL that assumes the string null terminator is included. This 13811is 13812the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13813introduced in the previous version when the code was updated to correctly 13814set the converted buffer size as per the ACPI specification. The ACPI 13815spec 13816is ambiguous and will be updated to specify that the null terminator must 13817be 13818included in the converted buffer. This also affects the ToBuffer() ASL 13819operator. 13820 13821Fixed a problem with the Mid() ASL/AML operator where it did not work 13822correctly on Buffer objects. Newly created sub-buffers were not being 13823marked 13824as initialized. 13825 13826 13827Fixed a problem in AcpiTbFindTable where incorrect string compares were 13828performed on the OemId and OemTableId table header fields. These fields 13829are 13830not null terminated, so strncmp is now used instead of strcmp. 13831 13832Implemented a restriction on the Store() ASL/AML operator to align the 13833behavior with the ACPI specification. Previously, any object could be 13834used 13835as the source operand. Now, the only objects that may be used are 13836Integers, 13837Buffers, Strings, Packages, Object References, and DDB Handles. If 13838necessary, the original behavior can be restored by enabling the 13839EnableInterpreterSlack flag. 13840 13841Enhanced the optional "implicit return" support to allow an implicit 13842return 13843value from methods that are invoked externally via the AcpiEvaluateObject 13844interface. This enables implicit returns from the _STA and _INI methods, 13845for example. 13846 13847Changed the Revision() ASL/AML operator to return the current version of 13848the 13849AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13850returned 13851the supported ACPI version (This is the function of the _REV method). 13852 13853Updated the _REV predefined method to return the currently supported 13854version 13855of ACPI, now 3. 13856 13857Implemented batch mode option for the AcpiExec utility (-b). 13858 13859Code and Data Size: Current and previous core subsystem library sizes are 13860shown below. These are the code and data sizes for the acpica.lib 13861produced 13862by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13863any ACPI driver or OSPM code. The debug version of the code includes the 13864debug output trace mechanism and has a much larger code and data size. 13865Note 13866that these values will vary depending on the efficiency of the compiler 13867and 13868the compiler options used during generation. 13869 13870 Previous Release: 13871 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13872 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13873 Current Release: 13874 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13875 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13876 13877---------------------------------------- 1387810 December 2004. Summary of changes for version 20041210: 13879 13880ACPI 3.0 support is nearing completion in both the iASL compiler and the 13881ACPI CA core subsystem. 13882 138831) ACPI CA Core Subsystem: 13884 13885Fixed a problem in the ToDecimalString operator where the resulting 13886string 13887length was incorrectly calculated. The length is now calculated exactly, 13888eliminating incorrect AE_STRING_LIMIT exceptions. 13889 13890Fixed a problem in the ToHexString operator to allow a maximum 200 13891character 13892string to be produced. 13893 13894Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13895copy 13896routine where the length of the resulting buffer was not truncated to the 13897new size (if the target buffer already existed). 13898 13899Code and Data Size: Current and previous core subsystem library sizes are 13900shown below. These are the code and data sizes for the acpica.lib 13901produced 13902by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13903any ACPI driver or OSPM code. The debug version of the code includes the 13904debug output trace mechanism and has a much larger code and data size. 13905Note 13906that these values will vary depending on the efficiency of the compiler 13907and 13908the compiler options used during generation. 13909 13910 Previous Release: 13911 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13912 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13913 Current Release: 13914 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13915 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13916 13917 139182) iASL Compiler/Disassembler: 13919 13920Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13921ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13922Includes support in the disassembler. 13923 13924Implemented support for the new (ACPI 3.0) parameter to the Register 13925macro, 13926AccessSize. 13927 13928Fixed a problem where the _HE resource name for the Interrupt macro was 13929referencing bit 0 instead of bit 1. 13930 13931Implemented check for maximum 255 interrupts in the Interrupt macro. 13932 13933Fixed a problem with the predefined resource descriptor names where 13934incorrect AML code was generated if the offset within the resource buffer 13935was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13936but did not update the surrounding package lengths. 13937 13938Changes to the Dma macro: All channels within the channel list must be 13939in 13940the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13941optional (default is BusMaster). 13942 13943Implemented check for maximum 7 data bytes for the VendorShort macro. 13944 13945The ReadWrite parameter is now optional for the Memory32 and similar 13946macros. 13947 13948---------------------------------------- 1394903 December 2004. Summary of changes for version 20041203: 13950 139511) ACPI CA Core Subsystem: 13952 13953The low-level field insertion/extraction code (exfldio) has been 13954completely 13955rewritten to eliminate unnecessary complexity, bugs, and boundary 13956conditions. 13957 13958Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13959ToDecimalString 13960operators where the input operand could be inadvertently deleted if no 13961conversion was necessary (e.g., if the input to ToInteger was an Integer 13962object.) 13963 13964Fixed a problem with the ToDecimalString and ToHexString where an 13965incorrect 13966exception code was returned if the resulting string would be > 200 chars. 13967AE_STRING_LIMIT is now returned. 13968 13969Fixed a problem with the Concatenate operator where AE_OK was always 13970returned, even if the operation failed. 13971 13972Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13973semaphores to be allocated. 13974 13975Code and Data Size: Current and previous core subsystem library sizes are 13976shown below. These are the code and data sizes for the acpica.lib 13977produced 13978by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13979any ACPI driver or OSPM code. The debug version of the code includes the 13980debug output trace mechanism and has a much larger code and data size. 13981Note 13982that these values will vary depending on the efficiency of the compiler 13983and 13984the compiler options used during generation. 13985 13986 Previous Release: 13987 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13988 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13989 Current Release: 13990 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13991 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13992 13993 139942) iASL Compiler/Disassembler: 13995 13996Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13997recently introduced in 20041119. 13998 13999Fixed a problem with the ToUUID macro where the upper nybble of each 14000buffer 14001byte was inadvertently set to zero. 14002 14003---------------------------------------- 1400419 November 2004. Summary of changes for version 20041119: 14005 140061) ACPI CA Core Subsystem: 14007 14008Fixed a problem in the internal ConvertToInteger routine where new 14009integers 14010were not truncated to 32 bits for 32-bit ACPI tables. This routine 14011converts 14012buffers and strings to integers. 14013 14014Implemented support to store a value to an Index() on a String object. 14015This 14016is an ACPI 2.0 feature that had not yet been implemented. 14017 14018Implemented new behavior for storing objects to individual package 14019elements 14020(via the Index() operator). The previous behavior was to invoke the 14021implicit 14022conversion rules if an object was already present at the index. The new 14023behavior is to simply delete any existing object and directly store the 14024new 14025object. Although the ACPI specification seems unclear on this subject, 14026other 14027ACPI implementations behave in this manner. (This is the root of the 14028AE_BAD_HEX_CONSTANT issue.) 14029 14030Modified the RSDP memory scan mechanism to support the extended checksum 14031for 14032ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14033RSDP signature is found with a valid checksum. 14034 14035Code and Data Size: Current and previous core subsystem library sizes are 14036shown below. These are the code and data sizes for the acpica.lib 14037produced 14038by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14039any ACPI driver or OSPM code. The debug version of the code includes the 14040debug output trace mechanism and has a much larger code and data size. 14041Note 14042that these values will vary depending on the efficiency of the compiler 14043and 14044the compiler options used during generation. 14045 14046 Previous Release: 14047 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14048 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14049 Current Release: 14050 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14051 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14052 14053 140542) iASL Compiler/Disassembler: 14055 14056Fixed a missing semicolon in the aslcompiler.y file. 14057 14058---------------------------------------- 1405905 November 2004. Summary of changes for version 20041105: 14060 140611) ACPI CA Core Subsystem: 14062 14063Implemented support for FADT revision 2. This was an interim table 14064(between 14065ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14066 14067Implemented optional support to allow uninitialized LocalX and ArgX 14068variables in a control method. The variables are initialized to an 14069Integer 14070object with a value of zero. This support is enabled by setting the 14071AcpiGbl_EnableInterpreterSlack flag to TRUE. 14072 14073Implemented support for Integer objects for the SizeOf operator. Either 140744 14075or 8 is returned, depending on the current integer size (32-bit or 64- 14076bit, 14077depending on the parent table revision). 14078 14079Fixed a problem in the implementation of the SizeOf and ObjectType 14080operators 14081where the operand was resolved to a value too early, causing incorrect 14082return values for some objects. 14083 14084Fixed some possible memory leaks during exceptional conditions. 14085 14086Code and Data Size: Current and previous core subsystem library sizes are 14087shown below. These are the code and data sizes for the acpica.lib 14088produced 14089by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14090any ACPI driver or OSPM code. The debug version of the code includes the 14091debug output trace mechanism and has a much larger code and data size. 14092Note 14093that these values will vary depending on the efficiency of the compiler 14094and 14095the compiler options used during generation. 14096 14097 Previous Release: 14098 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14099 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14100 Current Release: 14101 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14102 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14103 14104 141052) iASL Compiler/Disassembler: 14106 14107Implemented support for all ACPI 3.0 reserved names and methods. 14108 14109Implemented all ACPI 3.0 grammar elements in the front-end, including 14110support for semicolons. 14111 14112Implemented the ACPI 3.0 Function() and ToUUID() macros 14113 14114Fixed a problem in the disassembler where a Scope() operator would not be 14115emitted properly if the target of the scope was in another table. 14116 14117---------------------------------------- 1411815 October 2004. Summary of changes for version 20041015: 14119 14120Note: ACPI CA is currently undergoing an in-depth and complete formal 14121evaluation to test/verify the following areas. Other suggestions are 14122welcome. This will result in an increase in the frequency of releases and 14123the number of bug fixes in the next few months. 14124 - Functional tests for all ASL/AML operators 14125 - All implicit/explicit type conversions 14126 - Bit fields and operation regions 14127 - 64-bit math support and 32-bit-only "truncated" math support 14128 - Exceptional conditions, both compiler and interpreter 14129 - Dynamic object deletion and memory leaks 14130 - ACPI 3.0 support when implemented 14131 - External interfaces to the ACPI subsystem 14132 14133 141341) ACPI CA Core Subsystem: 14135 14136Fixed two alignment issues on 64-bit platforms - within debug statements 14137in 14138AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14139Address 14140field within the non-aligned ACPI generic address structure. 14141 14142Fixed a problem in the Increment and Decrement operators where incorrect 14143operand resolution could result in the inadvertent modification of the 14144original integer when the integer is passed into another method as an 14145argument and the arg is then incremented/decremented. 14146 14147Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14148bit 14149BCD number were truncated during conversion. 14150 14151Fixed a problem in the ToDecimal operator where the length of the 14152resulting 14153string could be set incorrectly too long if the input operand was a 14154Buffer 14155object. 14156 14157Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14158(0) 14159within a buffer would prematurely terminate a compare between buffer 14160objects. 14161 14162Added a check for string overflow (>200 characters as per the ACPI 14163specification) during the Concatenate operator with two string operands. 14164 14165Code and Data Size: Current and previous core subsystem library sizes are 14166shown below. These are the code and data sizes for the acpica.lib 14167produced 14168by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14169any ACPI driver or OSPM code. The debug version of the code includes the 14170debug output trace mechanism and has a much larger code and data size. 14171Note 14172that these values will vary depending on the efficiency of the compiler 14173and 14174the compiler options used during generation. 14175 14176 Previous Release: 14177 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14178 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14179 Current Release: 14180 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14181 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14182 14183 14184 141852) iASL Compiler/Disassembler: 14186 14187Allow the use of the ObjectType operator on uninitialized Locals and Args 14188(returns 0 as per the ACPI specification). 14189 14190Fixed a problem where the compiler would fault if there was a syntax 14191error 14192in the FieldName of all of the various CreateXXXField operators. 14193 14194Disallow the use of lower case letters within the EISAID macro, as per 14195the 14196ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14197Where 14198U is an uppercase letter and N is a hex digit. 14199 14200 14201---------------------------------------- 1420206 October 2004. Summary of changes for version 20041006: 14203 142041) ACPI CA Core Subsystem: 14205 14206Implemented support for the ACPI 3.0 Timer operator. This ASL function 14207implements a 64-bit timer with 100 nanosecond granularity. 14208 14209Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14210implement the ACPI 3.0 Timer operator. This allows the host OS to 14211implement 14212the timer with the best clock available. Also, it keeps the core 14213subsystem 14214out of the clock handling business, since the host OS (usually) performs 14215this function. 14216 14217Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14218functions use a 64-bit address which is part of the packed ACPI Generic 14219Address Structure. Since the structure is non-aligned, the alignment 14220macros 14221are now used to extract the address to a local variable before use. 14222 14223Fixed a problem where the ToInteger operator assumed all input strings 14224were 14225hexadecimal. The operator now handles both decimal strings and hex 14226strings 14227(prefixed with "0x"). 14228 14229Fixed a problem where the string length in the string object created as a 14230result of the internal ConvertToString procedure could be incorrect. This 14231potentially affected all implicit conversions and also the 14232ToDecimalString 14233and ToHexString operators. 14234 14235Fixed two problems in the ToString operator. If the length parameter was 14236zero, an incorrect string object was created and the value of the input 14237length parameter was inadvertently changed from zero to Ones. 14238 14239Fixed a problem where the optional ResourceSource string in the 14240ExtendedIRQ 14241resource macro was ignored. 14242 14243Simplified the interfaces to the internal division functions, reducing 14244code 14245size and complexity. 14246 14247Code and Data Size: Current and previous core subsystem library sizes are 14248shown below. These are the code and data sizes for the acpica.lib 14249produced 14250by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14251any ACPI driver or OSPM code. The debug version of the code includes the 14252debug output trace mechanism and has a much larger code and data size. 14253Note 14254that these values will vary depending on the efficiency of the compiler 14255and 14256the compiler options used during generation. 14257 14258 Previous Release: 14259 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14260 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14261 Current Release: 14262 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14263 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14264 14265 142662) iASL Compiler/Disassembler: 14267 14268Implemented support for the ACPI 3.0 Timer operator. 14269 14270Fixed a problem where the Default() operator was inadvertently ignored in 14271a 14272Switch/Case block. This was a problem in the translation of the Switch 14273statement to If...Else pairs. 14274 14275Added support to allow a standalone Return operator, with no parentheses 14276(or 14277operands). 14278 14279Fixed a problem with code generation for the ElseIf operator where the 14280translated Else...If parse tree was improperly constructed leading to the 14281loss of some code. 14282 14283---------------------------------------- 1428422 September 2004. Summary of changes for version 20040922: 14285 142861) ACPI CA Core Subsystem: 14287 14288Fixed a problem with the implementation of the LNot() operator where 14289"Ones" 14290was not returned for the TRUE case. Changed the code to return Ones 14291instead 14292of (!Arg) which was usually 1. This change affects iASL constant folding 14293for 14294this operator also. 14295 14296Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14297not 14298initialized properly -- Now zero the entire buffer in this case where the 14299buffer already exists. 14300 14301Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14302Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14303related code considerably. This will require changes/updates to all OS 14304interface layers (OSLs.) 14305 14306Implemented a new external interface, AcpiInstallExceptionHandler, to 14307allow 14308a system exception handler to be installed. This handler is invoked upon 14309any 14310run-time exception that occurs during control method execution. 14311 14312Added support for the DSDT in AcpiTbFindTable. This allows the 14313DataTableRegion() operator to access the local copy of the DSDT. 14314 14315Code and Data Size: Current and previous core subsystem library sizes are 14316shown below. These are the code and data sizes for the acpica.lib 14317produced 14318by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14319any ACPI driver or OSPM code. The debug version of the code includes the 14320debug output trace mechanism and has a much larger code and data size. 14321Note 14322that these values will vary depending on the efficiency of the compiler 14323and 14324the compiler options used during generation. 14325 14326 Previous Release: 14327 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14328 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14329 Current Release: 14330 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14331 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14332 14333 143342) iASL Compiler/Disassembler: 14335 14336Fixed a problem with constant folding and the LNot operator. LNot was 14337returning 1 in the TRUE case, not Ones as per the ACPI specification. 14338This 14339could result in the generation of an incorrect folded/reduced constant. 14340 14341End-Of-File is now allowed within a "//"-style comment. A parse error no 14342longer occurs if such a comment is at the very end of the input ASL 14343source 14344file. 14345 14346Implemented the "-r" option to override the Revision in the table header. 14347The initial use of this option will be to simplify the evaluation of the 14348AML 14349interpreter by allowing a single ASL source module to be compiled for 14350either 1435132-bit or 64-bit integers. 14352 14353 14354---------------------------------------- 1435527 August 2004. Summary of changes for version 20040827: 14356 143571) ACPI CA Core Subsystem: 14358 14359- Implemented support for implicit object conversion in the non-numeric 14360logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14361and 14362LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14363the second operand is implicitly converted on the fly to match the type 14364of 14365the first operand. For example: 14366 14367 LEqual (Source1, Source2) 14368 14369Source1 and Source2 must each evaluate to an integer, a string, or a 14370buffer. 14371The data type of Source1 dictates the required type of Source2. Source2 14372is 14373implicitly converted if necessary to match the type of Source1. 14374 14375- Updated and corrected the behavior of the string conversion support. 14376The 14377rules concerning conversion of buffers to strings (according to the ACPI 14378specification) are as follows: 14379 14380ToDecimalString - explicit byte-wise conversion of buffer to string of 14381decimal values (0-255) separated by commas. ToHexString - explicit byte- 14382wise 14383conversion of buffer to string of hex values (0-FF) separated by commas. 14384ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14385byte 14386copy with no transform except NULL terminated. Any other implicit buffer- 14387to- 14388string conversion - byte-wise conversion of buffer to string of hex 14389values 14390(0-FF) separated by spaces. 14391 14392- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14393 14394- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14395was 14396one byte too short in the case of a node in the root scope. This could 14397cause a fault during debug output. 14398 14399- Code and Data Size: Current and previous core subsystem library sizes 14400are 14401shown below. These are the code and data sizes for the acpica.lib 14402produced 14403by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14404any ACPI driver or OSPM code. The debug version of the code includes the 14405debug output trace mechanism and has a much larger code and data size. 14406Note 14407that these values will vary depending on the efficiency of the compiler 14408and 14409the compiler options used during generation. 14410 14411 Previous Release: 14412 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14413 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14414 Current Release: 14415 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14416 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14417 14418 144192) iASL Compiler/Disassembler: 14420 14421- Fixed a Linux generation error. 14422 14423 14424---------------------------------------- 1442516 August 2004. Summary of changes for version 20040816: 14426 144271) ACPI CA Core Subsystem: 14428 14429Designed and implemented support within the AML interpreter for the so- 14430called "implicit return". This support returns the result of the last 14431ASL 14432operation within a control method, in the absence of an explicit Return() 14433operator. A few machines depend on this behavior, even though it is not 14434explicitly supported by the ASL language. It is optional support that 14435can 14436be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14437 14438Removed support for the PCI_Config address space from the internal low 14439level 14440hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14441support was not used internally, and would not work correctly anyway 14442because 14443the PCI bus number and segment number were not supported. There are 14444separate interfaces for PCI configuration space access because of the 14445unique 14446interface. 14447 14448Code and Data Size: Current and previous core subsystem library sizes are 14449shown below. These are the code and data sizes for the acpica.lib 14450produced 14451by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14452any ACPI driver or OSPM code. The debug version of the code includes the 14453debug output trace mechanism and has a much larger code and data size. 14454Note 14455that these values will vary depending on the efficiency of the compiler 14456and 14457the compiler options used during generation. 14458 14459 Previous Release: 14460 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14461 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14462 Current Release: 14463 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14464 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14465 14466 144672) iASL Compiler/Disassembler: 14468 14469Fixed a problem where constants in ASL expressions at the root level (not 14470within a control method) could be inadvertently truncated during code 14471generation. This problem was introduced in the 20040715 release. 14472 14473 14474---------------------------------------- 1447515 July 2004. Summary of changes for version 20040715: 14476 144771) ACPI CA Core Subsystem: 14478 14479Restructured the internal HW GPE interfaces to pass/track the current 14480state 14481of interrupts (enabled/disabled) in order to avoid possible deadlock and 14482increase flexibility of the interfaces. 14483 14484Implemented a "lexicographical compare" for String and Buffer objects 14485within 14486the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14487- 14488as per further clarification to the ACPI specification. Behavior is 14489similar 14490to C library "strcmp". 14491 14492Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14493external function. In the 32-bit non-debug case, the stack use has been 14494reduced from 168 bytes to 32 bytes. 14495 14496Deployed a new run-time configuration flag, 14497AcpiGbl_EnableInterpreterSlack, 14498whose purpose is to allow the AML interpreter to forgive certain bad AML 14499constructs. Default setting is FALSE. 14500 14501Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14502IO 14503support code. If enabled, it allows field access to go beyond the end of 14504a 14505region definition if the field is within the region length rounded up to 14506the 14507next access width boundary (a common coding error.) 14508 14509Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14510ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14511these 14512symbols are lowercase by the latest version of the AcpiSrc tool. 14513 14514The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14515rename "Register" to simply "Reg" to prevent certain compilers from 14516complaining. 14517 14518Code and Data Size: Current and previous core subsystem library sizes are 14519shown below. These are the code and data sizes for the acpica.lib 14520produced 14521by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14522any ACPI driver or OSPM code. The debug version of the code includes the 14523debug output trace mechanism and has a much larger code and data size. 14524Note 14525that these values will vary depending on the efficiency of the compiler 14526and 14527the compiler options used during generation. 14528 14529 Previous Release: 14530 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14531 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14532 Current Release: 14533 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14534 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14535 14536 145372) iASL Compiler/Disassembler: 14538 14539Implemented full support for Package objects within the Case() operator. 14540Note: The Break() operator is currently not supported within Case blocks 14541(TermLists) as there is some question about backward compatibility with 14542ACPI 145431.0 interpreters. 14544 14545 14546Fixed a problem where complex terms were not supported properly within 14547the 14548Switch() operator. 14549 14550Eliminated extraneous warning for compiler-emitted reserved names of the 14551form "_T_x". (Used in Switch/Case operators.) 14552 14553Eliminated optimization messages for "_T_x" objects and small constants 14554within the DefinitionBlock operator. 14555 14556 14557---------------------------------------- 1455815 June 2004. Summary of changes for version 20040615: 14559 145601) ACPI CA Core Subsystem: 14561 14562Implemented support for Buffer and String objects (as per ACPI 2.0) for 14563the 14564following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14565LLessEqual. 14566 14567All directory names in the entire source package are lower case, as they 14568were in earlier releases. 14569 14570Implemented "Disassemble" command in the AML debugger that will 14571disassemble 14572a single control method. 14573 14574Code and Data Size: Current and previous core subsystem library sizes are 14575shown below. These are the code and data sizes for the acpica.lib 14576produced 14577by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14578any ACPI driver or OSPM code. The debug version of the code includes the 14579debug output trace mechanism and has a much larger code and data size. 14580Note 14581that these values will vary depending on the efficiency of the compiler 14582and 14583the compiler options used during generation. 14584 14585 Previous Release: 14586 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14587 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14588 14589 Current Release: 14590 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14591 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14592 14593 145942) iASL Compiler/Disassembler: 14595 14596Implemented support for Buffer and String objects (as per ACPI 2.0) for 14597the 14598following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14599LLessEqual. 14600 14601All directory names in the entire source package are lower case, as they 14602were in earlier releases. 14603 14604Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14605not found. 14606 14607Fixed an issue with the Windows version of the compiler where later 14608versions 14609of Windows place the FADT in the registry under the name "FADT" and not 14610"FACP" as earlier versions did. This applies when using the -g or - 14611d<nofilename> options. The compiler now looks for both strings as 14612necessary. 14613 14614Fixed a problem with compiler namepath optimization where a namepath 14615within 14616the Scope() operator could not be optimized if the namepath was a subpath 14617of 14618the current scope path. 14619 14620---------------------------------------- 1462127 May 2004. Summary of changes for version 20040527: 14622 146231) ACPI CA Core Subsystem: 14624 14625Completed a new design and implementation for EBDA (Extended BIOS Data 14626Area) 14627support in the RSDP scan code. The original code improperly scanned for 14628the 14629EBDA by simply scanning from memory location 0 to 0x400. The correct 14630method 14631is to first obtain the EBDA pointer from within the BIOS data area, then 14632scan 1K of memory starting at the EBDA pointer. There appear to be few 14633if 14634any machines that place the RSDP in the EBDA, however. 14635 14636Integrated a fix for a possible fault during evaluation of BufferField 14637arguments. Obsolete code that was causing the problem was removed. 14638 14639Found and fixed a problem in the Field Support Code where data could be 14640corrupted on a bit field read that starts on an aligned boundary but does 14641not end on an aligned boundary. Merged the read/write "datum length" 14642calculation code into a common procedure. 14643 14644Rolled in a couple of changes to the FreeBSD-specific header. 14645 14646 14647Code and Data Size: Current and previous core subsystem library sizes are 14648shown below. These are the code and data sizes for the acpica.lib 14649produced 14650by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14651any ACPI driver or OSPM code. The debug version of the code includes the 14652debug output trace mechanism and has a much larger code and data size. 14653Note 14654that these values will vary depending on the efficiency of the compiler 14655and 14656the compiler options used during generation. 14657 14658 Previous Release: 14659 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14660 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14661 Current Release: 14662 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14663 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14664 14665 146662) iASL Compiler/Disassembler: 14667 14668Fixed a generation warning produced by some overly-verbose compilers for 14669a 1467064-bit constant. 14671 14672---------------------------------------- 1467314 May 2004. Summary of changes for version 20040514: 14674 146751) ACPI CA Core Subsystem: 14676 14677Fixed a problem where hardware GPE enable bits sometimes not set properly 14678during and after GPE method execution. Result of 04/27 changes. 14679 14680Removed extra "clear all GPEs" when sleeping/waking. 14681 14682Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14683AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14684to 14685the new AcpiEv* calls as appropriate. 14686 14687ACPI_OS_NAME was removed from the OS-specific headers. The default name 14688is 14689now "Microsoft Windows NT" for maximum compatibility. However this can 14690be 14691changed by modifying the acconfig.h file. 14692 14693Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14694traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14695 14696Run _INI methods on ThermalZone objects. This is against the ACPI 14697specification, but there is apparently ASL code in the field that has 14698these 14699_INI methods, and apparently "other" AML interpreters execute them. 14700 14701Performed a full 16/32/64 bit lint that resulted in some small changes. 14702 14703Added a sleep simulation command to the AML debugger to test sleep code. 14704 14705Code and Data Size: Current and previous core subsystem library sizes are 14706shown below. These are the code and data sizes for the acpica.lib 14707produced 14708by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14709any ACPI driver or OSPM code. The debug version of the code includes the 14710debug output trace mechanism and has a much larger code and data size. 14711Note 14712that these values will vary depending on the efficiency of the compiler 14713and 14714the compiler options used during generation. 14715 14716 Previous Release: 14717 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14718 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14719 Current Release: 14720 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14721 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14722 14723---------------------------------------- 1472427 April 2004. Summary of changes for version 20040427: 14725 147261) ACPI CA Core Subsystem: 14727 14728Completed a major overhaul of the GPE handling within ACPI CA. There are 14729now three types of GPEs: wake-only, runtime-only, and combination 14730wake/run. 14731The only GPEs allowed to be combination wake/run are for button-style 14732devices such as a control-method power button, control-method sleep 14733button, 14734or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14735not 14736referenced by any _PRW methods are marked for "runtime" and hardware 14737enabled. Any GPE that is referenced by a _PRW method is marked for 14738"wake" 14739(and disabled at runtime). However, at sleep time, only those GPEs that 14740have been specifically enabled for wake via the AcpiEnableGpe interface 14741will 14742actually be hardware enabled. 14743 14744A new external interface has been added, AcpiSetGpeType(), that is meant 14745to 14746be used by device drivers to force a GPE to a particular type. It will 14747be 14748especially useful for the drivers for the button devices mentioned above. 14749 14750Completed restructuring of the ACPI CA initialization sequence so that 14751default operation region handlers are installed before GPEs are 14752initialized 14753and the _PRW methods are executed. This will prevent errors when the 14754_PRW 14755methods attempt to access system memory or I/O space. 14756 14757GPE enable/disable no longer reads the GPE enable register. We now keep 14758the 14759enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14760thus no longer depend on the hardware to maintain these bits. 14761 14762Always clear the wake status and fixed/GPE status bits before sleep, even 14763for state S5. 14764 14765Improved the AML debugger output for displaying the GPE blocks and their 14766current status. 14767 14768Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14769where 14770x = 0,1,2,3,4. 14771 14772Fixed a problem where the physical address was incorrectly calculated 14773when 14774the Load() operator was used to directly load from an Operation Region 14775(vs. 14776loading from a Field object.) Also added check for minimum table length 14777for 14778this case. 14779 14780Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14781mutex release. 14782 14783Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14784consistency with the other fields returned. 14785 14786Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14787structure for each GPE in the system, so the size of this structure is 14788important. 14789 14790CPU stack requirement reduction: Cleaned up the method execution and 14791object 14792evaluation paths so that now a parameter structure is passed, instead of 14793copying the various method parameters over and over again. 14794 14795In evregion.c: Correctly exit and reenter the interpreter region if and 14796only if dispatching an operation region request to a user-installed 14797handler. 14798Do not exit/reenter when dispatching to a default handler (e.g., default 14799system memory or I/O handlers) 14800 14801 14802Notes for updating drivers for the new GPE support. The following 14803changes 14804must be made to ACPI-related device drivers that are attached to one or 14805more 14806GPEs: (This information will be added to the ACPI CA Programmer 14807Reference.) 14808 148091) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14810must 14811explicitly call AcpiEnableGpe. 148122) There is a new interface called AcpiSetGpeType. This should be called 14813before enabling the GPE. Also, this interface will automatically disable 14814the GPE if it is currently enabled. 148153) AcpiEnableGpe no longer supports a GPE type flag. 14816 14817Specific drivers that must be changed: 148181) EC driver: 14819 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14820AeGpeHandler, NULL); 14821 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14822 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14823 148242) Button Drivers (Power, Lid, Sleep): 14825Run _PRW method under parent device 14826If _PRW exists: /* This is a control-method button */ 14827 Extract GPE number and possibly GpeDevice 14828 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14829 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14830 14831For all other devices that have _PRWs, we automatically set the GPE type 14832to 14833ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14834This 14835must be done on a selective basis, usually requiring some kind of user 14836app 14837to allow the user to pick the wake devices. 14838 14839 14840Code and Data Size: Current and previous core subsystem library sizes are 14841shown below. These are the code and data sizes for the acpica.lib 14842produced 14843by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14844any ACPI driver or OSPM code. The debug version of the code includes the 14845debug output trace mechanism and has a much larger code and data size. 14846Note 14847that these values will vary depending on the efficiency of the compiler 14848and 14849the compiler options used during generation. 14850 14851 Previous Release: 14852 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14853 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14854 Current Release: 14855 14856 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14857 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14858 14859 14860 14861---------------------------------------- 1486202 April 2004. Summary of changes for version 20040402: 14863 148641) ACPI CA Core Subsystem: 14865 14866Fixed an interpreter problem where an indirect store through an ArgX 14867parameter was incorrectly applying the "implicit conversion rules" during 14868the store. From the ACPI specification: "If the target is a method local 14869or 14870argument (LocalX or ArgX), no conversion is performed and the result is 14871stored directly to the target". The new behavior is to disable implicit 14872conversion during ALL stores to an ArgX. 14873 14874Changed the behavior of the _PRW method scan to ignore any and all errors 14875returned by a given _PRW. This prevents the scan from aborting from the 14876failure of any single _PRW. 14877 14878Moved the runtime configuration parameters from the global init procedure 14879to 14880static variables in acglobal.h. This will allow the host to override the 14881default values easily. 14882 14883Code and Data Size: Current and previous core subsystem library sizes are 14884shown below. These are the code and data sizes for the acpica.lib 14885produced 14886by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14887any ACPI driver or OSPM code. The debug version of the code includes the 14888debug output trace mechanism and has a much larger code and data size. 14889Note 14890that these values will vary depending on the efficiency of the compiler 14891and 14892the compiler options used during generation. 14893 14894 Previous Release: 14895 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14896 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14897 Current Release: 14898 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14899 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14900 14901 149022) iASL Compiler/Disassembler: 14903 14904iASL now fully disassembles SSDTs. However, External() statements are 14905not 14906generated automatically for unresolved symbols at this time. This is a 14907planned feature for future implementation. 14908 14909Fixed a scoping problem in the disassembler that occurs when the type of 14910the 14911target of a Scope() operator is overridden. This problem caused an 14912incorrectly nested internal namespace to be constructed. 14913 14914Any warnings or errors that are emitted during disassembly are now 14915commented 14916out automatically so that the resulting file can be recompiled without 14917any 14918hand editing. 14919 14920---------------------------------------- 1492126 March 2004. Summary of changes for version 20040326: 14922 149231) ACPI CA Core Subsystem: 14924 14925Implemented support for "wake" GPEs via interaction between GPEs and the 14926_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14927identified as a WAKE GPE and by default will no longer be enabled at 14928runtime. Previously, we were blindly enabling all GPEs with a 14929corresponding 14930_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14931We 14932believe this has been the cause of thousands of "spurious" GPEs on some 14933systems. 14934 14935This new GPE behavior is can be reverted to the original behavior (enable 14936ALL GPEs at runtime) via a runtime flag. 14937 14938Fixed a problem where aliased control methods could not access objects 14939properly. The proper scope within the namespace was not initialized 14940(transferred to the target of the aliased method) before executing the 14941target method. 14942 14943Fixed a potential race condition on internal object deletion on the 14944return 14945object in AcpiEvaluateObject. 14946 14947Integrated a fix for resource descriptors where both _MEM and _MTP were 14948being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14949wide, 0x0F instead of 0x03.) 14950 14951Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14952preventing 14953a 14954fault in some cases. 14955 14956Updated Notify() values for debug statements in evmisc.c 14957 14958Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14959 14960Code and Data Size: Current and previous core subsystem library sizes are 14961shown below. These are the code and data sizes for the acpica.lib 14962produced 14963by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14964any ACPI driver or OSPM code. The debug version of the code includes the 14965debug output trace mechanism and has a much larger code and data size. 14966Note 14967that these values will vary depending on the efficiency of the compiler 14968and 14969the compiler options used during generation. 14970 14971 Previous Release: 14972 14973 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14974 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14975 Current Release: 14976 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14977 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14978 14979---------------------------------------- 1498011 March 2004. Summary of changes for version 20040311: 14981 149821) ACPI CA Core Subsystem: 14983 14984Fixed a problem where errors occurring during the parse phase of control 14985method execution did not abort cleanly. For example, objects created and 14986installed in the namespace were not deleted. This caused all subsequent 14987invocations of the method to return the AE_ALREADY_EXISTS exception. 14988 14989Implemented a mechanism to force a control method to "Serialized" 14990execution 14991if the method attempts to create namespace objects. (The root of the 14992AE_ALREADY_EXISTS problem.) 14993 14994Implemented support for the predefined _OSI "internal" control method. 14995Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14996and 14997"Windows 2001.1", and can be easily upgraded for new strings as 14998necessary. 14999This feature will allow "other" operating systems to execute the fully 15000tested, "Windows" code path through the ASL code 15001 15002Global Lock Support: Now allows multiple acquires and releases with any 15003internal thread. Removed concept of "owning thread" for this special 15004mutex. 15005 15006Fixed two functions that were inappropriately declaring large objects on 15007the 15008CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15009during 15010method execution considerably. 15011 15012Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15013S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15014 15015Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15016defined on the machine. 15017 15018Implemented two runtime options: One to force all control method 15019execution 15020to "Serialized" to mimic Windows behavior, another to disable _OSI 15021support 15022if it causes problems on a given machine. 15023 15024Code and Data Size: Current and previous core subsystem library sizes are 15025shown below. These are the code and data sizes for the acpica.lib 15026produced 15027by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15028any ACPI driver or OSPM code. The debug version of the code includes the 15029debug output trace mechanism and has a much larger code and data size. 15030Note 15031that these values will vary depending on the efficiency of the compiler 15032and 15033the compiler options used during generation. 15034 15035 Previous Release: 15036 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15037 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15038 Current Release: 15039 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15040 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15041 150422) iASL Compiler/Disassembler: 15043 15044Fixed an array size problem for FreeBSD that would cause the compiler to 15045fault. 15046 15047---------------------------------------- 1504820 February 2004. Summary of changes for version 20040220: 15049 15050 150511) ACPI CA Core Subsystem: 15052 15053Implemented execution of _SxD methods for Device objects in the 15054GetObjectInfo interface. 15055 15056Fixed calls to _SST method to pass the correct arguments. 15057 15058Added a call to _SST on wake to restore to "working" state. 15059 15060Check for End-Of-Buffer failure case in the WalkResources interface. 15061 15062Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15063structures to the beginning of the file. 15064 15065After wake, clear GPE status register(s) before enabling GPEs. 15066 15067After wake, clear/enable power button. (Perhaps we should clear/enable 15068all 15069fixed events upon wake.) 15070 15071Fixed a couple of possible memory leaks in the Namespace manager. 15072 15073Integrated latest acnetbsd.h file. 15074 15075---------------------------------------- 1507611 February 2004. Summary of changes for version 20040211: 15077 15078 150791) ACPI CA Core Subsystem: 15080 15081Completed investigation and implementation of the call-by-reference 15082mechanism for control method arguments. 15083 15084Fixed a problem where a store of an object into an indexed package could 15085fail if the store occurs within a different method than the method that 15086created the package. 15087 15088Fixed a problem where the ToDecimal operator could return incorrect 15089results. 15090 15091Fixed a problem where the CopyObject operator could fail on some of the 15092more 15093obscure objects (e.g., Reference objects.) 15094 15095Improved the output of the Debug object to display buffer, package, and 15096index objects. 15097 15098Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15099return 15100the expected result. 15101 15102Added permanent ACPI_REPORT_ERROR macros for all instances of the 15103ACPI_AML_INTERNAL exception. 15104 15105Integrated latest version of acfreebsd.h 15106 15107---------------------------------------- 1510816 January 2004. Summary of changes for version 20040116: 15109 15110The purpose of this release is primarily to update the copyright years in 15111each module, thus causing a huge number of diffs. There are a few small 15112functional changes, however. 15113 151141) ACPI CA Core Subsystem: 15115 15116Improved error messages when there is a problem finding one or more of 15117the 15118required base ACPI tables 15119 15120Reintroduced the definition of APIC_HEADER in actbl.h 15121 15122Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15123 15124Removed extraneous reference to NewObj in dsmthdat.c 15125 151262) iASL compiler 15127 15128Fixed a problem introduced in December that disabled the correct 15129disassembly 15130of Resource Templates 15131 15132 15133---------------------------------------- 1513403 December 2003. Summary of changes for version 20031203: 15135 151361) ACPI CA Core Subsystem: 15137 15138Changed the initialization of Operation Regions during subsystem 15139init to perform two entire walks of the ACPI namespace; The first 15140to initialize the regions themselves, the second to execute the 15141_REG methods. This fixed some interdependencies across _REG 15142methods found on some machines. 15143 15144Fixed a problem where a Store(Local0, Local1) could simply update 15145the object reference count, and not create a new copy of the 15146object if the Local1 is uninitialized. 15147 15148Implemented support for the _SST reserved method during sleep 15149transitions. 15150 15151Implemented support to clear the SLP_TYP and SLP_EN bits when 15152waking up, this is apparently required by some machines. 15153 15154When sleeping, clear the wake status only if SleepState is not S5. 15155 15156Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15157pointer arithmetic advanced a string pointer too far. 15158 15159Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15160could be returned if the requested table has not been loaded. 15161 15162Within the support for IRQ resources, restructured the handling of 15163the active and edge/level bits. 15164 15165Fixed a few problems in AcpiPsxExecute() where memory could be 15166leaked under certain error conditions. 15167 15168Improved error messages for the cases where the ACPI mode could 15169not be entered. 15170 15171Code and Data Size: Current and previous core subsystem library 15172sizes are shown below. These are the code and data sizes for the 15173acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15174these values do not include any ACPI driver or OSPM code. The 15175debug version of the code includes the debug output trace 15176mechanism and has a much larger code and data size. Note that 15177these values will vary depending on the efficiency of the compiler 15178and the compiler options used during generation. 15179 15180 Previous Release (20031029): 15181 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15182 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15183 Current Release: 15184 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15185 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15186 151872) iASL Compiler/Disassembler: 15188 15189Implemented a fix for the iASL disassembler where a bad index was 15190generated. This was most noticeable on 64-bit platforms 15191 15192 15193---------------------------------------- 1519429 October 2003. Summary of changes for version 20031029: 15195 151961) ACPI CA Core Subsystem: 15197 15198 15199Fixed a problem where a level-triggered GPE with an associated 15200_Lxx control method was incorrectly cleared twice. 15201 15202Fixed a problem with the Field support code where an access can 15203occur beyond the end-of-region if the field is non-aligned but 15204extends to the very end of the parent region (resulted in an 15205AE_AML_REGION_LIMIT exception.) 15206 15207Fixed a problem with ACPI Fixed Events where an RT Clock handler 15208would not get invoked on an RTC event. The RTC event bitmasks for 15209the PM1 registers were not being initialized properly. 15210 15211Implemented support for executing _STA and _INI methods for 15212Processor objects. Although this is currently not part of the 15213ACPI specification, there is existing ASL code that depends on the 15214init-time execution of these methods. 15215 15216Implemented and deployed a GetDescriptorName function to decode 15217the various types of internal descriptors. Guards against null 15218descriptors during debug output also. 15219 15220Implemented and deployed a GetNodeName function to extract the 4- 15221character namespace node name. This function simplifies the debug 15222and error output, as well as guarding against null pointers during 15223output. 15224 15225Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15226simplify the debug and error output of 64-bit integers. This 15227macro replaces the HIDWORD and LODWORD macros for dumping these 15228integers. 15229 15230Updated the implementation of the Stall() operator to only call 15231AcpiOsStall(), and also return an error if the operand is larger 15232than 255. This preserves the required behavior of not 15233relinquishing the processor, as would happen if AcpiOsSleep() was 15234called for "long stalls". 15235 15236Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15237initialized are now treated as NOOPs. 15238 15239Cleaned up a handful of warnings during 64-bit generation. 15240 15241Fixed a reported error where and incorrect GPE number was passed 15242to the GPE dispatch handler. This value is only used for error 15243output, however. Used this opportunity to clean up and streamline 15244the GPE dispatch code. 15245 15246Code and Data Size: Current and previous core subsystem library 15247sizes are shown below. These are the code and data sizes for the 15248acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15249these values do not include any ACPI driver or OSPM code. The 15250 15251debug version of the code includes the debug output trace 15252mechanism and has a much larger code and data size. Note that 15253these values will vary depending on the efficiency of the compiler 15254and the compiler options used during generation. 15255 15256 Previous Release (20031002): 15257 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15258 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15259 Current Release: 15260 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15261 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15262 15263 152642) iASL Compiler/Disassembler: 15265 15266Updated the iASL compiler to return an error if the operand to the 15267Stall() operator is larger than 255. 15268 15269 15270---------------------------------------- 1527102 October 2003. Summary of changes for version 20031002: 15272 15273 152741) ACPI CA Core Subsystem: 15275 15276Fixed a problem with Index Fields where the index was not 15277incremented for fields that require multiple writes to the 15278index/data registers (Fields that are wider than the data 15279register.) 15280 15281Fixed a problem with all Field objects where a write could go 15282beyond the end-of-field if the field was larger than the access 15283granularity and therefore required multiple writes to complete the 15284request. An extra write beyond the end of the field could happen 15285inadvertently. 15286 15287Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15288would incorrectly be returned if the width of the Data Register 15289was larger than the specified field access width. 15290 15291Completed fixes for LoadTable() and Unload() and verified their 15292operation. Implemented full support for the "DdbHandle" object 15293throughout the ACPI CA subsystem. 15294 15295Implemented full support for the MADT and ECDT tables in the ACPI 15296CA header files. Even though these tables are not directly 15297consumed by ACPI CA, the header definitions are useful for ACPI 15298device drivers. 15299 15300Integrated resource descriptor fixes posted to the Linux ACPI 15301list. This included checks for minimum descriptor length, and 15302support for trailing NULL strings within descriptors that have 15303optional string elements. 15304 15305Code and Data Size: Current and previous core subsystem library 15306sizes are shown below. These are the code and data sizes for the 15307acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15308these values do not include any ACPI driver or OSPM code. The 15309debug version of the code includes the debug output trace 15310mechanism and has a much larger code and data size. Note that 15311these values will vary depending on the efficiency of the compiler 15312and the compiler options used during generation. 15313 15314 Previous Release (20030918): 15315 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15316 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15317 Current Release: 15318 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15319 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15320 15321 153222) iASL Compiler: 15323 15324Implemented detection of non-ASCII characters within the input 15325source ASL file. This catches attempts to compile binary (AML) 15326files early in the compile, with an informative error message. 15327 15328Fixed a problem where the disassembler would fault if the output 15329filename could not be generated or if the output file could not be 15330opened. 15331 15332---------------------------------------- 1533318 September 2003. Summary of changes for version 20030918: 15334 15335 153361) ACPI CA Core Subsystem: 15337 15338Found and fixed a longstanding problem with the late execution of 15339the various deferred AML opcodes (such as Operation Regions, 15340Buffer Fields, Buffers, and Packages). If the name string 15341specified for the name of the new object placed the object in a 15342scope other than the current scope, the initialization/execution 15343of the opcode failed. The solution to this problem was to 15344implement a mechanism where the late execution of such opcodes 15345does not attempt to lookup/create the name a second time in an 15346incorrect scope. This fixes the "region size computed 15347incorrectly" problem. 15348 15349Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15350Global Lock AE_BAD_PARAMETER error. 15351 15352Fixed several 64-bit issues with prototypes, casting and data 15353types. 15354 15355Removed duplicate prototype from acdisasm.h 15356 15357Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15358 15359Code and Data Size: Current and previous core subsystem library 15360sizes are shown below. These are the code and data sizes for the 15361acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15362these values do not include any ACPI driver or OSPM code. The 15363debug version of the code includes the debug output trace 15364mechanism and has a much larger code and data size. Note that 15365these values will vary depending on the efficiency of the compiler 15366and the compiler options used during generation. 15367 15368 Previous Release: 15369 15370 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15371 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15372 Current Release: 15373 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15374 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15375 15376 153772) Linux: 15378 15379Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15380correct sleep time in seconds. 15381 15382---------------------------------------- 1538314 July 2003. Summary of changes for version 20030619: 15384 153851) ACPI CA Core Subsystem: 15386 15387Parse SSDTs in order discovered, as opposed to reverse order 15388(Hrvoje Habjanic) 15389 15390Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15391Klausner, 15392 Nate Lawson) 15393 15394 153952) Linux: 15396 15397Dynamically allocate SDT list (suggested by Andi Kleen) 15398 15399proc function return value cleanups (Andi Kleen) 15400 15401Correctly handle NMI watchdog during long stalls (Andrew Morton) 15402 15403Make it so acpismp=force works (reported by Andrew Morton) 15404 15405 15406---------------------------------------- 1540719 June 2003. Summary of changes for version 20030619: 15408 154091) ACPI CA Core Subsystem: 15410 15411Fix To/FromBCD, eliminating the need for an arch-specific #define. 15412 15413Do not acquire a semaphore in the S5 shutdown path. 15414 15415Fix ex_digits_needed for 0. (Takayoshi Kochi) 15416 15417Fix sleep/stall code reversal. (Andi Kleen) 15418 15419Revert a change having to do with control method calling 15420semantics. 15421 154222) Linux: 15423 15424acpiphp update (Takayoshi Kochi) 15425 15426Export acpi_disabled for sonypi (Stelian Pop) 15427 15428Mention acpismp=force in config help 15429 15430Re-add acpitable.c and acpismp=force. This improves backwards 15431 15432compatibility and also cleans up the code to a significant degree. 15433 15434Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15435 15436---------------------------------------- 1543722 May 2003. Summary of changes for version 20030522: 15438 154391) ACPI CA Core Subsystem: 15440 15441Found and fixed a reported problem where an AE_NOT_FOUND error 15442occurred occasionally during _BST evaluation. This turned out to 15443be an Owner ID allocation issue where a called method did not get 15444a new ID assigned to it. Eventually, (after 64k calls), the Owner 15445ID UINT16 would wraparound so that the ID would be the same as the 15446caller's and the called method would delete the caller's 15447namespace. 15448 15449Implemented extended error reporting for control methods that are 15450aborted due to a run-time exception. Output includes the exact 15451AML instruction that caused the method abort, a dump of the method 15452locals and arguments at the time of the abort, and a trace of all 15453nested control method calls. 15454 15455Modified the interpreter to allow the creation of buffers of zero 15456length from the AML code. Implemented new code to ensure that no 15457attempt is made to actually allocate a memory buffer (of length 15458zero) - instead, a simple buffer object with a NULL buffer pointer 15459and length zero is created. A warning is no longer issued when 15460the AML attempts to create a zero-length buffer. 15461 15462Implemented a workaround for the "leading asterisk issue" in 15463_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15464asterisk is automatically removed if present in any HID, UID, or 15465CID strings. The iASL compiler will still flag this asterisk as 15466an error, however. 15467 15468Implemented full support for _CID methods that return a package of 15469multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15470now additionally returns a device _CID list if present. This 15471required a change to the external interface in order to pass an 15472ACPI_BUFFER object as a parameter since the _CID list is of 15473variable length. 15474 15475Fixed a problem with the new AE_SAME_HANDLER exception where 15476handler initialization code did not know about this exception. 15477 15478Code and Data Size: Current and previous core subsystem library 15479sizes are shown below. These are the code and data sizes for the 15480acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15481these values do not include any ACPI driver or OSPM code. The 15482debug version of the code includes the debug output trace 15483mechanism and has a much larger code and data size. Note that 15484these values will vary depending on the efficiency of the compiler 15485and the compiler options used during generation. 15486 15487 Previous Release (20030509): 15488 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15489 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15490 Current Release: 15491 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15492 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15493 15494 154952) Linux: 15496 15497Fixed a bug in which we would reinitialize the ACPI interrupt 15498after it was already working, thus disabling all ACPI and the IRQs 15499for any other device sharing the interrupt. (Thanks to Stian 15500Jordet) 15501 15502Toshiba driver update (John Belmonte) 15503 15504Return only 0 or 1 for our interrupt handler status (Andrew 15505Morton) 15506 15507 155083) iASL Compiler: 15509 15510Fixed a reported problem where multiple (nested) ElseIf() 15511statements were not handled correctly by the compiler, resulting 15512in incorrect warnings and incorrect AML code. This was a problem 15513in both the ASL parser and the code generator. 15514 15515 155164) Documentation: 15517 15518Added changes to existing interfaces, new exception codes, and new 15519text concerning reference count object management versus garbage 15520collection. 15521 15522---------------------------------------- 1552309 May 2003. Summary of changes for version 20030509. 15524 15525 155261) ACPI CA Core Subsystem: 15527 15528Changed the subsystem initialization sequence to hold off 15529installation of address space handlers until the hardware has been 15530initialized and the system has entered ACPI mode. This is because 15531the installation of space handlers can cause _REG methods to be 15532run. Previously, the _REG methods could potentially be run before 15533ACPI mode was enabled. 15534 15535Fixed some memory leak issues related to address space handler and 15536notify handler installation. There were some problems with the 15537reference count mechanism caused by the fact that the handler 15538objects are shared across several namespace objects. 15539 15540Fixed a reported problem where reference counts within the 15541namespace were not properly updated when named objects created by 15542method execution were deleted. 15543 15544Fixed a reported problem where multiple SSDTs caused a deletion 15545issue during subsystem termination. Restructured the table data 15546structures to simplify the linked lists and the related code. 15547 15548Fixed a problem where the table ID associated with secondary 15549tables (SSDTs) was not being propagated into the namespace objects 15550created by those tables. This would only present a problem for 15551tables that are unloaded at run-time, however. 15552 15553Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15554type as the length parameter (instead of UINT32). 15555 15556Solved a long-standing problem where an ALREADY_EXISTS error 15557appears on various systems. This problem could happen when there 15558are multiple PCI_Config operation regions under a single PCI root 15559bus. This doesn't happen very frequently, but there are some 15560systems that do this in the ASL. 15561 15562Fixed a reported problem where the internal DeleteNode function 15563was incorrectly handling the case where a namespace node was the 15564first in the parent's child list, and had additional peers (not 15565the only child, but first in the list of children.) 15566 15567Code and Data Size: Current core subsystem library sizes are shown 15568below. These are the code and data sizes for the acpica.lib 15569produced by the Microsoft Visual C++ 6.0 compiler, and these 15570values do not include any ACPI driver or OSPM code. The debug 15571version of the code includes the debug output trace mechanism and 15572has a much larger code and data size. Note that these values will 15573vary depending on the efficiency of the compiler and the compiler 15574options used during generation. 15575 15576 Previous Release 15577 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15578 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15579 Current Release: 15580 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15581 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15582 15583 155842) Linux: 15585 15586Allow ":" in OS override string (Ducrot Bruno) 15587 15588Kobject fix (Greg KH) 15589 15590 155913 iASL Compiler/Disassembler: 15592 15593Fixed a problem in the generation of the C source code files (AML 15594is emitted in C source statements for BIOS inclusion) where the 15595Ascii dump that appears within a C comment at the end of each line 15596could cause a compile time error if the AML sequence happens to 15597have an open comment or close comment sequence embedded. 15598 15599 15600---------------------------------------- 1560124 April 2003. Summary of changes for version 20030424. 15602 15603 156041) ACPI CA Core Subsystem: 15605 15606Support for big-endian systems has been implemented. Most of the 15607support has been invisibly added behind big-endian versions of the 15608ACPI_MOVE_* macros. 15609 15610Fixed a problem in AcpiHwDisableGpeBlock() and 15611AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15612low level hardware write routine. The offset parameter was 15613actually eliminated from the low level read/write routines because 15614they had become obsolete. 15615 15616Fixed a problem where a handler object was deleted twice during 15617the removal of a fixed event handler. 15618 15619 156202) Linux: 15621 15622A fix for SMP systems with link devices was contributed by 15623 15624Compaq's Dan Zink. 15625 15626(2.5) Return whether we handled the interrupt in our IRQ handler. 15627(Linux ISRs no longer return void, so we can propagate the handler 15628return value from the ACPI CA core back to the OS.) 15629 15630 15631 156323) Documentation: 15633 15634The ACPI CA Programmer Reference has been updated to reflect new 15635interfaces and changes to existing interfaces. 15636 15637---------------------------------------- 1563828 March 2003. Summary of changes for version 20030328. 15639 156401) ACPI CA Core Subsystem: 15641 15642The GPE Block Device support has been completed. New interfaces 15643are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15644interfaces (enable, disable, clear, getstatus) have been split 15645into separate interfaces for Fixed Events and General Purpose 15646Events (GPEs) in order to support GPE Block Devices properly. 15647 15648Fixed a problem where the error message "Failed to acquire 15649semaphore" would appear during operations on the embedded 15650controller (EC). 15651 15652Code and Data Size: Current core subsystem library sizes are shown 15653below. These are the code and data sizes for the acpica.lib 15654produced by the Microsoft Visual C++ 6.0 compiler, and these 15655values do not include any ACPI driver or OSPM code. The debug 15656version of the code includes the debug output trace mechanism and 15657has a much larger code and data size. Note that these values will 15658vary depending on the efficiency of the compiler and the compiler 15659options used during generation. 15660 15661 Previous Release 15662 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15663 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15664 Current Release: 15665 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15666 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15667 15668 15669---------------------------------------- 1567028 February 2003. Summary of changes for version 20030228. 15671 15672 156731) ACPI CA Core Subsystem: 15674 15675The GPE handling and dispatch code has been completely overhauled 15676in preparation for support of GPE Block Devices (ID ACPI0006). 15677This affects internal data structures and code only; there should 15678be no differences visible externally. One new file has been 15679added, evgpeblk.c 15680 15681The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15682fields that are used to determine the GPE block lengths. The 15683REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15684structures are ignored. This is per the ACPI specification but it 15685isn't very clear. The full 256 Block 0/1 GPEs are now supported 15686(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15687 15688In the SCI interrupt handler, removed the read of the PM1_CONTROL 15689register to look at the SCI_EN bit. On some machines, this read 15690causes an SMI event and greatly slows down SCI events. (This may 15691in fact be the cause of slow battery status response on some 15692systems.) 15693 15694Fixed a problem where a store of a NULL string to a package object 15695could cause the premature deletion of the object. This was seen 15696during execution of the battery _BIF method on some systems, 15697resulting in no battery data being returned. 15698 15699Added AcpiWalkResources interface to simplify parsing of resource 15700lists. 15701 15702Code and Data Size: Current core subsystem library sizes are shown 15703below. These are the code and data sizes for the acpica.lib 15704produced by the Microsoft Visual C++ 6.0 compiler, and these 15705values do not include any ACPI driver or OSPM code. The debug 15706version of the code includes the debug output trace mechanism and 15707has a much larger code and data size. Note that these values will 15708vary depending on the efficiency of the compiler and the compiler 15709options used during generation. 15710 15711 Previous Release 15712 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15713 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15714 Current Release: 15715 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15716 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15717 15718 157192) Linux 15720 15721S3 fixes (Ole Rohne) 15722 15723Update ACPI PHP driver with to use new acpi_walk_resource API 15724(Bjorn Helgaas) 15725 15726Add S4BIOS support (Pavel Machek) 15727 15728Map in entire table before performing checksum (John Stultz) 15729 15730Expand the mem= cmdline to allow the specification of reserved and 15731ACPI DATA blocks (Pavel Machek) 15732 15733Never use ACPI on VISWS 15734 15735Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15736 15737Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15738causing us to think that some systems support C2 when they really 15739don't. 15740 15741Do not count processor objects for non-present CPUs (Thanks to 15742Dominik Brodowski) 15743 15744 157453) iASL Compiler: 15746 15747Fixed a problem where ASL include files could not be found and 15748opened. 15749 15750Added support for the _PDC reserved name. 15751 15752 15753---------------------------------------- 1575422 January 2003. Summary of changes for version 20030122. 15755 15756 157571) ACPI CA Core Subsystem: 15758 15759Added a check for constructs of the form: Store (Local0, Local0) 15760where Local0 is not initialized. Apparently, some BIOS 15761programmers believe that this is a NOOP. Since this store doesn't 15762do anything anyway, the new prototype behavior will ignore this 15763error. This is a case where we can relax the strict checking in 15764the interpreter in the name of compatibility. 15765 15766 157672) Linux 15768 15769The AcpiSrc Source Conversion Utility has been released with the 15770Linux package for the first time. This is the utility that is 15771used to convert the ACPI CA base source code to the Linux version. 15772 15773(Both) Handle P_BLK lengths shorter than 6 more gracefully 15774 15775(Both) Move more headers to include/acpi, and delete an unused 15776header. 15777 15778(Both) Move drivers/acpi/include directory to include/acpi 15779 15780(Both) Boot functions don't use cmdline, so don't pass it around 15781 15782(Both) Remove include of unused header (Adrian Bunk) 15783 15784(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15785the 15786former now also includes the latter, acpiphp.h only needs the one, 15787now. 15788 15789(2.5) Make it possible to select method of bios restoring after S3 15790resume. [=> no more ugly ifdefs] (Pavel Machek) 15791 15792(2.5) Make proc write interfaces work (Pavel Machek) 15793 15794(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15795 15796(2.5) Break out ACPI Perf code into its own module, under cpufreq 15797(Dominik Brodowski) 15798 15799(2.4) S4BIOS support (Ducrot Bruno) 15800 15801(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15802Visinoni) 15803 15804 158053) iASL Compiler: 15806 15807Added support to disassemble SSDT and PSDTs. 15808 15809Implemented support to obtain SSDTs from the Windows registry if 15810available. 15811 15812 15813---------------------------------------- 1581409 January 2003. Summary of changes for version 20030109. 15815 158161) ACPI CA Core Subsystem: 15817 15818Changed the behavior of the internal Buffer-to-String conversion 15819function. The current ACPI specification states that the contents 15820of the buffer are "converted to a string of two-character 15821hexadecimal numbers, each separated by a space". Unfortunately, 15822this definition is not backwards compatible with existing ACPI 1.0 15823implementations (although the behavior was not defined in the ACPI 158241.0 specification). The new behavior simply copies data from the 15825buffer to the string until a null character is found or the end of 15826the buffer is reached. The new String object is always null 15827terminated. This problem was seen during the generation of _BIF 15828battery data where incorrect strings were returned for battery 15829type, etc. This will also require an errata to the ACPI 15830specification. 15831 15832Renamed all instances of NATIVE_UINT and NATIVE_INT to 15833ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15834 15835Copyright in all module headers (both Linux and non-Linux) has be 15836updated to 2003. 15837 15838Code and Data Size: Current core subsystem library sizes are shown 15839below. These are the code and data sizes for the acpica.lib 15840produced by the Microsoft Visual C++ 6.0 compiler, and these 15841values do not include any ACPI driver or OSPM code. The debug 15842version of the code includes the debug output trace mechanism and 15843has a much larger code and data size. Note that these values will 15844vary depending on the efficiency of the compiler and the compiler 15845options used during generation. 15846 15847 Previous Release 15848 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15849 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15850 Current Release: 15851 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15852 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15853 15854 158552) Linux 15856 15857Fixed an oops on module insertion/removal (Matthew Tippett) 15858 15859(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15860 15861(2.5) Replace pr_debug (Randy Dunlap) 15862 15863(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15864 15865(Both) Eliminate spawning of thread from timer callback, in favor 15866of schedule_work() 15867 15868(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15869 15870(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15871 15872(Both) Add missing statics to button.c (Pavel Machek) 15873 15874Several changes have been made to the source code translation 15875utility that generates the Linux Code in order to make the code 15876more "Linux-like": 15877 15878All typedefs on structs and unions have been removed in keeping 15879with the Linux coding style. 15880 15881Removed the non-Linux SourceSafe module revision number from each 15882module header. 15883 15884Completed major overhaul of symbols to be lowercase for linux. 15885Doubled the number of symbols that are lowercase. 15886 15887Fixed a problem where identifiers within procedure headers and 15888within quotes were not fully lower cased (they were left with a 15889starting capital.) 15890 15891Some C macros whose only purpose is to allow the generation of 16- 15892bit code are now completely removed in the Linux code, increasing 15893readability and maintainability. 15894 15895---------------------------------------- 15896 1589712 December 2002. Summary of changes for version 20021212. 15898 15899 159001) ACPI CA Core Subsystem: 15901 15902Fixed a problem where the creation of a zero-length AML Buffer 15903would cause a fault. 15904 15905Fixed a problem where a Buffer object that pointed to a static AML 15906buffer (in an ACPI table) could inadvertently be deleted, causing 15907memory corruption. 15908 15909Fixed a problem where a user buffer (passed in to the external 15910ACPI CA interfaces) could be overwritten if the buffer was too 15911small to complete the operation, causing memory corruption. 15912 15913Fixed a problem in the Buffer-to-String conversion code where a 15914string of length one was always returned, regardless of the size 15915of the input Buffer object. 15916 15917Removed the NATIVE_CHAR data type across the entire source due to 15918lack of need and lack of consistent use. 15919 15920Code and Data Size: Current core subsystem library sizes are shown 15921below. These are the code and data sizes for the acpica.lib 15922produced by the Microsoft Visual C++ 6.0 compiler, and these 15923values do not include any ACPI driver or OSPM code. The debug 15924version of the code includes the debug output trace mechanism and 15925has a much larger code and data size. Note that these values will 15926vary depending on the efficiency of the compiler and the compiler 15927options used during generation. 15928 15929 Previous Release 15930 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15931 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15932 Current Release: 15933 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15934 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15935 15936 15937---------------------------------------- 1593805 December 2002. Summary of changes for version 20021205. 15939 159401) ACPI CA Core Subsystem: 15941 15942Fixed a problem where a store to a String or Buffer object could 15943cause corruption of the DSDT if the object type being stored was 15944the same as the target object type and the length of the object 15945being stored was equal to or smaller than the original (existing) 15946target object. This was seen to cause corruption of battery _BIF 15947buffers if the _BIF method modified the buffer on the fly. 15948 15949Fixed a problem where an internal error was generated if a control 15950method invocation was used in an OperationRegion, Buffer, or 15951Package declaration. This was caused by the deferred parsing of 15952the control method and thus the deferred creation of the internal 15953method object. The solution to this problem was to create the 15954internal method object at the moment the method is encountered in 15955the first pass - so that subsequent references to the method will 15956able to obtain the required parameter count and thus properly 15957parse the method invocation. This problem presented itself as an 15958AE_AML_INTERNAL during the pass 1 parse phase during table load. 15959 15960Fixed a problem where the internal String object copy routine did 15961not always allocate sufficient memory for the target String object 15962and caused memory corruption. This problem was seen to cause 15963"Allocation already present in list!" errors as memory allocation 15964became corrupted. 15965 15966Implemented a new function for the evaluation of namespace objects 15967that allows the specification of the allowable return object 15968types. This simplifies a lot of code that checks for a return 15969object of one or more specific objects returned from the 15970evaluation (such as _STA, etc.) This may become and external 15971function if it would be useful to ACPI-related drivers. 15972 15973Completed another round of prefixing #defines with "ACPI_" for 15974clarity. 15975 15976Completed additional code restructuring to allow more modular 15977linking for iASL compiler and AcpiExec. Several files were split 15978creating new files. New files: nsparse.c dsinit.c evgpe.c 15979 15980Implemented an abort mechanism to terminate an executing control 15981method via the AML debugger. This feature is useful for debugging 15982control methods that depend (wait) for specific hardware 15983responses. 15984 15985Code and Data Size: Current core subsystem library sizes are shown 15986below. These are the code and data sizes for the acpica.lib 15987produced by the Microsoft Visual C++ 6.0 compiler, and these 15988values do not include any ACPI driver or OSPM code. The debug 15989version of the code includes the debug output trace mechanism and 15990has a much larger code and data size. Note that these values will 15991vary depending on the efficiency of the compiler and the compiler 15992options used during generation. 15993 15994 Previous Release 15995 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15996 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15997 Current Release: 15998 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15999 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16000 16001 160022) iASL Compiler/Disassembler 16003 16004Fixed a compiler code generation problem for "Interrupt" Resource 16005Descriptors. If specified in the ASL, the optional "Resource 16006Source Index" and "Resource Source" fields were not inserted into 16007the correct location within the AML resource descriptor, creating 16008an invalid descriptor. 16009 16010Fixed a disassembler problem for "Interrupt" resource descriptors. 16011The optional "Resource Source Index" and "Resource Source" fields 16012were ignored. 16013 16014 16015---------------------------------------- 1601622 November 2002. Summary of changes for version 20021122. 16017 16018 160191) ACPI CA Core Subsystem: 16020 16021Fixed a reported problem where an object stored to a Method Local 16022or Arg was not copied to a new object during the store - the 16023object pointer was simply copied to the Local/Arg. This caused 16024all subsequent operations on the Local/Arg to also affect the 16025original source of the store operation. 16026 16027Fixed a problem where a store operation to a Method Local or Arg 16028was not completed properly if the Local/Arg contained a reference 16029(from RefOf) to a named field. The general-purpose store-to- 16030namespace-node code is now used so that this case is handled 16031automatically. 16032 16033Fixed a problem where the internal object copy routine would cause 16034a protection fault if the object being copied was a Package and 16035contained either 1) a NULL package element or 2) a nested sub- 16036package. 16037 16038Fixed a problem with the GPE initialization that resulted from an 16039ambiguity in the ACPI specification. One section of the 16040specification states that both the address and length of the GPE 16041block must be zero if the block is not supported. Another section 16042implies that only the address need be zero if the block is not 16043supported. The code has been changed so that both the address and 16044the length must be non-zero to indicate a valid GPE block (i.e., 16045if either the address or the length is zero, the GPE block is 16046invalid.) 16047 16048Code and Data Size: Current core subsystem library sizes are shown 16049below. These are the code and data sizes for the acpica.lib 16050produced by the Microsoft Visual C++ 6.0 compiler, and these 16051values do not include any ACPI driver or OSPM code. The debug 16052version of the code includes the debug output trace mechanism and 16053has a much larger code and data size. Note that these values will 16054vary depending on the efficiency of the compiler and the compiler 16055options used during generation. 16056 16057 Previous Release 16058 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16059 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16060 Current Release: 16061 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16062 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16063 16064 160652) Linux 16066 16067Cleaned up EC driver. Exported an external EC read/write 16068interface. By going through this, other drivers (most notably 16069sonypi) will be able to serialize access to the EC. 16070 16071 160723) iASL Compiler/Disassembler 16073 16074Implemented support to optionally generate include files for both 16075ASM and C (the -i switch). This simplifies BIOS development by 16076automatically creating include files that contain external 16077declarations for the symbols that are created within the 16078 16079(optionally generated) ASM and C AML source files. 16080 16081 16082---------------------------------------- 1608315 November 2002. Summary of changes for version 20021115. 16084 160851) ACPI CA Core Subsystem: 16086 16087Fixed a memory leak problem where an error during resolution of 16088 16089method arguments during a method invocation from another method 16090failed to cleanup properly by deleting all successfully resolved 16091argument objects. 16092 16093Fixed a problem where the target of the Index() operator was not 16094correctly constructed if the source object was a package. This 16095problem has not been detected because the use of a target operand 16096with Index() is very rare. 16097 16098Fixed a problem with the Index() operator where an attempt was 16099made to delete the operand objects twice. 16100 16101Fixed a problem where an attempt was made to delete an operand 16102twice during execution of the CondRefOf() operator if the target 16103did not exist. 16104 16105Implemented the first of perhaps several internal create object 16106functions that create and initialize a specific object type. This 16107consolidates duplicated code wherever the object is created, thus 16108shrinking the size of the subsystem. 16109 16110Implemented improved debug/error messages for errors that occur 16111during nested method invocations. All executing method pathnames 16112are displayed (with the error) as the call stack is unwound - thus 16113simplifying debug. 16114 16115Fixed a problem introduced in the 10/02 release that caused 16116premature deletion of a buffer object if a buffer was used as an 16117ASL operand where an integer operand is required (Thus causing an 16118implicit object conversion from Buffer to Integer.) The change in 16119the 10/02 release was attempting to fix a memory leak (albeit 16120incorrectly.) 16121 16122Code and Data Size: Current core subsystem library sizes are shown 16123below. These are the code and data sizes for the acpica.lib 16124produced by the Microsoft Visual C++ 6.0 compiler, and these 16125values do not include any ACPI driver or OSPM code. The debug 16126version of the code includes the debug output trace mechanism and 16127has a much larger code and data size. Note that these values will 16128vary depending on the efficiency of the compiler and the compiler 16129options used during generation. 16130 16131 Previous Release 16132 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16133 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16134 Current Release: 16135 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16136 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16137 16138 161392) Linux 16140 16141Changed the implementation of the ACPI semaphores to use down() 16142instead of down_interruptable(). It is important that the 16143execution of ACPI control methods not be interrupted by signals. 16144Methods must run to completion, or the system may be left in an 16145unknown/unstable state. 16146 16147Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16148(Shawn Starr) 16149 16150 161513) iASL Compiler/Disassembler 16152 16153 16154Changed the default location of output files. All output files 16155are now placed in the current directory by default instead of in 16156the directory of the source file. This change may affect some 16157existing makefiles, but it brings the behavior of the compiler in 16158line with other similar tools. The location of the output files 16159can be overridden with the -p command line switch. 16160 16161 16162---------------------------------------- 1616311 November 2002. Summary of changes for version 20021111. 16164 16165 161660) ACPI Specification 2.0B is released and is now available at: 16167http://www.acpi.info/index.html 16168 16169 161701) ACPI CA Core Subsystem: 16171 16172Implemented support for the ACPI 2.0 SMBus Operation Regions. 16173This includes the early detection and handoff of the request to 16174the SMBus region handler (avoiding all of the complex field 16175support code), and support for the bidirectional return packet 16176from an SMBus write operation. This paves the way for the 16177development of SMBus drivers in each host operating system. 16178 16179Fixed a problem where the semaphore WAIT_FOREVER constant was 16180defined as 32 bits, but must be 16 bits according to the ACPI 16181specification. This had the side effect of causing ASL 16182Mutex/Event timeouts even though the ASL code requested a wait 16183forever. Changed all internal references to the ACPI timeout 16184parameter to 16 bits to prevent future problems. Changed the name 16185of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16186 16187Code and Data Size: Current core subsystem library sizes are shown 16188below. These are the code and data sizes for the acpica.lib 16189produced by the Microsoft Visual C++ 6.0 compiler, and these 16190values do not include any ACPI driver or OSPM code. The debug 16191version of the code includes the debug output trace mechanism and 16192has a much larger code and data size. Note that these values will 16193vary depending on the efficiency of the compiler and the compiler 16194options used during generation. 16195 16196 Previous Release 16197 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16198 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16199 Current Release: 16200 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16201 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16202 16203 162042) Linux 16205 16206Module loading/unloading fixes (John Cagle) 16207 16208 162093) iASL Compiler/Disassembler 16210 16211Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16212 16213Implemented support for the disassembly of all SMBus protocol 16214keywords (SMBQuick, SMBWord, etc.) 16215 16216---------------------------------------- 1621701 November 2002. Summary of changes for version 20021101. 16218 16219 162201) ACPI CA Core Subsystem: 16221 16222Fixed a problem where platforms that have a GPE1 block but no GPE0 16223block were not handled correctly. This resulted in a "GPE 16224overlap" error message. GPE0 is no longer required. 16225 16226Removed code added in the previous release that inserted nodes 16227into the namespace in alphabetical order. This caused some side- 16228effects on various machines. The root cause of the problem is 16229still under investigation since in theory, the internal ordering 16230of the namespace nodes should not matter. 16231 16232 16233Enhanced error reporting for the case where a named object is not 16234found during control method execution. The full ACPI namepath 16235(name reference) of the object that was not found is displayed in 16236this case. 16237 16238Note: as a result of the overhaul of the namespace object types in 16239the previous release, the namespace nodes for the predefined 16240scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16241instead of ACPI_TYPE_ANY. This simplifies the namespace 16242management code but may affect code that walks the namespace tree 16243looking for specific object types. 16244 16245Code and Data Size: Current core subsystem library sizes are shown 16246below. These are the code and data sizes for the acpica.lib 16247produced by the Microsoft Visual C++ 6.0 compiler, and these 16248values do not include any ACPI driver or OSPM code. The debug 16249version of the code includes the debug output trace mechanism and 16250has a much larger code and data size. Note that these values will 16251vary depending on the efficiency of the compiler and the compiler 16252options used during generation. 16253 16254 Previous Release 16255 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16256 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16257 Current Release: 16258 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16259 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16260 16261 162622) Linux 16263 16264Fixed a problem introduced in the previous release where the 16265Processor and Thermal objects were not recognized and installed in 16266/proc. This was related to the scope type change described above. 16267 16268 162693) iASL Compiler/Disassembler 16270 16271Implemented the -g option to get all of the required ACPI tables 16272from the registry and save them to files (Windows version of the 16273compiler only.) The required tables are the FADT, FACS, and DSDT. 16274 16275Added ACPI table checksum validation during table disassembly in 16276order to catch corrupted tables. 16277 16278 16279---------------------------------------- 1628022 October 2002. Summary of changes for version 20021022. 16281 162821) ACPI CA Core Subsystem: 16283 16284Implemented a restriction on the Scope operator that the target 16285must already exist in the namespace at the time the operator is 16286encountered (during table load or method execution). In other 16287words, forward references are not allowed and Scope() cannot 16288create a new object. This changes the previous behavior where the 16289interpreter would create the name if not found. This new behavior 16290correctly enables the search-to-root algorithm during namespace 16291lookup of the target name. Because of this upsearch, this fixes 16292the known Compaq _SB_.OKEC problem and makes both the AML 16293interpreter and iASL compiler compatible with other ACPI 16294implementations. 16295 16296Completed a major overhaul of the internal ACPI object types for 16297the ACPI Namespace and the associated operand objects. Many of 16298these types had become obsolete with the introduction of the two- 16299pass namespace load. This cleanup simplifies the code and makes 16300the entire namespace load mechanism much clearer and easier to 16301understand. 16302 16303Improved debug output for tracking scope opening/closing to help 16304diagnose scoping issues. The old scope name as well as the new 16305scope name are displayed. Also improved error messages for 16306problems with ASL Mutex objects and error messages for GPE 16307problems. 16308 16309Cleaned up the namespace dump code, removed obsolete code. 16310 16311All string output (for all namespace/object dumps) now uses the 16312common ACPI string output procedure which handles escapes properly 16313and does not emit non-printable characters. 16314 16315Fixed some issues with constants in the 64-bit version of the 16316local C library (utclib.c) 16317 16318 163192) Linux 16320 16321EC Driver: No longer attempts to acquire the Global Lock at 16322interrupt level. 16323 16324 163253) iASL Compiler/Disassembler 16326 16327Implemented ACPI 2.0B grammar change that disallows all Type 1 and 163282 opcodes outside of a control method. This means that the 16329"executable" operators (versus the "namespace" operators) cannot 16330be used at the table level; they can only be used within a control 16331method. 16332 16333Implemented the restriction on the Scope() operator where the 16334target must already exist in the namespace at the time the 16335operator is encountered (during ASL compilation). In other words, 16336forward references are not allowed and Scope() cannot create a new 16337object. This makes the iASL compiler compatible with other ACPI 16338implementations and makes the Scope() implementation adhere to the 16339ACPI specification. 16340 16341Fixed a problem where namepath optimization for the Alias operator 16342was optimizing the wrong path (of the two namepaths.) This caused 16343a "Missing alias link" error message. 16344 16345Fixed a problem where an "unknown reserved name" warning could be 16346incorrectly generated for names like "_SB" when the trailing 16347underscore is not used in the original ASL. 16348 16349Fixed a problem where the reserved name check did not handle 16350NamePaths with multiple NameSegs correctly. The first nameseg of 16351the NamePath was examined instead of the last NameSeg. 16352 16353 16354---------------------------------------- 16355 1635602 October 2002. Summary of changes for this release. 16357 16358 163591) ACPI CA Core Subsystem version 20021002: 16360 16361Fixed a problem where a store/copy of a string to an existing 16362string did not always set the string length properly in the String 16363object. 16364 16365Fixed a reported problem with the ToString operator where the 16366behavior was identical to the ToHexString operator instead of just 16367simply converting a raw buffer to a string data type. 16368 16369Fixed a problem where CopyObject and the other "explicit" 16370conversion operators were not updating the internal namespace node 16371type as part of the store operation. 16372 16373Fixed a memory leak during implicit source operand conversion 16374where the original object was not deleted if it was converted to a 16375new object of a different type. 16376 16377Enhanced error messages for all problems associated with namespace 16378lookups. Common procedure generates and prints the lookup name as 16379well as the formatted status. 16380 16381Completed implementation of a new design for the Alias support 16382within the namespace. The existing design did not handle the case 16383where a new object was assigned to one of the two names due to the 16384use of an explicit conversion operator, resulting in the two names 16385pointing to two different objects. The new design simply points 16386the Alias name to the original name node - not to the object. 16387This results in a level of indirection that must be handled in the 16388name resolution mechanism. 16389 16390Code and Data Size: Current core subsystem library sizes are shown 16391below. These are the code and data sizes for the acpica.lib 16392produced by the Microsoft Visual C++ 6.0 compiler, and these 16393values do not include any ACPI driver or OSPM code. The debug 16394version of the code includes the debug output trace mechanism and 16395has a larger code and data size. Note that these values will vary 16396depending on the efficiency of the compiler and the compiler 16397options used during generation. 16398 16399 Previous Release 16400 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16401 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16402 Current Release: 16403 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16404 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16405 16406 164072) Linux 16408 16409Initialize thermal driver's timer before it is used. (Knut 16410Neumann) 16411 16412Allow handling negative celsius values. (Kochi Takayoshi) 16413 16414Fix thermal management and make trip points. R/W (Pavel Machek) 16415 16416Fix /proc/acpi/sleep. (P. Christeas) 16417 16418IA64 fixes. (David Mosberger) 16419 16420Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 16421 16422Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 16423Brodowski) 16424 16425 164263) iASL Compiler/Disassembler 16427 16428Clarified some warning/error messages. 16429 16430 16431---------------------------------------- 1643218 September 2002. Summary of changes for this release. 16433 16434 164351) ACPI CA Core Subsystem version 20020918: 16436 16437Fixed a reported problem with reference chaining (via the Index() 16438and RefOf() operators) in the ObjectType() and SizeOf() operators. 16439The definition of these operators includes the dereferencing of 16440all chained references to return information on the base object. 16441 16442Fixed a problem with stores to indexed package elements - the 16443existing code would not complete the store if an "implicit 16444conversion" was not performed. In other words, if the existing 16445object (package element) was to be replaced completely, the code 16446didn't handle this case. 16447 16448Relaxed typechecking on the ASL "Scope" operator to allow the 16449target name to refer to an object of type Integer, String, or 16450Buffer, in addition to the scoping object types (Device, 16451predefined Scopes, Processor, PowerResource, and ThermalZone.) 16452This allows existing AML code that has workarounds for a bug in 16453Windows to function properly. A warning is issued, however. This 16454affects both the AML interpreter and the iASL compiler. Below is 16455an example of this type of ASL code: 16456 16457 Name(DEB,0x00) 16458 Scope(DEB) 16459 { 16460 16461Fixed some reported problems with 64-bit integer support in the 16462local implementation of C library functions (clib.c) 16463 16464 164652) Linux 16466 16467Use ACPI fix map region instead of IOAPIC region, since it is 16468undefined in non-SMP. 16469 16470Ensure that the SCI has the proper polarity and trigger, even on 16471systems that do not have an interrupt override entry in the MADT. 16472 164732.5 big driver reorganization (Pat Mochel) 16474 16475Use early table mapping code from acpitable.c (Andi Kleen) 16476 16477New blacklist entries (Andi Kleen) 16478 16479Blacklist improvements. Split blacklist code out into a separate 16480file. Move checking the blacklist to very early. Previously, we 16481would use ACPI tables, and then halfway through init, check the 16482blacklist -- too late. Now, it's early enough to completely fall- 16483back to non-ACPI. 16484 16485 164863) iASL Compiler/Disassembler version 20020918: 16487 16488Fixed a problem where the typechecking code didn't know that an 16489alias could point to a method. In other words, aliases were not 16490being dereferenced during typechecking. 16491 16492 16493---------------------------------------- 1649429 August 2002. Summary of changes for this release. 16495 164961) ACPI CA Core Subsystem Version 20020829: 16497 16498If the target of a Scope() operator already exists, it must be an 16499object type that actually opens a scope -- such as a Device, 16500Method, Scope, etc. This is a fatal runtime error. Similar error 16501check has been added to the iASL compiler also. 16502 16503Tightened up the namespace load to disallow multiple names in the 16504same scope. This previously was allowed if both objects were of 16505the same type. (i.e., a lookup was the same as entering a new 16506name). 16507 16508 165092) Linux 16510 16511Ensure that the ACPI interrupt has the proper trigger and 16512polarity. 16513 16514local_irq_disable is extraneous. (Matthew Wilcox) 16515 16516Make "acpi=off" actually do what it says, and not use the ACPI 16517interpreter *or* the tables. 16518 16519Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16520Takayoshi) 16521 16522 165233) iASL Compiler/Disassembler Version 20020829: 16524 16525Implemented namepath optimization for name declarations. For 16526example, a declaration like "Method (\_SB_.ABCD)" would get 16527optimized to "Method (ABCD)" if the declaration is within the 16528\_SB_ scope. This optimization is in addition to the named 16529reference path optimization first released in the previous 16530version. This would seem to complete all possible optimizations 16531for namepaths within the ASL/AML. 16532 16533If the target of a Scope() operator already exists, it must be an 16534object type that actually opens a scope -- such as a Device, 16535Method, Scope, etc. 16536 16537Implemented a check and warning for unreachable code in the same 16538block below a Return() statement. 16539 16540Fixed a problem where the listing file was not generated if the 16541compiler aborted if the maximum error count was exceeded (200). 16542 16543Fixed a problem where the typechecking of method return values was 16544broken. This includes the check for a return value when the 16545method is invoked as a TermArg (a return value is expected.) 16546 16547Fixed a reported problem where EOF conditions during a quoted 16548string or comment caused a fault. 16549 16550 16551---------------------------------------- 1655215 August 2002. Summary of changes for this release. 16553 165541) ACPI CA Core Subsystem Version 20020815: 16555 16556Fixed a reported problem where a Store to a method argument that 16557contains a reference did not perform the indirect store correctly. 16558This problem was created during the conversion to the new 16559reference object model - the indirect store to a method argument 16560code was not updated to reflect the new model. 16561 16562Reworked the ACPI mode change code to better conform to ACPI 2.0, 16563handle corner cases, and improve code legibility (Kochi Takayoshi) 16564 16565Fixed a problem with the pathname parsing for the carat (^) 16566prefix. The heavy use of the carat operator by the new namepath 16567optimization in the iASL compiler uncovered a problem with the AML 16568interpreter handling of this prefix. In the case where one or 16569more carats precede a single nameseg, the nameseg was treated as 16570standalone and the search rule (to root) was inadvertently 16571applied. This could cause both the iASL compiler and the 16572interpreter to find the wrong object or to miss the error that 16573should occur if the object does not exist at that exact pathname. 16574 16575Found and fixed the problem where the HP Pavilion DSDT would not 16576load. This was a relatively minor tweak to the table loading code 16577(a problem caused by the unexpected encounter with a method 16578invocation not within a control method), but it does not solve the 16579overall issue of the execution of AML code at the table level. 16580This investigation is still ongoing. 16581 16582Code and Data Size: Current core subsystem library sizes are shown 16583below. These are the code and data sizes for the acpica.lib 16584produced by the Microsoft Visual C++ 6.0 compiler, and these 16585values do not include any ACPI driver or OSPM code. The debug 16586version of the code includes the debug output trace mechanism and 16587has a larger code and data size. Note that these values will vary 16588depending on the efficiency of the compiler and the compiler 16589options used during generation. 16590 16591 Previous Release 16592 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16593 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16594 Current Release: 16595 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16596 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16597 16598 165992) Linux 16600 16601Remove redundant slab.h include (Brad Hards) 16602 16603Fix several bugs in thermal.c (Herbert Nachtnebel) 16604 16605Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16606 16607Change acpi_system_suspend to use updated irq functions (Pavel 16608Machek) 16609 16610Export acpi_get_firmware_table (Matthew Wilcox) 16611 16612Use proper root proc entry for ACPI (Kochi Takayoshi) 16613 16614Fix early-boot table parsing (Bjorn Helgaas) 16615 16616 166173) iASL Compiler/Disassembler 16618 16619Reworked the compiler options to make them more consistent and to 16620use two-letter options where appropriate. We were running out of 16621sensible letters. This may break some makefiles, so check the 16622current options list by invoking the compiler with no parameters. 16623 16624Completed the design and implementation of the ASL namepath 16625optimization option for the compiler. This option optimizes all 16626references to named objects to the shortest possible path. The 16627first attempt tries to utilize a single nameseg (4 characters) and 16628the "search-to-root" algorithm used by the interpreter. If that 16629cannot be used (because either the name is not in the search path 16630or there is a conflict with another object with the same name), 16631the pathname is optimized using the carat prefix (usually a 16632shorter string than specifying the entire path from the root.) 16633 16634Implemented support to obtain the DSDT from the Windows registry 16635(when the disassembly option is specified with no input file). 16636Added this code as the implementation for AcpiOsTableOverride in 16637the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16638utility) to scan memory for the DSDT to the AcpiOsTableOverride 16639function in the DOS OSL to make the disassembler truly OS 16640independent. 16641 16642Implemented a new option to disassemble and compile in one step. 16643When used without an input filename, this option will grab the 16644DSDT from the local machine, disassemble it, and compile it in one 16645step. 16646 16647Added a warning message for invalid escapes (a backslash followed 16648by any character other than the allowable escapes). This catches 16649the quoted string error "\_SB_" (which should be "\\_SB_" ). 16650 16651Also, there are numerous instances in the ACPI specification where 16652this error occurs. 16653 16654Added a compiler option to disable all optimizations. This is 16655basically the "compatibility mode" because by using this option, 16656the AML code will come out exactly the same as other ASL 16657compilers. 16658 16659Added error messages for incorrectly ordered dependent resource 16660functions. This includes: missing EndDependentFn macro at end of 16661dependent resource list, nested dependent function macros (both 16662start and end), and missing StartDependentFn macro. These are 16663common errors that should be caught at compile time. 16664 16665Implemented _OSI support for the disassembler and compiler. _OSI 16666must be included in the namespace for proper disassembly (because 16667the disassembler must know the number of arguments.) 16668 16669Added an "optimization" message type that is optional (off by 16670default). This message is used for all optimizations - including 16671constant folding, integer optimization, and namepath optimization. 16672 16673---------------------------------------- 1667425 July 2002. Summary of changes for this release. 16675 16676 166771) ACPI CA Core Subsystem Version 20020725: 16678 16679The AML Disassembler has been enhanced to produce compilable ASL 16680code and has been integrated into the iASL compiler (see below) as 16681well as the single-step disassembly for the AML debugger and the 16682disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16683resource templates and macros are fully supported. The 16684disassembler has been tested on over 30 different AML files, 16685producing identical AML when the resulting disassembled ASL file 16686is recompiled with the same ASL compiler. 16687 16688Modified the Resource Manager to allow zero interrupts and zero 16689dma channels during the GetCurrentResources call. This was 16690causing problems on some platforms. 16691 16692Added the AcpiOsRedirectOutput interface to the OSL to simplify 16693output redirection for the AcpiOsPrintf and AcpiOsVprintf 16694interfaces. 16695 16696Code and Data Size: Current core subsystem library sizes are shown 16697below. These are the code and data sizes for the acpica.lib 16698produced by the Microsoft Visual C++ 6.0 compiler, and these 16699values do not include any ACPI driver or OSPM code. The debug 16700version of the code includes the debug output trace mechanism and 16701has a larger code and data size. Note that these values will vary 16702depending on the efficiency of the compiler and the compiler 16703options used during generation. 16704 16705 Previous Release 16706 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16707 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16708 Current Release: 16709 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16710 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16711 16712 167132) Linux 16714 16715Fixed a panic in the EC driver (Dominik Brodowski) 16716 16717Implemented checksum of the R/XSDT itself during Linux table scan 16718(Richard Schaal) 16719 16720 167213) iASL compiler 16722 16723The AML disassembler is integrated into the compiler. The "-d" 16724option invokes the disassembler to completely disassemble an 16725input AML file, producing as output a text ASL file with the 16726extension ".dsl" (to avoid name collisions with existing .asl 16727source files.) A future enhancement will allow the disassembler 16728to obtain the BIOS DSDT from the registry under Windows. 16729 16730Fixed a problem with the VendorShort and VendorLong resource 16731descriptors where an invalid AML sequence was created. 16732 16733Implemented a fix for BufferData term in the ASL parser. It was 16734inadvertently defined twice, allowing invalid syntax to pass and 16735causing reduction conflicts. 16736 16737Fixed a problem where the Ones opcode could get converted to a 16738value of zero if "Ones" was used where a byte, word or dword value 16739was expected. The 64-bit value is now truncated to the correct 16740size with the correct value. 16741 16742 16743 16744---------------------------------------- 1674502 July 2002. Summary of changes for this release. 16746 16747 167481) ACPI CA Core Subsystem Version 20020702: 16749 16750The Table Manager code has been restructured to add several new 16751features. Tables that are not required by the core subsystem 16752(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16753validated in any way and are returned from AcpiGetFirmwareTable if 16754requested. The AcpiOsTableOverride interface is now called for 16755each table that is loaded by the subsystem in order to allow the 16756host to override any table it chooses. Previously, only the DSDT 16757could be overridden. Added one new files, tbrsdt.c and 16758tbgetall.c. 16759 16760Fixed a problem with the conversion of internal package objects to 16761external objects (when a package is returned from a control 16762method.) The return buffer length was set to zero instead of the 16763proper length of the package object. 16764 16765Fixed a reported problem with the use of the RefOf and DeRefOf 16766operators when passing reference arguments to control methods. A 16767new type of Reference object is used internally for references 16768produced by the RefOf operator. 16769 16770Added additional error messages in the Resource Manager to explain 16771AE_BAD_DATA errors when they occur during resource parsing. 16772 16773Split the AcpiEnableSubsystem into two primitives to enable a 16774finer granularity initialization sequence. These two calls should 16775be called in this order: AcpiEnableSubsystem (flags), 16776AcpiInitializeObjects (flags). The flags parameter remains the 16777same. 16778 16779 167802) Linux 16781 16782Updated the ACPI utilities module to understand the new style of 16783fully resolved package objects that are now returned from the core 16784subsystem. This eliminates errors of the form: 16785 16786 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16787 acpi_utils-0430 [145] acpi_evaluate_reference: 16788 Invalid element in package (not a device reference) 16789 16790The method evaluation utility uses the new buffer allocation 16791scheme instead of calling AcpiEvaluate Object twice. 16792 16793Added support for ECDT. This allows the use of the Embedded 16794 16795Controller before the namespace has been fully initialized, which 16796is necessary for ACPI 2.0 support, and for some laptops to 16797initialize properly. (Laptops using ECDT are still rare, so only 16798limited testing was performed of the added functionality.) 16799 16800Fixed memory leaks in the EC driver. 16801 16802Eliminated a brittle code structure in acpi_bus_init(). 16803 16804Eliminated the acpi_evaluate() helper function in utils.c. It is 16805no longer needed since acpi_evaluate_object can optionally 16806allocate memory for the return object. 16807 16808Implemented fix for keyboard hang when getting battery readings on 16809some systems (Stephen White) 16810 16811PCI IRQ routing update (Dominik Brodowski) 16812 16813Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16814support 16815 16816---------------------------------------- 1681711 June 2002. Summary of changes for this release. 16818 16819 168201) ACPI CA Core Subsystem Version 20020611: 16821 16822Fixed a reported problem where constants such as Zero and One 16823appearing within _PRT packages were not handled correctly within 16824the resource manager code. Originally reported against the ASL 16825compiler because the code generator now optimizes integers to 16826their minimal AML representation (i.e. AML constants if possible.) 16827The _PRT code now handles all AML constant opcodes correctly 16828(Zero, One, Ones, Revision). 16829 16830Fixed a problem with the Concatenate operator in the AML 16831interpreter where a buffer result object was incorrectly marked as 16832not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16833 16834All package sub-objects are now fully resolved before they are 16835returned from the external ACPI interfaces. This means that name 16836strings are resolved to object handles, and constant operators 16837(Zero, One, Ones, Revision) are resolved to Integers. 16838 16839Implemented immediate resolution of the AML Constant opcodes 16840(Zero, One, Ones, Revision) to Integer objects upon detection 16841within the AML stream. This has simplified and reduced the 16842generated code size of the subsystem by eliminating about 10 16843switch statements for these constants (which previously were 16844contained in Reference objects.) The complicating issues are that 16845the Zero opcode is used as a "placeholder" for unspecified 16846optional target operands and stores to constants are defined to be 16847no-ops. 16848 16849Code and Data Size: Current core subsystem library sizes are shown 16850below. These are the code and data sizes for the acpica.lib 16851produced by the Microsoft Visual C++ 6.0 compiler, and these 16852values do not include any ACPI driver or OSPM code. The debug 16853version of the code includes the debug output trace mechanism and 16854has a larger code and data size. Note that these values will vary 16855depending on the efficiency of the compiler and the compiler 16856options used during generation. 16857 16858 Previous Release 16859 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16860 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16861 Current Release: 16862 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16863 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16864 16865 168662) Linux 16867 16868 16869Added preliminary support for obtaining _TRA data for PCI root 16870bridges (Bjorn Helgaas). 16871 16872 168733) iASL Compiler Version X2046: 16874 16875Fixed a problem where the "_DDN" reserved name was defined to be a 16876control method with one argument. There are no arguments, and 16877_DDN does not have to be a control method. 16878 16879Fixed a problem with the Linux version of the compiler where the 16880source lines printed with error messages were the wrong lines. 16881This turned out to be the "LF versus CR/LF" difference between 16882Windows and Unix. This appears to be the longstanding issue 16883concerning listing output and error messages. 16884 16885Fixed a problem with the Linux version of compiler where opcode 16886names within error messages were wrong. This was caused by a 16887slight difference in the output of the Flex tool on Linux versus 16888Windows. 16889 16890Fixed a problem with the Linux compiler where the hex output files 16891contained some garbage data caused by an internal buffer overrun. 16892 16893 16894---------------------------------------- 1689517 May 2002. Summary of changes for this release. 16896 16897 168981) ACPI CA Core Subsystem Version 20020517: 16899 16900Implemented a workaround to an BIOS bug discovered on the HP 16901OmniBook where the FADT revision number and the table size are 16902inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16903behavior is to fallback to using only the ACPI 1.0 fields of the 16904FADT if the table is too small to be a ACPI 2.0 table as claimed 16905by the revision number. Although this is a BIOS bug, this is a 16906case where the workaround is simple enough and with no side 16907effects, so it seemed prudent to add it. A warning message is 16908issued, however. 16909 16910Implemented minimum size checks for the fixed-length ACPI tables - 16911- the FADT and FACS, as well as consistency checks between the 16912revision number and the table size. 16913 16914Fixed a reported problem in the table override support where the 16915new table pointer was incorrectly treated as a physical address 16916instead of a logical address. 16917 16918Eliminated the use of the AE_AML_ERROR exception and replaced it 16919with more descriptive codes. 16920 16921Fixed a problem where an exception would occur if an ASL Field was 16922defined with no named Field Units underneath it (used by some 16923index fields). 16924 16925Code and Data Size: Current core subsystem library sizes are shown 16926below. These are the code and data sizes for the acpica.lib 16927produced by the Microsoft Visual C++ 6.0 compiler, and these 16928values do not include any ACPI driver or OSPM code. The debug 16929version of the code includes the debug output trace mechanism and 16930has a larger code and data size. Note that these values will vary 16931depending on the efficiency of the compiler and the compiler 16932options used during generation. 16933 16934 Previous Release 16935 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16936 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16937 Current Release: 16938 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16939 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16940 16941 16942 169432) Linux 16944 16945Much work done on ACPI init (MADT and PCI IRQ routing support). 16946(Paul D. and Dominik Brodowski) 16947 16948Fix PCI IRQ-related panic on boot (Sam Revitch) 16949 16950Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16951 16952Fix "MHz" typo (Dominik Brodowski) 16953 16954Fix RTC year 2000 issue (Dominik Brodowski) 16955 16956Preclude multiple button proc entries (Eric Brunet) 16957 16958Moved arch-specific code out of include/platform/aclinux.h 16959 169603) iASL Compiler Version X2044: 16961 16962Implemented error checking for the string used in the EISAID macro 16963(Usually used in the definition of the _HID object.) The code now 16964strictly enforces the PnP format - exactly 7 characters, 3 16965uppercase letters and 4 hex digits. 16966 16967If a raw string is used in the definition of the _HID object 16968(instead of the EISAID macro), the string must contain all 16969alphanumeric characters (e.g., "*PNP0011" is not allowed because 16970of the asterisk.) 16971 16972Implemented checking for invalid use of ACPI reserved names for 16973most of the name creation operators (Name, Device, Event, Mutex, 16974OperationRegion, PowerResource, Processor, and ThermalZone.) 16975Previously, this check was only performed for control methods. 16976 16977Implemented an additional check on the Name operator to emit an 16978error if a reserved name that must be implemented in ASL as a 16979control method is used. We know that a reserved name must be a 16980method if it is defined with input arguments. 16981 16982The warning emitted when a namespace object reference is not found 16983during the cross reference phase has been changed into an error. 16984The "External" directive should be used for names defined in other 16985modules. 16986 16987 169884) Tools and Utilities 16989 16990The 16-bit tools (adump16 and aexec16) have been regenerated and 16991tested. 16992 16993Fixed a problem with the output of both acpidump and adump16 where 16994the indentation of closing parentheses and brackets was not 16995 16996aligned properly with the parent block. 16997 16998 16999---------------------------------------- 1700003 May 2002. Summary of changes for this release. 17001 17002 170031) ACPI CA Core Subsystem Version 20020503: 17004 17005Added support a new OSL interface that allows the host operating 17006 17007system software to override the DSDT found in the firmware - 17008AcpiOsTableOverride. With this interface, the OSL can examine the 17009version of the firmware DSDT and replace it with a different one 17010if desired. 17011 17012Added new external interfaces for accessing ACPI registers from 17013device drivers and other system software - AcpiGetRegister and 17014AcpiSetRegister. This was simply an externalization of the 17015existing AcpiHwBitRegister interfaces. 17016 17017Fixed a regression introduced in the previous build where the 17018ASL/AML CreateField operator always returned an error, 17019"destination must be a NS Node". 17020 17021Extended the maximum time (before failure) to successfully enable 17022ACPI mode to 3 seconds. 17023 17024Code and Data Size: Current core subsystem library sizes are shown 17025below. These are the code and data sizes for the acpica.lib 17026produced by the Microsoft Visual C++ 6.0 compiler, and these 17027values do not include any ACPI driver or OSPM code. The debug 17028version of the code includes the debug output trace mechanism and 17029has a larger code and data size. Note that these values will vary 17030depending on the efficiency of the compiler and the compiler 17031options used during generation. 17032 17033 Previous Release 17034 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17035 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17036 Current Release: 17037 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17038 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17039 17040 170412) Linux 17042 17043Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17044free. While 3 out of 4 of our in-house systems work fine, the last 17045one still hangs when testing the LAPIC timer. 17046 17047Renamed many files in 2.5 kernel release to omit "acpi_" from the 17048name. 17049 17050Added warning on boot for Presario 711FR. 17051 17052Sleep improvements (Pavel Machek) 17053 17054ACPI can now be built without CONFIG_PCI enabled. 17055 17056IA64: Fixed memory map functions (JI Lee) 17057 17058 170593) iASL Compiler Version X2043: 17060 17061Added support to allow the compiler to be integrated into the MS 17062VC++ development environment for one-button compilation of single 17063files or entire projects -- with error-to-source-line mapping. 17064 17065Implemented support for compile-time constant folding for the 17066Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17067specification. This allows the ASL writer to use expressions 17068instead of Integer/Buffer/String constants in terms that must 17069evaluate to constants at compile time and will also simplify the 17070emitted AML in any such sub-expressions that can be folded 17071(evaluated at compile-time.) This increases the size of the 17072compiler significantly because a portion of the ACPI CA AML 17073interpreter is included within the compiler in order to pre- 17074evaluate constant expressions. 17075 17076 17077Fixed a problem with the "Unicode" ASL macro that caused the 17078compiler to fault. (This macro is used in conjunction with the 17079_STR reserved name.) 17080 17081Implemented an AML opcode optimization to use the Zero, One, and 17082Ones opcodes where possible to further reduce the size of integer 17083constants and thus reduce the overall size of the generated AML 17084code. 17085 17086Implemented error checking for new reserved terms for ACPI version 170872.0A. 17088 17089Implemented the -qr option to display the current list of ACPI 17090reserved names known to the compiler. 17091 17092Implemented the -qc option to display the current list of ASL 17093operators that are allowed within constant expressions and can 17094therefore be folded at compile time if the operands are constants. 17095 17096 170974) Documentation 17098 17099Updated the Programmer's Reference for new interfaces, data types, 17100and memory allocation model options. 17101 17102Updated the iASL Compiler User Reference to apply new format and 17103add information about new features and options. 17104 17105---------------------------------------- 1710619 April 2002. Summary of changes for this release. 17107 171081) ACPI CA Core Subsystem Version 20020419: 17109 17110The source code base for the Core Subsystem has been completely 17111cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17112versions. The Lint option files used are included in the 17113/acpi/generate/lint directory. 17114 17115Implemented enhanced status/error checking across the entire 17116Hardware manager subsystem. Any hardware errors (reported from 17117the OSL) are now bubbled up and will abort a running control 17118method. 17119 17120 17121Fixed a problem where the per-ACPI-table integer width (32 or 64) 17122was stored only with control method nodes, causing a fault when 17123non-control method code was executed during table loading. The 17124solution implemented uses a global variable to indicate table 17125width across the entire ACPI subsystem. Therefore, ACPI CA does 17126not support mixed integer widths across different ACPI tables 17127(DSDT, SSDT). 17128 17129Fixed a problem where NULL extended fields (X fields) in an ACPI 171302.0 ACPI FADT caused the table load to fail. Although the 17131existing ACPI specification is a bit fuzzy on this topic, the new 17132behavior is to fall back on a ACPI 1.0 field if the corresponding 17133ACPI 2.0 X field is zero (even though the table revision indicates 17134a full ACPI 2.0 table.) The ACPI specification will be updated to 17135clarify this issue. 17136 17137Fixed a problem with the SystemMemory operation region handler 17138where memory was always accessed byte-wise even if the AML- 17139specified access width was larger than a byte. This caused 17140problems on systems with memory-mapped I/O. Memory is now 17141accessed with the width specified. On systems that do not support 17142non-aligned transfers, a check is made to guarantee proper address 17143alignment before proceeding in order to avoid an AML-caused 17144alignment fault within the kernel. 17145 17146 17147Fixed a problem with the ExtendedIrq resource where only one byte 17148of the 4-byte Irq field was extracted. 17149 17150Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17151function was out of date and required a rewrite. 17152 17153Code and Data Size: Current core subsystem library sizes are shown 17154below. These are the code and data sizes for the acpica.lib 17155produced by the Microsoft Visual C++ 6.0 compiler, and these 17156values do not include any ACPI driver or OSPM code. The debug 17157version of the code includes the debug output trace mechanism and 17158has a larger code and data size. Note that these values will vary 17159depending on the efficiency of the compiler and the compiler 17160options used during generation. 17161 17162 Previous Release 17163 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17164 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17165 Current Release: 17166 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17167 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17168 17169 171702) Linux 17171 17172PCI IRQ routing fixes (Dominik Brodowski) 17173 17174 171753) iASL Compiler Version X2042: 17176 17177Implemented an additional compile-time error check for a field 17178unit whose size + minimum access width would cause a run-time 17179access beyond the end-of-region. Previously, only the field size 17180itself was checked. 17181 17182The Core subsystem and iASL compiler now share a common parse 17183object in preparation for compile-time evaluation of the type 171843/4/5 ASL operators. 17185 17186 17187---------------------------------------- 17188Summary of changes for this release: 03_29_02 17189 171901) ACPI CA Core Subsystem Version 20020329: 17191 17192Implemented support for late evaluation of TermArg operands to 17193Buffer and Package objects. This allows complex expressions to be 17194used in the declarations of these object types. 17195 17196Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 171971.0, if the field was larger than 32 bits, it was returned as a 17198buffer - otherwise it was returned as an integer. In ACPI 2.0, 17199the field is returned as a buffer only if the field is larger than 1720064 bits. The TableRevision is now considered when making this 17201conversion to avoid incompatibility with existing ASL code. 17202 17203Implemented logical addressing for AcpiOsGetRootPointer. This 17204allows an RSDP with either a logical or physical address. With 17205this support, the host OS can now override all ACPI tables with 17206one logical RSDP. Includes implementation of "typed" pointer 17207support to allow a common data type for both physical and logical 17208pointers internally. This required a change to the 17209AcpiOsGetRootPointer interface. 17210 17211Implemented the use of ACPI 2.0 Generic Address Structures for all 17212GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17213mapped I/O for these ACPI features. 17214 17215Initialization now ignores not only non-required tables (All 17216tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17217not validate the table headers of unrecognized tables. 17218 17219Fixed a problem where a notify handler could only be 17220installed/removed on an object of type Device. All "notify" 17221 17222objects are now supported -- Devices, Processor, Power, and 17223Thermal. 17224 17225Removed most verbosity from the ACPI_DB_INFO debug level. Only 17226critical information is returned when this debug level is enabled. 17227 17228Code and Data Size: Current core subsystem library sizes are shown 17229below. These are the code and data sizes for the acpica.lib 17230produced by the Microsoft Visual C++ 6.0 compiler, and these 17231values do not include any ACPI driver or OSPM code. The debug 17232version of the code includes the debug output trace mechanism and 17233has a larger code and data size. Note that these values will vary 17234depending on the efficiency of the compiler and the compiler 17235options used during generation. 17236 17237 Previous Release 17238 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17239 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17240 Current Release: 17241 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17242 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17243 17244 172452) Linux: 17246 17247The processor driver (acpi_processor.c) now fully supports ACPI 172482.0-based processor performance control (e.g. Intel(R) 17249SpeedStep(TM) technology) Note that older laptops that only have 17250the Intel "applet" interface are not supported through this. The 17251'limit' and 'performance' interface (/proc) are fully functional. 17252[Note that basic policy for controlling performance state 17253transitions will be included in the next version of ospmd.] The 17254idle handler was modified to more aggressively use C2, and PIIX4 17255errata handling underwent a complete overhaul (big thanks to 17256Dominik Brodowski). 17257 17258Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17259based devices in the ACPI namespace are now dynamically bound 17260(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17261This allows, among other things, ACPI to resolve bus numbers for 17262subordinate PCI bridges. 17263 17264Enhanced PCI IRQ routing to get the proper bus number for _PRT 17265entries defined underneath PCI bridges. 17266 17267Added IBM 600E to bad bios list due to invalid _ADR value for 17268PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17269 17270In the process of adding full MADT support (e.g. IOAPIC) for IA32 17271(acpi.c, mpparse.c) -- stay tuned. 17272 17273Added back visual differentiation between fixed-feature and 17274control-method buttons in dmesg. Buttons are also subtyped (e.g. 17275button/power/PWRF) to simplify button identification. 17276 17277We no longer use -Wno-unused when compiling debug. Please ignore 17278any "_THIS_MODULE defined but not used" messages. 17279 17280Can now shut down the system using "magic sysrq" key. 17281 17282 172833) iASL Compiler version 2041: 17284 17285Fixed a problem where conversion errors for hex/octal/decimal 17286constants were not reported. 17287 17288Implemented a fix for the General Register template Address field. 17289This field was 8 bits when it should be 64. 17290 17291Fixed a problem where errors/warnings were no longer being emitted 17292within the listing output file. 17293 17294Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17295exactly 4 characters, alphanumeric only. 17296 17297 17298 17299 17300---------------------------------------- 17301Summary of changes for this release: 03_08_02 17302 17303 173041) ACPI CA Core Subsystem Version 20020308: 17305 17306Fixed a problem with AML Fields where the use of the "AccessAny" 17307keyword could cause an interpreter error due to attempting to read 17308or write beyond the end of the parent Operation Region. 17309 17310Fixed a problem in the SystemMemory Operation Region handler where 17311an attempt was made to map memory beyond the end of the region. 17312This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17313errors on some Linux systems. 17314 17315Fixed a problem where the interpreter/namespace "search to root" 17316algorithm was not functioning for some object types. Relaxed the 17317internal restriction on the search to allow upsearches for all 17318external object types as well as most internal types. 17319 17320 173212) Linux: 17322 17323We now use safe_halt() macro versus individual calls to sti | hlt. 17324 17325Writing to the processor limit interface should now work. "echo 1" 17326will increase the limit, 2 will decrease, and 0 will reset to the 17327 17328default. 17329 17330 173313) ASL compiler: 17332 17333Fixed segfault on Linux version. 17334 17335 17336---------------------------------------- 17337Summary of changes for this release: 02_25_02 17338 173391) ACPI CA Core Subsystem: 17340 17341 17342Fixed a problem where the GPE bit masks were not initialized 17343properly, causing erratic GPE behavior. 17344 17345Implemented limited support for multiple calling conventions. The 17346code can be generated with either the VPL (variable parameter 17347list, or "C") convention, or the FPL (fixed parameter list, or 17348"Pascal") convention. The core subsystem is about 3.4% smaller 17349when generated with FPL. 17350 17351 173522) Linux 17353 17354Re-add some /proc/acpi/event functionality that was lost during 17355the rewrite 17356 17357Resolved issue with /proc events for fixed-feature buttons showing 17358up as the system device. 17359 17360Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17361 17362Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17363 17364Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17365 17366Fixed limit interface & usage to fix bugs with passive cooling 17367hysterisis. 17368 17369Restructured PRT support. 17370 17371 17372---------------------------------------- 17373Summary of changes for this label: 02_14_02 17374 17375 173761) ACPI CA Core Subsystem: 17377 17378Implemented support in AcpiLoadTable to allow loading of FACS and 17379FADT tables. 17380 17381Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17382been removed. All 64-bit platforms should be migrated to the ACPI 173832.0 tables. The actbl71.h header has been removed from the source 17384tree. 17385 17386All C macros defined within the subsystem have been prefixed with 17387"ACPI_" to avoid collision with other system include files. 17388 17389Removed the return value for the two AcpiOsPrint interfaces, since 17390it is never used and causes lint warnings for ignoring the return 17391value. 17392 17393Added error checking to all internal mutex acquire and release 17394calls. Although a failure from one of these interfaces is 17395probably a fatal system error, these checks will cause the 17396immediate abort of the currently executing method or interface. 17397 17398Fixed a problem where the AcpiSetCurrentResources interface could 17399fault. This was a side effect of the deployment of the new memory 17400allocation model. 17401 17402Fixed a couple of problems with the Global Lock support introduced 17403in the last major build. The "common" (1.0/2.0) internal FACS was 17404being overwritten with the FACS signature and clobbering the 17405Global Lock pointer. Also, the actual firmware FACS was being 17406unmapped after construction of the "common" FACS, preventing 17407access to the actual Global Lock field within it. The "common" 17408internal FACS is no longer installed as an actual ACPI table; it 17409is used simply as a global. 17410 17411Code and Data Size: Current core subsystem library sizes are shown 17412below. These are the code and data sizes for the acpica.lib 17413produced by the Microsoft Visual C++ 6.0 compiler, and these 17414values do not include any ACPI driver or OSPM code. The debug 17415version of the code includes the debug output trace mechanism and 17416has a larger code and data size. Note that these values will vary 17417depending on the efficiency of the compiler and the compiler 17418options used during generation. 17419 17420 Previous Release (02_07_01) 17421 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17422 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17423 Current Release: 17424 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17425 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17426 17427 174282) Linux 17429 17430Updated Linux-specific code for core macro and OSL interface 17431changes described above. 17432 17433Improved /proc/acpi/event. It now can be opened only once and has 17434proper poll functionality. 17435 17436Fixed and restructured power management (acpi_bus). 17437 17438Only create /proc "view by type" when devices of that class exist. 17439 17440Fixed "charging/discharging" bug (and others) in acpi_battery. 17441 17442Improved thermal zone code. 17443 17444 174453) ASL Compiler, version X2039: 17446 17447 17448Implemented the new compiler restriction on ASL String hex/octal 17449escapes to non-null, ASCII values. An error results if an invalid 17450value is used. (This will require an ACPI 2.0 specification 17451change.) 17452 17453AML object labels that are output to the optional C and ASM source 17454are now prefixed with both the ACPI table signature and table ID 17455to help guarantee uniqueness within a large BIOS project. 17456 17457 17458---------------------------------------- 17459Summary of changes for this label: 02_01_02 17460 174611) ACPI CA Core Subsystem: 17462 17463ACPI 2.0 support is complete in the entire Core Subsystem and the 17464ASL compiler. All new ACPI 2.0 operators are implemented and all 17465other changes for ACPI 2.0 support are complete. With 17466simultaneous code and data optimizations throughout the subsystem, 17467ACPI 2.0 support has been implemented with almost no additional 17468cost in terms of code and data size. 17469 17470Implemented a new mechanism for allocation of return buffers. If 17471the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17472be allocated on behalf of the caller. Consolidated all return 17473buffer validation and allocation to a common procedure. Return 17474buffers will be allocated via the primary OSL allocation interface 17475since it appears that a separate pool is not needed by most users. 17476If a separate pool is required for these buffers, the caller can 17477still use the original mechanism and pre-allocate the buffer(s). 17478 17479Implemented support for string operands within the DerefOf 17480operator. 17481 17482Restructured the Hardware and Event managers to be table driven, 17483simplifying the source code and reducing the amount of generated 17484code. 17485 17486Split the common read/write low-level ACPI register bitfield 17487procedure into a separate read and write, simplifying the code 17488considerably. 17489 17490Obsoleted the AcpiOsCallocate OSL interface. This interface was 17491used only a handful of times and didn't have enough critical mass 17492for a separate interface. Replaced with a common calloc procedure 17493in the core. 17494 17495Fixed a reported problem with the GPE number mapping mechanism 17496that allows GPE1 numbers to be non-contiguous with GPE0. 17497Reorganized the GPE information and shrunk a large array that was 17498originally large enough to hold info for all possible GPEs (256) 17499to simply large enough to hold all GPEs up to the largest GPE 17500number on the machine. 17501 17502Fixed a reported problem with resource structure alignment on 64- 17503bit platforms. 17504 17505Changed the AcpiEnableEvent and AcpiDisableEvent external 17506interfaces to not require any flags for the common case of 17507enabling/disabling a GPE. 17508 17509Implemented support to allow a "Notify" on a Processor object. 17510 17511Most TBDs in comments within the source code have been resolved 17512and eliminated. 17513 17514 17515Fixed a problem in the interpreter where a standalone parent 17516prefix (^) was not handled correctly in the interpreter and 17517debugger. 17518 17519Removed obsolete and unnecessary GPE save/restore code. 17520 17521Implemented Field support in the ASL Load operator. This allows a 17522table to be loaded from a named field, in addition to loading a 17523table directly from an Operation Region. 17524 17525Implemented timeout and handle support in the external Global Lock 17526interfaces. 17527 17528Fixed a problem in the AcpiDump utility where pathnames were no 17529longer being generated correctly during the dump of named objects. 17530 17531Modified the AML debugger to give a full display of if/while 17532predicates instead of just one AML opcode at a time. (The 17533predicate can have several nested ASL statements.) The old method 17534was confusing during single stepping. 17535 17536Code and Data Size: Current core subsystem library sizes are shown 17537below. These are the code and data sizes for the acpica.lib 17538produced by the Microsoft Visual C++ 6.0 compiler, and these 17539values do not include any ACPI driver or OSPM code. The debug 17540version of the code includes the debug output trace mechanism and 17541has a larger code and data size. Note that these values will vary 17542depending on the efficiency of the compiler and the compiler 17543options used during generation. 17544 17545 Previous Release (12_18_01) 17546 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17547 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17548 Current Release: 17549 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17550 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17551 175522) Linux 17553 17554 Implemented fix for PIIX reverse throttling errata (Processor 17555driver) 17556 17557Added new Limit interface (Processor and Thermal drivers) 17558 17559New thermal policy (Thermal driver) 17560 17561Many updates to /proc 17562 17563Battery "low" event support (Battery driver) 17564 17565Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17566 17567IA32 - IA64 initialization unification, no longer experimental 17568 17569Menuconfig options redesigned 17570 175713) ASL Compiler, version X2037: 17572 17573Implemented several new output features to simplify integration of 17574AML code into firmware: 1) Output the AML in C source code with 17575labels for each named ASL object. The original ASL source code 17576is interleaved as C comments. 2) Output the AML in ASM source code 17577with labels and interleaved ASL source. 3) Output the AML in 17578raw hex table form, in either C or ASM. 17579 17580Implemented support for optional string parameters to the 17581LoadTable operator. 17582 17583Completed support for embedded escape sequences within string 17584literals. The compiler now supports all single character escapes 17585as well as the Octal and Hex escapes. Note: the insertion of a 17586null byte into a string literal (via the hex/octal escape) causes 17587the string to be immediately terminated. A warning is issued. 17588 17589Fixed a problem where incorrect AML was generated for the case 17590where an ASL namepath consists of a single parent prefix ( 17591 17592) with no trailing name segments. 17593 17594The compiler has been successfully generated with a 64-bit C 17595compiler. 17596 17597 17598 17599 17600---------------------------------------- 17601Summary of changes for this label: 12_18_01 17602 176031) Linux 17604 17605Enhanced blacklist with reason and severity fields. Any table's 17606signature may now be used to identify a blacklisted system. 17607 17608Call _PIC control method to inform the firmware which interrupt 17609model the OS is using. Turn on any disabled link devices. 17610 17611Cleaned up busmgr /proc error handling (Andreas Dilger) 17612 17613 2) ACPI CA Core Subsystem: 17614 17615Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17616while loop) 17617 17618Completed implementation of the ACPI 2.0 "Continue", 17619"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17620operators. All new ACPI 2.0 operators are now implemented in both 17621the ASL compiler and the AML interpreter. The only remaining ACPI 176222.0 task is support for the String data type in the DerefOf 17623operator. Fixed a problem with AcquireMutex where the status code 17624was lost if the caller had to actually wait for the mutex. 17625 17626Increased the maximum ASL Field size from 64K bits to 4G bits. 17627 17628Completed implementation of the external Global Lock interfaces -- 17629AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17630Handler parameters were added. 17631 17632Completed another pass at removing warnings and issues when 17633compiling with 64-bit compilers. The code now compiles cleanly 17634with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17635add and subtract (diff) macros have changed considerably. 17636 17637 17638Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1763964-bit platforms, 32-bits on all others. This type is used 17640wherever memory allocation and/or the C sizeof() operator is used, 17641and affects the OSL memory allocation interfaces AcpiOsAllocate 17642and AcpiOsCallocate. 17643 17644Implemented sticky user breakpoints in the AML debugger. 17645 17646Code and Data Size: Current core subsystem library sizes are shown 17647below. These are the code and data sizes for the acpica.lib 17648produced by the Microsoft Visual C++ 6.0 compiler, and these 17649values do not include any ACPI driver or OSPM code. The debug 17650version of the code includes the debug output trace mechanism and 17651has a larger code and data size. Note that these values will vary 17652depending on the efficiency of the compiler and the compiler 17653options used during generation. 17654 17655 Previous Release (12_05_01) 17656 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17657 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17658 Current Release: 17659 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17660 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17661 17662 3) ASL Compiler, version X2034: 17663 17664Now checks for (and generates an error if detected) the use of a 17665Break or Continue statement without an enclosing While statement. 17666 17667 17668Successfully generated the compiler with the Intel 64-bit C 17669compiler. 17670 17671 ---------------------------------------- 17672Summary of changes for this label: 12_05_01 17673 17674 1) ACPI CA Core Subsystem: 17675 17676The ACPI 2.0 CopyObject operator is fully implemented. This 17677operator creates a new copy of an object (and is also used to 17678bypass the "implicit conversion" mechanism of the Store operator.) 17679 17680The ACPI 2.0 semantics for the SizeOf operator are fully 17681implemented. The change is that performing a SizeOf on a 17682reference object causes an automatic dereference of the object to 17683the actual value before the size is evaluated. This behavior was 17684undefined in ACPI 1.0. 17685 17686The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17687have been implemented. The interrupt polarity and mode are now 17688independently set. 17689 17690Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17691appearing in Package objects were not properly converted to 17692integers when the internal Package was converted to an external 17693object (via the AcpiEvaluateObject interface.) 17694 17695Fixed a problem with the namespace object deletion mechanism for 17696objects created by control methods. There were two parts to this 17697problem: 1) Objects created during the initialization phase method 17698parse were not being deleted, and 2) The object owner ID mechanism 17699to track objects was broken. 17700 17701Fixed a problem where the use of the ASL Scope operator within a 17702control method would result in an invalid opcode exception. 17703 17704Fixed a problem introduced in the previous label where the buffer 17705length required for the _PRT structure was not being returned 17706correctly. 17707 17708Code and Data Size: Current core subsystem library sizes are shown 17709below. These are the code and data sizes for the acpica.lib 17710produced by the Microsoft Visual C++ 6.0 compiler, and these 17711values do not include any ACPI driver or OSPM code. The debug 17712version of the code includes the debug output trace mechanism and 17713has a larger code and data size. Note that these values will vary 17714depending on the efficiency of the compiler and the compiler 17715options used during generation. 17716 17717 Previous Release (11_20_01) 17718 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17719 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17720 17721 Current Release: 17722 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17723 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17724 17725 2) Linux: 17726 17727Updated all files to apply cleanly against 2.4.16. 17728 17729Added basic PCI Interrupt Routing Table (PRT) support for IA32 17730(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17731version supports both static and dynamic PRT entries, but dynamic 17732entries are treated as if they were static (not yet 17733reconfigurable). Architecture- specific code to use this data is 17734absent on IA32 but should be available shortly. 17735 17736Changed the initialization sequence to start the ACPI interpreter 17737(acpi_init) prior to initialization of the PCI driver (pci_init) 17738in init/main.c. This ordering is required to support PRT and 17739facilitate other (future) enhancement. A side effect is that the 17740ACPI bus driver and certain device drivers can no longer be loaded 17741as modules. 17742 17743Modified the 'make menuconfig' options to allow PCI Interrupt 17744Routing support to be included without the ACPI Bus and other 17745device drivers. 17746 17747 3) ASL Compiler, version X2033: 17748 17749Fixed some issues with the use of the new CopyObject and 17750DataTableRegion operators. Both are fully functional. 17751 17752 ---------------------------------------- 17753Summary of changes for this label: 11_20_01 17754 17755 20 November 2001. Summary of changes for this release. 17756 17757 1) ACPI CA Core Subsystem: 17758 17759Updated Index support to match ACPI 2.0 semantics. Storing a 17760Integer, String, or Buffer to an Index of a Buffer will store only 17761the least-significant byte of the source to the Indexed buffer 17762byte. Multiple writes are not performed. 17763 17764Fixed a problem where the access type used in an AccessAs ASL 17765operator was not recorded correctly into the field object. 17766 17767Fixed a problem where ASL Event objects were created in a 17768signalled state. Events are now created in an unsignalled state. 17769 17770The internal object cache is now purged after table loading and 17771initialization to reduce the use of dynamic kernel memory -- on 17772the assumption that object use is greatest during the parse phase 17773of the entire table (versus the run-time use of individual control 17774methods.) 17775 17776ACPI 2.0 variable-length packages are now fully operational. 17777 17778Code and Data Size: Code and Data optimizations have permitted new 17779feature development with an actual reduction in the library size. 17780Current core subsystem library sizes are shown below. These are 17781the code and data sizes for the acpica.lib produced by the 17782Microsoft Visual C++ 6.0 compiler, and these values do not include 17783any ACPI driver or OSPM code. The debug version of the code 17784includes the debug output trace mechanism and has a larger code 17785and data size. Note that these values will vary depending on the 17786efficiency of the compiler and the compiler options used during 17787generation. 17788 17789 Previous Release (11_09_01): 17790 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17791 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17792 17793 Current Release: 17794 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17795 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17796 17797 2) Linux: 17798 17799Enhanced the ACPI boot-time initialization code to allow the use 17800of Local APIC tables for processor enumeration on IA-32, and to 17801pave the way for a fully MPS-free boot (on SMP systems) in the 17802near future. This functionality replaces 17803arch/i386/kernel/acpitables.c, which was introduced in an earlier 178042.4.15-preX release. To enable this feature you must add 17805"acpi_boot=on" to the kernel command line -- see the help entry 17806for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17807the works... 17808 17809Restructured the configuration options to allow boot-time table 17810parsing support without inclusion of the ACPI Interpreter (and 17811other) code. 17812 17813NOTE: This release does not include fixes for the reported events, 17814power-down, and thermal passive cooling issues (coming soon). 17815 17816 3) ASL Compiler: 17817 17818Added additional typechecking for Fields within restricted access 17819Operation Regions. All fields within EC and CMOS regions must be 17820declared with ByteAcc. All fields within SMBus regions must be 17821declared with the BufferAcc access type. 17822 17823Fixed a problem where the listing file output of control methods 17824no longer interleaved the actual AML code with the ASL source 17825code. 17826 17827 17828 17829 17830---------------------------------------- 17831Summary of changes for this label: 11_09_01 17832 178331) ACPI CA Core Subsystem: 17834 17835Implemented ACPI 2.0-defined support for writes to fields with a 17836Buffer, String, or Integer source operand that is smaller than the 17837target field. In these cases, the source operand is zero-extended 17838to fill the target field. 17839 17840Fixed a problem where a Field starting bit offset (within the 17841parent operation region) was calculated incorrectly if the 17842 17843alignment of the field differed from the access width. This 17844affected CreateWordField, CreateDwordField, CreateQwordField, and 17845possibly other fields that use the "AccessAny" keyword. 17846 17847Fixed a problem introduced in the 11_02_01 release where indirect 17848stores through method arguments did not operate correctly. 17849 178502) Linux: 17851 17852Implemented boot-time ACPI table parsing support 17853(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17854facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17855legacy BIOS interfaces (e.g. MPS) for the configuration of system 17856processors, memory, and interrupts during setup_arch(). Note that 17857this patch does not include the required architecture-specific 17858changes required to apply this information -- subsequent patches 17859will be posted for both IA32 and IA64 to achieve this. 17860 17861Added low-level sleep support for IA32 platforms, courtesy of Pat 17862Mochel. This allows IA32 systems to transition to/from various 17863sleeping states (e.g. S1, S3), although the lack of a centralized 17864driver model and power-manageable drivers will prevent its 17865(successful) use on most systems. 17866 17867Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17868submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17869tables" option, etc. 17870 17871Increased the default timeout for the EC driver from 1ms to 10ms 17872(1000 cycles of 10us) to try to address AE_TIME errors during EC 17873transactions. 17874 17875 ---------------------------------------- 17876Summary of changes for this label: 11_02_01 17877 178781) ACPI CA Core Subsystem: 17879 17880ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17881(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17882implemented. 17883 17884OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17885changes to support ACPI 2.0 Qword field access. Read/Write 17886PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17887accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17888the value parameter for the address space handler interface is now 17889an ACPI_INTEGER. OSL implementations of these interfaces must now 17890handle the case where the Width parameter is 64. 17891 17892Index Fields: Fixed a problem where unaligned bit assembly and 17893disassembly for IndexFields was not supported correctly. 17894 17895Index and Bank Fields: Nested Index and Bank Fields are now 17896supported. During field access, a check is performed to ensure 17897that the value written to an Index or Bank register is not out of 17898the range of the register. The Index (or Bank) register is 17899written before each access to the field data. Future support will 17900include allowing individual IndexFields to be wider than the 17901DataRegister width. 17902 17903Fields: Fixed a problem where the AML interpreter was incorrectly 17904attempting to write beyond the end of a Field/OpRegion. This was 17905a boundary case that occurred when a DWORD field was written to a 17906BYTE access OpRegion, forcing multiple writes and causing the 17907interpreter to write one datum too many. 17908 17909Fields: Fixed a problem with Field/OpRegion access where the 17910starting bit address of a field was incorrectly calculated if the 17911current access type was wider than a byte (WordAcc, DwordAcc, or 17912QwordAcc). 17913 17914Fields: Fixed a problem where forward references to individual 17915FieldUnits (individual Field names within a Field definition) were 17916not resolved during the AML table load. 17917 17918Fields: Fixed a problem where forward references from a Field 17919definition to the parent Operation Region definition were not 17920resolved during the AML table load. 17921 17922Fields: Duplicate FieldUnit names within a scope are now detected 17923during AML table load. 17924 17925Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17926returned an incorrect name for the root node. 17927 17928Code and Data Size: Code and Data optimizations have permitted new 17929feature development with an actual reduction in the library size. 17930Current core subsystem library sizes are shown below. These are 17931the code and data sizes for the acpica.lib produced by the 17932Microsoft Visual C++ 6.0 compiler, and these values do not include 17933any ACPI driver or OSPM code. The debug version of the code 17934includes the debug output trace mechanism and has a larger code 17935and data size. Note that these values will vary depending on the 17936efficiency of the compiler and the compiler options used during 17937generation. 17938 17939 Previous Release (10_18_01): 17940 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17941 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17942 17943 Current Release: 17944 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17945 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17946 17947 2) Linux: 17948 17949Improved /proc processor output (Pavel Machek) Re-added 17950MODULE_LICENSE("GPL") to all modules. 17951 17952 3) ASL Compiler version X2030: 17953 17954Duplicate FieldUnit names within a scope are now detected and 17955flagged as errors. 17956 17957 4) Documentation: 17958 17959Programmer Reference updated to reflect OSL and address space 17960handler interface changes described above. 17961 17962---------------------------------------- 17963Summary of changes for this label: 10_18_01 17964 17965ACPI CA Core Subsystem: 17966 17967Fixed a problem with the internal object reference count mechanism 17968that occasionally caused premature object deletion. This resolves 17969all of the outstanding problem reports where an object is deleted 17970in the middle of an interpreter evaluation. Although this problem 17971only showed up in rather obscure cases, the solution to the 17972problem involved an adjustment of all reference counts involving 17973objects attached to namespace nodes. 17974 17975Fixed a problem with Field support in the interpreter where 17976writing to an aligned field whose length is an exact multiple (2 17977or greater) of the field access granularity would cause an attempt 17978to write beyond the end of the field. 17979 17980The top level AML opcode execution functions within the 17981interpreter have been renamed with a more meaningful and 17982consistent naming convention. The modules exmonad.c and 17983exdyadic.c were eliminated. New modules are exoparg1.c, 17984exoparg2.c, exoparg3.c, and exoparg6.c. 17985 17986Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17987 17988Fixed a problem where the AML debugger was causing some internal 17989objects to not be deleted during subsystem termination. 17990 17991Fixed a problem with the external AcpiEvaluateObject interface 17992where the subsystem would fault if the named object to be 17993evaluated referred to a constant such as Zero, Ones, etc. 17994 17995Fixed a problem with IndexFields and BankFields where the 17996subsystem would fault if the index, data, or bank registers were 17997not defined in the same scope as the field itself. 17998 17999Added printf format string checking for compilers that support 18000this feature. Corrected more than 50 instances of issues with 18001format specifiers within invocations of ACPI_DEBUG_PRINT 18002throughout the core subsystem code. 18003 18004The ASL "Revision" operator now returns the ACPI support level 18005implemented in the core - the value "2" since the ACPI 2.0 support 18006is more than 50% implemented. 18007 18008Enhanced the output of the AML debugger "dump namespace" command 18009to output in a more human-readable form. 18010 18011Current core subsystem library code sizes are shown below. These 18012 18013are the code and data sizes for the acpica.lib produced by the 18014Microsoft Visual C++ 6.0 compiler, and these values do not include 18015any ACPI driver or OSPM code. The debug version of the code 18016includes the full debug trace mechanism -- leading to a much 18017 18018larger code and data size. Note that these values will vary 18019depending on the efficiency of the compiler and the compiler 18020options used during generation. 18021 18022 Previous Label (09_20_01): 18023 Non-Debug Version: 65K Code, 5K Data, 70K Total 18024 Debug Version: 138K Code, 58K Data, 196K Total 18025 18026 This Label: 18027 18028 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18029 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18030 18031Linux: 18032 18033Implemented a "Bad BIOS Blacklist" to track machines that have 18034known ASL/AML problems. 18035 18036Enhanced the /proc interface for the thermal zone driver and added 18037support for _HOT (the critical suspend trip point). The 'info' 18038file now includes threshold/policy information, and allows setting 18039of _SCP (cooling preference) and _TZP (polling frequency) values 18040to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18041frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18042preference to the passive/quiet mode (if supported by the ASL). 18043 18044Implemented a workaround for a gcc bug that resuted in an OOPs 18045when loading the control method battery driver. 18046 18047 ---------------------------------------- 18048Summary of changes for this label: 09_20_01 18049 18050 ACPI CA Core Subsystem: 18051 18052The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18053modified to allow individual GPE levels to be flagged as wake- 18054enabled (i.e., these GPEs are to remain enabled when the platform 18055sleeps.) 18056 18057The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18058support wake-enabled GPEs. This means that upon entering the 18059sleep state, all GPEs that are not wake-enabled are disabled. 18060When leaving the sleep state, these GPEs are re-enabled. 18061 18062A local double-precision divide/modulo module has been added to 18063enhance portability to OS kernels where a 64-bit math library is 18064not available. The new module is "utmath.c". 18065 18066Several optimizations have been made to reduce the use of CPU 18067stack. Originally over 2K, the maximum stack usage is now below 180682K at 1860 bytes (1.82k) 18069 18070Fixed a problem with the AcpiGetFirmwareTable interface where the 18071root table pointer was not mapped into a logical address properly. 18072 18073Fixed a problem where a NULL pointer was being dereferenced in the 18074interpreter code for the ASL Notify operator. 18075 18076Fixed a problem where the use of the ASL Revision operator 18077returned an error. This operator now returns the current version 18078of the ACPI CA core subsystem. 18079 18080Fixed a problem where objects passed as control method parameters 18081to AcpiEvaluateObject were always deleted at method termination. 18082However, these objects may end up being stored into the namespace 18083by the called method. The object reference count mechanism was 18084applied to these objects instead of a force delete. 18085 18086Fixed a problem where static strings or buffers (contained in the 18087AML code) that are declared as package elements within the ASL 18088code could cause a fault because the interpreter would attempt to 18089delete them. These objects are now marked with the "static 18090object" flag to prevent any attempt to delete them. 18091 18092Implemented an interpreter optimization to use operands directly 18093from the state object instead of extracting the operands to local 18094variables. This reduces stack use and code size, and improves 18095performance. 18096 18097The module exxface.c was eliminated as it was an unnecessary extra 18098layer of code. 18099 18100Current core subsystem library code sizes are shown below. These 18101are the code and data sizes for the acpica.lib produced by the 18102Microsoft Visual C++ 6.0 compiler, and these values do not include 18103any ACPI driver or OSPM code. The debug version of the code 18104includes the full debug trace mechanism -- leading to a much 18105larger code and data size. Note that these values will vary 18106depending on the efficiency of the compiler and the compiler 18107options used during generation. 18108 18109 Non-Debug Version: 65K Code, 5K Data, 70K Total 18110(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18111Total (Previously 195K) 18112 18113Linux: 18114 18115Support for ACPI 2.0 64-bit integers has been added. All ACPI 18116Integer objects are now 64 bits wide 18117 18118All Acpi data types and structures are now in lower case. Only 18119Acpi macros are upper case for differentiation. 18120 18121 Documentation: 18122 18123Changes to the external interfaces as described above. 18124 18125 ---------------------------------------- 18126Summary of changes for this label: 08_31_01 18127 18128 ACPI CA Core Subsystem: 18129 18130A bug with interpreter implementation of the ASL Divide operator 18131was found and fixed. The implicit function return value (not the 18132explicit store operands) was returning the remainder instead of 18133the quotient. This was a longstanding bug and it fixes several 18134known outstanding issues on various platforms. 18135 18136The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18137been further optimized for size. There are 700 invocations of the 18138DEBUG_PRINT macro alone, so each optimization reduces the size of 18139the debug version of the subsystem significantly. 18140 18141A stack trace mechanism has been implemented. The maximum stack 18142usage is about 2K on 32-bit platforms. The debugger command "stat 18143stack" will display the current maximum stack usage. 18144 18145All public symbols and global variables within the subsystem are 18146now prefixed with the string "Acpi". This keeps all of the 18147symbols grouped together in a kernel map, and avoids conflicts 18148with other kernel subsystems. 18149 18150Most of the internal fixed lookup tables have been moved into the 18151code segment via the const operator. 18152 18153Several enhancements have been made to the interpreter to both 18154reduce the code size and improve performance. 18155 18156Current core subsystem library code sizes are shown below. These 18157are the code and data sizes for the acpica.lib produced by the 18158Microsoft Visual C++ 6.0 compiler, and these values do not include 18159any ACPI driver or OSPM code. The debug version of the code 18160includes the full debug trace mechanism which contains over 700 18161invocations of the DEBUG_PRINT macro, 500 function entry macro 18162invocations, and over 900 function exit macro invocations -- 18163leading to a much larger code and data size. Note that these 18164values will vary depending on the efficiency of the compiler and 18165the compiler options used during generation. 18166 18167 Non-Debug Version: 64K Code, 5K Data, 69K Total 18168Debug Version: 137K Code, 58K Data, 195K Total 18169 18170 Linux: 18171 18172Implemented wbinvd() macro, pending a kernel-wide definition. 18173 18174Fixed /proc/acpi/event to handle poll() and short reads. 18175 18176 ASL Compiler, version X2026: 18177 18178Fixed a problem introduced in the previous label where the AML 18179 18180code emitted for package objects produced packages with zero 18181length. 18182 18183 ---------------------------------------- 18184Summary of changes for this label: 08_16_01 18185 18186ACPI CA Core Subsystem: 18187 18188The following ACPI 2.0 ASL operators have been implemented in the 18189AML interpreter (These are already supported by the Intel ASL 18190compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18191ToBuffer. Support for 64-bit AML constants is implemented in the 18192AML parser, debugger, and disassembler. 18193 18194The internal memory tracking mechanism (leak detection code) has 18195been upgraded to reduce the memory overhead (a separate tracking 18196block is no longer allocated for each memory allocation), and now 18197supports all of the internal object caches. 18198 18199The data structures and code for the internal object caches have 18200been coelesced and optimized so that there is a single cache and 18201memory list data structure and a single group of functions that 18202implement generic cache management. This has reduced the code 18203size in both the debug and release versions of the subsystem. 18204 18205The DEBUG_PRINT macro(s) have been optimized for size and replaced 18206by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18207different, because it generates a single call to an internal 18208function. This results in a savings of about 90 bytes per 18209invocation, resulting in an overall code and data savings of about 1821016% in the debug version of the subsystem. 18211 18212 Linux: 18213 18214Fixed C3 disk corruption problems and re-enabled C3 on supporting 18215machines. 18216 18217Integrated low-level sleep code by Patrick Mochel. 18218 18219Further tweaked source code Linuxization. 18220 18221Other minor fixes. 18222 18223 ASL Compiler: 18224 18225Support for ACPI 2.0 variable length packages is fixed/completed. 18226 18227Fixed a problem where the optional length parameter for the ACPI 182282.0 ToString operator. 18229 18230Fixed multiple extraneous error messages when a syntax error is 18231detected within the declaration line of a control method. 18232 18233 ---------------------------------------- 18234Summary of changes for this label: 07_17_01 18235 18236ACPI CA Core Subsystem: 18237 18238Added a new interface named AcpiGetFirmwareTable to obtain any 18239ACPI table via the ACPI signature. The interface can be called at 18240any time during kernel initialization, even before the kernel 18241virtual memory manager is initialized and paging is enabled. This 18242allows kernel subsystems to obtain ACPI tables very early, even 18243before the ACPI CA subsystem is initialized. 18244 18245Fixed a problem where Fields defined with the AnyAcc attribute 18246could be resolved to the incorrect address under the following 18247conditions: 1) the field width is larger than 8 bits and 2) the 18248parent operation region is not defined on a DWORD boundary. 18249 18250Fixed a problem where the interpreter is not being locked during 18251namespace initialization (during execution of the _INI control 18252methods), causing an error when an attempt is made to release it 18253later. 18254 18255ACPI 2.0 support in the AML Interpreter has begun and will be 18256ongoing throughout the rest of this year. In this label, The Mod 18257operator is implemented. 18258 18259Added a new data type to contain full PCI addresses named 18260ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18261and Function values. 18262 18263 Linux: 18264 18265Enhanced the Linux version of the source code to change most 18266capitalized ACPI type names to lowercase. For example, all 18267instances of ACPI_STATUS are changed to acpi_status. This will 18268result in a large diff, but the change is strictly cosmetic and 18269aligns the CA code closer to the Linux coding standard. 18270 18271OSL Interfaces: 18272 18273The interfaces to the PCI configuration space have been changed to 18274add the PCI Segment number and to split the single 32-bit combined 18275DeviceFunction field into two 16-bit fields. This was 18276accomplished by moving the four values that define an address in 18277PCI configuration space (segment, bus, device, and function) to 18278the new ACPI_PCI_ID structure. 18279 18280The changes to the PCI configuration space interfaces led to a 18281reexamination of the complete set of address space access 18282interfaces for PCI, I/O, and Memory. The previously existing 18 18283interfaces have proven difficult to maintain (any small change 18284must be propagated across at least 6 interfaces) and do not easily 18285allow for future expansion to 64 bits if necessary. Also, on some 18286systems, it would not be appropriate to demultiplex the access 18287width (8, 16, 32,or 64) before calling the OSL if the 18288corresponding native OS interfaces contain a similar access width 18289parameter. For these reasons, the 18 address space interfaces 18290have been replaced by these 6 new ones: 18291 18292AcpiOsReadPciConfiguration 18293AcpiOsWritePciConfiguration 18294AcpiOsReadMemory 18295AcpiOsWriteMemory 18296AcpiOsReadPort 18297AcpiOsWritePort 18298 18299Added a new interface named AcpiOsGetRootPointer to allow the OSL 18300to perform the platform and/or OS-specific actions necessary to 18301obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18302interface will simply call down to the CA core to perform the low- 18303memory search for the table. On IA-64, the RSDP is obtained from 18304EFI. Migrating this interface to the OSL allows the CA core to 18305 18306remain OS and platform independent. 18307 18308Added a new interface named AcpiOsSignal to provide a generic 18309"function code and pointer" interface for various miscellaneous 18310signals and notifications that must be made to the host OS. The 18311first such signals are intended to support the ASL Fatal and 18312Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18313interface has been obsoleted. 18314 18315The definition of the AcpiFormatException interface has been 18316changed to simplify its use. The caller no longer must supply a 18317buffer to the call; A pointer to a const string is now returned 18318directly. This allows the call to be easily used in printf 18319statements, etc. since the caller does not have to manage a local 18320buffer. 18321 18322 18323 ASL Compiler, Version X2025: 18324 18325The ACPI 2.0 Switch/Case/Default operators have been implemented 18326and are fully functional. They will work with all ACPI 1.0 18327interpreters, since the operators are simply translated to If/Else 18328pairs. 18329 18330The ACPI 2.0 ElseIf operator is implemented and will also work 18331with 1.0 interpreters, for the same reason. 18332 18333Implemented support for ACPI 2.0 variable-length packages. These 18334packages have a separate opcode, and their size is determined by 18335the interpreter at run-time. 18336 18337Documentation The ACPI CA Programmer Reference has been updated to 18338reflect the new interfaces and changes to existing interfaces. 18339 18340 ------------------------------------------ 18341Summary of changes for this label: 06_15_01 18342 18343 ACPI CA Core Subsystem: 18344 18345Fixed a problem where a DWORD-accessed field within a Buffer 18346object would get its byte address inadvertently rounded down to 18347the nearest DWORD. Buffers are always Byte-accessible. 18348 18349 ASL Compiler, version X2024: 18350 18351Fixed a problem where the Switch() operator would either fault or 18352hang the compiler. Note however, that the AML code for this ACPI 183532.0 operator is not yet implemented. 18354 18355Compiler uses the new AcpiOsGetTimer interface to obtain compile 18356timings. 18357 18358Implementation of the CreateField operator automatically converts 18359a reference to a named field within a resource descriptor from a 18360byte offset to a bit offset if required. 18361 18362Added some missing named fields from the resource descriptor 18363support. These are the names that are automatically created by the 18364compiler to reference fields within a descriptor. They are only 18365valid at compile time and are not passed through to the AML 18366interpreter. 18367 18368Resource descriptor named fields are now typed as Integers and 18369subject to compile-time typechecking when used in expressions. 18370 18371 ------------------------------------------ 18372Summary of changes for this label: 05_18_01 18373 18374 ACPI CA Core Subsystem: 18375 18376Fixed a couple of problems in the Field support code where bits 18377from adjacent fields could be returned along with the proper field 18378bits. Restructured the field support code to improve performance, 18379readability and maintainability. 18380 18381New DEBUG_PRINTP macro automatically inserts the procedure name 18382into the output, saving hundreds of copies of procedure name 18383strings within the source, shrinking the memory footprint of the 18384debug version of the core subsystem. 18385 18386 Source Code Structure: 18387 18388The source code directory tree was restructured to reflect the 18389current organization of the component architecture. Some files 18390and directories have been moved and/or renamed. 18391 18392 Linux: 18393 18394Fixed leaking kacpidpc processes. 18395 18396Fixed queueing event data even when /proc/acpi/event is not 18397opened. 18398 18399 ASL Compiler, version X2020: 18400 18401Memory allocation performance enhancement - over 24X compile time 18402improvement on large ASL files. Parse nodes and namestring 18403buffers are now allocated from a large internal compiler buffer. 18404 18405The temporary .SRC file is deleted unless the "-s" option is 18406specified 18407 18408The "-d" debug output option now sends all output to the .DBG file 18409instead of the console. 18410 18411"External" second parameter is now optional 18412 18413"ElseIf" syntax now properly allows the predicate 18414 18415Last operand to "Load" now recognized as a Target operand 18416 18417Debug object can now be used anywhere as a normal object. 18418 18419ResourceTemplate now returns an object of type BUFFER 18420 18421EISAID now returns an object of type INTEGER 18422 18423"Index" now works with a STRING operand 18424 18425"LoadTable" now accepts optional parameters 18426 18427"ToString" length parameter is now optional 18428 18429"Interrupt (ResourceType," parse error fixed. 18430 18431"Register" with a user-defined region space parse error fixed 18432 18433Escaped backslash at the end of a string ("\\") scan/parse error 18434fixed 18435 18436"Revision" is now an object of type INTEGER. 18437 18438 18439 18440------------------------------------------ 18441Summary of changes for this label: 05_02_01 18442 18443Linux: 18444 18445/proc/acpi/event now blocks properly. 18446 18447Removed /proc/sys/acpi. You can still dump your DSDT from 18448/proc/acpi/dsdt. 18449 18450 ACPI CA Core Subsystem: 18451 18452Fixed a problem introduced in the previous label where some of the 18453"small" resource descriptor types were not recognized. 18454 18455Improved error messages for the case where an ASL Field is outside 18456the range of the parent operation region. 18457 18458 ASL Compiler, version X2018: 18459 18460 18461Added error detection for ASL Fields that extend beyond the length 18462of the parent operation region (only if the length of the region 18463is known at compile time.) This includes fields that have a 18464minimum access width that is smaller than the parent region, and 18465individual field units that are partially or entirely beyond the 18466extent of the parent. 18467 18468 18469 18470------------------------------------------ 18471Summary of changes for this label: 04_27_01 18472 18473 ACPI CA Core Subsystem: 18474 18475Fixed a problem where the namespace mutex could be released at the 18476wrong time during execution of AcpiRemoveAddressSpaceHandler. 18477 18478Added optional thread ID output for debug traces, to simplify 18479debugging of multiple threads. Added context switch notification 18480when the debug code realizes that a different thread is now 18481executing ACPI code. 18482 18483Some additional external data types have been prefixed with the 18484string "ACPI_" for consistency. This may effect existing code. 18485The data types affected are the external callback typedefs - e.g., 18486 18487WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18488 18489 Linux: 18490 18491Fixed an issue with the OSL semaphore implementation where a 18492thread was waking up with an error from receiving a SIGCHLD 18493signal. 18494 18495Linux version of ACPI CA now uses the system C library for string 18496manipulation routines instead of a local implementation. 18497 18498Cleaned up comments and removed TBDs. 18499 18500 ASL Compiler, version X2017: 18501 18502Enhanced error detection and reporting for all file I/O 18503operations. 18504 18505 Documentation: 18506 18507Programmer Reference updated to version 1.06. 18508 18509 18510 18511------------------------------------------ 18512Summary of changes for this label: 04_13_01 18513 18514 ACPI CA Core Subsystem: 18515 18516Restructured support for BufferFields and RegionFields. 18517BankFields support is now fully operational. All known 32-bit 18518limitations on field sizes have been removed. Both BufferFields 18519and (Operation) RegionFields are now supported by the same field 18520management code. 18521 18522Resource support now supports QWORD address and IO resources. The 1852316/32/64 bit address structures and the Extended IRQ structure 18524have been changed to properly handle Source Resource strings. 18525 18526A ThreadId of -1 is now used to indicate a "mutex not acquired" 18527condition internally and must never be returned by AcpiOsThreadId. 18528This reserved value was changed from 0 since Unix systems allow a 18529thread ID of 0. 18530 18531Linux: 18532 18533Driver code reorganized to enhance portability 18534 18535Added a kernel configuration option to control ACPI_DEBUG 18536 18537Fixed the EC driver to honor _GLK. 18538 18539ASL Compiler, version X2016: 18540 18541Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18542address space was set to 0, not 0x7f as it should be. 18543 18544 ------------------------------------------ 18545Summary of changes for this label: 03_13_01 18546 18547 ACPI CA Core Subsystem: 18548 18549During ACPI initialization, the _SB_._INI method is now run if 18550present. 18551 18552Notify handler fix - notifies are deferred until the parent method 18553completes execution. This fixes the "mutex already acquired" 18554issue seen occasionally. 18555 18556Part of the "implicit conversion" rules in ACPI 2.0 have been 18557found to cause compatibility problems with existing ASL/AML. The 18558convert "result-to-target-type" implementation has been removed 18559for stores to method Args and Locals. Source operand conversion 18560is still fully implemented. Possible changes to ACPI 2.0 18561specification pending. 18562 18563Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18564length. 18565 18566Fix for compiler warnings for 64-bit compiles. 18567 18568 Linux: 18569 18570/proc output aligned for easier parsing. 18571 18572Release-version compile problem fixed. 18573 18574New kernel configuration options documented in Configure.help. 18575 18576IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18577context" message. 18578 18579 OSPM: 18580 18581Power resource driver integrated with bus manager. 18582 18583Fixed kernel fault during active cooling for thermal zones. 18584 18585Source Code: 18586 18587The source code tree has been restructured. 18588 18589 18590 18591------------------------------------------ 18592Summary of changes for this label: 03_02_01 18593 18594 Linux OS Services Layer (OSL): 18595 18596Major revision of all Linux-specific code. 18597 18598Modularized all ACPI-specific drivers. 18599 18600Added new thermal zone and power resource drivers. 18601 18602Revamped /proc interface (new functionality is under /proc/acpi). 18603 18604New kernel configuration options. 18605 18606 Linux known issues: 18607 18608New kernel configuration options not documented in Configure.help 18609yet. 18610 18611 18612Module dependencies not currently implemented. If used, they 18613should be loaded in this order: busmgr, power, ec, system, 18614processor, battery, ac_adapter, button, thermal. 18615 18616Modules will not load if CONFIG_MODVERSION is set. 18617 18618IBM 600E - entering S5 may reboot instead of shutting down. 18619 18620IBM 600E - Sleep button may generate "Invalid <NULL> context" 18621message. 18622 18623Some systems may fail with "execution mutex already acquired" 18624message. 18625 18626 ACPI CA Core Subsystem: 18627 18628Added a new OSL Interface, AcpiOsGetThreadId. This was required 18629for the deadlock detection code. Defined to return a non-zero, 32- 18630bit thread ID for the currently executing thread. May be a non- 18631zero constant integer on single-thread systems. 18632 18633Implemented deadlock detection for internal subsystem mutexes. We 18634may add conditional compilation for this code (debug only) later. 18635 18636ASL/AML Mutex object semantics are now fully supported. This 18637includes multiple acquires/releases by owner and support for the 18638 18639Mutex SyncLevel parameter. 18640 18641A new "Force Release" mechanism automatically frees all ASL 18642Mutexes that have been acquired but not released when a thread 18643exits the interpreter. This forces conformance to the ACPI spec 18644("All mutexes must be released when an invocation exits") and 18645prevents deadlocked ASL threads. This mechanism can be expanded 18646(later) to monitor other resource acquisitions if OEM ASL code 18647continues to misbehave (which it will). 18648 18649Several new ACPI exception codes have been added for the Mutex 18650support. 18651 18652Recursive method calls are now allowed and supported (the ACPI 18653spec does in fact allow recursive method calls.) The number of 18654recursive calls is subject to the restrictions imposed by the 18655SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18656parameter. 18657 18658Implemented support for the SyncLevel parameter for control 18659methods (ACPI 2.0 feature) 18660 18661Fixed a deadlock problem when multiple threads attempted to use 18662the interpreter. 18663 18664Fixed a problem where the string length of a String package 18665element was not always set in a package returned from 18666AcpiEvaluateObject. 18667 18668Fixed a problem where the length of a String package element was 18669not always included in the length of the overall package returned 18670from AcpiEvaluateObject. 18671 18672Added external interfaces (Acpi*) to the ACPI debug memory 18673manager. This manager keeps a list of all outstanding 18674allocations, and can therefore detect memory leaks and attempts to 18675free memory blocks more than once. Useful for code such as the 18676power manager, etc. May not be appropriate for device drivers. 18677Performance with the debug code enabled is slow. 18678 18679The ACPI Global Lock is now an optional hardware element. 18680 18681 ASL Compiler Version X2015: 18682 18683Integrated changes to allow the compiler to be generated on 18684multiple platforms. 18685 18686Linux makefile added to generate the compiler on Linux 18687 18688 Source Code: 18689 18690All platform-specific headers have been moved to their own 18691subdirectory, Include/Platform. 18692 18693New source file added, Interpreter/ammutex.c 18694 18695New header file, Include/acstruct.h 18696 18697 Documentation: 18698 18699The programmer reference has been updated for the following new 18700interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18701 18702 ------------------------------------------ 18703Summary of changes for this label: 02_08_01 18704 18705Core ACPI CA Subsystem: Fixed a problem where an error was 18706incorrectly returned if the return resource buffer was larger than 18707the actual data (in the resource interfaces). 18708 18709References to named objects within packages are resolved to the 18710 18711full pathname string before packages are returned directly (via 18712the AcpiEvaluateObject interface) or indirectly via the resource 18713interfaces. 18714 18715Linux OS Services Layer (OSL): 18716 18717Improved /proc battery interface. 18718 18719 18720Added C-state debugging output and other miscellaneous fixes. 18721 18722ASL Compiler Version X2014: 18723 18724All defined method arguments can now be used as local variables, 18725including the ones that are not actually passed in as parameters. 18726The compiler tracks initialization of the arguments and issues an 18727exception if they are used without prior assignment (just like 18728locals). 18729 18730The -o option now specifies a filename prefix that is used for all 18731output files, including the AML output file. Otherwise, the 18732default behavior is as follows: 1) the AML goes to the file 18733specified in the DSDT. 2) all other output files use the input 18734source filename as the base. 18735 18736 ------------------------------------------ 18737Summary of changes for this label: 01_25_01 18738 18739Core ACPI CA Subsystem: Restructured the implementation of object 18740store support within the interpreter. This includes support for 18741the Store operator as well as any ASL operators that include a 18742target operand. 18743 18744Partially implemented support for Implicit Result-to-Target 18745conversion. This is when a result object is converted on the fly 18746to the type of an existing target object. Completion of this 18747support is pending further analysis of the ACPI specification 18748concerning this matter. 18749 18750CPU-specific code has been removed from the subsystem (hardware 18751directory). 18752 18753New Power Management Timer functions added 18754 18755Linux OS Services Layer (OSL): Moved system state transition code 18756to the core, fixed it, and modified Linux OSL accordingly. 18757 18758Fixed C2 and C3 latency calculations. 18759 18760 18761We no longer use the compilation date for the version message on 18762initialization, but retrieve the version from AcpiGetSystemInfo(). 18763 18764Incorporated for fix Sony VAIO machines. 18765 18766Documentation: The Programmer Reference has been updated and 18767reformatted. 18768 18769 18770ASL Compiler: Version X2013: Fixed a problem where the line 18771numbering and error reporting could get out of sync in the 18772presence of multiple include files. 18773 18774 ------------------------------------------ 18775Summary of changes for this label: 01_15_01 18776 18777Core ACPI CA Subsystem: 18778 18779Implemented support for type conversions in the execution of the 18780ASL Concatenate operator (The second operand is converted to 18781match the type of the first operand before concatenation.) 18782 18783Support for implicit source operand conversion is partially 18784implemented. The ASL source operand types Integer, Buffer, and 18785String are freely interchangeable for most ASL operators and are 18786converted by the interpreter on the fly as required. Implicit 18787Target operand conversion (where the result is converted to the 18788target type before storing) is not yet implemented. 18789 18790Support for 32-bit and 64-bit BCD integers is implemented. 18791 18792Problem fixed where a field read on an aligned field could cause a 18793read past the end of the field. 18794 18795New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18796does not return a value, but the caller expects one. (The ASL 18797compiler flags this as a warning.) 18798 18799ASL Compiler: 18800 18801Version X2011: 188021. Static typechecking of all operands is implemented. This 18803prevents the use of invalid objects (such as using a Package where 18804an Integer is required) at compile time instead of at interpreter 18805run-time. 188062. The ASL source line is printed with ALL errors and warnings. 188073. Bug fix for source EOF without final linefeed. 188084. Debug option is split into a parse trace and a namespace trace. 188095. Namespace output option (-n) includes initial values for 18810integers and strings. 188116. Parse-only option added for quick syntax checking. 188127. Compiler checks for duplicate ACPI name declarations 18813 18814Version X2012: 188151. Relaxed typechecking to allow interchangeability between 18816strings, integers, and buffers. These types are now converted by 18817the interpreter at runtime. 188182. Compiler reports time taken by each internal subsystem in the 18819debug output file. 18820 18821 18822 ------------------------------------------ 18823Summary of changes for this label: 12_14_00 18824 18825ASL Compiler: 18826 18827This is the first official release of the compiler. Since the 18828compiler requires elements of the Core Subsystem, this label 18829synchronizes everything. 18830 18831------------------------------------------ 18832Summary of changes for this label: 12_08_00 18833 18834 18835Fixed a problem where named references within the ASL definition 18836of both OperationRegions and CreateXXXFields did not work 18837properly. The symptom was an AE_AML_OPERAND_TYPE during 18838initialization of the region/field. This is similar (but not 18839related internally) to the problem that was fixed in the last 18840label. 18841 18842Implemented both 32-bit and 64-bit support for the BCD ASL 18843functions ToBCD and FromBCD. 18844 18845Updated all legal headers to include "2000" in the copyright 18846years. 18847 18848 ------------------------------------------ 18849Summary of changes for this label: 12_01_00 18850 18851Fixed a problem where method invocations within the ASL definition 18852of both OperationRegions and CreateXXXFields did not work 18853properly. The symptom was an AE_AML_OPERAND_TYPE during 18854initialization of the region/field: 18855 18856 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18857[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18858(0x3005) 18859 18860Fixed a problem where operators with more than one nested 18861subexpression would fail. The symptoms were varied, by mostly 18862AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18863problem that has gone unnoticed until now. 18864 18865 Subtract (Add (1,2), Multiply (3,4)) 18866 18867Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18868previous build (The prefix part of a relative path was handled 18869incorrectly). 18870 18871Fixed a problem where Operation Region initialization failed if 18872the operation region name was a "namepath" instead of a simple 18873"nameseg". Symptom was an AE_NO_OPERAND error. 18874 18875Fixed a problem where an assignment to a local variable via the 18876indirect RefOf mechanism only worked for the first such 18877assignment. Subsequent assignments were ignored. 18878 18879 ------------------------------------------ 18880Summary of changes for this label: 11_15_00 18881 18882ACPI 2.0 table support with backwards support for ACPI 1.0 and the 188830.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18884the AML interpreter does NOT have support for the new 2.0 ASL 18885grammar terms at this time. 18886 18887All ACPI hardware access is via the GAS structures in the ACPI 2.0 18888FADT. 18889 18890All physical memory addresses across all platforms are now 64 bits 18891wide. Logical address width remains dependent on the platform 18892(i.e., "void *"). 18893 18894AcpiOsMapMemory interface changed to a 64-bit physical address. 18895 18896The AML interpreter integer size is now 64 bits, as per the ACPI 188972.0 specification. 18898 18899For backwards compatibility with ACPI 1.0, ACPI tables with a 18900revision number less than 2 use 32-bit integers only. 18901 18902Fixed a problem where the evaluation of OpRegion operands did not 18903always resolve them to numbers properly. 18904 18905------------------------------------------ 18906Summary of changes for this label: 10_20_00 18907 18908Fix for CBN_._STA issue. This fix will allow correct access to 18909CBN_ OpRegions when the _STA returns 0x8. 18910 18911Support to convert ACPI constants (Ones, Zeros, One) to actual 18912values before a package object is returned 18913 18914Fix for method call as predicate to if/while construct causing 18915incorrect if/while behavior 18916 18917Fix for Else block package lengths sometimes calculated wrong (if 18918block > 63 bytes) 18919 18920Fix for Processor object length field, was always zero 18921 18922Table load abort if FACP sanity check fails 18923 18924Fix for problem with Scope(name) if name already exists 18925 18926Warning emitted if a named object referenced cannot be found 18927(resolved) during method execution. 18928 18929 18930 18931 18932 18933------------------------------------------ 18934Summary of changes for this label: 9_29_00 18935 18936New table initialization interfaces: AcpiInitializeSubsystem no 18937longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18938necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18939>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18940AcpiLoadTables 18941 18942Note: These interface changes require changes to all existing OSDs 18943 18944The PCI_Config default address space handler is always installed 18945at the root namespace object. 18946 18947------------------------------------------- 18948Summary of changes for this label: 09_15_00 18949 18950The new initialization architecture is implemented. New 18951interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18952AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18953 18954(Namespace is automatically loaded when a table is loaded) 18955 18956The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1895752 bytes to 32 bytes. There is usually one of these for every 18958namespace object, so the memory savings is significant. 18959 18960Implemented just-in-time evaluation of the CreateField operators. 18961 18962Bug fixes for IA-64 support have been integrated. 18963 18964Additional code review comments have been implemented 18965 18966The so-called "third pass parse" has been replaced by a final walk 18967through the namespace to initialize all operation regions (address 18968spaces) and fields that have not yet been initialized during the 18969execution of the various _INI and REG methods. 18970 18971New file - namespace/nsinit.c 18972 18973------------------------------------------- 18974Summary of changes for this label: 09_01_00 18975 18976Namespace manager data structures have been reworked to change the 18977primary object from a table to a single object. This has 18978resulted in dynamic memory savings of 3X within the namespace and 189792X overall in the ACPI CA subsystem. 18980 18981Fixed problem where the call to AcpiEvFindPciRootBuses was 18982inadvertently left commented out. 18983 18984Reduced the warning count when generating the source with the GCC 18985compiler. 18986 18987Revision numbers added to each module header showing the 18988SourceSafe version of the file. Please refer to this version 18989number when giving us feedback or comments on individual modules. 18990 18991The main object types within the subsystem have been renamed to 18992clarify their purpose: 18993 18994ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18995ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18996ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18997 18998NOTE: no changes to the initialization sequence are included in 18999this label. 19000 19001------------------------------------------- 19002Summary of changes for this label: 08_23_00 19003 19004Fixed problem where TerminateControlMethod was being called 19005multiple times per method 19006 19007Fixed debugger problem where single stepping caused a semaphore to 19008be oversignalled 19009 19010Improved performance through additional parse object caching - 19011added ACPI_EXTENDED_OP type 19012 19013------------------------------------------- 19014Summary of changes for this label: 08_10_00 19015 19016Parser/Interpreter integration: Eliminated the creation of 19017complete parse trees for ACPI tables and control methods. 19018Instead, parse subtrees are created and then deleted as soon as 19019they are processed (Either entered into the namespace or executed 19020by the interpreter). This reduces the use of dynamic kernel 19021memory significantly. (about 10X) 19022 19023Exception codes broken into classes and renumbered. Be sure to 19024recompile all code that includes acexcep.h. Hopefully we won't 19025have to renumber the codes again now that they are split into 19026classes (environment, programmer, AML code, ACPI table, and 19027internal). 19028 19029Fixed some additional alignment issues in the Resource Manager 19030subcomponent 19031 19032Implemented semaphore tracking in the AcpiExec utility, and fixed 19033several places where mutexes/semaphores were being unlocked 19034without a corresponding lock operation. There are no known 19035semaphore or mutex "leaks" at this time. 19036 19037Fixed the case where an ASL Return operator is used to return an 19038unnamed package. 19039 19040------------------------------------------- 19041Summary of changes for this label: 07_28_00 19042 19043Fixed a problem with the way addresses were calculated in 19044AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19045manifested itself when a Field was created with WordAccess or 19046DwordAccess, but the field unit defined within the Field was less 19047 19048than a Word or Dword. 19049 19050Fixed a problem in AmlDumpOperands() module's loop to pull 19051operands off of the operand stack to display information. The 19052problem manifested itself as a TLB error on 64-bit systems when 19053accessing an operand stack with two or more operands. 19054 19055Fixed a problem with the PCI configuration space handlers where 19056context was getting confused between accesses. This required a 19057change to the generic address space handler and address space 19058setup definitions. Handlers now get both a global handler context 19059(this is the one passed in by the user when executing 19060AcpiInstallAddressSpaceHandler() and a specific region context 19061that is unique to each region (For example, the _ADR, _SEG and 19062_BBN values associated with a specific region). The generic 19063function definitions have changed to the following: 19064 19065typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19066UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19067*HandlerContext, // This used to be void *Context void 19068*RegionContext); // This is an additional parameter 19069 19070typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19071RegionHandle, UINT32 Function, void *HandlerContext, void 19072**RegionContext); // This used to be **ReturnContext 19073 19074------------------------------------------- 19075Summary of changes for this label: 07_21_00 19076 19077Major file consolidation and rename. All files within the 19078interpreter have been renamed as well as most header files. This 19079was done to prevent collisions with existing files in the host 19080OSs -- filenames such as "config.h" and "global.h" seem to be 19081quite common. The VC project files have been updated. All 19082makefiles will require modification. 19083 19084The parser/interpreter integration continues in Phase 5 with the 19085implementation of a complete 2-pass parse (the AML is parsed 19086twice) for each table; This avoids the construction of a huge 19087parse tree and therefore reduces the amount of dynamic memory 19088required by the subsystem. Greater use of the parse object cache 19089means that performance is unaffected. 19090 19091Many comments from the two code reviews have been rolled in. 19092 19093The 64-bit alignment support is complete. 19094 19095------------------------------------------- 19096Summary of changes for this label: 06_30_00 19097 19098With a nod and a tip of the hat to the technology of yesteryear, 19099we've added support in the source code for 80 column output 19100devices. The code is now mostly constrained to 80 columns or 19101less to support environments and editors that 1) cannot display 19102or print more than 80 characters on a single line, and 2) cannot 19103disable line wrapping. 19104 19105A major restructuring of the namespace data structure has been 19106completed. The result is 1) cleaner and more 19107understandable/maintainable code, and 2) a significant reduction 19108in the dynamic memory requirement for each named ACPI object 19109(almost half). 19110 19111------------------------------------------- 19112Summary of changes for this label: 06_23_00 19113 19114Linux support has been added. In order to obtain approval to get 19115the ACPI CA subsystem into the Linux kernel, we've had to make 19116quite a few changes to the base subsystem that will affect all 19117users (all the changes are generic and OS- independent). The 19118effects of these global changes have been somewhat far reaching. 19119Files have been merged and/or renamed and interfaces have been 19120renamed. The major changes are described below. 19121 19122Osd* interfaces renamed to AcpiOs* to eliminate namespace 19123pollution/confusion within our target kernels. All OSD 19124interfaces must be modified to match the new naming convention. 19125 19126Files merged across the subsystem. A number of the smaller source 19127and header files have been merged to reduce the file count and 19128increase the density of the existing files. There are too many 19129to list here. In general, makefiles that call out individual 19130files will require rebuilding. 19131 19132Interpreter files renamed. All interpreter files now have the 19133prefix am* instead of ie* and is*. 19134 19135Header files renamed: The acapi.h file is now acpixf.h. The 19136acpiosd.h file is now acpiosxf.h. We are removing references to 19137the acronym "API" since it is somewhat windowsy. The new name is 19138"external interface" or xface or xf in the filenames.j 19139 19140 19141All manifest constants have been forced to upper case (some were 19142mixed case.) Also, the string "ACPI_" has been prepended to many 19143(not all) of the constants, typedefs, and structs. 19144 19145The globals "DebugLevel" and "DebugLayer" have been renamed 19146"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19147 19148All other globals within the subsystem are now prefixed with 19149"AcpiGbl_" Internal procedures within the subsystem are now 19150prefixed with "Acpi" (with only a few exceptions). The original 19151two-letter abbreviation for the subcomponent remains after "Acpi" 19152- for example, CmCallocate became AcpiCmCallocate. 19153 19154Added a source code translation/conversion utility. Used to 19155generate the Linux source code, it can be modified to generate 19156other types of source as well. Can also be used to cleanup 19157existing source by removing extraneous spaces and blank lines. 19158Found in tools/acpisrc/* 19159 19160OsdUnMapMemory was renamed to OsdUnmapMemory and then 19161AcpiOsUnmapMemory. (UnMap became Unmap). 19162 19163A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19164When set to one, this indicates that the caller wants to use the 19165 19166semaphore as a mutex, not a counting semaphore. ACPI CA uses 19167both types. However, implementers of this call may want to use 19168different OS primitives depending on the type of semaphore 19169requested. For example, some operating systems provide separate 19170 19171"mutex" and "semaphore" interfaces - where the mutex interface is 19172much faster because it doesn't have all the overhead of a full 19173semaphore implementation. 19174 19175Fixed a deadlock problem where a method that accesses the PCI 19176address space can block forever if it is the first access to the 19177space. 19178 19179------------------------------------------- 19180Summary of changes for this label: 06_02_00 19181 19182Support for environments that cannot handle unaligned data 19183accesses (e.g. firmware and OS environments devoid of alignment 19184handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19185been added (via configurable macros) in these three areas: - 19186Transfer of data from the raw AML byte stream is done via byte 19187moves instead of word/dword/qword moves. - External objects are 19188aligned within the user buffer, including package elements (sub- 19189objects). - Conversion of name strings to UINT32 Acpi Names is now 19190done byte-wise. 19191 19192The Store operator was modified to mimic Microsoft's 19193implementation when storing to a Buffer Field. 19194 19195Added a check of the BM_STS bit before entering C3. 19196 19197The methods subdirectory has been obsoleted and removed. A new 19198file, cmeval.c subsumes the functionality. 19199 19200A 16-bit (DOS) version of AcpiExec has been developed. The 19201makefile is under the acpiexec directory. 19202