1---------------------------------------- 230 July 2021. Summary of changes for version 20210730: 3 4This release is available at https://acpica.org/downloads 5 61) ACPICA kernel-resident subsystem: 7 82) iASL Compiler/Disassembler and ACPICA tools: 9 10iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). 11 Under the Device Object: 12 1) If _DIS is present, must have a _CRS and _SRS 13 2) If _PRS is present, must have a _CRS, _DIS, and _SRS 14 3) If _SRS is present, must have a _CRS and _DIS 15A warning will be issued for each of these cases. 16Note: For existing ASL/projects, these warnings may be disabled by 17specifying this on the command line: 18"-vw 3141" 19 20iASL Table Disassembler/Table compiler: Fix for WPBT table with no 21command-line arguments. Handle the case where the Command-line 22Arguments table field does not exist (zero). 23 24Headers: Add new DBG2 Serial Port Subtypes 25The Microsoft Debug Port Table 2 (DBG2) specification revision 26September 21, 2020 comprises additional Serial Port Subtypes [1]. 27Reflect that in the actbl1.h header file. Submitted by: 28semihalf-wojtas-marcin 29 30iASL: Add full support for the AEST table (data compiler) 31Includes support in the table compiler and the disassembler. 32 33Add PRMT module header to facilitate parsing. 34This structure is used in to parse PRMT in other Operating Systems 35that relies on using subtable headers in order to parse ACPI tables. 36Although the PRMT doesn't have "subtables" it has a list of module 37information structures that act as subtables. 38 39iASL: Table disassembler: Add missing strings to decode subtable types. 40Includes the MADT and CEDT tables. 41 42 43---------------------------------------- 4404 June 2021. Summary of changes for version 20210604: 45 461) ACPICA kernel-resident subsystem: 47 48Cleaned up (delete) the context mutex during local address handler object 49deletion. 50 51Fixed a memory leak caused by the _CID repair function. 52 53Added support for PlatformRtMechanism OperationRegion handler. Adds a new 54utility function, AcpiUtConvertUuidToString. Writing a buffer to a 55PlatformRtMechanism fieldunit invokes a bidirectional transaction. The 56input buffer contains 26 bytes containing 9 bytes of status, a command 57byte and a 16-byte UUID. This change will simply pass this incoming 58buffer to a handler registered by the OS. 59 602) iASL Compiler/Disassembler and ACPICA tools: 61 62Added full support for the PRMT ACPI table (Platform Runtime Mechanism 63Table). Includes support in the iASL compiler, the disassembler, and the 64template generator. 65 66Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. 67 68Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI 69table. 70 71Added full support for the SVKL (Storage Volume Key Location Table) ACPI 72table. Header file support from Kuppuswamy Sathyanarayanan 73<sathyanarayanan.kuppuswamy@linux.intel.com>. 74 75Completed full support for the IVRS (I/O Virtualization Reporting 76Structure) ACPI table. Added compiler support for IVRS, updated 77disassembler support. Adds a new utility, UtIsIdInteger, to determine if 78a HID/CID is an integer or a string. 79 80Headers: Added more structs to the CEDT table: CXL fixed memory window 81structure. 82 83ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. 84 85---------------------------------------- 8631 March 2021. Summary of changes for version 20210331: 87 88This release is available at https://acpica.org/downloads, and includes 89all ACPI 6.4 support 90 911) ACPICA kernel-resident subsystem: 92ACPI 6.4: iASL: deprecate DDBHandleObj keyword 93Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 94allocating an object using kmalloc(), but then frees it 95using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 96Fixed a race condition in generic serial bus operation region handler. 97Fixed by Hans de Goede. 98 992) iASL Compiler/Disassembler and ACPICA tools: 100 101ACPI 6.4: NFIT: add Location Cookie field 102ACPI 6.4: HMAT: add new fields/flags 103ACPI 6.4: Add new flags in SRAT 104ACPI 6.4: add SDEV secure access components 105ACPI 6.4: add Csi2Bus resource template 106ACPI 6.4: add support for PHAT table 107ACPI 6.4: add support for PMTT table 108Add disassembly support for the IVRS table. Compilation of the table is 109not yet complete. 110Fixed a potential infinite loop due to type mismatch. The for-loop is 111using a UINT8 counter and comparing the upper 112limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 113the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 114will wrap around to zero and the loop will never exit. I suspect 115the AslGbl_ExpectedMessagesIndex is never that high, but fixing 116this does future proof the code and cleans up static analysis 117warnings.Colin King. 118iASL/TableCompiler: update it with IORT table E.b revision changes. From 119shamiali2008. 120iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 121off-by: Jean-Philippe Brucker. 122iASL/TableCompiler: Add compilation support for CEDT table. Also, update 123the CEDT template. 124 125---------------------------------------- 12605 January 2021. Summary of changes for version 20210105: 127 128This release is available at https://acpica.org/downloads 129 130 1311) ACPICA kernel-resident subsystem: 132 133Updated all copyrights to 2021. This affects all ACPICA source code 134modules. 135 1362) iASL Compiler/Disassembler and ACPICA tools: 137 138ASL test suite (ASLTS): Updated all copyrights to 2021. 139 140Tools and utilities: Updated all signon copyrights to 2021. 141 142iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 143MTMR. Al Stone. 144 145 146---------------------------------------- 14717 December 2020. Summary of changes for version 20201217: 148 149This release is available at https://acpica.org/downloads 150 151 1521) ACPICA kernel-resident subsystem: 153 154Note: The implementation of ACPI 6.4 is underway, and is expected to be 155mostly finished next month, when ACPI 6.4 is released. 156 157From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 158several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 159enable this. 160 161AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 162These included a few casts, as well as a null pointer check. 163 164Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 165implicit fallthrough, as well as __attribute__((__fallthrough__)) and 166comments to explicitly denote that cases of fallthrough were intentional. 167Clang also supports this warning and statement attribute, but not the 168comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 169of GCC. With assistance from @nickdesaulniers. 170 1712) iASL Compiler/Disassembler and ACPICA tools: 172 173Added improvement to method call analysis by saving the return type and 174relaxing certain cases of type checking. 175 176iASL Table Compiler: Improved info messages. Added a message to the -T 177option for when the default template (DSDT) is used. 178Also added a note for when multiple SSDTs are created with a DSDT that 179the SSDTs are created in the same file as the DSDT. 180 181 182---------------------------------------- 183 18413 November 2020. Summary of changes for version 20201113: 185 186This release is available at https://acpica.org/downloads 187 188 1891) ACPICA kernel-resident subsystem: 190 191Interpreter: fixed a memory leak by using use existing buffer in _HID 192repair. There was a memory leak that occurred when a _CID object is 193defined as a package containing string objects. When _CID is checked for 194any possible repairs, it calls a helper function to repair _HID (because 195_CID basically contains multiple _HID entries). The _HID repair function 196assumes that string objects are standalone objects that are not contained 197inside of any packages. The _HID repair function replaced the string 198object with a brand new object and attempted to delete the old object by 199decrementing the reference count of the old object. Strings inside of 200packages have a reference count of 2 so the _HID repair function leaves 201this object in a dangling state and causes a memory leak. Instead of 202allocating a brand new object and removing the old object, use the 203existing object when repairing the _HID object. 204 205Added function trace macros to improve namespace debugging. The namespace 206repair mechanism does not have function tracing macros. Add several trace 207macros to improve debuggability. 208 209Handle "orphan" _REG methods for GPIO OpRegions. Before this change 210AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 211matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 212Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 213The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 214UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 215to potential issues with checks for OpRegion availability, or in other 216words checks if _REG has been called for the OpRegion which the ACPI code 217wants to use. Except for the "orphan" EC handling, ACPICA core does not 218call _REG on an ACPI node which does not define an OpRegion matching the 219type being registered; and the reference design DSDT, from which most 220Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 221UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 222were assigned ACPI controlled functions in the reference design. Together 223this leads to the perfect storm, at least on the Cherry Trail based 224Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 225and has added the Cherry Trail specific UserDefined(0x93) opregion to its 226GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 227availability check for the standard GeneralPurposeIo OpRegion. This 228clearly is a bug in the DSDT, but this does work under Windows. This 229issue leads to the intel vbtn driver reporting the device always being in 230tablet-mode at boot, even if it is in laptop mode. Which in turn causes 231userspace to ignore touchpad events. So in other words, this issue causes 232the touchpad to not work at boot. This change fixes this by extending the 233"orphan" _REG method handling to also apply to GPIO address-space 234handlers. 235 236 2372) iASL Compiler/Disassembler and ACPICA tools: 238 239iASL: Added more info to namespace dump file (-ln option). In a separate 240section of the dump file (after the main namespace dump), emit the full 241pathname for each namespace node, its type, and the ASL filename and line 242number where it is declared. 243 244AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 245x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 246is omitted, all iASL exceptions are displayed. 247 248iASL: Use StringLiteral instead of StringData for some ASL macros. The 249use of the stringData rule allows for some "string" oriented opcodes 250(Such as ToString, ToHexString, etc.) None of which make sense with the 251macros in question. This change modifies the StringData part of the rule 252for these macros to a simple string literal - thus disallowing the use 253of ToString, ToHexString, etc. 254The following ASL operators (macros) are affected: 255EisaId 256Fprintf 257Printf 258ToUuid 259Unicode 260Note: The MS compiler requires the use of string literals for these 261operators also. 262 263iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 264the list of "known" UUIDs for the input to the ToUUID macro. 265 266Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 267NFIT table. 268 269 270---------------------------------------- 271 27225 September 2020. Summary of changes for version 20200925: 273 274This release is available at https://acpica.org/downloads 275 276 2771) ACPICA kernel-resident subsystem: 278 279Preserve memory opregion mappings. The ACPICA's strategy with respect to 280the handling of memory mappings associated with memory operation regions 281is to avoid mapping the entire region at once which may be problematic at 282least in principle (for example, it may lead to conflicts with 283overlapping mappings having different attributes created by drivers). It 284may also be wasteful, because memory opregions on some systems take up 285vastchunks of address space while the fields in those regions actually 286accessed by AML are sparsely distributed. 287 288For this reason, a one-page "window" is mapped for a given opregion on 289the first memory access through it and if that "window" does not cover an 290address range accessed through that opregion subsequently, it is unmapped 291and a new "window" is mapped to replace it. Next, if the new "window" is 292not sufficient to access memory through the opregion in question in the 293future, it will be replaced with yet another "window" and so on. That 294may lead to a suboptimal sequence of memory mapping and unmapping 295operations, for example if two fields in one opregion separated from each 296other by a sufficiently wide chunk of unused address space are accessed 297in an alternating pattern. 298 299Added support for 64 bit risc-v compilation. Useful for acpica tools and 300incorporating ACPICA into the Firmware Test Suite. Colin Ian King 301<colin.king@canonical.com>. 302 303Added support for SMBus predefined names (from SMBus Control Method 304Interface Specification, Version 1.0, December 10, 1999. New predefined 305names: 306 _SBA 307 _SBI 308 _SBR 309 _SBT 310 _SBW 311 312AML Disassembler: Added a new command, "All <NameSeg>". This command will 313evaluate all objects in the current namespace whose NameString contains 314the input NameSeg as the last element of the NameString. Useful for 315debugging. 316 317 3182) iASL Compiler/Disassembler and ACPICA tools: 319 320iASL: fixed a crash that occurred when predefined objects return packages 321with lengths that exceed the initializer list. 322 323iASL: added more detail to external resolution error message when 324compiling multiple definition blocks. 325 326iASL: added a remark for an attempt to create a nameseg or namestring 327containing lower-case letters. This should prevent declaring multiple 328namesegs or namestrings in an attempt to refer to different objects (with 329different cases), but actually refer to the same object(s). 330 331iASL: improve alias analysis by saving object type. If the alias is a 332method type, the parameter count is also recorded. 333 334AcpiExec: Increase the default loop timeout value. Was 1 second, is now 33510 seconds. Prevents unnecessary timeouts when executing control methods 336from the command line. 337 338AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 339list. Includes: 340 Memory Device 341 Generic Buttons Device 342 NVDIMM Root Device 343 Control Method Battery 344 Device Graphs for _DSD method 345 Hierarchical Data Extension 346....ARM CoreSight Graph 347 348---------------------------------------- 349 350 35117 July 2020. Summary of changes for version 20200717: 352 353This release is available at https://acpica.org/downloads 354 355 3561) ACPICA kernel-resident subsystem: 357 358Do not increment OperationRegion reference counts for field units. Recent 359server firmware has revealed that this reference count can overflow on 360large servers that declare many field units (thousands) under the same 361OperationRegion. This occurs because each field unit declaration will add 362a reference count to the source OperationRegion. This release solves the 363reference count overflow for OperationRegion objects by preventing 364fieldUnits from incrementing their parent OperationRegion's reference 365count. 366 367Replaced one-element arrays with flexible-arrays, which were introduced 368in C99. 369 370Restored the readme file containing the directions for generation of 371ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 372located at: generate/msvc2017/readme.txt 373 3742) iASL Compiler/Disassembler and ACPICA tools: 375 376iASL: Fixed a regression found in version 20200214. Prevent iASL from 377emitting an extra byte of garbage data when control methods declared a 378single parameter type without using braces. This extra byte is known to 379cause a blue screen on the Windows AML interpreter. 380 381iASL: Made a change to allow external declarations to specify the type of 382a named object even when some name segments are not defined. 383This change allows the following ASL code to compile (When DEV0 is not 384defined or not defined yet): 385 386 External (\_SB.DEV0.OBJ1, IntObj) 387 External (\_SB.DEV0, DeviceObj) 388 389iASL: Fixed a problem where method names in "Alias ()" statement could be 390misinterpreted. They are now interpreted correctly as method invocations. 391 392iASL: capture a method parameter count (Within the Method info segment, 393as well as the argument node) when using parameter type lists. 394 395---------------------------------------- 396 397 39828 May 2020. Summary of changes for version 20200528: 399 400 4011) ACPICA kernel-resident subsystem: 402 403Removed old/obsolete Visual Studio files which were used to build the 404Windows versions of the ACPICA tools. Since we have moved to Visual 405Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 406project files. The new subdirectory and solution file are located at: 407 408 acpica/generate/msvc2017/AcpiComponents.sln 409 410 4112) iASL Compiler/Disassembler and ACPICA tools: 412 413iASL: added support for a new OperationRegion Address Space (subtype): 414PlatformRtMechanism. Support for this new keyword is being released for 415early prototyping. It will appear in the next release of the ACPI 416specification. 417 418iASL: do not optimize the NameString parameter of the CondRefOf operator. 419In the previous iASL compiler release, the NameString parameter of the 420CondRefOf was optimized. There is evidence that some implementations of 421the AML interpreter do not perform the recursive search-to-parent search 422during the execution of the CondRefOf operator. Therefore, the CondRefOf 423operator behaves differently when the NameString parameter is a single 424name segment (a NameSeg) as opposed to a full NamePath (starting at the 425root scope) or a NameString containing parent prefixes. 426 427iASL: Prevent an inadvertent remark message. This change prevents a 428remark if within a control method the following exist: 4291) An Operation Region is defined, and 4302) A Field operator is defined that refers to the region. 431This happens because at the top level, the Field operator does not 432actually create a new named object, it simply references the operation 433region. 434 435Removed support for the acpinames utility. The acpinames was a simple 436utility used to populate and display the ACPI namespace without executing 437any AML code. However, ACPICA now supports executable opcodes outside of 438control methods. This means that executable AML opcodes such as If and 439Store opcodes need to be executed during table load. Therefore, acpinames 440would need to be updated to match the same behavior as the acpiexec 441utility and since acpiexec can already dump the entire namespace (via the 442'namespace' command), we no longer have the need to maintain acpinames. 443 444 In order to dump the contents of the ACPI namespace using acpiexec, 445execute the following command from the command line: 446 447 acpiexec -b "n" [aml files] 448 449---------------------------------------- 450 451 45230 April 2020. Summary of changes for version 20200430: 453 4541) ACPICA kernel-resident subsystem: 455 456Cleaned up the coding style of a couple of global variables 457(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 458AcpiProtocolLengths was made static, and the definition of 459AcpiGbl_NextCmdNum was moved to acglobal.h. 460 461 4622) iASL Compiler/Disassembler and ACPICA tools: 463 464iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 465associated with a field. 466 467Disassembler: has been made more resilient so that it will continue to 468parse AML even if the AML generates ACPI namespace errors. This enables 469iASL to disassemble some AML that may have been compiled using older 470versions of iASL that no longer compile with newer versions of iASL. 471 472iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 473was a mixup where _NIG required one parameter and _NIH required zero 474parameters. This change swaps these parameter requirements. Now it is 475required that _NIH must be called with one parameter and _NIG requires 476zero parameters. 477 478iASL: Allow use of undefined externals as long as they are protected by 479an if (CondRefOf (...)) block when compiling multiple definition blocks. 480 481iASL: Fixed the type override behavior of named objects that are declared 482as External. External declarations will no longer override the type of 483the actual definition if it already exists. 484 485AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 486command line wildcard support on Windows. Note: the AcpiNames utility is 487essentially redundant with the AcpiExec utility (using the "namespace" 488command) and is therefore deprecated. It will be removed in future 489releases of ACPICA. 490 491Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 492operators. The disassembler is intended to emit existing ASL code as-is. 493Therefore, error messages emitted during disassembly should be ignored or 494handled in a way such that the disassembler can continue to parse the 495AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 496parsing for create operators in order to complete parsing ASL termlists. 497 498iASL DataTable Compiler: IVRS table: fix potentially uninitialized 499variable warning. Some compilers catch potential uninitialized variables. 500This is done by examining branches of if/else statements. This change 501replaces an "else if" with an "else" to fix the uninitialized variable 502warning. 503 504 505---------------------------------------- 50626 March 2020. Summary of changes for version 20200326: 507 508 5091) ACPICA kernel-resident subsystem: 510 511Performed a code clean-up to prevent build errors on early versions of 512GCC-10. 513 514Added the NHLT table signature. iASL data table compiler/disassembler 515support for this table is coming soon. 516 517 5182) iASL Compiler/Disassembler and ACPICA tools: 519 520AcpiExec: Fixed several problems with the namespace initialization file 521(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 522errors, several seg faults, and enhancements to line parsing within the 523init file. In addition, each object found in the init file and it's new 524value is displayed, as well as any such entries that do not have a 525corresponding name in the namespace. For reference, the syntax for the 526various supported data types are presented below: 527 PCHG 0x777788889999BBBB // Integer 528 \DEV1.STR1 "XYZ" // String 529 BUF1 (88 99 AA) // Buffer 530 PKG1 [0x1111 0x2222] // Package 531 \BF1 0x7980 // BufferField 532 RCRV 0x0123456789ABCDEF // Field Unit 533 534iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 535can be used anywhere in a given ASL file to configure iASL to expect an 536iASL compiler error code on the line where this macro was placed. If the 537error code does not exist, an error is generated. This is intended to be 538used for ACPICA's ASL test suite, but can be used by ASL developers as 539well. 540 541iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 542IVRS table parsing supported only IVHD type 10h structures. Parsing an 543IVHD type 11h caused the iasl to report unknown subtable type. Add 544necessary structure definition for IVHD type 11h and apply correct 545parsing method based on subtable type. Micha? ?ygowski. 546 547iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 548According to AMD IOMMU Specification Revision 3.05 the reserved field 549should be IOMMU Feature Reporting. Change the name of the field to the 550correct one. Micha? ?ygowski. 551 552acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 553based on suggestions by David Seifert and Benjamin Berg. 554 555iASL: table compiler: removed an unused variable (DtCompilerParserResult) 556causing linking errors. Patch based on suggestions by David Seifert and 557Benjamin Berg. 558 559iASL: table compiler: make LexBuffer static to avoid linking errors in 560newer compilers. Patch based on suggestions by David Seifert and Benjamin 561Berg. 562 563iASL: fixed type matching between External and Named objects. External 564object types can only be expressed with ACPI object type values that are 565defined in the ACPI spec. However, iASL uses ACPI object type values that 566are local to ACPICA in addition to the values defined in the ACPI spec. 567This change implements type matching to map some object type values 568specific to ACPICA to ones that are defined in the ACPI spec. 569 570iASL: Dropped the type mismatch compiler error that can arise from 571External declarations to a warning. This warning can occur when there is 572a type difference between the external declaration and the actual object 573declaration (when compiling multiple files/modules simultaneously). 574 575iASL: removed an incorrect error message regarding externals. This change 576removes an incorrect error that is emitted when a duplicate external 577declaration does not contain a type that opens a scope. This is incorrect 578because the duplicate external with conflicting types are already caught 579by iASL and it doesn't make any sense to enforce what this conflicting 580type should be. 581 582AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 583surrounded by parens. Otherwise, a logical statement that applies a 584logical not operator to this macro could result in a computation that 585applies the operator to the left side of the logical and but not the 586right. Reported-by: John Levon <john.levon@joyent.com> 587 588Fixed a problem with the local version of sprint(): On 32-bit, the 589provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 590String + Size will wrap, meaning End < Start, and 591AcpiUtBoundStringOutput() will never output anything as a result. The 592symptom seen of this was acpixtract failing to output anything -- with a 593custom build that included utprint.c. Signed-off-by: John Levon 594<john.levon@joyent.com> 595 596iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 597ACPI specification. 598 599 600---------------------------------------- 60114 February 2020. Summary of changes for version 20200214: 602 603 6041) ACPICA kernel-resident subsystem: 605 606Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 607in a guest when it receives a sleep trigger from the hypervisor. When the 608guest resumes from this power state, it does not see the SleepEnabled 609bit. In other words, the sleepHibernation (S4) is triggered in a guest 610when it receives a sleep trigger from the hypervisor. When the guest 611resumes from this power state, it does not see the SleepEnabled bit. In 612other words, the sleep button is not enabled on waking from an S4 state. 613This causes subsequent invocation of sleep state to fail since the 614guest.button is not enabled on waking from an S4 state. This causes 615subsequent invocation of sleep state to fail in the guest. Fix this 616problem by enabling the sleep button in ACPI legacy wake. From Anchal 617Agarwal <anchalag@amazon.com>. 618 619Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 620for checking the status bits of all enabled GPEs in one go. It is needed 621to distinguish spurious SCIs from genuine ones when deciding whether or 622not to wake up the system from suspend-to-idle. 623 624Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 625using HOST in their environment to represent the host name for their 626machines. Avoid this problem by renaming this variable from HOST to 627ACPI_HOST. 628 629MSVC 2017 project files: Enable multiprocessor generation to improve 630build performance. 631 632Added a macro to get the byte width of a Generic Address structure. New 633ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 634ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 635 636 6372) iASL Compiler/Disassembler and ACPICA tools: 638 639iASL: Implemented full support for the (optional, rarely used) ReturnType 640and ParameterTypesList for the Method, Function, and External operators. 641For Method declarations, the number of individual ParameterTypes must 642match the declaration of the number of arguments (NumArgs). This also 643Fixes a problem with the External operator where extra/extraneous bytes 644were emitted in the AML code if the optional ReturnType/ParameterTypes 645were specified for a MethodObj declaration. 646New error message: 6471) Method NumArgs count does not match length of ParameterTypes list 648 649iASL: Implemented detection of type mismatches between External 650declarations and named object declarations. Also, detect type mismatches 651between multiple External declarations of the same Name. 652New error messages: 6531) Type mismatch between external declaration and actual object 654declaration detected 6552) Type mismatch between multiple external declarations detected 656 657iASL: Implemented new error messages for External operators that specify 658a ReturnType and/or ParameterTypesList for any object type other than 659control methods (MethodObj). 660New error messages: 6611) Return type is only allowed for Externals declared as MethodObj 6622) Parameter type is only allowed for Externals declared as MethodObj 663 664iASL: Implemented two new remark/warning messages for ASL code that 665creates named objects from within a control method. This is very 666inefficient since the named object must be created and deleted each time 667the method is executed. 668New messages: 6691) Creation of named objects within a method is highly inefficient, use 670globals or method local variables instead (remark) 6712) Static OperationRegion should be declared outside control method 672(warning) 673 674iASL: Improved illegal forward reference detection by adding support to 675detect forward-reference method invocations. 676 677iASL: Detect and issue an error message for NameStrings that contain too 678many individual NameSegs (>255). This is an AML limitation that is 679defined in the ACPI specification. 680New message: 6811) NameString contains too many NameSegs (>255) 682 683acpidump: windows: use GetSystemFirmwareTable API for all tables except 684SSDT. By using this API, acpidump is able to get all tables in the XSDT 685 686iASL: Removed unused parser file and updated msvc2017 project files. 687Removed the obsolete AslCompiler.y from the repository. 688 689iASL: msvc2017: Fixed macros in the file dependency list to prevent 690unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 691 692Disassembler: Prevent spilling error messages to the output file. All 693errors are directed to the console instead. These error messages 694prevented re-compilation of the resulting disassembled ASL output file 695(.DSL). 696 697 698---------------------------------------- 69910 January 2020. Summary of changes for version 20200110: 700 701 7021) ACPICA kernel-resident subsystem: 703 704Updated all copyrights to 2020. This affects all ACPICA source code 705modules. 706 707 7082) iASL Compiler/Disassembler and ACPICA tools: 709 710ASL test suite (ASLTS): Updated all copyrights to 2020. 711 712Tools and utilities: Updated all signon copyrights to 2020. 713 714iASL: fix forward reference analysis for field declarations. Fixes 715forward reference analysis for field declarations by searching the 716parent scope for the named object when the object is not present in 717the current scope. 718 719iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 720full pathname of the name that already exists is printed. 721 722iASL: Enhance duplicate Case() detection for buffers. Add check for 723buffers with no initializer list (these buffers will be filled with 724zeros at runtime.) 725 726 727---------------------------------------- 72813 December 2019. Summary of changes for version 20191213: 729 730 7311) ACPICA kernel-resident subsystem: 732 733Return a Buffer object for all fields created via the CreateField 734operator. Previously, an Integer would be returned if the size of 735the field was less than or equal to the current size of an Integer. 736Although this goes against the ACPI specification, it provides 737compatibility with other ACPI implementations. Also updated the 738ASLTS test suite to reflect this new behavior. 739 7402) iASL Compiler/Disassembler and ACPICA tools: 741 742iASL: Implemented detection of (and throw an error for) duplicate 743values for Case statements within a single Switch statement. Duplicate 744Integers, Strings, and Buffers are supported. 745 746iASL: Fix error logging issue during multiple file compilation -- 747Switch to the correct input file during error node creation. 748 749iASL: For duplicate named object creation, now emit an error instead 750of a warning - since this will cause a runtime error. 751 752AcpiSrc: Add unix line-ending support for non-Windows builds. 753 754iASL: Add an error condition for an attempt to create a NameString 755with > 255 NameSegs (the max allowable via the AML definition). 756 757 758---------------------------------------- 75918 October 2019. Summary of changes for version 20191018: 760 761 7621) ACPICA kernel-resident subsystem: 763 764Debugger: added a new command: ?Fields [address space ID]?. This command 765dumps the contents of all field units that are defined within the 766namespace with a particular address space ID. 767 768Modified the external interface AcpiLoadTable() to return a table index. 769This table index can be used for unloading a table for debugging. 770 ACPI_STATUS 771 AcpiLoadTable ( 772 ACPI_TABLE_HEADER *Table, 773 UINT32 *TableIndex)) 774 775Implemented a new external interface: AcpiUnloadTable() This new function 776takes a table index as an argument and unloads the table. Useful for 777debugging only. 778 ACPI_STATUS 779 AcpiUnloadTable ( 780 UINT32 TableIndex)) 781 782Ported the AcpiNames utility to use the new table initialization 783sequence. The utility was broken before this change. Also, it was 784required to include most of the AML interpreter into the utility in order 785to process table initialization (module-level code execution.) 786 787Update for results from running Clang V8.0.1. This fixes all "dead 788assignment" warnings. There are still several "Dereference of NULL 789pointer" warnings, but these have been found to be false positive 790warnings. 791 792 7932) iASL Compiler/Disassembler and ACPICA tools: 794 795iASL: numerous table compiler changes to ensure that the usage of 796yacc/bison syntax is POSIX-compliant. 797 798iASL/disassembler: several simple bug fixes in the data table 799disassembler. 800 801Acpiexec: expanded the initialization file (the -fi option) to initialize 802strings, buffers, packages, and field units. 803 804 805---------------------------------------- 80616 August 2019. Summary of changes for version 20190816: 807 808This release is available at https://acpica.org/downloads 809 810 8111) ACPICA kernel-resident subsystem: 812 813Modified the OwnerId mechanism to allow for more Owner Ids. The previous 814limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 815exceptions on machines with a large number of initialization threads, 816many CPU cores and nested initialization control methods. 817 818Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 819checking if the given GPE (as represented by a GPE device handle and a 820GPE number) is currently active and dispatching it (if that's the case) 821outside of interrupt context. 822 823Table load: exit the interpreter before initializing objects within the 824new table This prevents re-acquiring the interpreter lock when loading 825tables 826 827Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 828uk Kim 829 830Macros: removed pointer math on a null pointer. Causes warnings on some 831compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 832instead of using arithmetic. 833 834Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 835across all "printf-like" internal functions. Also, cleanup all calls to 836such functions (both in 32-bit mode and 64-bit mode) now that they are 837analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 838 839 8402) iASL Compiler/Disassembler and ACPICA tools: 841 842iASL: implemented a new data table compiler flex/bison front-end. This 843change is internal and is not intended to result in changes to the 844compiled code. This new compiler front-end can be invoked using the -tp 845option for now, until the old mechanism is removed. 846 847ASLTS: Implemented a new data table compiler test suite. This test suite 848generates all table templates and compile/disassemble/re-compile/binary- 849compare each file. 850 851iASL: return -1 if AML files were not generated due to compiler errors 852 853iASL: added a warning on use of the now-legacy ASL Processor () keyword. 854 855iASL: added an error on _UID object declaration that returns a String 856within a Processor () declaration. A _UID for a processor must be an 857Integer. 858 859iASL: added a null terminator to name strings that consist only of 860multiple parent prefixes (^) 861 862iASL: added support to compile both ASL and data table files in a single 863command. 864 865Updated the tool generation project files that were recently migrated to 866MSVC 2017 to eliminate all new warnings. The new project files appear in 867the directory \acpica\generate\msvc2017. This change effectively 868deprecates the older project files in \acpica\generate\msvc9. 869 870 871---------------------------------------- 87203 July 2019. Summary of changes for version 20190703: 873 874 8751) ACPICA kernel-resident subsystem: 876 877Remove legacy module-level support code. There were still some remnants 878of the legacy module-level code executions. Since we no longer support 879this option, this is essentially dead code and has been removed from the 880ACPICA source. 881 882iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 883scope. If these named objects are declared outside the root scope, they 884will not be invoked by any host Operating System. 885 886Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 887one) can be enabled in two situations. First, the GPEs with existing _Lxx 888and _Exx methods are enabled implicitly by ACPICA during system 889initialization. Second, the GPEs without these methods (like GPEs listed 890by _PRW objects for wakeup devices) need to be enabled directly by the 891code that is going to use them (e.g. ACPI power management or device 892drivers). 893 894In the former case, if the status of a given GPE is set to start with, 895its handler method (either _Lxx or _Exx) needs to be invoked to take care 896of the events (possibly) signaled before the GPE was enabled. In the 897latter case, however, the first caller of AcpiEnableGpe() for a given GPE 898should not be expected to care about any events that might be signaled 899through it earlier. In that case, it is better to clear the status of 900the GPE before enabling it, to prevent stale events from triggering 901unwanted actions (like spurious system resume, for example). 902 903For this reason, modify AcpiEvAddGpeReference() to take an additional 904boolean argument indicating whether or not the GPE status needs to be 905cleared when its reference counter changes from zero to one and make 906AcpiEnableGpe() pass TRUE to it through that new argument. 907 908 9092) iASL Compiler/Disassembler and ACPICA tools: 910 911The tool generation process has been migrated to MSVC 2017, and all 912project files have been upgraded. The new project files appear in the 913directory \acpica\generate\msvc2017. This change effectively deprecates 914the older project files in \acpica\generate\msvc9. 915 916iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 917scope. If these named objects are declared outside the root scope, they 918will not be invoked by any host Operating System 919 920---------------------------------------- 92109 May 2019. Summary of changes for version 20190509: 922 923 9241) ACPICA kernel-resident subsystem: 925 926Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 927them") that causes problems with Thunderbolt controllers to occur if a 928dock device is connected at init time (the xhci_hcd and thunderbolt 929modules crash which prevents peripherals connected through them from 930working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 931Dispatch active GPEs at init time") to get undone, so the problem 932addressed by commit ecc1165b8b74 appears again as a result of it. 933 934 9352) iASL Compiler/Disassembler and ACPICA tools: 936 937Reverted iASL: Additional forward reference detection. This change 938reverts forward reference detection for field declarations. The feature 939unintentionally emitted AML bytecode with incorrect package lengths for 940some ASL code related to Fields and OperationRegions. This malformed AML 941can cause systems to crash 942during boot. The malformed AML bytecode is emitted in iASL version 94320190329 and 20190405. 944 945iASL: improve forward reference detection. This change improves forward 946reference detection for named objects inside of scopes. If a parse object 947has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 948a named object that is declared later in the AML bytecode. This is 949allowed if the reference is inside of a method and the declaration is 950outside of a method like so: 951 952DefinitionBlock(...) 953{ 954 Method (TEST) 955 { 956 Return (NUM0) 957 } 958 Name (NUM0,0) 959} 960 961However, if the declaration and reference are both in the same method or 962outside any methods, this is a forward reference and should be marked as 963an error because it would result in runtime errors. 964 965DefinitionBlock(...) 966{ 967 Name (BUFF, Buffer (NUM0) {}) // Forward reference 968 Name (NUM0, 0x0) 969 970 Method (TEST) 971 { 972 Local0 = NUM1 973 Name (NUM1, 0x1) // Forward reference 974 return (Local0) 975 } 976} 977 978iASL: Implemented additional buffer overflow analysis for BufferField 979declarations. Check if a buffer index argument to a create buffer field 980operation is beyond the end of the target buffer. 981 982This affects these AML operators: 983 984 AML_CREATE_FIELD_OP 985 AML_CREATE_BIT_FIELD_OP 986 AML_CREATE_BYTE_FIELD_OP 987 AML_CREATE_WORD_FIELD_OP 988 AML_CREATE_DWORD_FIELD_OP 989 AML_CREATE_QWORD_FIELD_OP 990 991 There are three conditions that must be satisfied in order to allow this 992validation at compile time: 993 994 1) The length of the target buffer must be an integer constant 995 2) The index specified in the create* must be an integer constant 996 3) For CreateField, the bit length argument must be non-zero. 997 998Example: 999 Name (BUF1, Buffer() {1,2}) 1000 CreateField (BUF1, 7, 9, CF03) // 3: ERR 1001 1002dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 1003Error 6165 - ^ Buffer index beyond end of 1004target buffer 1005 1006 1007---------------------------------------- 100805 April 2019. Summary of changes for version 20190405: 1009 1010 10111) ACPICA kernel-resident subsystem: 1012 1013Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 1014unconditionally clearing ACPI IRQs during suspend/resume") was added 1015earlier to stop clearing of event status bits unconditionally on suspend 1016and resume paths. Though this change fixed an issue on suspend path, it 1017introduced regressions on several resume paths. In the case of S0ix, 1018events are enabled as part of device suspend path. If status bits for the 1019events are set when they are enabled, it could result in premature wake 1020from S0ix. If status is cleared for any event that is being enabled so 1021that any stale events are cleared out. In case of S0ix, events are 1022enabled as part of device suspend path. If status bits for the events are 1023set when they are enabled, it could result in premature wake from S0ix. 1024 1025This change ensures that status is cleared for any event that is being 1026enabled so that any stale events are cleared out. 1027 1028 10292) iASL Compiler/Disassembler and ACPICA tools: 1030 1031iASL: Implemented an enhanced multiple file compilation that combines 1032named objects from all input files to a single namespace. With this 1033feature, any unresolved external declarations as well as duplicate named 1034object declarations can be detected during compilation rather than 1035generating errors much later at runtime. The following commands are 1036examples that utilize this feature: 1037 iasl dsdt.asl ssdt.asl 1038 iasl dsdt.asl ssdt1.asl ssdt2.asl 1039 iasl dsdt.asl ssdt*.asl 1040 1041---------------------------------------- 104229 March 2019. Summary of changes for version 20190329: 1043 1044 10451) ACPICA kernel-resident subsystem: 1046 1047Namespace support: Remove the address nodes from global list after method 1048termination. The global address list contains pointers to namespace nodes 1049that represent Operation Regions. This change properly removes Operation 1050Region namespace nodes that are declared dynamically during method 1051execution. 1052 1053Linux: Use a different debug default than ACPICA. There was a divergence 1054between Linux and the ACPICA codebases. In order to resolve this 1055divergence, Linux now declares its own debug default in aclinux.h 1056 1057Renamed some internal macros to improve code understanding and 1058maintenance. The macros below all operate on single 4-character ACPI 1059NameSegs, not generic strings (old -> new): 1060 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 1061 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 1062 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 1063 1064Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 1065table. 1066 1067Test suite: Update makefiles, add PCC operation region support 1068 1069 10702) iASL Compiler/Disassembler and Tools: 1071 1072iASL: Implemented additional illegal forward reference detection. Now 1073detect and emit an error upon detection of a forward reference from a 1074Field to an Operation Region. This will fail at runtime if allowed to 1075pass the compiler. 1076 1077AcpiExec: Add an address list check for dynamic Operation Regions. This 1078feature performs a sanity test for each node the global address list. 1079This is done in order to ensure that all dynamic operation regions are 1080properly removed from the global address list and no dangling pointers 1081are left behind. 1082 1083Disassembler: Improved generation of resource pathnames. This change 1084improves the code that generates resource descriptor and resource tag 1085pathnames. The original code used a bunch of str* C library functions 1086that caused warnings on some compilers. 1087 1088iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1089function can overwrite buffers if the calling code is not very careful. 1090In the case of generating a module/table header, use of memmove is a 1091better implementation. 1092 1093 10943) Status of new features that have not been completed at this time: 1095 1096iASL: Implementing an enhanced multiple file compilation into a single 1097namespace feature (Status): This feature will be released soon, and 1098allows multiple ASL files to be compiled into the same single namespace. 1099By doing so, any unresolved external declarations as well as duplicate 1100named object declarations can be detected during compilation (rather than 1101later during runtime). The following commands are examples that utilize 1102this feature: 1103 iasl dsdt.asl ssdt.asl 1104 iasl dsdt.asl ssdt1.asl ssdt2.asl 1105 iasl dsdt.asl ssdt*.asl 1106 1107ASL tutorial status: Feedback is being gathered internally and the 1108current plan is to publish this tutorial on the ACPICA website after a 1109final review by a tech writer. 1110 1111---------------------------------------- 111215 February 2019. Summary of changes for version 20190215: 1113 1114 11150) Support for ACPI specification version 6.3: 1116 1117Add PCC operation region support for the AML interpreter. This adds PCC 1118operation region support in the AML interpreter and a default handler for 1119acpiexec. The change also renames the PCC region address space keyword to 1120PlatformCommChannel. 1121 1122Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1123These methods provide OSPM with health information and device boot 1124status. 1125 1126PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1127defines if the trigger needs to be invoked by OSPM before or at the end 1128of kernel crash dump processing/handling operation. 1129 1130SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1131is used for describing devices such as heterogeneous processors, 1132accelerators, GPUs, and IO devices with integrated compute or DMA 1133engines. 1134 1135MADT: Add support for statistical profiling in GICC. Statistical 1136profiling extension (SPE) is an architecture-specific feature for ARM. 1137 1138MADT: Add online capable flag. If this bit is set, system hardware 1139supports enabling this processor during OS runtime. 1140 1141New Error Disconnect Recover Notification value. There are a number of 1142scenarios where system Firmware in collaboration with hardware may 1143disconnect one or more devices from the rest of the system for purposes 1144of error containment. Firmware can use this new notification value to 1145alert OSPM of such a removal. 1146 1147PPTT: New additional fields in Processor Structure Flags. These flags 1148provide more information about processor topology. 1149 1150NFIT/Disassembler: Change a field name from "Address Range" to "Region 1151Type". 1152 1153HMAT updates: make several existing fields to be reserved as well as 1154rename subtable 0 to "memory proximity domain attributes". 1155 1156GTDT: Add support for new GTDT Revision 3. This revision adds information 1157for the EL2 timer. 1158 1159iASL: Update the HMAT example template for new fields. 1160 1161iASL: Add support for the new revision of the GTDT (Rev 3). 1162 1163 11641) ACPICA kernel-resident subsystem: 1165 1166AML Parser: fix the main AML parse loop to correctly skip erroneous 1167extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1168byte extended opcodes. If an error occurs during an AML table load, the 1169AML parser will continue loading the table by skipping the offending 1170opcode. This implements a "load table at any cost" philosophy. 1171 1172 11732) iASL Compiler/Disassembler and Tools: 1174 1175iASL: Add checks for illegal object references, such as a reference 1176outside of method to an object within a method. Such an object is only 1177temporary. 1178 1179iASL: Emit error for creation of a zero-length operation region. Such a 1180region is rather pointless. If encountered, a runtime error is also 1181implemented in the interpreter. 1182 1183Debugger: Fix a possible fault with the "test objects" command. 1184 1185iASL: Makefile: support parent directory filenames containing embedded 1186spaces. 1187 1188iASL: Update the TPM2 template to revision 4. 1189 1190iASL: Add the ability to report specific warnings or remarks as errors. 1191 1192Disassembler: Disassemble OEMx tables as actual AML byte code. 1193Previously, these tables were treated as "unknown table". 1194 1195iASL: Add definition and disassembly for TPM2 revision 3. 1196 1197iASL: Add support for TPM2 rev 3 compilation. 1198 1199 1200---------------------------------------- 120108 January 2019. Summary of changes for version 20190108: 1202 1203 12041) ACPICA kernel-resident subsystem: 1205 1206Updated all copyrights to 2019. This affects all source code modules. 1207 1208 12092) iASL Compiler/Disassembler and Tools: 1210 1211ASL test suite (ASLTS): Updated all copyrights to 2019. 1212 1213Tools: Updated all signon copyrights to 2019. 1214 1215AcpiExec: Added a new option to dump extra information concerning any 1216memory leaks detected by the internal object/cache tracking mechanism. - 1217va 1218 1219iASL: Updated the table template for the TPM2 table to the newest version 1220of the table (Revision 4) 1221 1222 1223---------------------------------------- 122413 December 2018. Summary of changes for version 20181213: 1225 1226 12271) ACPICA Kernel-resident Subsystem: 1228 1229Fixed some buffer length issues with the GenericSerialBus, related to two 1230of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1231which are rarely seen in the field. For these, the LEN field of the ASL 1232buffer is now ignored. Hans de Goede 1233 1234Implemented a new object evaluation trace mechanism for control methods 1235and data objects. This includes nested control methods. It is 1236particularly useful for examining the ACPI execution during system 1237initialization since the output is relatively terse. The flag below 1238enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1239 #define ACPI_LV_EVALUATION 0x00080000 1240 1241Examples: 1242 Enter evaluation : _SB.PCI0._INI (Method) 1243 Exit evaluation : _SB.PCI0._INI 1244 Enter evaluation : _OSI (Method) 1245 Exit evaluation : _OSI 1246 Enter evaluation : _SB.PCI0.TEST (Method) 1247 Nested method call : _SB.PCI0.NST1 1248 Exit nested method : _SB.PCI0.NST1 1249 Exit evaluation : _SB.PCI0.TEST 1250 1251Added two recently-defined _OSI strings. See 1252https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1253osi. 1254 "Windows 2018" 1255 "Windows 2018.2" 1256 1257Update for buffer-to-string conversions via the ToHexString ASL operator. 1258A "0x" is now prepended to each of the hex values in the output string. 1259This provides compatibility with other ACPI implementations. The ACPI 1260specification is somewhat vague on this issue. 1261 Example output string after conversion: 1262"0x01,0x02,0x03,0x04,0x05,0x06" 1263 1264Return a run-time error for TermArg expressions within individual package 1265elements. Although this is technically supported by the ASL grammar, 1266other ACPI implementations do not support this either. Also, this fixes a 1267fault if this type of construct is ever encountered (it never has been). 1268 1269 12702) iASL Compiler/Disassembler and Tools: 1271 1272iASL: Implemented a new compile option (-ww) that will promote individual 1273warnings and remarks to errors. This is intended to enhance the firmware 1274build process. 1275 1276AcpiExec: Implemented a new command-line option (-eo) to support the new 1277object evaluation trace mechanism described above. 1278 1279Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1280instead of a "unknown table" message. 1281 1282AcpiHelp: Improved support for the "special" predefined names such as 1283_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1284used for "xx" and "x". 1285 1286---------------------------------------- 128731 October 2018. Summary of changes for version 20181031: 1288 1289 1290An Operation Region regression was fixed by properly adding address 1291ranges to a global list during initialization. This allows OS to 1292accurately check for overlapping regions between native devices (such as 1293PCI) and Operation regions as well as checking for region conflicts 1294between two Operation Regions. 1295 1296Added support for the 2-byte extended opcodes in the code/feature that 1297attempts to continue parsing during the table load phase. Skip parsing 1298Device declarations (and other extended opcodes) when an error occurs 1299during parsing. Previously, only single-byte opcodes were supported. 1300 1301Cleanup: Simplified the module-level code support by eliminating a 1302useless global variable (AcpiGbl_GroupModuleLeveCode). 1303 1304 13052) iASL Compiler/Disassembler and Tools: 1306 1307iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1308could cause a fault in the preprocessor. This was an inadvertent side- 1309effect from moving more allocations/frees to the local cache/memory 1310mechanism. 1311 1312iASL: Enhanced error detection by validating that all NameSeg elements 1313within a NamePatch actually exist. The previous behavior was spotty at 1314best, and such errors could be improperly ignored at compiler time (never 1315at runtime, however. There are two new error messages, as shown in the 1316examples below: 1317 1318dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1319Error 6161 - ^ One or more objects within 1320the Pathname do not exist (TTTT.BXXX) 1321 1322dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1323Error 6160 - One or more prefix Scopes do not exist ^ 1324(BBBB.CBF1) 1325 1326iASL: Disassembler/table-compiler: Added support for the static data 1327table TPM2 revision 3 (an older version of TPM2). The support has been 1328added for the compiler and the disassembler. 1329 1330Fixed compilation of DOS format data table file on Unix/Linux systems. 1331iASL now properly detects line continuations (\) for DOS format data 1332table definition language files on when executing on Unix/Linux. 1333 1334---------------------------------------- 133503 October 2018. Summary of changes for version 20181003: 1336 1337 13382) iASL Compiler/Disassembler and Tools: 1339 1340Fixed a regression introduced in version 20180927 that could cause the 1341compiler to fault, especially with NamePaths containing one or more 1342carats (^). Such as: ^^_SB_PCI0 1343 1344Added a new remark for the Sleep() operator when the sleep time operand 1345is larger than one second. This is a very long time for the ASL/BIOS code 1346and may not be what was intended by the ASL writer. 1347 1348---------------------------------------- 134927 September 2018. Summary of changes for version 20180927: 1350 1351 13521) ACPICA kernel-resident subsystem: 1353 1354Updated the GPE support to clear the status of all ACPI events when 1355entering any/all sleep states in order to avoid premature wakeups. In 1356theory, this may cause some wakeup events to be missed, but the 1357likelihood of this is small. This change restores the original behavior 1358of the ACPICA code in order to fix a regression seen from the previous 1359"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1360This regression could cause some systems to incorrectly wake immediately. 1361 1362Updated the execution of the _REG methods during initialization and 1363namespace loading to bring the behavior into closer conformance to the 1364ACPI specification and other ACPI implementations: 1365 1366From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1367 "Control methods must assume all operation regions are inaccessible 1368until the _REG(RegionSpace, 1) method is executed" 1369 1370 "The exceptions to this rule are: 13711. OSPM must guarantee that the following operation regions are always 1372accessible: 1373 SystemIO operation regions. 1374 SystemMemory operation regions when accessing memory returned by the 1375System Address Map reporting interfaces." 1376 1377Since the state of both the SystemIO and SystemMemory address spaces are 1378defined by the specification to never change, this ACPICA change ensures 1379that now _REG is never called on them. This solves some problems seen in 1380the field and provides compatibility with other ACPI implementations. An 1381update to the upcoming new version of the ACPI specification will help 1382clarify this behavior. 1383 1384Updated the implementation of support for the Generic Serial Bus. For the 1385"bidirectional" protocols, the internal implementation now automatically 1386creates a return data buffer of the maximum size (255). This handles the 1387worst-case for data that is returned from the serial bus handler, and 1388fixes some problems seen in the field. This new buffer is directly 1389returned to the ASL. As such, there is no true "bidirectional" buffer, 1390which matches the ACPI specification. This is the reason for the "double 1391store" seen in the example ASL code in the specification, shown below: 1392 1393Word Process Call (AttribProcessCall): 1394 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1395 Field(TOP1, BufferAcc, NoLock, Preserve) 1396 { 1397 FLD1, 8, // Virtual register at command value 1. 1398 } 1399 1400 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1401 // as BUFF 1402 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1403 1404 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1405 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1406transaction 1407 // This is the "double store". The write to 1408 // FLD1 returns a new buffer, which is stored 1409 // back into BUFF with the second Store. 1410 1411 14122) iASL Compiler/Disassembler and Tools: 1413 1414iASL: Implemented detection of extraneous/redundant uses of the Offset() 1415operator within a Field Unit list. A remark is now issued for these. For 1416example, the first two of the Offset() operators below are extraneous. 1417Because both the compiler and the interpreter track the offsets 1418automatically, these Offsets simply refer to the current offset and are 1419unnecessary. Note, when optimization is enabled, the iASL compiler will 1420in fact remove the redundant Offset operators and will not emit any AML 1421code for them. 1422 1423 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1424 Field (OPR1) 1425 { 1426 Offset (0), // Never needed 1427 FLD1, 32, 1428 Offset (4), // Redundant, offset is already 4 (bytes) 1429 FLD2, 8, 1430 Offset (64), // OK use of Offset. 1431 FLD3, 16, 1432 } 1433dsdt.asl 14: Offset (0), 1434Remark 2158 - ^ Unnecessary/redundant use of Offset 1435operator 1436 1437dsdt.asl 16: Offset (4), 1438Remark 2158 - ^ Unnecessary/redundant use of Offset 1439operator 1440 1441---------------------------------------- 144210 August 2018. Summary of changes for version 20180810: 1443 1444 14451) ACPICA kernel-resident subsystem: 1446 1447Initial ACPI table loading: Attempt to continue loading ACPI tables 1448regardless of malformed AML. Since migrating table initialization to the 1449new module-level code support, the AML interpreter rejected tables upon 1450any ACPI error encountered during table load. This is a problem because 1451non-serious ACPI errors during table load do not necessarily mean that 1452the entire definition block (DSDT or SSDT) is invalid. This change 1453improves the table loading by ignoring some types of errors that can be 1454generated by incorrect AML. This can range from object type errors, scope 1455errors, and index errors. 1456 1457Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1458during suspend/resume. The status of ACPI events is no longer cleared 1459when entering the ACPI S5 system state (power off) which caused some 1460systems to power up immediately after turning off power in certain 1461situations. This was a functional regression. It was fixed by clearing 1462the status of all ACPI events again when entering S5 (for system-wide 1463suspend or hibernation the clearing of the status of all events is not 1464desirable, as it might cause the kernel to miss wakeup events sometimes). 1465Rafael Wysocki. 1466 1467 14682) iASL Compiler/Disassembler and Tools: 1469 1470AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1471elements listed in the initialization file were previously initialized 1472after the table load and before executing module-level code blocks. 1473Recent changes in the module-level code support means that the table load 1474becomes a large control method execution. If fields are used within 1475module-level code and we are executing with the -fi option, the 1476initialization values were used to initialize the namespace object(s) 1477only after the table was finished loading. This change Provides an early 1478initialization of objects specified in the initialization file so that 1479field unit values are populated during the table load (not after the 1480load). 1481 1482AcpiExec: Fixed a small memory leak regression that could result in 1483warnings during exit of the utility. These warnings were similar to 1484these: 1485 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1486 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1487 1488---------------------------------------- 148929 June 2018. Summary of changes for version 20180629: 1490 1491 14921) iASL Compiler/Disassembler and Tools: 1493 1494iASL: Fixed a regression related to the use of the ASL External 1495statement. Error checking for the use of the External() statement has 1496been relaxed. Previously, a restriction on the use of External meant that 1497the referenced named object was required to be defined in a different 1498table (an SSDT). Thus it would be an error to declare an object as an 1499external and then define the same named object in the same table. For 1500example: 1501 DefinitionBlock (...) 1502 { 1503 External (DEV1) 1504 Device (DEV1){...} // This was an error 1505 } 1506However, this behavior has caused regressions in some existing ASL code, 1507because there is code that depends on named objects and externals (with 1508the same name) being declared in the same table. This change will allow 1509the ASL code above to compile without errors or warnings. 1510 1511iASL: Implemented ASL language extensions for four operators to make some 1512of their arguments optional instead of required: 1513 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1514 2) BankField (RegionName, BankName, BankValue, 1515 AccessType, LockRule, UpdateRule) 1516 3) IndexField (IndexName, DataName, 1517 AccessType, LockRule, UpdateRule) 1518For the Field operators above, the AccessType, LockRule, and UpdateRule 1519are now optional arguments. The default values are: 1520 AccessType: AnyAcc 1521 LockRule: NoLock 1522 UpdateRule: Preserve 1523 4) Mutex (MutexName, SyncLevel) 1524For this operator, the SyncLevel argument is now optional. This argument 1525is rarely used in any meaningful way by ASL code, and thus it makes sense 1526to make it optional. The default value is: 1527 SyncLevel: 0 1528 1529iASL: Attempted use of the ASL Unload() operator now results in the 1530following warning: 1531 "Unload is not supported by all operating systems" 1532This is in fact very true, and the Unload operator may be completely 1533deprecated in the near future. 1534 1535AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1536file. Recent changes in the ACPICA module-level code support altered the 1537table load/initialization sequence . This means that the table load has 1538become a large method execution of the table itself. If Operation Region 1539Fields are used within any module-level code and the -fi option was 1540specified, the initialization values were populated only after the table 1541had completely finished loading (and thus the module-level code had 1542already been executed). This change moves the initialization of objects 1543listed in the initialization file to before the table is executed as a 1544method. Field unit values are now initialized before the table execution 1545is performed. 1546 1547---------------------------------------- 154831 May 2018. Summary of changes for version 20180531: 1549 1550 15511) ACPICA kernel-resident Subsystem: 1552 1553Implemented additional support to help ensure that a DSDT or SSDT is 1554fully loaded even if errors are incurred during the load. The majority of 1555the problems that are seen is the failure of individual AML operators 1556that occur during execution of any module-level code (MLC) existing in 1557the table. This support adds a mechanism to abort the current ASL 1558statement (AML opcode), emit an error message, and to simply move on to 1559the next opcode -- instead of aborting the entire table load. This is 1560different than the execution of a control method where the entire method 1561is aborted upon any error. The goal is to perform a very "best effort" to 1562load the ACPI tables. The most common MLC errors that have been seen in 1563the field are direct references to unresolved ASL/AML symbols (referenced 1564directly without the use of the CondRefOf operator to validate the 1565symbol). This new ACPICA behavior is now compatible with other ACPI 1566implementations. 1567 1568Interpreter: The Unload AML operator is no longer supported for the 1569reasons below. An AE_NOT_IMPLEMENTED exception is returned. 15701) A correct implementation on at least some hosts may not be possible. 15712) Other ACPI implementations do not correctly/fully support it. 15723) It requires host device driver support which is not known to exist. 1573 (To properly support namespace unload out from underneath.) 15744) This AML operator has never been seen in the field. 1575 1576Parser: Added a debug option to dump AML parse sub-trees as they are 1577being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1578ACPI_DB_PARSE_TREES. 1579 1580Debugger: Reduced the verbosity for errors incurred during table load and 1581module-level code execution. 1582 1583Completed an investigation into adding a namespace node "owner list" 1584instead of the current "owner ID" associated with namespace nodes. This 1585list would link together all nodes that are owned by an individual 1586control method. The purpose would be to enhance control method execution 1587by speeding up cleanup during method exit (all namespace nodes created by 1588a method are deleted upon method termination.) Currently, the entire 1589namespace must be searched for matching owner IDs if (and only if) the 1590method creates named objects outside of the local scope. However, by far 1591the most common case is that methods create objects locally, not outside 1592the method scope. There is already an ACPICA optimization in place that 1593only searches the entire namespace in the rare case of a method creating 1594objects elsewhere in the namespace. Therefore, it is felt that the 1595overhead of adding an additional pointer to each namespace node to 1596implement the owner list makes this feature unnecessary. 1597 1598 15992) iASL Compiler/Disassembler and Tools: 1600 1601iASL, Disassembler, and Template generator: Implemented support for 1602Revision D of the IORT table. Adds a new subtable that is used to specify 1603SMMUv3 PMCGs. rmurphy-arm. 1604 1605Disassembler: Restored correct table header validation for the "special" 1606ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1607table header and must be special-cased. This was a regression that has 1608been present for apparently a long time. 1609 1610AcpiExec: Reduced verbosity of the local exception handler implemented 1611within acpiexec. This handler is invoked by ACPICA upon any exceptions 1612generated during control method execution. A new option was added: -vh 1613restores the original verbosity level if desired. 1614 1615AcpiExec: Changed the default base from decimal to hex for the -x option 1616(set debug level). This simplifies the use of this option and matches the 1617behavior of the corresponding iASL -x option. 1618 1619AcpiExec: Restored a force-exit on multiple control-c (sigint) 1620interrupts. This allows program termination even if other issues cause 1621the control-c to fail. 1622 1623ASL test suite (ASLTS): Added tests for the recently implemented package 1624element resolution mechanism that allows forward references to named 1625objects from individual package elements (this mechanism provides 1626compatibility with other ACPI implementations.) 1627 1628 1629---------------------------------------- 16308 May 2018. Summary of changes for version 20180508: 1631 1632 16331) ACPICA kernel-resident subsystem: 1634 1635Completed the new (recently deployed) package resolution mechanism for 1636the Load and LoadTable ASL/AML operators. This fixes a regression that 1637was introduced in version 20180209 that could result in an 1638AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1639(SSDT) that contains package objects. 1640 1641 16422) iASL Compiler/Disassembler and Tools: 1643 1644AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 16451 MB. This change allows for table offsets within the acpidump file to be 1646up to 8 characters. These changes are backwards compatible with existing 1647acpidump files. 1648 1649 1650---------------------------------------- 165127 April 2018. Summary of changes for version 20180427: 1652 1653 16541) ACPICA kernel-resident subsystem: 1655 1656Debugger: Added support for Package objects in the "Test Objects" 1657command. This command walks the entire namespace and evaluates all named 1658data objects (Integers, Strings, Buffers, and now Packages). 1659 1660Improved error messages for the namespace root node. Originally, the root 1661was referred to by the confusing string "\___". This has been replaced by 1662"Namespace Root" for clarification. 1663 1664Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1665Ian King <colin.king@canonical.com>. 1666 1667 16682) iASL Compiler/Disassembler and Tools: 1669 1670iASL: Implemented support to detect and flag illegal forward references. 1671For compatibility with other ACPI implementations, these references are 1672now illegal at the root level of the DSDT or SSDTs. Forward references 1673have always been illegal within control methods. This change should not 1674affect existing ASL/AML code because of the fact that these references 1675have always been illegal in the other ACPI implementation. 1676 1677iASL: Added error messages for the case where a table OEM ID and OEM 1678TABLE ID strings are longer than the ACPI-defined length. Previously, 1679these strings were simply silently truncated. 1680 1681iASL: Enhanced the -tc option (which creates an AML hex file in C, 1682suitable for import into a firmware project): 1683 1) Create a unique name for the table, to simplify use of multiple 1684SSDTs. 1685 2) Add a protection #ifdef in the file, similar to a .h header file. 1686With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1687evan.lloyd@arm.com 1688 1689AcpiExec: Added a new option, -df, to disable the local fault handler. 1690This is useful during debugging, where it may be desired to drop into a 1691debugger on a fault. 1692 1693---------------------------------------- 169413 March 2018. Summary of changes for version 20180313: 1695 1696 16971) ACPICA kernel-resident subsystem: 1698 1699Implemented various improvements to the GPE support: 1700 17011) Dispatch all active GPEs at initialization time so that no GPEs are 1702lost. 17032) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 1704before devices are enumerated. 17053) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 1706IRQs are not lost. 17074) Add parallel GPE handling to eliminate the possibility of dispatching 1708the same GPE twice. 17095) Dispatch any pending GPEs after enabling for the first time. 1710 1711AcpiGetObjectInfo - removed support for the _STA method. This was causing 1712problems on some platforms. 1713 1714Added a new _OSI string, "Windows 2017.2". 1715 1716Cleaned up and simplified the module-level code support. These changes 1717are in preparation for the eventual removal of the legacy MLC support 1718(deferred execution), replaced by the new MLC architecture which executes 1719the MLC as a table is loaded (DSDT/SSDTs). 1720 1721Changed a compile-time option to a runtime option. Changes the option to 1722ignore ACPI table load-time package resolution errors into a runtime 1723option. Used only for platforms that generate many AE_NOT_FOUND errors 1724during boot. AcpiGbl_IgnorePackageResolutionErrors. 1725 1726Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 1727ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 1728compilation errors from unused variables (seen with some compilers). 1729 1730 17312) iASL Compiler/Disassembler and Tools: 1732 1733ASLTS: parallelized execution in order to achieve an (approximately) 2X 1734performance increase. 1735 1736ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1737error reporting. 1738 1739---------------------------------------- 174009 February 2018. Summary of changes for version 20180209: 1741 1742 17431) ACPICA kernel-resident subsystem: 1744 1745Completed the final integration of the recent changes to Package Object 1746handling and the module-level AML code support. This allows forward 1747references from individual package elements when the package object is 1748declared from within module-level code blocks. Provides compatibility 1749with other ACPI implementations. 1750 1751The new architecture for the AML module-level code has been completed and 1752is now the default for the ACPICA code. This new architecture executes 1753the module-level code in-line as the ACPI table is loaded/parsed instead 1754of the previous architecture which deferred this code until after the 1755table was fully loaded. This solves some ASL code ordering issues and 1756provides compatibility with other ACPI implementations. At this time, 1757there is an option to fallback to the earlier architecture, but this 1758support is deprecated and is planned to be completely removed later this 1759year. 1760 1761Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1762resolution of named reference elements within Package objects. Although 1763this is potentially a serious problem, it can generate a lot of 1764noise/errors on platforms whose firmware carries around a bunch of unused 1765Package objects. To disable these errors, define 1766ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1767errors are always reported for ACPICA applications such as AcpiExec. 1768 1769Fixed a regression related to the explicit type-conversion AML operators 1770(ToXXXX). The regression was introduced early in 2017 but was not seen 1771until recently because these operators are not fully supported by other 1772ACPI implementations and are thus rarely used by firmware developers. The 1773operators are defined by the ACPI specification to not implement the 1774"implicit result object conversion". The regression incorrectly 1775introduced this object conversion for the following explicit conversion 1776operators: 1777 ToInteger 1778 ToString 1779 ToBuffer 1780 ToDecimalString 1781 ToHexString 1782 ToBCD 1783 FromBCD 1784 1785 17862) iASL Compiler/Disassembler and Tools: 1787 1788iASL: Fixed a problem with the compiler constant folding feature as 1789related to the ToXXXX explicit conversion operators. These operators do 1790not support the "implicit result object conversion" by definition. Thus, 1791ASL expressions that use these operators cannot be folded to a simple 1792Store operator because Store implements the implicit conversion. This 1793change uses the CopyObject operator for the ToXXXX operator folding 1794instead. CopyObject is defined to not implement implicit result 1795conversions and is thus appropriate for folding the ToXXXX operators. 1796 1797iASL: Changed the severity of an error condition to a simple warning for 1798the case where a symbol is declared both locally and as an external 1799symbol. This accommodates existing ASL code. 1800 1801AcpiExec: The -ep option to enable the new architecture for module-level 1802code has been removed. It is replaced by the -dp option which instead has 1803the opposite effect: it disables the new architecture (the default) and 1804enables the legacy architecture. When the legacy code is removed in the 1805future, the -dp option will be removed also. 1806 1807---------------------------------------- 180805 January 2018. Summary of changes for version 20180105: 1809 1810 18111) ACPICA kernel-resident subsystem: 1812 1813Updated all copyrights to 2018. This affects all source code modules. 1814 1815Fixed a possible build error caused by an unresolved reference to the 1816AcpiUtSafeStrncpy function. 1817 1818Removed NULL pointer arithmetic in the various pointer manipulation 1819macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1820This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1821 1822Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1823Mittal. 1824 1825 18262) iASL Compiler/Disassembler and Tools: 1827 1828ASLTS: Updated all copyrights to 2018. 1829 1830Tools: Updated all signon copyrights to 2018. 1831 1832AcpiXtract: Fixed a regression related to ACPI table signatures where the 1833signature was truncated to 3 characters (instead of 4). 1834 1835AcpiExec: Restore the original terminal mode after the use of the -v and 1836-vd options. 1837 1838ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1839 1840---------------------------------------- 184114 December 2017. Summary of changes for version 20171214: 1842 1843 18441) ACPICA kernel-resident subsystem: 1845 1846Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1847interface where the optional "pathname" argument had inadvertently become 1848a required argument returning an error if omitted (NULL pointer 1849argument). 1850 1851Fixed two possible memory leaks related to the recently developed "late 1852resolution" of reference objects within ASL Package Object definitions. 1853 1854Added two recently defined _OSI strings: "Windows 2016" and "Windows 18552017". Mario Limonciello. 1856 1857Implemented and deployed a safer version of the C library function 1858strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1859creation of unterminated strings as a possible result of a standard 1860strncpy. 1861 1862Cleaned up and restructured the global variable file (acglobal.h). There 1863are many changes, but no functional changes. 1864 1865 18662) iASL Compiler/Disassembler and Tools: 1867 1868iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1869optional OemData field at the end of the table was incorrectly required 1870for proper compilation. It is now correctly an optional field. 1871 1872ASLTS: The entire suite was converted from standard ASL to the ASL+ 1873language, using the ASL-to-ASL+ converter which is integrated into the 1874iASL compiler. A binary compare of all output files has verified the 1875correctness of the conversion. 1876 1877iASL: Fixed the source code build for platforms where "char" is unsigned. 1878This affected the iASL lexer only. Jung-uk Kim. 1879 1880---------------------------------------- 188110 November 2017. Summary of changes for version 20171110: 1882 1883 18841) ACPICA kernel-resident subsystem: 1885 1886This release implements full support for ACPI 6.2A: 1887 NFIT - Added a new subtable, "Platform Capabilities Structure" 1888No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1889errata release of the specification. 1890 1891Other ACPI table changes: 1892 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1893 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1894Linton 1895 1896Utilities: Modified the string/integer conversion functions to use 1897internal 64-bit divide support instead of a native divide. On 32-bit 1898platforms, a 64-bit divide typically requires a library function which 1899may not be present in the build (kernel or otherwise). 1900 1901Implemented a targeted error message for timeouts returned from the 1902Embedded Controller device driver. This is seen frequently enough to 1903special-case an AE_TIME returned from an EC operation region access: 1904 "Timeout from EC hardware or EC device driver" 1905 1906Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1907runtime error messages have the identical prefix. 1908 1909 19102) iASL Compiler/Disassembler and Tools: 1911 1912AcpiXtract: Fixed a problem with table header detection within the 1913acpidump file. Processing a table could be ended early if a 0x40 (@) 1914appears in the original binary table, resulting in the @ symbol appearing 1915in the decoded ASCII field at the end of the acpidump text line. The 1916symbol caused acpixtract to incorrectly think it had reached the end of 1917the current table and the beginning of a new table. 1918 1919AcpiXtract: Added an option (-f) to ignore some errors during table 1920extraction. This initial implementation ignores non-ASCII and non- 1921printable characters found in the acpidump text file. 1922 1923TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1924for ASLTS. This feature is used to track memory allocations from 1925different memory caches within the ACPICA code. At the end of an ASLTS 1926run, these memory statistics are recorded and stored in a log file. 1927 1928Debugger (user-space version): Implemented a simple "Background" command. 1929Creates a new thread to execute a control method in the background, while 1930control returns to the debugger prompt to allow additional commands. 1931 Syntax: Background <Namepath> [Arguments] 1932 1933---------------------------------------- 193429 September 2017. Summary of changes for version 20170929: 1935 1936 19371) ACPICA kernel-resident subsystem: 1938 1939Redesigned and implemented an improved ASL While() loop timeout 1940mechanism. This mechanism is used to prevent infinite loops in the kernel 1941AML interpreter caused by either non-responsive hardware or incorrect AML 1942code. The new implementation uses AcpiOsGetTimer instead of a simple 1943maximum loop count, and is thus more accurate and constant across 1944different machines. The default timeout is currently 30 seconds, but this 1945may be adjusted later. 1946 1947Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1948better reflect the new implementation of the loop timeout mechanism. 1949 1950Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1951and to fix an off-by-one error. Jung-uk Kim. 1952 1953Fixed an EFI build problem by updating the makefiles to for a new file 1954that was added, utstrsuppt.c 1955 1956 19572) iASL Compiler/Disassembler and Tools: 1958 1959Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1960includes support in the table disassembler, compiler, and template 1961generator. 1962 1963iASL: Added an exception for an illegal type of recursive method 1964invocation. If a method creates named objects, the first recursive call 1965will fail at runtime. This change adds an error detection at compile time 1966to catch the problem up front. Note: Marking such a method as 1967"serialized" will not help with this problem, because the same thread can 1968acquire the method mutex more than once. Example compiler and runtime 1969output: 1970 1971 Method (MTH1) 1972 { 1973 Name (INT1, 1) 1974 MTH1 () 1975 } 1976 1977 dsdt.asl 22: MTH1 () 1978 Error 6152 - ^ Illegal recursive call to method 1979 that creates named objects (MTH1) 1980 1981Previous runtime exception: 1982 ACPI Error: [INT1] Namespace lookup failure, 1983 AE_ALREADY_EXISTS (20170831/dswload2-465) 1984 1985iASL: Updated support for External() opcodes to improve namespace 1986management and error detection. These changes are related to issues seen 1987with multiple-segment namespace pathnames within External declarations, 1988such as below: 1989 1990 External(\_SB.PCI0.GFX0, DeviceObj) 1991 External(\_SB.PCI0.GFX0.ALSI) 1992 1993iASL: Implemented support for multi-line error/warning messages. This 1994enables more detailed and helpful error messages as below, from the 1995initial deployment for the duplicate names error: 1996 1997 DSDT.iiii 1692: Device(PEG2) { 1998 Error 6074 - ^ Name already exists in scope 1999(PEG2) 2000 2001 Original name creation/declaration below: 2002 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 2003 2004AcpiXtract: Added additional flexibility to support differing input hex 2005dump formats. Specifically, hex dumps that contain partial disassembly 2006and/or comments within the ACPI table data definition. There exist some 2007dump utilities seen in the field that create this type of hex dump (such 2008as Simics). For example: 2009 2010 DSDT @ 0xdfffd0c0 (10999 bytes) 2011 Signature DSDT 2012 Length 10999 2013 Revision 1 2014 Checksum 0xf3 (Ok) 2015 OEM_ID BXPC 2016 OEM_table_id BXDSDT 2017 OEM_revision 1 2018 Creator_id 1280593481 2019 Creator_revision 537399345 2020 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 2021 ... 2022 2af0: 5f 4c 30 46 00 a4 01 2023 2024Test suite: Miscellaneous changes/fixes: 2025 More cleanup and simplification of makefiles 2026 Continue compilation of test cases after a compile failure 2027 Do not perform binary compare unless both files actually exist 2028 2029iASL: Performed some code/module restructuring. Moved all memory 2030allocation functions to new modules. Two new files, aslallocate.c and 2031aslcache.c 2032 2033---------------------------------------- 203431 August 2017. Summary of changes for version 20170831: 2035 2036 20371) ACPICA kernel-resident subsystem: 2038 2039Implemented internal support for full 64-bit addresses that appear in all 2040Generic Address Structure (GAS) structures. Previously, only the lower 32 2041bits were used. Affects the use of GAS structures in the FADT and other 2042tables, as well as the GAS structures passed to the AcpiRead and 2043AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 2044 2045Added header support for the PDTT ACPI table (Processor Debug Trigger 2046Table). Full support in the iASL Data Table Compiler and disassembler is 2047forthcoming. 2048 2049 20502) iASL Compiler/Disassembler and Tools: 2051 2052iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 2053Properties Topology Table) where a flag bit was specified in the wrong 2054bit position ("Line Size Valid", bit 6). 2055 2056iASL: Implemented support for Octal integer constants as defined by the 2057ASL language grammar, per the ACPI specification. Any integer constant 2058that starts with a zero is an octal constant. For example, 2059 Store (037777, Local0) /* Octal constant */ 2060 Store (0x3FFF, Local0) /* Hex equivalent */ 2061 Store (16383, Local0) /* Decimal equivalent */ 2062 2063iASL: Improved overflow detection for 64-bit string conversions during 2064compilation of integer constants. "Overflow" in this case means a string 2065that represents an integer that is too large to fit into a 64-bit value. 2066Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 2067the low-order 32 bits with a warning, as previously implemented. Several 2068new exceptions are defined that indicate a 64-bit overflow, as well as 2069the base (radix) that was used during the attempted conversion. Examples: 2070 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 2071 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 2072 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 2073 2074iASL: Added a warning for the case where a ResourceTemplate is declared 2075with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 2076this case, the resulting template is created with a single END_TAG 2077descriptor, which is essentially useless. 2078 2079iASL: Expanded the -vw option (ignore specific warnings/remarks) to 2080include compilation error codes as well. 2081 2082---------------------------------------- 208328 July 2017. Summary of changes for version 20170728: 2084 2085 20861) ACPICA kernel-resident subsystem: 2087 2088Fixed a regression seen with small resource descriptors that could cause 2089an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2090 2091AML interpreter: Implemented a new feature that allows forward references 2092from individual named references within package objects that are 2093contained within blocks of "module-level code". This provides 2094compatibility with other ACPI implementations and supports existing 2095firmware that depends on this feature. Example: 2096 2097 Name (ABCD, 1) 2098 If (ABCD) /* An If() at module-level */ 2099 { 2100 Name (PKG1, Package() 2101 { 2102 INT1 /* Forward reference to object INT1 2103*/ 2104 }) 2105 Name (INT1, 0x1234) 2106 } 2107 2108AML Interpreter: Fixed a problem with the Alias() operator where aliases 2109to some ASL objects were not handled properly. Objects affected are: 2110Mutex, Event, and OperationRegion. 2111 2112AML Debugger: Enhanced to properly handle AML Alias objects. These 2113objects have one level of indirection which was not fully supported by 2114the debugger. 2115 2116Table Manager: Added support to detect and ignore duplicate SSDTs within 2117the XSDT/RSDT. This error in the XSDT has been seen in the field. 2118 2119EFI and EDK2 support: 2120 Enabled /WX flag for MSVC builds 2121 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2122 Added local support for 64-bit multiply and shift operations 2123 Added support to compile acpidump.efi on Windows 2124 Added OSL function stubs for interfaces not used under EFI 2125 2126Added additional support for the _DMA predefined name. _DMA returns a 2127buffer containing a resource template. This change add support within the 2128resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2129resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2130 2131 21322) iASL Compiler/Disassembler and Tools: 2133 2134iASL: Fixed a problem where the internal input line buffer(s) could 2135overflow if there are very long lines in the input ASL source code file. 2136Implemented buffer management that automatically increases the size of 2137the buffers as necessary. 2138 2139iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2140errors. If the specified exception is not raised during compilation, the 2141compiler emits an error. This is intended to support the ASL test suite, 2142but may be useful in other contexts. 2143 2144iASL: Implemented a new predefined macro, __METHOD__, which returns a 2145string containing the name of the current control method that is being 2146compiled. 2147 2148iASL: Implemented debugger and table compiler support for the SDEI ACPI 2149table (Software Delegated Exception Interface). James Morse 2150<james.morse@arm.com> 2151 2152Unix/Linux makefiles: Added an option to disable compile optimizations. 2153The disable occurs when the NOOPT flag is set to TRUE. 2154theracermaster@gmail.com 2155 2156Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2157when there are different tables for 32-bit versus 64-bit. 2158 2159Enhanced error reporting for the ASL test suite (ASLTS) by removing 2160unnecessary/verbose text, and emit the actual line number where an error 2161has occurred. These changes are intended to improve the usefulness of the 2162test suite. 2163 2164---------------------------------------- 216529 June 2017. Summary of changes for version 20170629: 2166 2167 21681) ACPICA kernel-resident subsystem: 2169 2170Tables: Implemented a deferred ACPI table verification. This is useful 2171for operating systems where the tables cannot be verified in the early 2172initialization stage due to early memory mapping limitations on some 2173architectures. Lv Zheng. 2174 2175Tables: Removed the signature validation for dynamically loaded tables. 2176Provides compatibility with other ACPI implementations. Previously, only 2177SSDT tables were allowed, as per the ACPI specification. Now, any table 2178signature can be used via the Load() operator. Lv Zheng. 2179 2180Tables: Fixed several mutex issues that could cause errors during table 2181acquisition. Lv Zheng. 2182 2183Tables: Fixed a problem where an ACPI warning could be generated if a 2184null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2185 2186Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2187AcpiPutTable interfaces. This applies to the "late stage" table loading 2188when the use of AcpiPutTable is no longer required (since the system 2189memory manager is fully running and available). Lv Zheng. 2190 2191Fixed/Reverted a regression during processing of resource descriptors 2192that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2193exception in this case. 2194 2195Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2196I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2197 2198Interpreter: Fixed a possible fault if an Alias operator with an invalid 2199or duplicate target is encountered during Alias creation in 2200AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2201 2202Added an option to use designated initializers for function pointers. 2203Kees Cook <keescook@google.com> 2204 2205 22062) iASL Compiler/Disassembler and Tools: 2207 2208iASL: Allow compilation of External declarations with target pathnames 2209that refer to existing named objects within the table. Erik Schmauss. 2210 2211iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2212FieldUnit name also is declared via External in the same table. Erik 2213Schmauss. 2214 2215iASL: Allow existing scope names within pathnames used in External 2216statements. For example: 2217 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2218 Device (ABCD) 2219 2220iASL: IORT ACPI table: Implemented changes required to decode the new 2221Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2222compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2223 2224Disassembler: Don't abort disassembly on errors from External() 2225statements. Erik Schmauss. 2226 2227Disassembler: fixed a possible fault when one of the Create*Field 2228operators references a Resource Template. ACPICA Bugzilla 1396. 2229 2230iASL: In the source code, resolved some naming inconsistences across the 2231parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2232Adds a new file, aslparseop.c 2233 2234---------------------------------------- 223531 May 2017. Summary of changes for version 20170531: 2236 2237 22380) ACPI 6.2 support: 2239 2240The ACPI specification version 6.2 has been released and is available at 2241http://uefi.org/specifications 2242 2243This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2244are summarized below. 2245 2246New ACPI tables (Table Compiler/Disassembler/Templates): 2247 HMAT (Heterogeneous Memory Attributes Table) 2248 WSMT (Windows SMM Security Mitigation Table) 2249 PPTT (Processor Properties Topology Table) 2250 2251New subtables for existing ACPI tables: 2252 HEST (New subtable, Arch-deferred machine check) 2253 SRAT (New subtable, Arch-specific affinity structure) 2254 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2255 2256Simple updates for existing ACPI tables: 2257 BGRT (two new flag bits) 2258 HEST (New bit defined for several subtables, GHES_ASSIST) 2259 2260New Resource Descriptors and Resource macros (Compiler/Disassembler): 2261 PinConfig() 2262 PinFunction() 2263 PinGroup() 2264 PinGroupConfig() 2265 PinGroupFunction() 2266 New type for hardware error notification (section 18.3.2.9) 2267 2268New predefined names/methods (Compiler/Interpreter): 2269 _HMA (Heterogeneous Memory Attributes) 2270 _LSI (Label Storage Information) 2271 _LSR (Label Storage Read) 2272 _LSW (Label Storage Write) 2273 2274ASL grammar/macro changes (Compiler): 2275 For() ASL macro, implemented with the AML while operator 2276 Extensions to Concatenate operator 2277 Support for multiple definition blocks in same ASL file 2278 Clarification for Buffer operator 2279 Allow executable AML code underneath all scopes (Devices, etc.) 2280 Clarification/change for the _OSI return value 2281 ASL grammar update for reference operators 2282 Allow a zero-length string for AML filename in DefinitionBlock 2283 2284Miscellaneous: 2285 New device object notification value 2286 Remove a notify value (0x0C) for graceful shutdown 2287 New UUIDs for processor/cache properties and 2288 physical package property 2289 New _HID, ACPI0014 (Wireless Power Calibration Device) 2290 2291 22921) ACPICA kernel-resident subsystem: 2293 2294Added support to disable ACPI events on hardware-reduced platforms. 2295Eliminates error messages of the form "Could not enable fixed event". Lv 2296Zheng 2297 2298Fixed a problem using Device/Thermal objects with the ObjectType and 2299DerefOf ASL operators. This support had not been fully/properly 2300implemented. 2301 2302Fixed a problem where if a Buffer object containing a resource template 2303was longer than the actual resource template, an error was generated -- 2304even though the AML is legal. This case has been seen in the field. 2305 2306Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2307The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2308 2309Added header file changes for the TPM2 ACPI table. Update to new version 2310of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2311 2312Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2313These interfaces are intended to be used only in conjunction with the 2314predefined _DLM method (Device Lock Method). "This object appears in a 2315device scope when AML access to the device must be synchronized with the 2316OS environment". 2317 2318Example Code and Data Size: These are the sizes for the OS-independent 2319acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2320debug version of the code includes the debug output trace mechanism and 2321has a much larger code and data size. 2322 2323 Current Release: 2324 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2325 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2326 Previous Release: 2327 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2328 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2329 2330 23312) iASL Compiler/Disassembler and Tools: 2332 2333iASL: Fixed a problem where an External() declaration could not refer to 2334a Field Unit. Erik Schmauss. 2335 2336Disassembler: Improved support for the Switch/Case operators. This 2337feature will disassemble AML code back to the original Switch operators 2338when possible, instead of an If..Else sequence. David Box 2339 2340iASL and disassembler: Improved the handling of multiple extraneous 2341parentheses for both ASL input and disassembled ASL output. 2342 2343Improved the behavior of the iASL compiler and disassembler to detect 2344improper use of external declarations 2345 2346Disassembler: Now aborts immediately upon detection of an unknown AML 2347opcode. The AML parser has no real way to recover from this, and can 2348result in the creation of an ill-formed parse tree that causes errors 2349later during the disassembly. 2350 2351All tools: Fixed a problem where the Unix application OSL did not handle 2352control-c correctly. For example, a control-c could incorrectly wake the 2353debugger. 2354 2355AcpiExec: Improved the Control-C handling and added a handler for 2356segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2357environments. 2358 2359Reduced the verbosity of the generic unix makefiles. Previously, each 2360compilation displayed the full set of compiler options. This has been 2361eliminated as the options are easily inspected within the makefiles. Each 2362compilation now results in a single line of output. 2363 2364---------------------------------------- 236503 March 2017. Summary of changes for version 20170303: 2366 2367 23680) ACPICA licensing: 2369 2370The licensing information at the start of each source code module has 2371been updated. In addition to the Intel license, the dual GPLv2/BSD 2372license has been added for completeness. Now, a single version of the 2373source code should be suitable for all ACPICA customers. This is the 2374major change for this release since it affects all source code modules. 2375 2376 23771) ACPICA kernel-resident subsystem: 2378 2379Fixed two issues with the common asltypes.h header that could cause 2380problems in some environments: (Kim Jung-uk) 2381 Removed typedef for YY_BUFFER_STATE ? 2382 Fixes an error with earlier versions of Flex. 2383 Removed use of FILE typedef (which is only defined in stdio.h) 2384 2385 23862) iASL Compiler/Disassembler and Tools: 2387 2388Disassembler: fixed a regression introduced in 20170224. A fix for a 2389memory leak related to resource descriptor tags (names) could fault when 2390the disassembler was generated with 64-bit compilers. 2391 2392The ASLTS test suite has been updated to implement a new testing 2393architecture. During generation of the suite from ASL source, both the 2394ASL and ASL+ compilers are now validated, as well as the disassembler 2395itself (Erik Schmauss). The architecture executes as follows: 2396 2397 For every ASL source module: 2398 Compile (legacy ASL compilation) 2399 Disassemble the resulting AML to ASL+ source code 2400 Compile the new ASL+ module 2401 Perform a binary compare on the legacy AML and the new ASL+ AML 2402 The ASLTS suite then executes normally using the AML binaries. 2403 2404---------------------------------------- 240524 February 2017. Summary of changes for version 20170224: 2406 2407 24081) ACPICA kernel-resident subsystem: 2409 2410Interpreter: Fixed two issues with the control method return value auto- 2411repair feature, where an attempt to double-delete an internal object 2412could result in an ACPICA warning (for _CID repair and others). No fault 2413occurs, however, because the attempted deletion (actually a release to an 2414internal cache) is detected and ignored via object poisoning. 2415 2416Debugger: Fixed an AML interpreter mutex issue during the single stepping 2417of control methods. If certain debugger commands are executed during 2418stepping, a mutex acquire/release error could occur. Lv Zheng. 2419 2420Fixed some issues generating ACPICA with the Intel C compiler by 2421restoring the original behavior and compiler-specific include file in 2422acenv.h. Lv Zheng. 2423 2424Example Code and Data Size: These are the sizes for the OS-independent 2425acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2426debug version of the code includes the debug output trace mechanism and 2427has a much larger code and data size. 2428 2429 Current Release: 2430 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2431 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2432 Previous Release: 2433 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2434 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2435 2436 24372) iASL Compiler/Disassembler and Tools: 2438 2439iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2440tool has been designed, implemented, and included in this release. The 2441key feature of this utility is that the original comments within the 2442input ASL file are preserved during the conversion process, and included 2443within the converted ASL+ file -- thus creating a transparent conversion 2444of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2445 2446 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2447converted code 2448 2449iASL/Disassembler: Improved the detection and correct disassembly of 2450Switch/Case operators. This feature detects sequences of if/elseif/else 2451operators that originated from ASL Switch/Case/Default operators and 2452emits the original operators. David Box. 2453 2454iASL: Improved the IORT ACPI table support in the following areas. Lv 2455Zheng: 2456 Clear MappingOffset if the MappingCount is zero. 2457 Fix the disassembly of the SMMU GSU interrupt offset. 2458 Update the template file for the IORT table. 2459 2460Disassembler: Enhanced the detection and disassembly of resource 2461template/descriptor within a Buffer object. An EndTag descriptor is now 2462required to have a zero second byte, since all known ASL compilers emit 2463this. This helps eliminate incorrect decisions when a buffer is 2464disassembled (false positives on resource templates). 2465 2466---------------------------------------- 246719 January 2017. Summary of changes for version 20170119: 2468 2469 24701) General ACPICA software: 2471 2472Entire source code base: Added the 2017 copyright to all source code 2473legal/licensing module headers and utility/tool signons. This includes 2474the standard Linux dual-license header. This affects virtually every file 2475in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2476the ACPICA test suite. 2477 2478 24792) iASL Compiler/Disassembler and Tools: 2480 2481iASL: Removed/fixed an inadvertent remark when a method argument 2482containing a reference is used as a target operand within the method (and 2483never used as a simple argument), as in the example below. Jeffrey Hugo. 2484 2485 dsdt.asl 1507: Store(0x1, Arg0) 2486 Remark 2146 - ^ Method Argument is never used (Arg0) 2487 2488All tools: Removed the bit width of the compiler that generated the tool 2489from the common signon for all user space tools. This proved to be 2490confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2491from the generic makefiles (Thomas Petazzoni). Example below. 2492 2493 Old: 2494 ASL+ Optimizing Compiler version 20170119-32 2495 ASL+ Optimizing Compiler version 20170119-64 2496 2497 New: 2498 ASL+ Optimizing Compiler version 20170119 2499 2500---------------------------------------- 250122 December 2016. Summary of changes for version 20161222: 2502 2503 25041) ACPICA kernel-resident subsystem: 2505 2506AML Debugger: Implemented a new mechanism to simplify and enhance 2507debugger integration into all environments, including kernel debuggers 2508and user-space utilities, as well as remote debug services. This 2509mechanism essentially consists of new OSL interfaces to support debugger 2510initialization/termination, as well as wait/notify interfaces to perform 2511the debugger handshake with the host. Lv Zheng. 2512 2513 New OSL interfaces: 2514 AcpiOsInitializeDebugger (void) 2515 AcpiOsTerminateDebugger (void) 2516 AcpiOsWaitCommandReady (void) 2517 AcpiOsNotifyCommandComplete (void) 2518 2519 New OS services layer: 2520 osgendbg.c -- Example implementation, and used for AcpiExec 2521 2522Update for Generic Address Space (GAS) support: Although the AccessWidth 2523and/or BitOffset fields of the GAS are not often used, this change now 2524fully supports these fields. This affects the internal support for FADT 2525registers, registers in other ACPI data tables, and the AcpiRead and 2526AcpiWrite public interfaces. Lv Zheng. 2527 2528Sleep support: In order to simplify integration of ACPI sleep for the 2529various host operating systems, a new OSL interface has been introduced. 2530AcpiOsEnterSleep allows the host to perform any required operations 2531before the final write to the sleep control register(s) is performed by 2532ACPICA. Lv Zheng. 2533 2534 New OSL interface: 2535 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2536 2537 Called from these internal interfaces: 2538 AcpiHwLegacySleep 2539 AcpiHwExtendedSleep 2540 2541EFI support: Added a very small EFI/ACPICA example application. Provides 2542a simple demo for EFI integration, as well as assisting with resolution 2543of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2544 2545 source/tools/efihello/efihello.c 2546 2547Local C library: Implemented several new functions to enhance ACPICA 2548portability, for environments where these clib functions are not 2549available (such as EFI). Lv Zheng: 2550 putchar 2551 getchar 2552 strpbrk 2553 strtok 2554 memmove 2555 2556Fixed a regression where occasionally a valid resource descriptor was 2557incorrectly detected as invalid at runtime, and a 2558AE_AML_NO_RESOURCE_END_TAG was returned. 2559 2560Fixed a problem with the recently implemented support that enables 2561control method invocations as Target operands to many ASL operators. 2562Warnings of this form: "Needed type [Reference], found [Processor]" were 2563seen at runtime for some method invocations. 2564 2565Example Code and Data Size: These are the sizes for the OS-independent 2566acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2567debug version of the code includes the debug output trace mechanism and 2568has a much larger code and data size. 2569 2570 Current Release: 2571 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2572 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2573 Previous Release: 2574 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2575 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2576 2577 25782) iASL Compiler/Disassembler and Tools: 2579 2580Disassembler: Enhanced output by adding the capability to detect and 2581disassemble ASL Switch/Case statements back to the original ASL source 2582code instead of if/else blocks. David Box. 2583 2584AcpiHelp: Split a large file into separate files based upon 2585functionality/purpose. New files are: 2586 ahaml.c 2587 ahasl.c 2588 2589---------------------------------------- 259017 November 2016. Summary of changes for version 20161117: 2591 2592 25931) ACPICA kernel-resident subsystem: 2594 2595Table Manager: Fixed a regression introduced in 20160729, "FADT support 2596cleanup". This was an attempt to remove all references in the source to 2597the FADT version 2, which never was a legal version number. It was 2598skipped because it was an early version of 64-bit support that was 2599eventually abandoned for the current 64-bit support. 2600 2601Interpreter: Fixed a problem where runtime implicit conversion was 2602incorrectly disabled for the ASL operators below. This brings the 2603behavior into compliance with the ACPI specification: 2604 FromBCD 2605 ToBCD 2606 ToDecimalString 2607 ToHexString 2608 ToInteger 2609 ToBuffer 2610 2611Table Manager: Added a new public interface, AcpiPutTable, used to 2612release and free an ACPI table returned by AcpiGetTable and related 2613interfaces. Lv Zheng. 2614 2615Example Code and Data Size: These are the sizes for the OS-independent 2616acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2617debug version of the code includes the debug output trace mechanism and 2618has a much larger code and data size. 2619 2620 Current Release: 2621 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2622 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2623 Previous Release: 2624 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2625 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2626 2627 26282) iASL Compiler/Disassembler and Tools: 2629 2630Disassembler: Fixed a regression for disassembly of Resource Template. 2631Detection of templates in the AML stream missed some types of templates. 2632 2633iASL: Fixed a problem where an Access Size error was returned for the PCC 2634address space when the AccessSize of the GAS register is greater than a 2635DWORD. Hoan Tran. 2636 2637iASL: Implemented several grammar changes for the operators below. These 2638changes are slated for the next version of the ACPI specification: 2639 RefOf - Disallow method invocation as an operand 2640 CondRefOf - Disallow method invocation as an operand 2641 DerefOf - Disallow operands that use the result from operators 2642that 2643 do not return a reference (Changed TermArg to 2644SuperName). 2645 2646iASL: Control method invocations are now allowed for Target operands, as 2647per the ACPI specification. Removed error for using a control method 2648invocation as a Target operand. 2649 2650Disassembler: Improved detection of Resource Templates, Unicode, and 2651Strings within Buffer objects. These subtypes do not contain a specific 2652opcode to indicate the originating ASL code, and they must be detected by 2653other means within the disassembler. 2654 2655iASL: Implemented an optimization improvement for 32-bit ACPI tables 2656(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2657only after 64-bit to 32-bit truncation. A truncation warning message is 2658still emitted, however. 2659 2660AcpiXtract: Implemented handling for both types of line terminators (LF 2661or CR/LF) so that it can accept AcpiDump output files from any system. 2662Peter Wu. 2663 2664AcpiBin: Added two new options for comparing AML files: 2665 -a: compare and display ALL mismatches 2666 -o: start compare at this offset into the second file 2667 2668---------------------------------------- 266930 September 2016. Summary of changes for version 20160930: 2670 2671 26721) ACPICA kernel-resident subsystem: 2673 2674Fixed a regression in the internal AcpiTbFindTable function where a non 2675AE_OK exception could inadvertently be returned even if the function did 2676not fail. This problem affects the following operators: 2677 DataTableRegion 2678 LoadTable 2679 2680Fixed a regression in the LoadTable operator where a load to any 2681namespace location other than the root no longer worked properly. 2682 2683Increased the maximum loop count value that will result in the 2684AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2685prevent infinite loops within the AML interpreter and thus the host OS 2686kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 26871,048,575). 2688 2689Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 2690acpixf.h file. This allows hosts to easily configure the maximum loop 2691count at runtime. 2692 2693Removed an illegal character in the strtoul64.c file. This character 2694caused errors with some C compilers. 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: 140.4K Code, 58.1K Data, 198.5K Total 2703 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2704 Previous Release: 2705 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 2706 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2707 2708 27092) iASL Compiler/Disassembler and Tools: 2710 2711Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 2712the simpler ASL ElseIf keyword. During the conversion, a trailing If 2713block could be lost and missing from the disassembled output. 2714 2715iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 2716the missing rule caused a parse error when using the Index operator as an 2717operand to ObjectType. This construct now compiles properly. Example: 2718 ObjectType(PKG1[4]). 2719 2720iASL: Correctly handle unresolved symbols in the hardware map file (-lm 2721option). Previously, unresolved symbols could cause a protection fault. 2722Such symbols are now marked as unresolved in the map file. 2723 2724iASL: Implemented support to allow control method invocations as an 2725operand to the ASL DeRefOf operator. Example: 2726 DeRefOf(MTH1(Local0)) 2727 2728Disassembler: Improved support for the ToPLD ASL macro. Detection of a 2729possible _PLD buffer now includes examination of both the normal buffer 2730length (16 or 20) as well as the surrounding AML package length. 2731 2732Disassembler: Fixed a problem with the decoding of complex expressions 2733within the Divide operator for ASL+. For the case where both the quotient 2734and remainder targets are specified, the entire statement cannot be 2735disassembled. Previously, the output incorrectly contained a mix of ASL- 2736and ASL+ operators. This mixed statement causes a syntax error when 2737compiled. Example: 2738 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2739disassembled to: 2740 Divide (INT1 + 6, 128, RSLT, QUOT) 2741 2742iASL/Tools: Added support to process AML and non-AML ACPI tables 2743consistently. For the disassembler and AcpiExec, allow all types of ACPI 2744tables (AML and data tables). For the iASL -e option, allow only AML 2745tables (DSDT/SSDT). 2746 2747---------------------------------------- 274831 August 2016. Summary of changes for version 20160831: 2749 2750 27511) ACPICA kernel-resident subsystem: 2752 2753Improve support for the so-called "module-level code", which is defined 2754to be math, logical and control AML opcodes that appear outside of any 2755control method. This change improves the support by adding more opcodes 2756that can be executed in the manner. Some other issues have been solved, 2757and the ASL grammar changes to support such code under all scope 2758operators (Device, etc.) are complete. Lv Zheng. 2759 2760UEFI support: these OSL functions have been implemented. This is an 2761additional step toward supporting the AcpiExec utility natively (with 2762full hardware access) under UEFI. Marcelo Ferreira. 2763 AcpiOsReadPciConfiguration 2764 AcpiOsWritePciConfiguration 2765 2766Fixed a possible mutex error during control method auto-serialization. Lv 2767Zheng. 2768 2769Updated support for the Generic Address Structure by fully implementing 2770all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2771Zheng. 2772 2773Updated the return value for the internal _OSI method. Instead of 27740xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2775for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2776implementations, and will be reflected and clarified in the next version 2777of the ACPI specification. 2778 2779Implemented two new table events that can be passed to an ACPICA table 2780handler. These events are used to indicate a table installation or 2781uninstallation. These events are used in addition to existed table load 2782and unload events. Lv Zheng. 2783 2784Implemented a cleanup for all internal string-to-integer conversions. 2785Consolidate multiple versions of this functionality and limit possible 2786bases to either 10 or 16 to simplify the code. Adds a new file, 2787utstrtoul64. 2788 2789Cleanup the inclusion order of the various compiler-specific headers. 2790This simplifies build configuration management. The compiler-specific 2791headers are now split out from the host-specific headers. Lv Zheng. 2792 2793Example Code and Data Size: These are the sizes for the OS-independent 2794acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2795debug version of the code includes the debug output trace mechanism and 2796has a much larger code and data size. 2797 2798 Current Release: 2799 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2800 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2801 2802 28032) iASL Compiler/Disassembler and Tools: 2804 2805iASL/AcpiExec: Added a command line option to display the build date/time 2806of the tool (-vd). This can be useful to verify that the correct version 2807of the tools are being used. 2808 2809AML Debugger: Implemented a new subcommand ("execute predef") to execute 2810all predefined control methods and names within the current namespace. 2811This can be useful for debugging problems with ACPI tables and the ACPI 2812namespace. 2813 2814---------------------------------------- 281529 July 2016. Summary of changes for version 20160729: 2816 2817 28181) ACPICA kernel-resident subsystem: 2819 2820Implemented basic UEFI support for the various ACPICA tools. This 2821includes: 28221) An OSL to implement the various AcpiOs* interfaces on UEFI. 28232) Support to obtain the ACPI tables on UEFI. 28243) Local implementation of required C library functions not available on 2825UEFI. 28264) A front-end (main) function for the tools for UEFI-related 2827initialization. 2828 2829The initial deployment of this support is the AcpiDump utility executing 2830as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2831Current environments supported are Linux/Unix. MSVC generation is not 2832supported at this time. See the generate/efi/README file for build 2833instructions. Lv Zheng. 2834 2835Future plans include porting the AcpiExec utility to execute natively on 2836the platform with I/O and memory access. This will allow viewing/dump of 2837the platform namespace and native execution of ACPI control methods that 2838access the actual hardware. To fully implement this support, the OSL 2839functions below must be implemented with UEFI interfaces. Any community 2840help in the implementation of these functions would be appreciated: 2841 AcpiOsReadPort 2842 AcpiOsWritePort 2843 AcpiOsReadMemory 2844 AcpiOsWriteMemory 2845 AcpiOsReadPciConfiguration 2846 AcpiOsWritePciConfiguration 2847 2848Restructured and standardized the C library configuration for ACPICA, 2849resulting in the various configuration options below. This includes a 2850global restructuring of the compiler-dependent and platform-dependent 2851include files. These changes may affect the existing platform-dependent 2852configuration files on some hosts. Lv Zheng. 2853 2854The current C library configuration options appear below. For any issues, 2855it may be helpful to examine the existing compiler-dependent and 2856platform-dependent files as examples. Lv Zheng. 2857 28581) Linux kernel: 2859 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2860library. 2861 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 28622) Unix/Windows/BSD applications: 2863 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2864library. 2865 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 28663) UEFI applications: 2867 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2868library. 2869 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 28704) UEFI applications (EDK2/StdLib): 2871 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2872 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2873 2874 2875AML interpreter: "module-level code" support. Allows for execution of so- 2876called "executable" AML code (math/logical operations, etc.) outside of 2877control methods not just at the module level (top level) but also within 2878any scope declared outside of a control method - Scope{}, Device{}, 2879Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2880 2881Simplified the configuration of the "maximum AML loops" global option by 2882adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2883modified at runtime. 2884 2885 2886Example Code and Data Size: These are the sizes for the OS-independent 2887acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2888debug version of the code includes the debug output trace mechanism and 2889has a much larger code and data size. 2890 2891 Current Release: 2892 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2893 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2894 2895 28962) iASL Compiler/Disassembler and Tools: 2897 2898iASL: Add full support for the RASF ACPI table (RAS Features Table). 2899Includes disassembler, data table compiler, and header support. 2900 2901iASL Expand "module-level code" support. Allows for 2902compilation/disassembly of so-called "executable" AML code (math/logical 2903operations, etc.) outside of control methods not just at the module level 2904(top level) but also within any scope declared outside of a control 2905method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2906ThermalZone{}. 2907 2908AcpiDump: Added support for dumping all SSDTs on newer versions of 2909Windows. These tables are now easily available -- SSDTs are not available 2910through the registry on older versions. 2911 2912---------------------------------------- 291327 May 2016. Summary of changes for version 20160527: 2914 2915 29161) ACPICA kernel-resident subsystem: 2917 2918Temporarily reverted the new arbitrary bit length/alignment support in 2919AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2920a number of regressions with the new code that need to be fully resolved 2921and tested before this support can be finally integrated into ACPICA. 2922Apologies for any inconveniences these issues may have caused. 2923 2924The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2925ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2926and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2927 2928Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2929option. Adds a new return macro, return_STR. Junk-uk Kim. 2930 2931Example Code and Data Size: These are the sizes for the OS-independent 2932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2933debug version of the code includes the debug output trace mechanism and 2934has a much larger code and data size. 2935 2936 Current Release: 2937 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2938 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2939 Previous Release: 2940 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2941 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2942 2943---------------------------------------- 294422 April 2016. Summary of changes for version 20160422: 2945 29461) ACPICA kernel-resident subsystem: 2947 2948Fixed a regression in the GAS (generic address structure) arbitrary bit 2949support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2950and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2951 2952ACPI 6.0: Added support for new/renamed resource macros. One new argument 2953was added to each of these macros, and the original name has been 2954deprecated. The AML disassembler will always disassemble to the new 2955names. Support for the new macros was added to iASL, disassembler, 2956resource manager, and the acpihelp utility. ACPICA BZ 1274. 2957 2958 I2cSerialBus -> I2cSerialBusV2 2959 SpiSerialBus -> SpiSerialBusV2 2960 UartSerialBus -> UartSerialBusV2 2961 2962ACPI 6.0: Added support for a new integer field that was appended to the 2963package object returned by the _BIX method. This adds iASL compile-time 2964and AML runtime error checking. ACPICA BZ 1273. 2965 2966ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2967Subspace Type2" (Headers, Disassembler, and data table compiler). 2968 2969Example Code and Data Size: These are the sizes for the OS-independent 2970acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2971debug version of the code includes the debug output trace mechanism and 2972has a much larger code and data size. 2973 2974 Current Release: 2975 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2976 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2977 Previous Release: 2978 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2979 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2980 2981 29822) iASL Compiler/Disassembler and Tools: 2983 2984iASL: Implemented an ASL grammar extension to allow/enable executable 2985"module-level code" to be created and executed under the various 2986operators that create new scopes. This type of AML code is already 2987supported in all known AML interpreters, and the grammar change will 2988appear in the next version of the ACPI specification. Simplifies the 2989conditional runtime creation of named objects under these object types: 2990 2991 Device 2992 PowerResource 2993 Processor 2994 Scope 2995 ThermalZone 2996 2997iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2998ease-of-use to the ASL language. The syntax is similar to the 2999corresponding C operator, and is implemented with the existing AML While 3000opcode -- thus requiring no changes to existing AML interpreters. 3001 3002 For (Initialize, Predicate, Update) {TermList} 3003 3004Grammar: 3005 ForTerm := 3006 For ( 3007 Initializer // Nothing | TermArg => ComputationalData 3008 Predicate // Nothing | TermArg => ComputationalData 3009 Update // Nothing | TermArg => ComputationalData 3010 ) {TermList} 3011 3012 3013iASL: The _HID/_ADR detection and validation has been enhanced to search 3014under conditionals in order to allow these objects to be conditionally 3015created at runtime. 3016 3017iASL: Fixed several issues with the constant folding feature. The 3018improvement allows better detection and resolution of statements that can 3019be folded at compile time. ACPICA BZ 1266. 3020 3021iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 3022conversion to the ASL ElseIf operator where incorrect ASL code could be 3023generated. 3024 3025iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 3026sometimes an extra (and extraneous) set of parentheses were emitted for 3027some combinations of operators. Although this did not cause any problems 3028with recompilation of the disassembled code, it made the code more 3029difficult to read. David Box. ACPICA BZ 1231. 3030 3031iASL: Changed to ignore the unreferenced detection for predefined names 3032of resource descriptor elements, when the resource descriptor is 3033created/defined within a control method. 3034 3035iASL: Disassembler: Fix a possible fault with externally declared Buffer 3036objects. 3037 3038---------------------------------------- 303918 March 2016. Summary of changes for version 20160318: 3040 30411) ACPICA kernel-resident subsystem: 3042 3043Added support for arbitrary bit lengths and bit offsets for registers 3044defined by the Generic Address Structure. Previously, only aligned bit 3045lengths of 8/16/32/64 were supported. This was sufficient for many years, 3046but recently some machines have been seen that require arbitrary bit- 3047level support. ACPICA BZ 1240. Lv Zheng. 3048 3049Fixed an issue where the \_SB._INI method sometimes must be evaluated 3050before any _REG methods are evaluated. Lv Zheng. 3051 3052Implemented several changes related to ACPI table support 3053(Headers/Disassembler/TableCompiler): 3054NFIT: For ACPI 6.1, updated to add some additional new fields and 3055constants. 3056FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 30576). 3058DMAR: Added new constants per the 10/2014 DMAR spec. 3059IORT: Added new subtable per the 10/2015 IORT spec. 3060HEST: For ACPI 6.1, added new constants and new subtable. 3061DBG2: Added new constants per the 12/2015 DBG2 spec. 3062FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 3063ACPICA BZ 1249. 3064ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 3065 3066Updated header support for the DMAR table to match the current version of 3067the related spec. 3068 3069Added extensions to the ASL Concatenate operator to allow any ACPI object 3070to be passed as an operand. Any object other than Integer/String/Buffer 3071simply returns a string containing the object type. This extends the 3072usefulness of the Printf macros. Previously, Concatenate would abort the 3073control method if a non-data object was encountered. 3074 3075ACPICA source code: Deployed the C "const" keyword across the source code 3076where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 3077 3078Example Code and Data Size: These are the sizes for the OS-independent 3079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3080debug version of the code includes the debug output trace mechanism and 3081has a much larger code and data size. 3082 3083 Current Release: 3084 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3085 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3086 Previous Release: 3087 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3088 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3089 3090 30912) iASL Compiler/Disassembler and Tools: 3092 3093iASL/Disassembler: Improved the heuristic used to determine the number of 3094arguments for an externally defined control method (a method in another 3095table). Although this is an improvement, there is no deterministic way to 3096"guess" the number of method arguments. Only the ACPI 6.0 External opcode 3097will completely solve this problem as it is deployed (automatically) in 3098newer BIOS code. 3099 3100iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3101statements that could cause errors when the disassembled file is 3102compiled. ACPICA BZ 1243. David Box. 3103 3104iASL: Fixed a regression caused by the merger of the two versions of the 3105local strtoul64. Because of a dependency on a global variable, strtoul64 3106could return an error for integers greater than a 32-bit value. ACPICA BZ 31071260. 3108 3109iASL: Fixed a regression where a fault could occur for an ASL Return 3110statement if it invokes a control method that is not resolved. ACPICA BZ 31111264. 3112 3113AcpiXtract: Improved input file validation: detection of binary files and 3114non-acpidump text files. 3115 3116---------------------------------------- 311712 February 2016. Summary of changes for version 20160212: 3118 31191) ACPICA kernel-resident subsystem: 3120 3121Implemented full support for the ACPI 6.1 specification (released in 3122January). This version of the specification is available at: 3123http://www.uefi.org/specifications 3124 3125Only a relatively small number of changes were required in ACPICA to 3126support ACPI 6.1, in these areas: 3127- New predefined names 3128- New _HID values 3129- A new subtable for HEST 3130- A few other header changes for new values 3131 3132Ensure \_SB_._INI is executed before any _REG methods are executed. There 3133appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3134 3135Reverted a change made in version 20151218 which enabled method 3136invocations to be targets of various ASL operators (SuperName and Target 3137grammar elements). While the new behavior is supported by the ACPI 3138specification, other AML interpreters do not support this behavior and 3139never will. The ACPI specification will be updated for ACPI 6.2 to remove 3140this support. Therefore, the change was reverted to the original ACPICA 3141behavior. 3142 3143ACPICA now supports the GCC 6 compiler. 3144 3145Current Release: (Note: build changes increased sizes) 3146 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3147 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3148Previous Release: 3149 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3150 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3151 3152 31532) iASL Compiler/Disassembler and Tools: 3154 3155Completed full support for the ACPI 6.0 External() AML opcode. The 3156compiler emits an external AML opcode for each ASL External statement. 3157This opcode is used by the disassembler to assist with the disassembly of 3158external control methods by specifying the required number of arguments 3159for the method. AML interpreters do not use this opcode. To ensure that 3160interpreters do not even see the opcode, a block of one or more external 3161opcodes is surrounded by an "If(0)" construct. As this feature becomes 3162commonly deployed in BIOS code, the ability of disassemblers to correctly 3163disassemble AML code will be greatly improved. David Box. 3164 3165iASL: Implemented support for an optional cross-reference output file. 3166The -lx option will create a the cross-reference file with the suffix 3167"xrf". Three different types of cross-reference are created in this file: 3168- List of object references made from within each control method 3169- Invocation (caller) list for each user-defined control method 3170- List of references to each non-method object in the namespace 3171 3172iASL: Method invocations as ASL Target operands are now disallowed and 3173flagged as errors in preparation for ACPI 6.2 (see the description of the 3174problem above). 3175 3176---------------------------------------- 31778 January 2016. Summary of changes for version 20160108: 3178 31791) ACPICA kernel-resident subsystem: 3180 3181Updated all ACPICA copyrights and signons to 2016: Added the 2016 3182copyright to all source code module headers and utility/tool signons. 3183This includes the standard Linux dual-license header. This affects 3184virtually every file in the ACPICA core subsystem, iASL compiler, all 3185ACPICA utilities, and the ACPICA test suite. 3186 3187Fixed a regression introduced in version 20151218 concerning the 3188execution of so-called module-level ASL/AML code. Namespace objects 3189created under a module-level If() construct were not properly/fully 3190entered into the namespace and could cause an interpreter fault when 3191accessed. 3192 3193Example Code and Data Size: These are the sizes for the OS-independent 3194acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3195debug version of the code includes the debug output trace mechanism and 3196has a much larger code and data size. 3197 3198Current Release: 3199 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3200 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3201 Previous Release: 3202 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3203 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3204 3205 32062) iASL Compiler/Disassembler and Tools: 3207 3208Fixed a problem with the compilation of the GpioIo and GpioInt resource 3209descriptors. The _PIN field name was incorrectly defined to be an array 3210of 32-bit values, but the _PIN values are in fact 16 bits each. This 3211would cause incorrect bit width warnings when using Word (16-bit) fields 3212to access the descriptors. 3213 3214 3215---------------------------------------- 321618 December 2015. Summary of changes for version 20151218: 3217 32181) ACPICA kernel-resident subsystem: 3219 3220Implemented per-AML-table execution of "module-level code" as individual 3221ACPI tables are loaded into the namespace during ACPICA initialization. 3222In other words, any module-level code within an AML table is executed 3223immediately after the table is loaded, instead of batched and executed 3224after all of the tables have been loaded. This provides compatibility 3225with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3226David Box. 3227 3228To fully support the feature above, the default operation region handlers 3229for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3230installed before any ACPI tables are loaded. This enables module-level 3231code to access these address spaces during the table load and module- 3232level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3233Box. 3234 3235Implemented several changes to the internal _REG support in conjunction 3236with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3237utilities for the changes above. Although these tools were changed, host 3238operating systems that simply use the default handlers for SystemMemory, 3239SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3240 3241For example, in the code below, DEV1 is conditionally added to the 3242namespace by the DSDT via module-level code that accesses an operation 3243region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3244created immediately after the DSDT is loaded in order for the SSDT to 3245successfully reference DEV1. Previously, this code would cause an 3246AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3247fully supported by ACPICA. 3248 3249 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3250 { 3251 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3252 Field (OPR1, AnyAcc, NoLock, Preserve) 3253 { 3254 FLD1, 1 3255 } 3256 If (FLD1) 3257 { 3258 Device (\DEV1) 3259 { 3260 } 3261 } 3262 } 3263 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3264 { 3265 External (\DEV1, DeviceObj) 3266 Scope (\DEV1) 3267 { 3268 } 3269 } 3270 3271Fixed an AML interpreter problem where control method invocations were 3272not handled correctly when the invocation was itself a SuperName argument 3273to another ASL operator. In these cases, the method was not invoked. 3274ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3275argument: 3276 Store 3277 Acquire, Wait 3278 CondRefOf, RefOf 3279 Decrement, Increment 3280 Load, Unload 3281 Notify 3282 Signal, Release, Reset 3283 SizeOf 3284 3285Implemented automatic String-to-ObjectReference conversion support for 3286packages returned by predefined names (such as _DEP). A common BIOS error 3287is to add double quotes around an ObjectReference namepath, which turns 3288the reference into an unexpected string object. This support detects the 3289problem and corrects it before the package is returned to the caller that 3290invoked the method. Lv Zheng. 3291 3292Implemented extensions to the Concatenate operator. Concatenate now 3293accepts any type of object, it is not restricted to simply 3294Integer/String/Buffer. For objects other than these 3 basic data types, 3295the argument is treated as a string containing the name of the object 3296type. This expands the utility of Concatenate and the Printf/Fprintf 3297macros. ACPICA BZ 1222. 3298 3299Cleaned up the output of the ASL Debug object. The timer() value is now 3300optional and no longer emitted by default. Also, the basic data types of 3301Integer/String/Buffer are simply emitted as their values, without a data 3302type string -- since the data type is obvious from the output. ACPICA BZ 33031221. 3304 3305Example Code and Data Size: These are the sizes for the OS-independent 3306acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3307debug version of the code includes the debug output trace mechanism and 3308has a much larger code and data size. 3309 3310 Current Release: 3311 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3312 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3313 Previous Release: 3314 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3315 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3316 3317 33182) iASL Compiler/Disassembler and Tools: 3319 3320iASL: Fixed some issues with the ASL Include() operator. This operator 3321was incorrectly defined in the iASL parser rules, causing a new scope to 3322be opened for the code within the include file. This could lead to 3323several issues, including allowing ASL code that is technically illegal 3324and not supported by AML interpreters. Note, this does not affect the 3325related #include preprocessor operator. ACPICA BZ 1212. 3326 3327iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3328operator is essentially an ASL macro since there is no AML opcode 3329associated with it. The code emitted by the iASL compiler for ElseIf is 3330an Else opcode followed immediately by an If opcode. The disassembler 3331will now emit an ElseIf if it finds an Else immediately followed by an 3332If. This simplifies the decoded ASL, especially for deeply nested 3333If..Else and large Switch constructs. Thus, the disassembled code more 3334closely follows the original source ASL. ACPICA BZ 1211. Example: 3335 3336 Old disassembly: 3337 Else 3338 { 3339 If (Arg0 == 0x02) 3340 { 3341 Local0 = 0x05 3342 } 3343 } 3344 3345 New disassembly: 3346 ElseIf (Arg0 == 0x02) 3347 { 3348 Local0 = 0x05 3349 } 3350 3351AcpiExec: Added support for the new module level code behavior and the 3352early region installation. This required a small change to the 3353initialization, since AcpiExec must install its own operation region 3354handlers. 3355 3356AcpiExec: Added support to make the debug object timer optional. Default 3357is timer disabled. This cleans up the debug object output -- the timer 3358data is rarely used. 3359 3360AcpiExec: Multiple ACPI tables are now loaded in the order that they 3361appear on the command line. This can be important when there are 3362interdependencies/references between the tables. 3363 3364iASL/Templates. Add support to generate template files with multiple 3365SSDTs within a single output file. Also added ommand line support to 3366specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 33671223, 1225. 3368 3369 3370---------------------------------------- 337124 November 2015. Summary of changes for version 20151124: 3372 33731) ACPICA kernel-resident subsystem: 3374 3375Fixed a possible regression for a previous update to FADT handling. The 3376FADT no longer has a fixed table ID, causing some issues with code that 3377was hardwired to a specific ID. Lv Zheng. 3378 3379Fixed a problem where the method auto-serialization could interfere with 3380the current SyncLevel. This change makes the auto-serialization support 3381transparent to the SyncLevel support and management. 3382 3383Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3384interface is intended for early access to the namespace during the 3385initial namespace device discovery walk. The _SUB method has been seen to 3386access operation regions in some cases, causing errors because the 3387operation regions are not fully initialized. 3388 3389AML Debugger: Fixed some issues with the terminate/quit/exit commands 3390that can cause faults. Lv Zheng. 3391 3392AML Debugger: Add thread ID support so that single-step mode only applies 3393to the AML Debugger thread. This prevents runtime errors within some 3394kernels. Lv Zheng. 3395 3396Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3397methods that are invoked by this interface are optional, removed warnings 3398emitted for the case where one or more of these methods do not exist. 3399ACPICA BZ 1208, original change by Prarit Bhargava. 3400 3401Made a major pass through the entire ACPICA source code base to 3402standardize formatting that has diverged a bit over time. There are no 3403functional changes, but this will of course cause quite a few code 3404differences from the previous ACPICA release. 3405 3406Example Code and Data Size: These are the sizes for the OS-independent 3407acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3408debug version of the code includes the debug output trace mechanism and 3409has a much larger code and data size. 3410 3411 Current Release: 3412 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3413 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3414 Previous Release: 3415 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3416 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3417 3418 34192) iASL Compiler/Disassembler and Tools: 3420 3421iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3422definition blocks within a single ASL file and the resulting AML file. 3423Support for this type of file was also added to the various tools that 3424use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3425example code below shows two definition blocks within the same file: 3426 3427 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 34280x12345678) 3429 { 3430 } 3431 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3432 { 3433 } 3434 3435iASL: Enhanced typechecking for the Name() operator. All expressions for 3436the value of the named object must be reduced/folded to a single constant 3437at compile time, as per the ACPI specification (the AML definition of 3438Name()). 3439 3440iASL: Fixed some code indentation issues for the -ic and -ia options (C 3441and assembly headers). Now all emitted code correctly begins in column 1. 3442 3443iASL: Added an error message for an attempt to open a Scope() on an 3444object defined in an SSDT. The DSDT is always loaded into the namespace 3445first, so any attempt to open a Scope on an SSDT object will fail at 3446runtime. 3447 3448 3449---------------------------------------- 345030 September 2015. Summary of changes for version 20150930: 3451 34521) ACPICA kernel-resident subsystem: 3453 3454Debugger: Implemented several changes and bug fixes to assist support for 3455the in-kernel version of the AML debugger. Lv Zheng. 3456- Fix the "predefined" command for in-kernel debugger. 3457- Do not enter debug command loop for the help and version commands. 3458- Disallow "execute" command during execution/single-step of a method. 3459 3460Interpreter: Updated runtime typechecking for all operators that have 3461target operands. The operand is resolved and validated that it is legal. 3462For example, the target cannot be a non-data object such as a Device, 3463Mutex, ThermalZone, etc., as per the ACPI specification. 3464 3465Debugger: Fixed the double-mutex user I/O handshake to work when local 3466deadlock detection is enabled. 3467 3468Debugger: limited display of method locals and arguments (LocalX and 3469ArgX) to only those that have actually been initialized. This prevents 3470lines of extraneous output. 3471 3472Updated the definition of the NFIT table to correct the bit polarity of 3473one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3474 3475Example Code and Data Size: These are the sizes for the OS-independent 3476acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3477debug version of the code includes the debug output trace mechanism and 3478has a much larger code and data size. 3479 3480 Current Release: 3481 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3482 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3483 Previous Release: 3484 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3485 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3486 3487 34882) iASL Compiler/Disassembler and Tools: 3489 3490iASL: Improved the compile-time typechecking for operands of many of the 3491ASL operators: 3492 3493-- Added an option to disable compiler operand/operator typechecking (- 3494ot). 3495 3496-- For the following operators, the TermArg operands are now validated 3497when possible to be Integer data objects: BankField, OperationRegion, 3498DataTableRegion, Buffer, and Package. 3499 3500-- Store (Source, Target): Both the source and target operands are 3501resolved and checked that the operands are both legal. For example, 3502neither operand can be a non-data object such as a Device, Mutex, 3503ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3504operator can be used to store an object to any type of target object. 3505 3506-- Store (Source, Target): If the source is a Package object, the target 3507must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3508is a Package, the source must also be a Package. 3509 3510-- Store (Source, Target): A warning is issued if the source and target 3511resolve to the identical named object. 3512 3513-- Store (Source, <method invocation>): An error is generated for the 3514target method invocation, as this construct is not supported by the AML 3515interpreter. 3516 3517-- For all ASL math and logic operators, the target operand must be a 3518data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3519includes the function return value also. 3520 3521-- External declarations are also included in the typechecking where 3522possible. External objects defined using the UnknownObj keyword cannot be 3523typechecked, however. 3524 3525iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3526operator: 3527- Legacy code: Index(PKG1, 3) 3528- New ASL+ code: PKG1[3] 3529This completes the ACPI 6.0 ASL+ support as it was the only operator not 3530supported. 3531 3532iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3533spaces were inadvertently appended to the filename, causing file access 3534and deletion problems on some systems. 3535 3536ASL Test Suite (ASLTS): Updated the master makefile to generate all 3537possible compiler output files when building the test suite -- thus 3538exercising these features of the compiler. These files are automatically 3539deleted when the test suite exits. 3540 3541 3542---------------------------------------- 354318 August 2015. Summary of changes for version 20150818: 3544 35451) ACPICA kernel-resident subsystem: 3546 3547Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3548Zheng. ACPICA BZ 1186. 3549 3550Completed development to ensure that the ACPICA Disassembler and Debugger 3551are fully standalone components of ACPICA. Removed cross-component 3552dependences. Lv Zheng. 3553 3554The max-number-of-AML-loops is now runtime configurable (previously was 3555compile-time only). This is essentially a loop timeout to force-abort 3556infinite AML loops. ACPCIA BZ 1192. 3557 3558Debugger: Cleanup output to dump ACPI names and namepaths without any 3559trailing underscores. Lv Zheng. ACPICA BZ 1135. 3560 3561Removed unnecessary conditional compilations across the Debugger and 3562Disassembler components where entire modules could be left uncompiled. 3563 3564The aapits test is deprecated and has been removed from the ACPICA git 3565tree. The test has never been completed and has not been maintained, thus 3566becoming rather useless. ACPICA BZ 1015, 794. 3567 3568A batch of small changes to close bugzilla and other reports: 3569- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3570- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3571- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3572- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3573Moore. 3574- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3575ACPICA BZ 1184. 3576- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3577operators. 3578- Debugger: Split debugger initialization/termination interfaces. Lv 3579Zheng. 3580- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3581identification. 3582- AcpiExec: Add debug message during _REG method phase during table 3583load/init. 3584- AcpiNames: Fix a regression where some output was missing and no longer 3585emitted. 3586- Debugger: General cleanup and simplification. Lv Zheng. 3587- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3588 3589Example Code and Data Size: These are the sizes for the OS-independent 3590acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3591debug version of the code includes the debug output trace mechanism and 3592has a much larger code and data size. 3593 3594 Current Release: 3595 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3596 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3597 Previous Release: 3598 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3599 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3600 3601 36022) iASL Compiler/Disassembler and Tools: 3603 3604AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3605were not handled properly and caused load errors. Now, properly invoke 3606and use the ACPICA auto-reallocate mechanism for ACPI table data 3607structures. ACPICA BZ 1188 3608 3609AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3610BZ 1190. 3611 3612AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3613AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3614executed during initialization. ACPICA BZ 1187, 1189. 3615 3616iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3617that corresponds to each disassembled ASL statement, to simplify 3618debugging. ACPICA BZ 1191. 3619 3620Debugger: Add option to the "objects" command to display a summary of the 3621current namespace objects (Object type and count). This is displayed if 3622the command is entered with no arguments. 3623 3624AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3625 3626 3627---------------------------------------- 362817 July 2015. Summary of changes for version 20150717: 3629 36301) ACPICA kernel-resident subsystem: 3631 3632Improved the partitioning between the Debugger and Disassembler 3633components. This allows the Debugger to be used standalone within kernel 3634code without the Disassembler (which is used for single stepping also). 3635This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3636 3637Debugger: Implemented a new command to trace the execution of control 3638methods (Trace). This is especially useful for the in-kernel version of 3639the debugger when file I/O may not be available for method trace output. 3640See the ACPICA reference for more information. Lv Zheng. 3641 3642Moved all C library prototypes (used for the local versions of these 3643functions when requested) to a new header, acclib.h 3644Cleaned up the use of non-ANSI C library functions. These functions are 3645implemented locally in ACPICA. Moved all such functions to a common 3646source file, utnonansi.c 3647 3648Debugger: Fixed a problem with the "!!" command (get last command 3649executed) where the debugger could enter an infinite loop and eventually 3650crash. 3651 3652Removed the use of local macros that were used for some of the standard C 3653library functions to automatically cast input parameters. This mostly 3654affected the is* functions where the input parameter is defined to be an 3655int. This required a few modifications to the main ACPICA source code to 3656provide casting for these functions and eliminate possible compiler 3657warnings for these parameters. 3658 3659Across the source code, added additional status/error checking to resolve 3660issues discovered by static source code analysis tools such as Coverity. 3661 3662Example Code and Data Size: These are the sizes for the OS-independent 3663acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3664debug version of the code includes the debug output trace mechanism and 3665has a much larger code and data size. 3666 3667 Current Release: 3668 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3669 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3670 Previous Release: 3671 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3672 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3673 3674 36752) iASL Compiler/Disassembler and Tools: 3676 3677iASL: Fixed a regression where the device map file feature no longer 3678worked properly when used in conjunction with the disassembler. It only 3679worked properly with the compiler itself. 3680 3681iASL: Implemented a new warning for method LocalX variables that are set 3682but never used (similar to a C compiler such as gcc). This also applies 3683to ArgX variables that are not defined by the parent method, and are 3684instead (legally) used as local variables. 3685 3686iASL/Preprocessor: Finished the pass-through of line numbers from the 3687preprocessor to the compiler. This ensures that compiler errors/warnings 3688have the correct original line numbers and filenames, regardless of any 3689#include files. 3690 3691iASL/Preprocessor: Fixed a couple of issues with comment handling and the 3692pass-through of comments to the preprocessor output file (which becomes 3693the compiler input file). Also fixed a problem with // comments that 3694appear after a math expression. 3695 3696iASL: Added support for the TCPA server table to the table compiler and 3697template generator. (The client table was already previously supported) 3698 3699iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 3700identify the iASL compiler. 3701 3702Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 3703multiple times. The new names are ACPI_SIGN_NEGATIVE and 3704ACPI_SIGN_POSITIVE. 3705 3706AcpiHelp: Update to expand help messages for the iASL preprocessor 3707directives. 3708 3709 3710---------------------------------------- 371119 June 2015. Summary of changes for version 20150619: 3712 3713Two regressions in version 20150616 have been addressed: 3714 3715Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 3716etc.) This update changes ACPICA to only use the standard headers for 3717functions, or the prototypes for the local versions of the C library 3718functions. Across the source code, this required some additional casts 3719for some Clib invocations for portability. Moved all local prototypes to 3720a new file, acclib.h 3721 3722Fixes several problems with recent changes to the handling of the FACS 3723table that could cause some systems not to boot. 3724 3725 3726---------------------------------------- 372716 June 2015. Summary of changes for version 20150616: 3728 3729 37301) ACPICA kernel-resident subsystem: 3731 3732Across the entire ACPICA source code base, the various macros for the C 3733library functions (such as ACPI_STRLEN, etc.) have been removed and 3734replaced by the standard C library names (strlen, etc.) The original 3735purpose for these macros is no longer applicable. This simplification 3736reduces the number of macros used in the ACPICA source code 3737significantly, improving readability and maintainability. 3738 3739Implemented support for a new ACPI table, the OSDT. This table, the 3740"override" SDT, can be loaded directly by the host OS at boot time. It 3741enables the replacement of existing namespace objects that were installed 3742via the DSDT and/or SSDTs. The primary purpose for this is to replace 3743buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3744for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3745Moore. 3746 3747Added support for systems with (improperly) two FACS tables -- a "32-bit" 3748table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3749X field). This change will support both automatically. There continues to 3750be systems found with this issue. This support requires a change to the 3751AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3752been added to allow the host to select which FACS is desired 3753(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3754details Lv Zheng. 3755 3756Added a new feature to allow for systems that do not contain an FACS. 3757Although this is already supported on hardware-reduced platforms, the 3758feature has been extended for all platforms. The reasoning is that we do 3759not want to abort the entire ACPICA initialization just because the 3760system is seriously buggy and has no FACS. 3761 3762Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3763not correctly transcribed from the ACPI specification in ACPICA version 376420150515. 3765 3766Implemented support for the _CLS object in the AcpiGetObjectInfo external 3767interface. 3768 3769Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3770recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3771compiler also updated. Note: The TCPA "server" table is not supported by 3772the disassembler/table-compiler at this time. 3773 3774ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3775 3776Example Code and Data Size: These are the sizes for the OS-independent 3777acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3778debug version of the code includes the debug output trace mechanism and 3779has a much larger code and data size. 3780 3781 Current Release: 3782 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3783 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3784 Previous Release: 3785 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3786 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3787 3788 37892) iASL Compiler/Disassembler and Tools: 3790 3791Disassembler: Fixed a problem with the new symbolic operator disassembler 3792where incorrect ASL code could be emitted in some cases for the "non- 3793commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3794ShiftRight. The actual problem cases seem to be rather unusual in common 3795ASL code, however. David Box. 3796 3797Modified the linux version of acpidump to obtain ACPI tables from not 3798just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3799Zheng. 3800 3801iASL: Fixed a problem where the user preprocessor output file (.i) 3802contained extra data that was not expected. The compiler was using this 3803file as a temporary file and passed through #line directives in order to 3804keep compiler error messages in sync with the input file and line number 3805across multiple include files. The (.i) is no longer a temporary file as 3806the compiler uses a new, different file for the original purpose. 3807 3808iASL: Fixed a problem where comments within the original ASL source code 3809file were not passed through to the preprocessor output file, nor any 3810listing files. 3811 3812iASL: Fixed some issues for the handling of the "#include" preprocessor 3813directive and the similar (but not the same) "Include" ASL operator. 3814 3815iASL: Add support for the new OSDT in both the disassembler and compiler. 3816 3817iASL: Fixed a problem with the constant folding support where a Buffer 3818object could be incorrectly generated (incorrectly formed) during a 3819conversion to a Store() operator. 3820 3821AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3822description text for the _REV predefined name. _REV now permanently 3823returns 2, as per the ACPI 6.0 specification. 3824 3825Debugger: Enhanced the output of the Debug ASL object for references 3826produced by the Index operator. For Buffers and strings, only output the 3827actual byte pointed to by the index. For packages, only print the single 3828package element decoded by the index. Previously, the entire 3829buffer/string/package was emitted. 3830 3831iASL/Table-compiler: Fixed a regression where the "generic" data types 3832were no longer recognized, causing errors. 3833 3834 3835---------------------------------------- 383615 May 2015. Summary of changes for version 20150515: 3837 3838This release implements most of ACPI 6.0 as described below. 3839 38401) ACPICA kernel-resident subsystem: 3841 3842Implemented runtime argument checking and return value checking for all 3843new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3844_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3845 3846Example Code and Data Size: These are the sizes for the OS-independent 3847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3848debug version of the code includes the debug output trace mechanism and 3849has a much larger code and data size. 3850 3851 Current Release: 3852 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3853 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3854 Previous Release: 3855 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3856 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3857 3858 38592) iASL Compiler/Disassembler and Tools: 3860 3861iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3862names (argument count validation and return value typechecking.) 3863 3864iASL disassembler and table compiler: implemented support for all new 3865ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3866 3867iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3868tables: FADT, MADT. 3869 3870iASL preprocessor: Added a new directive to enable inclusion of binary 3871blobs into ASL code. The new directive is #includebuffer. It takes a 3872binary file as input and emits a named ascii buffer object into the ASL 3873code. 3874 3875AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3876 3877AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3878directives. 3879 3880AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3881tables. 3882 3883 3884---------------------------------------- 388510 April 2015. Summary of changes for version 20150410: 3886 3887Reverted a change introduced in version 20150408 that caused 3888a regression in the disassembler where incorrect operator 3889symbols could be emitted. 3890 3891 3892---------------------------------------- 389308 April 2015. Summary of changes for version 20150408: 3894 3895 38961) ACPICA kernel-resident subsystem: 3897 3898Permanently set the return value for the _REV predefined name. It now 3899returns 2 (was 5). This matches other ACPI implementations. _REV will be 3900deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3901for ACPI 2.0 and later. It should never be used to differentiate or 3902identify operating systems. 3903 3904Added the "Windows 2015" string to the _OSI support. ACPICA will now 3905return TRUE to a query with this string. 3906 3907Fixed several issues with the local version of the printf function. 3908 3909Added the C99 compiler option (-std=c99) to the Unix makefiles. 3910 3911 Current Release: 3912 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3913 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3914 Previous Release: 3915 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3916 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3917 3918 39192) iASL Compiler/Disassembler and Tools: 3920 3921iASL: Implemented an enhancement to the constant folding feature to 3922transform the parse tree to a simple Store operation whenever possible: 3923 Add (2, 3, X) ==> is converted to: Store (5, X) 3924 X = 2 + 3 ==> is converted to: Store (5, X) 3925 3926Updated support for the SLIC table (Software Licensing Description Table) 3927in both the Data Table compiler and the disassembler. The SLIC table 3928support now conforms to "Microsoft Software Licensing Tables (SLIC and 3929MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3930following the ACPI header is now defined to be "Proprietary Data", and as 3931such, can only be entered or displayed as a hex data block. 3932 3933Implemented full support for the MSDM table as described in the document 3934above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3935following the ACPI header is defined to be "Proprietary Data", and can 3936only be entered or displayed as a hex data block. 3937 3938Implemented the -Pn option for the iASL Table Compiler (was only 3939implemented for the ASL compiler). This option disables the iASL 3940preprocessor. 3941 3942Disassembler: For disassembly of Data Tables, added a comment field 3943around the Ascii equivalent data that is emitted as part of the "Raw 3944Table Data" block. This prevents the iASL Preprocessor from possible 3945confusion if/when the table is compiled. 3946 3947Disassembler: Added an option (-df) to force the disassembler to assume 3948that the table being disassembled contains valid AML. This feature is 3949useful for disassembling AML files that contain ACPI signatures other 3950than DSDT or SSDT (such as OEMx or other signatures). 3951 3952Changes for the EFI version of the tools: 39531) Fixed a build error/issue 39542) Fixed a cast warning 3955 3956iASL: Fixed a path issue with the __FILE__ operator by making the 3957directory prefix optional within the internal SplitInputFilename 3958function. 3959 3960Debugger: Removed some unused global variables. 3961 3962Tests: Updated the makefile for proper generation of the AAPITS suite. 3963 3964 3965---------------------------------------- 396604 February 2015. Summary of changes for version 20150204: 3967 3968ACPICA kernel-resident subsystem: 3969 3970Updated all ACPICA copyrights and signons to 2014. Added the 2014 3971copyright to all module headers and signons, including the standard Linux 3972header. This affects virtually every file in the ACPICA core subsystem, 3973iASL compiler, all ACPICA utilities, and the test suites. 3974 3975Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3976A raw gpe handling mechanism was created to allow better handling of GPE 3977storms that aren't easily managed by the normal handler. The raw handler 3978allows disabling/renabling of the GPE so that interrupt storms can be 3979avoided in cases where events cannot be timely serviced. In this 3980scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3981GPE. This API will leave the reference counts undisturbed, thereby 3982preventing unintentional clearing of the GPE when the intent in only to 3983temporarily disable it. Raw handlers allow enabling and disabling of a 3984GPE by removing GPE register locking. As such, raw handlers much provide 3985their own locks while using GPE API's to protect access to GPE data 3986structures. 3987Lv Zheng 3988 3989Events: Always modify GPE registers under the GPE lock. 3990Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3991values. Reported as bug by joe.liu@apple.com. 3992 3993Unix makefiles: Separate option to disable optimizations and 3994_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3995NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3996purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3997errors when building ACPICA. This allows disabling the option without 3998also having to disable optimazations. 3999David Box 4000 4001 Current Release: 4002 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4003 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 4004 4005-- 4006-------------------------------------- 400707 November 2014. Summary of changes for version 20141107: 4008 4009This release is available at https://acpica.org/downloads 4010 4011This release introduces and implements language extensions to ASL that 4012provide support for symbolic ("C-style") operators and expressions. These 4013language extensions are known collectively as ASL+. 4014 4015 40161) iASL Compiler/Disassembler and Tools: 4017 4018Disassembler: Fixed a problem with disassembly of the UartSerialBus 4019macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 4020Box. 4021 4022Disassembler: Fixed the Unicode macro support to add escape sequences. 4023All non-printable ASCII values are emitted as escape sequences, as well 4024as the standard escapes for quote and backslash. Ensures that the 4025disassembled macro can be correctly recompiled. 4026 4027iASL: Added Printf/Fprintf macros for formatted output. These macros are 4028translated to existing AML Concatenate and Store operations. Printf 4029writes to the ASL Debug object. Fprintf allows the specification of an 4030ASL name as the target. Only a single format specifier is required, %o, 4031since the AML interpreter dynamically converts objects to the required 4032type. David E. Box. 4033 4034 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4035 (Concatenate (Concatenate (Concatenate ("", Arg0), 4036 ": Unexpected value for "), Arg1), ", "), Arg2), 4037 " at line "), Arg3), Debug) 4038 4039 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 4040 Arg0, Arg1, Arg2, Arg3) 4041 4042 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4043 ("", Arg1), ": "), Arg0), " Successful"), STR1) 4044 4045 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 4046 4047iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 4048ASL parse tree before the AML code is generated. This allows blocks of 4049ASL code to be removed in order to help locate and identify problem 4050devices and/or code. David E. Box. 4051 4052AcpiExec: Added support (-fi) for an optional namespace object 4053initialization file. This file specifies initial values for namespace 4054objects as necessary for debugging and testing different ASL code paths 4055that may be taken as a result of BIOS options. 4056 4057 40582) Overview of symbolic operator support for ASL (ASL+) 4059------------------------------------------------------- 4060 4061As an extension to the ASL language, iASL implements support for symbolic 4062(C-style) operators for math and logical expressions. This can greatly 4063simplify ASL code as well as improve both readability and 4064maintainability. These language extensions can exist concurrently with 4065all legacy ASL code and expressions. 4066 4067The symbolic extensions are 100% compatible with existing AML 4068interpreters, since no new AML opcodes are created. To implement the 4069extensions, the iASL compiler transforms the symbolic expressions into 4070the legacy ASL/AML equivalents at compile time. 4071 4072Full symbolic expressions are supported, along with the standard C 4073precedence and associativity rules. 4074 4075Full disassembler support for the symbolic expressions is provided, and 4076creates an automatic migration path for existing ASL code to ASL+ code 4077via the disassembly process. By default, the disassembler now emits ASL+ 4078code with symbolic expressions. An option (-dl) is provided to force the 4079disassembler to emit legacy ASL code if desired. 4080 4081Below is the complete list of the currently supported symbolic operators 4082with examples. See the iASL User Guide for additional information. 4083 4084 4085ASL+ Syntax Legacy ASL Equivalent 4086----------- --------------------- 4087 4088 // Math operators 4089 4090Z = X + Y Add (X, Y, Z) 4091Z = X - Y Subtract (X, Y, Z) 4092Z = X * Y Multiply (X, Y, Z) 4093Z = X / Y Divide (X, Y, , Z) 4094Z = X % Y Mod (X, Y, Z) 4095Z = X << Y ShiftLeft (X, Y, Z) 4096Z = X >> Y ShiftRight (X, Y, Z) 4097Z = X & Y And (X, Y, Z) 4098Z = X | Y Or (X, Y, Z) 4099Z = X ^ Y Xor (X, Y, Z) 4100Z = ~X Not (X, Z) 4101X++ Increment (X) 4102X-- Decrement (X) 4103 4104 // Logical operators 4105 4106(X == Y) LEqual (X, Y) 4107(X != Y) LNotEqual (X, Y) 4108(X < Y) LLess (X, Y) 4109(X > Y) LGreater (X, Y) 4110(X <= Y) LLessEqual (X, Y) 4111(X >= Y) LGreaterEqual (X, Y) 4112(X && Y) LAnd (X, Y) 4113(X || Y) LOr (X, Y) 4114(!X) LNot (X) 4115 4116 // Assignment and compound assignment operations 4117 4118X = Y Store (Y, X) 4119X += Y Add (X, Y, X) 4120X -= Y Subtract (X, Y, X) 4121X *= Y Multiply (X, Y, X) 4122X /= Y Divide (X, Y, , X) 4123X %= Y Mod (X, Y, X) 4124X <<= Y ShiftLeft (X, Y, X) 4125X >>= Y ShiftRight (X, Y, X) 4126X &= Y And (X, Y, X) 4127X |= Y Or (X, Y, X) 4128X ^= Y Xor (X, Y, X) 4129 4130 41313) ASL+ Examples: 4132----------------- 4133 4134Legacy ASL: 4135 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4136 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 41370x03FB), 4138 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4139 { 4140 And (MEMB, 0xFFFFFFF0, SRMB) 4141 Store (MEMB, Local2) 4142 Store (PDBM, Local1) 4143 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4144 Store (SRMB, MEMB) 4145 Or (PDBM, 0x02, PDBM) 4146 } 4147 4148ASL+ version: 4149 If (((R510 & 0x03FB) == 0x02E0) || 4150 ((R520 & 0x03FB) == 0x02E0) || 4151 ((R530 & 0x03FB) == 0x02E0) || 4152 ((R540 & 0x03FB) == 0x02E0)) 4153 { 4154 SRMB = (MEMB & 0xFFFFFFF0) 4155 Local2 = MEMB 4156 Local1 = PDBM 4157 PDBM &= 0xFFFFFFFFFFFFFFF9 4158 MEMB = SRMB 4159 PDBM |= 0x02 4160 } 4161 4162Legacy ASL: 4163 Store (0x1234, Local1) 4164 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4165 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4166 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4167 Store (Index (PKG1, 0x03), Local6) 4168 Store (Add (Local3, Local2), Debug) 4169 Add (Local1, 0x0F, Local2) 4170 Add (Local1, Multiply (Local2, Local3), Local2) 4171 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4172 4173ASL+ version: 4174 Local1 = 0x1234 4175 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4176 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4177 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4178 Local6 = Index (PKG1, 0x03) 4179 Debug = (Local3 + Local2) 4180 Local2 = (Local1 + 0x0F) 4181 Local2 = (Local1 + (Local2 * Local3)) 4182 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4183 4184 4185---------------------------------------- 418626 September 2014. Summary of changes for version 20140926: 4187 41881) ACPICA kernel-resident subsystem: 4189 4190Updated the GPIO operation region handler interface (GeneralPurposeIo). 4191In order to support GPIO Connection objects with multiple pins, along 4192with the related Field objects, the following changes to the interface 4193have been made: The Address is now defined to be the offset in bits of 4194the field unit from the previous invocation of a Connection. It can be 4195viewed as a "Pin Number Index" into the connection resource descriptor. 4196The BitWidth is the exact bit width of the field. It is usually one bit, 4197but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4198additional information and examples. 4199 4200GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4201corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4202by the firmware), so that they cannot fire until they are enabled via 4203AcpiUpdateAllGpes. Rafael J. Wysocki. 4204 4205Added a new return flag for the Event/GPE status interfaces -- 4206AcpiGetEventStatus and AcpiGetGpeStatus. The new 4207ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4208GPE currently has a handler associated with it, and can thus actually 4209affect the system. Lv Zheng. 4210 4211Example Code and Data Size: These are the sizes for the OS-independent 4212acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4213debug version of the code includes the debug output trace mechanism and 4214has a much larger code and data size. 4215 4216 Current Release: 4217 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4218 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4219 Previous Release: 4220 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4221 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4222 42232) iASL Compiler/Disassembler and Tools: 4224 4225iASL: Fixed a memory allocation/free regression introduced in 20140828 4226that could cause the compiler to crash. This was introduced inadvertently 4227during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 42281113. 4229 4230iASL: Removed two error messages that have been found to create false 4231positives, until they can be fixed and fully validated (ACPICA BZ 1112): 42321) Illegal forward reference within a method 42332) Illegal reference across two methods 4234 4235iASL: Implemented a new option (-lm) to create a hardware mapping file 4236that summarizes all GPIO, I2C, SPI, and UART connections. This option 4237works for both the compiler and disassembler. See the iASL compiler user 4238guide for additional information and examples (section 6.4.6). 4239 4240AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4241version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4242a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4243 4244AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4245unless STDIN is actually a terminal. Assists with batch-mode processing. 4246ACPICA BZ 1114. 4247 4248Disassembler/AcpiHelp: Added another large group of recognized _HID 4249values. 4250 4251 4252---------------------------------------- 425328 August 2014. Summary of changes for version 20140828: 4254 42551) ACPICA kernel-resident subsystem: 4256 4257Fixed a problem related to the internal use of the Timer() operator where 4258a 64-bit divide could cause an attempted link to a double-precision math 4259library. This divide is not actually necessary, so the code was 4260restructured to eliminate it. Lv Zheng. 4261 4262ACPI 5.1: Added support for the runtime validation of the _DSD package 4263(similar to the iASL support). 4264 4265ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4266SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4267 4268Example Code and Data Size: These are the sizes for the OS-independent 4269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4270debug version of the code includes the debug output trace mechanism and 4271has a much larger code and data size. 4272 4273 Current Release: 4274 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4275 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4276 Previous Release: 4277 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4278 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4279 42802) iASL Compiler/Disassembler and Tools: 4281 4282AcpiExec: Fixed a problem on unix systems where the original terminal 4283state was not always properly restored upon exit. Seen when using the -v 4284option. ACPICA BZ 1104. 4285 4286iASL: Fixed a problem with the validation of the ranges/length within the 4287Memory24 resource descriptor. There was a boundary condition when the 4288range was equal to the (length -1) caused by the fact that these values 4289are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4290 4291Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4292polarity 4293flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4294is 4295now supported properly. 4296 4297ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4298in the disassembler, data table compiler, and table template generator. 4299 4300iASL: Added a requirement for Device() objects that one of either a _HID 4301or _ADR must exist within the scope of a Device, as per the ACPI 4302specification. Remove a similar requirement that was incorrectly in place 4303for the _DSD object. 4304 4305iASL: Added error detection for illegal named references within control 4306methods that would cause runtime failures. Now trapped as errors are: 1) 4307References to objects within a non-parent control method. 2) Forward 4308references (within a method) -- for control methods, AML interpreters use 4309a one-pass parse of control methods. ACPICA BZ 1008. 4310 4311iASL: Added error checking for dependencies related to the _PSx power 4312methods. ACPICA BZ 1029. 43131) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4314_PS3. 43152) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4316scope. 4317 4318iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4319deploying the existing object and string caches and adding new caches for 4320the table compiler. 4321 4322iASL: Split the huge parser source file into multiple subfiles to improve 4323manageability. Generation now requires the M4 macro preprocessor, which 4324is part of the Bison distribution on both unix and windows platforms. 4325 4326AcpiSrc: Fixed and removed all extraneous warnings generated during 4327entire ACPICA source code scan and/or conversion. 4328 4329 4330---------------------------------------- 4331 433224 July 2014. Summary of changes for version 20140724: 4333 4334The ACPI 5.1 specification has been released and is available at: 4335http://uefi.org/specs/access 4336 4337 43380) ACPI 5.1 support in ACPICA: 4339 4340ACPI 5.1 is fully supported in ACPICA as of this release. 4341 4342New predefined names. Support includes iASL and runtime ACPICA 4343validation. 4344 _CCA (Cache Coherency Attribute). 4345 _DSD (Device-Specific Data). David Box. 4346 4347Modifications to existing ACPI tables. Support includes headers, iASL 4348Data Table compiler, disassembler, and the template generator. 4349 FADT - New fields and flags. Graeme Gregory. 4350 GTDT - One new subtable and new fields. Tomasz Nowicki. 4351 MADT - Two new subtables. Tomasz Nowicki. 4352 PCCT - One new subtable. 4353 4354Miscellaneous. 4355 New notification type for System Resource Affinity change events. 4356 4357 43581) ACPICA kernel-resident subsystem: 4359 4360Fixed a regression introduced in 20140627 where a fault can happen during 4361the deletion of Alias AML namespace objects. The problem affected both 4362the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4363 4364Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4365simple mechanism to enable wake GPEs that have no associated handler or 4366control method. Rafael Wysocki. 4367 4368Updated the AcpiEnableGpe interface to disallow the enable if there is no 4369handler or control method associated with the particular GPE. This will 4370help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4371 4372Updated GPE handling and dispatch by disabling the GPE before clearing 4373the status bit for edge-triggered GPEs. Lv Zheng. 4374 4375Added Timer() support to the AML Debug object. The current timer value is 4376now displayed with each invocation of (Store to) the debug object to 4377enable simple generation of execution times for AML code (method 4378execution for example.) ACPICA BZ 1093. 4379 4380Example Code and Data Size: These are the sizes for the OS-independent 4381acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4382debug version of the code includes the debug output trace mechanism and 4383has a much larger code and data size. 4384 4385 Current Release: 4386 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4387 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4388 Previous Release: 4389 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4390 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4391 4392 43932) iASL Compiler/Disassembler and Tools: 4394 4395Fixed an issue with the recently added local printf implementation, 4396concerning width/precision specifiers that could cause incorrect output. 4397Lv Zheng. ACPICA BZ 1094. 4398 4399Disassembler: Added support to detect buffers that contain UUIDs and 4400disassemble them to an invocation of the ToUUID operator. Also emit 4401commented descriptions of known ACPI-related UUIDs. 4402 4403AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4404-u. Adds three new files. 4405 4406iASL: Update table compiler and disassembler for DMAR table changes that 4407were introduced in September 2013. With assistance by David Woodhouse. 4408 4409---------------------------------------- 441027 June 2014. Summary of changes for version 20140627: 4411 44121) ACPICA kernel-resident subsystem: 4413 4414Formatted Output: Implemented local versions of standard formatted output 4415utilities such as printf, etc. Over time, it has been discovered that 4416there are in fact many portability issues with printf, and the addition 4417of this feature will fix/prevent these issues once and for all. Some 4418known issues are summarized below: 4419 44201) Output of 64-bit values is not portable. For example, UINT64 is %ull 4421for the Linux kernel and is %uI64 for some MSVC versions. 44222) Invoking printf consistently in a manner that is portable across both 442332-bit and 64-bit platforms is difficult at best in many situations. 44243) The output format for pointers varies from system to system (leading 4425zeros especially), and leads to inconsistent output from ACPICA across 4426platforms. 44274) Certain platform-specific printf formats may conflict with ACPICA use. 44285) If there is no local C library available, ACPICA now has local support 4429for printf. 4430 4431-- To address these printf issues in a complete manner, ACPICA now 4432directly implements a small subset of printf format specifiers, only 4433those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4434 4435Implemented support for ACPICA generation within the EFI environment. 4436Initially, the AcpiDump utility is supported in the UEFI shell 4437environment. Lv Zheng. 4438 4439Added a new external interface, AcpiLogError, to improve ACPICA 4440portability. This allows the host to redirect error messages from the 4441ACPICA utilities. Lv Zheng. 4442 4443Added and deployed new OSL file I/O interfaces to improve ACPICA 4444portability: 4445 AcpiOsOpenFile 4446 AcpiOsCloseFile 4447 AcpiOsReadFile 4448 AcpiOsWriteFile 4449 AcpiOsGetFileOffset 4450 AcpiOsSetFileOffset 4451There are C library implementations of these functions in the new file 4452service_layers/oslibcfs.c -- however, the functions can be implemented by 4453the local host in any way necessary. Lv Zheng. 4454 4455Implemented a mechanism to disable/enable ACPI table checksum validation 4456at runtime. This can be useful when loading tables very early during OS 4457initialization when it may not be possible to map the entire table in 4458order to compute the checksum. Lv Zheng. 4459 4460Fixed a buffer allocation issue for the Generic Serial Bus support. 4461Originally, a fixed buffer length was used. This change allows for 4462variable-length buffers based upon the protocol indicated by the field 4463access attributes. Reported by Lan Tianyu. Lv Zheng. 4464 4465Fixed a problem where an object detached from a namespace node was not 4466properly terminated/cleared and could cause a circular list problem if 4467reattached. ACPICA BZ 1063. David Box. 4468 4469Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4470 4471Fixed a possible memory leak in an error return path within the function 4472AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4473 4474Example Code and Data Size: These are the sizes for the OS-independent 4475acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4476debug version of the code includes the debug output trace mechanism and 4477has a much larger code and data size. 4478 4479 Current Release: 4480 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4481 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4482 Previous Release: 4483 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4484 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4485 4486 44872) iASL Compiler/Disassembler and Tools: 4488 4489Disassembler: Add dump of ASCII equivalent text within a comment at the 4490end of each line of the output for the Buffer() ASL operator. 4491 4492AcpiDump: Miscellaneous changes: 4493 Fixed repetitive table dump in -n mode. 4494 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4495the ACPI 2.0 GUID fails. 4496 4497iASL: Fixed a problem where the compiler could fault if incorrectly given 4498an acpidump output file as input. ACPICA BZ 1088. David Box. 4499 4500AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4501they are invoked without any arguments. 4502 4503Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 45041086. Colin Ian King. 4505 4506Disassembler: Cleaned up a block of code that extracts a parent Op 4507object. Added a comment that explains that the parent is guaranteed to be 4508valid in this case. ACPICA BZ 1069. 4509 4510 4511---------------------------------------- 451224 April 2014. Summary of changes for version 20140424: 4513 45141) ACPICA kernel-resident subsystem: 4515 4516Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4517Some of these tables are known to contain a trailing NULL entry. Lv 4518Zheng. 4519 4520Removed an extraneous error message for the case where there are a large 4521number of system GPEs (> 124). This was the "32-bit FADT register is too 4522long to convert to GAS struct" message, which is irrelevant for GPEs 4523since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4524(limited capacity) GAS bit length. Also, several changes to ensure proper 4525support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4526internally. 4527 4528Implemented and deployed additional configuration support for the public 4529ACPICA external interfaces. Entire classes of interfaces can now be 4530easily modified or configured out, replaced by stubbed inline functions 4531by default. Lv Zheng. 4532 4533Moved all public ACPICA runtime configuration globals to the public 4534ACPICA external interface file for convenience. Also, removed some 4535obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4536 4537Documentation: Added a new section to the ACPICA reference describing the 4538maximum number of GPEs that can be supported by the FADT-defined GPEs in 4539block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4540reference. 4541 4542Example Code and Data Size: These are the sizes for the OS-independent 4543acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4544debug version of the code includes the debug output trace mechanism and 4545has a much larger code and data size. 4546 4547 Current Release: 4548 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4549 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4550 Previous Release: 4551 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4552 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4553 4554 45552) iASL Compiler/Disassembler and Tools: 4556 4557iASL and disassembler: Add full support for the LPIT table (Low Power 4558Idle Table). Includes support in the disassembler, data table compiler, 4559and template generator. 4560 4561AcpiDump utility: 45621) Add option to force the use of the RSDT (over the XSDT). 45632) Improve validation of the RSDP signature (use 8 chars instead of 4). 4564 4565iASL: Add check for predefined packages that are too large. For 4566predefined names that contain subpackages, check if each subpackage is 4567too large. (Check for too small already exists.) 4568 4569Debugger: Updated the GPE command (which simulates a GPE by executing the 4570GPE code paths in ACPICA). The GPE device is now optional, and defaults 4571to the GPE 0/1 FADT-defined blocks. 4572 4573Unix application OSL: Update line-editing support. Add additional error 4574checking and take care not to reset terminal attributes on exit if they 4575were never set. This should help guarantee that the terminal is always 4576left in the previous state on program exit. 4577 4578 4579---------------------------------------- 458025 March 2014. Summary of changes for version 20140325: 4581 45821) ACPICA kernel-resident subsystem: 4583 4584Updated the auto-serialize feature for control methods. This feature 4585automatically serializes all methods that create named objects in order 4586to prevent runtime errors. The update adds support to ignore the 4587currently executing AML SyncLevel when invoking such a method, in order 4588to prevent disruption of any existing SyncLevel priorities that may exist 4589in the AML code. Although the use of SyncLevels is relatively rare, this 4590change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4591appear on some machines starting with the 20140214 release. 4592 4593Added a new external interface to allow the host to install ACPI tables 4594very early, before the namespace is even created. AcpiInstallTable gives 4595the host additional flexibility for ACPI table management. Tables can be 4596installed directly by the host as if they had originally appeared in the 4597XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4598(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4599with additional internal restructuring and cleanup. See the ACPICA 4600Reference for interface details. Lv Zheng. 4601 4602Added validation of the checksum for all incoming dynamically loaded 4603tables (via external interfaces or via AML Load/LoadTable operators). Lv 4604Zheng. 4605 4606Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4607and GPE handler removal. Restructured calls to eliminate possible race 4608conditions. Lv Zheng. 4609 4610Added a warning for the use/execution of the ASL/AML Unload (table) 4611operator. This will help detect and identify machines that use this 4612operator if and when it is ever used. This operator has never been seen 4613in the field and the usage model and possible side-effects of the drastic 4614runtime action of a full table removal are unknown. 4615 4616Reverted the use of #pragma push/pop which was introduced in the 20140214 4617release. It appears that push and pop are not implemented by enough 4618compilers to make the use of this feature feasible for ACPICA at this 4619time. However, these operators may be deployed in a future ACPICA 4620release. 4621 4622Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4623handler interfaces. 4624 4625Source code generation: 46261) Disabled the use of the "strchr" macro for the gcc-specific 4627generation. For some versions of gcc, this macro can periodically expose 4628a compiler bug which in turn causes compile-time error(s). 46292) Added support for PPC64 compilation. Colin Ian King. 4630 4631Example Code and Data Size: These are the sizes for the OS-independent 4632acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4633debug version of the code includes the debug output trace mechanism and 4634has a much larger code and data size. 4635 4636 Current Release: 4637 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4638 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4639 Previous Release: 4640 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4641 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4642 4643 46442) iASL Compiler/Disassembler and Tools: 4645 4646Disassembler: Added several new features to improve the readability of 4647the resulting ASL code. Extra information is emitted within comment 4648fields in the ASL code: 46491) Known _HID/_CID values are decoded to descriptive text. 46502) Standard values for the Notify() operator are decoded to descriptive 4651text. 46523) Target operands are expanded to full pathnames (in a comment) when 4653possible. 4654 4655Disassembler: Miscellaneous updates for extern() handling: 46561) Abort compiler if file specified by -fe option does not exist. 46572) Silence unnecessary warnings about argument count mismatches. 46583) Update warning messages concerning unresolved method externals. 46594) Emit "UnknownObj" keyword for externals whose type cannot be 4660determined. 4661 4662AcpiHelp utility: 46631) Added the -a option to display both the ASL syntax and the AML 4664encoding for an input ASL operator. This effectively displays all known 4665information about an ASL operator with one AcpiHelp invocation. 46662) Added substring match support (similar to a wildcard) for the -i 4667(_HID/PNP IDs) option. 4668 4669iASL/Disassembler: Since this tool does not yet support execution on big- 4670endian machines, added detection of endianness and an error message if 4671execution is attempted on big-endian. Support for big-endian within iASL 4672is a feature that is on the ACPICA to-be-done list. 4673 4674AcpiBin utility: 46751) Remove option to extract binary files from an acpidump; this function 4676is made obsolete by the AcpiXtract utility. 46772) General cleanup of open files and allocated buffers. 4678 4679 4680---------------------------------------- 468114 February 2014. Summary of changes for version 20140214: 4682 46831) ACPICA kernel-resident subsystem: 4684 4685Implemented a new mechanism to proactively prevent problems with ill- 4686behaved reentrant control methods that create named ACPI objects. This 4687behavior is illegal as per the ACPI specification, but is nonetheless 4688frequently seen in the field. Previously, this could lead to an 4689AE_ALREADY_EXISTS exception if the method was actually entered by more 4690than one thread. This new mechanism detects such methods at table load 4691time and marks them "serialized" to prevent reentrancy. A new global 4692option, AcpiGbl_AutoSerializeMethods, has been added to disable this 4693feature if desired. This mechanism and global option obsoletes and 4694supersedes the previous AcpiGbl_SerializeAllMethods option. 4695 4696Added the "Windows 2013" string to the _OSI support. ACPICA will now 4697respond TRUE to _OSI queries with this string. It is the stated policy of 4698ACPICA to add new strings to the _OSI support as soon as possible after 4699they are defined. See the full ACPICA _OSI policy which has been added to 4700the utilities/utosi.c file. 4701 4702Hardened/updated the _PRT return value auto-repair code: 47031) Do not abort the repair on a single subpackage failure, continue to 4704check all subpackages. 47052) Add check for the minimum subpackage length (4). 47063) Properly handle extraneous NULL package elements. 4707 4708Added support to avoid the possibility of infinite loops when traversing 4709object linked lists. Never allow an infinite loop, even in the face of 4710corrupted object lists. 4711 4712ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 4713pack(pop) directives to ensure that the ACPICA headers are independent of 4714compiler settings or other host headers. 4715 4716Example Code and Data Size: These are the sizes for the OS-independent 4717acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4718debug version of the code includes the debug output trace mechanism and 4719has a much larger code and data size. 4720 4721 Current Release: 4722 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4723 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4724 Previous Release: 4725 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4726 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4727 4728 47292) iASL Compiler/Disassembler and Tools: 4730 4731iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 4732first reserved field was incorrectly forced to have a value of zero. This 4733change correctly forces the field to have a value of one. ACPICA BZ 1081. 4734 4735Debugger: Added missing support for the "Extra" and "Data" subobjects 4736when displaying object data. 4737 4738Debugger: Added support to display entire object linked lists when 4739displaying object data. 4740 4741iASL: Removed the obsolete -g option to obtain ACPI tables from the 4742Windows registry. This feature has been superseded by the acpidump 4743utility. 4744 4745 4746---------------------------------------- 474714 January 2014. Summary of changes for version 20140114: 4748 47491) ACPICA kernel-resident subsystem: 4750 4751Updated all ACPICA copyrights and signons to 2014. Added the 2014 4752copyright to all module headers and signons, including the standard Linux 4753header. This affects virtually every file in the ACPICA core subsystem, 4754iASL compiler, all ACPICA utilities, and the test suites. 4755 4756Improved parameter validation for AcpiInstallGpeBlock. Added the 4757following checks: 47581) The incoming device handle refers to type ACPI_TYPE_DEVICE. 47592) There is not already a GPE block attached to the device. 4760Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4761device. 4762 4763Correctly support "references" in the ACPI_OBJECT. This change fixes the 4764support to allow references (namespace nodes) to be passed as arguments 4765to control methods via the evaluate object interface. This is probably 4766most useful for testing purposes, however. 4767 4768Improved support for 32/64 bit physical addresses in printf()-like 4769output. This change improves the support for physical addresses in printf 4770debug statements and other output on both 32-bit and 64-bit hosts. It 4771consistently outputs the appropriate number of bytes for each host. The 4772%p specifier is unsatisfactory since it does not emit uniform output on 4773all hosts/clib implementations (on some, leading zeros are not supported, 4774leading to difficult-to-read output). 4775 4776Example Code and Data Size: These are the sizes for the OS-independent 4777acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4778debug version of the code includes the debug output trace mechanism and 4779has a much larger code and data size. 4780 4781 Current Release: 4782 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4783 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4784 Previous Release: 4785 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4786 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4787 4788 47892) iASL Compiler/Disassembler and Tools: 4790 4791iASL: Fix a possible fault when using the Connection() operator. Fixes a 4792problem if the parent Field definition for the Connection operator refers 4793to an operation region that does not exist. ACPICA BZ 1064. 4794 4795AcpiExec: Load of local test tables is now optional. The utility has the 4796capability to load some various tables to test features of ACPICA. 4797However, there are enough of them that the output of the utility became 4798confusing. With this change, only the required local tables are displayed 4799(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4800line specification. This makes the default output simler and easier to 4801understand. The -el command line option restores the original behavior 4802for testing purposes. 4803 4804AcpiExec: Added support for overlapping operation regions. This change 4805expands the simulation of operation regions by supporting regions that 4806overlap within the given address space. Supports SystemMemory and 4807SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4808 4809AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4810allows AcpiExec to simulate these address spaces, similar to the current 4811support for SystemMemory and SystemIO. 4812 4813Debugger: Added new command to read/write/compare all namespace objects. 4814The command "test objects" will exercise the entire namespace by writing 4815new values to each data object, and ensuring that the write was 4816successful. The original value is then restored and verified. 4817 4818Debugger: Added the "test predefined" command. This change makes this 4819test public and puts it under the new "test" command. The test executes 4820each and every predefined name within the current namespace. 4821 4822 4823---------------------------------------- 482418 December 2013. Summary of changes for version 20131218: 4825 4826Global note: The ACPI 5.0A specification was released this month. There 4827are no changes needed for ACPICA since this release of ACPI is an 4828errata/clarification release. The specification is available at 4829acpi.info. 4830 4831 48321) ACPICA kernel-resident subsystem: 4833 4834Added validation of the XSDT root table if it is present. Some older 4835platforms contain an XSDT that is ill-formed or otherwise invalid (such 4836as containing some or all entries that are NULL pointers). This change 4837adds a new function to validate the XSDT before actually using it. If the 4838XSDT is found to be invalid, ACPICA will now automatically fall back to 4839using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4840ACPICA and enhanced by Lv Zheng and Bob Moore. 4841 4842Added a runtime option to ignore the XSDT and force the use of the RSDT. 4843This change adds a runtime option that will force ACPICA to use the RSDT 4844instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4845requires that an XSDT be used instead of the RSDT, the XSDT has been 4846found to be corrupt or ill-formed on some machines. Lv Zheng. 4847 4848Added a runtime option to favor 32-bit FADT register addresses over the 484964-bit addresses. This change adds an option to favor 32-bit FADT 4850addresses when there is a conflict between the 32-bit and 64-bit versions 4851of the same register. The default behavior is to use the 64-bit version 4852in accordance with the ACPI specification. This can now be overridden via 4853the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4854 4855During the change above, the internal "Convert FADT" and "Verify FADT" 4856functions have been merged to simplify the code, making it easier to 4857understand and maintain. ACPICA BZ 933. 4858 4859Improve exception reporting and handling for GPE block installation. 4860Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4861status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4862 4863Added helper macros to extract bus/segment numbers from the HEST table. 4864This change adds two macros to extract the encoded bus and segment 4865numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4866Betty Dall <betty.dall@hp.com> 4867 4868Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4869by ACPICA. It is not a public macro, so it should have no effect on 4870existing OSV code. Lv Zheng. 4871 4872Example Code and Data Size: These are the sizes for the OS-independent 4873acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4874debug version of the code includes the debug output trace mechanism and 4875has a much larger code and data size. 4876 4877 Current Release: 4878 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4879 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4880 Previous Release: 4881 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4882 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4883 4884 48852) iASL Compiler/Disassembler and Tools: 4886 4887Disassembler: Improved pathname support for emitted External() 4888statements. This change adds full pathname support for external names 4889that have been resolved internally by the inclusion of additional ACPI 4890tables (via the iASL -e option). Without this change, the disassembler 4891can emit multiple externals for the same object, or it become confused 4892when the Scope() operator is used on an external object. Overall, greatly 4893improves the ability to actually recompile the emitted ASL code when 4894objects a referenced across multiple ACPI tables. Reported by Michael 4895Tsirkin (mst@redhat.com). 4896 4897Tests/ASLTS: Updated functional control suite to execute with no errors. 4898David Box. Fixed several errors related to the testing of the interpreter 4899slack mode. Lv Zheng. 4900 4901iASL: Added support to detect names that are declared within a control 4902method, but are unused (these are temporary names that are only valid 4903during the time the method is executing). A remark is issued for these 4904cases. ACPICA BZ 1022. 4905 4906iASL: Added full support for the DBG2 table. Adds full disassembler, 4907table compiler, and template generator support for the DBG2 table (Debug 4908Port 2 table). 4909 4910iASL: Added full support for the PCCT table, update the table definition. 4911Updates the PCCT table definition in the actbl3.h header and adds table 4912compiler and template generator support. 4913 4914iASL: Added an option to emit only error messages (no warnings/remarks). 4915The -ve option will enable only error messages, warnings and remarks are 4916suppressed. This can simplify debugging when only the errors are 4917important, such as when an ACPI table is disassembled and there are many 4918warnings and remarks -- but only the actual errors are of real interest. 4919 4920Example ACPICA code (source/tools/examples): Updated the example code so 4921that it builds to an actual working program, not just example code. Added 4922ACPI tables and execution of an example control method in the DSDT. Added 4923makefile support for Unix generation. 4924 4925 4926---------------------------------------- 492715 November 2013. Summary of changes for version 20131115: 4928 4929This release is available at https://acpica.org/downloads 4930 4931 49321) ACPICA kernel-resident subsystem: 4933 4934Resource Manager: Fixed loop termination for the "get AML length" 4935function. The loop previously had an error termination on a NULL resource 4936pointer, which can never happen since the loop simply increments a valid 4937resource pointer. This fix changes the loop to terminate with an error on 4938an invalid end-of-buffer condition. The problem can be seen as an 4939infinite loop by callers to AcpiSetCurrentResources with an invalid or 4940corrupted resource descriptor, or a resource descriptor that is missing 4941an END_TAG descriptor. Reported by Dan Carpenter 4942<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4943 4944Table unload and ACPICA termination: Delete all attached data objects 4945during namespace node deletion. This fix updates namespace node deletion 4946to delete the entire list of attached objects (attached via 4947AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 49481024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4949 4950ACPICA termination: Added support to delete all objects attached to the 4951root namespace node. This fix deletes any and all objects that have been 4952attached to the root node via AcpiAttachData. Previously, none of these 4953objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4954 4955Debug output: Do not emit the function nesting level for the in-kernel 4956build. The nesting level is really only useful during a single-thread 4957execution. Therefore, only enable this output for the AcpiExec utility. 4958Also, only emit the thread ID when executing under AcpiExec (Context 4959switches are still always detected and a message is emitted). ACPICA BZ 4960972. 4961 4962Example Code and Data Size: These are the sizes for the OS-independent 4963acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4964debug version of the code includes the debug output trace mechanism and 4965has a much larger code and data size. 4966 4967 Current Release: 4968 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4969 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4970 Previous Release: 4971 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4972 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4973 4974 49752) iASL Compiler/Disassembler and Tools: 4976 4977AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4978correct portable POSIX header for terminal control functions. 4979 4980Disassembler: Fixed control method invocation issues related to the use 4981of the CondRefOf() operator. The problem is seen in the disassembly where 4982control method invocations may not be disassembled properly if the 4983control method name has been used previously as an argument to CondRefOf. 4984The solution is to not attempt to emit an external declaration for the 4985CondRefOf target (it is not necessary in the first place). This prevents 4986disassembler object type confusion. ACPICA BZ 988. 4987 4988Unix Makefiles: Added an option to disable compiler optimizations and the 4989_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4990with optimizations (reportedly, gcc 4.4 for example). This change adds a 4991command line option for make (NOOPT) that disables all compiler 4992optimizations and the _FORTIFY_SOURCE compiler flag. The default 4993optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 49941034. Lv Zheng, Bob Moore. 4995 4996Tests/ASLTS: Added options to specify individual test cases and modes. 4997This allows testers running aslts.sh to optionally specify individual 4998test modes and test cases. Also added an option to disable the forced 4999generation of the ACPICA tools from source if desired. Lv Zheng. 5000 5001---------------------------------------- 500227 September 2013. Summary of changes for version 20130927: 5003 5004This release is available at https://acpica.org/downloads 5005 5006 50071) ACPICA kernel-resident subsystem: 5008 5009Fixed a problem with store operations to reference objects. This change 5010fixes a problem where a Store operation to an ArgX object that contained 5011a 5012reference to a field object did not complete the automatic dereference 5013and 5014then write to the actual field object. Instead, the object type of the 5015field object was inadvertently changed to match the type of the source 5016operand. The new behavior will actually write to the field object (buffer 5017field or field unit), thus matching the correct ACPI-defined behavior. 5018 5019Implemented support to allow the host to redefine individual OSL 5020prototypes. This change enables the host to redefine OSL prototypes found 5021in the acpiosxf.h file. This allows the host to implement OSL interfaces 5022with a macro or inlined function. Further, it allows the host to add any 5023additional required modifiers such as __iomem, __init, __exit, etc., as 5024necessary on a per-interface basis. Enables maximum flexibility for the 5025OSL interfaces. Lv Zheng. 5026 5027Hardcoded the access width for the FADT-defined reset register. The ACPI 5028specification requires the reset register width to be 8 bits. ACPICA now 5029hardcodes the width to 8 and ignores the FADT width value. This provides 5030compatibility with other ACPI implementations that have allowed BIOS code 5031with bad register width values to go unnoticed. Matthew Garett, Bob 5032Moore, 5033Lv Zheng. 5034 5035Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 5036used 5037in the OSL header (acpiosxf). The change modifies the position of this 5038macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 5039build issues if the OSL defines the implementation of the interface to be 5040an inline stub function. Lv Zheng. 5041 5042Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 5043initialization interfaces. This change adds a new macro for the main init 5044and terminate external interfaces in order to support hosts that require 5045additional or different processing for these functions. Changed from 5046ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 5047Zheng, Bob Moore. 5048 5049Cleaned up the memory allocation macros for configurability. In the 5050common 5051case, the ACPI_ALLOCATE and related macros now resolve directly to their 5052respective AcpiOs* OSL interfaces. Two options: 50531) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 5054default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 50552) For AcpiExec (and for debugging), the macros can optionally be 5056resolved 5057to the local ACPICA interfaces that track each allocation (local tracking 5058is used to immediately detect memory leaks). 5059Lv Zheng. 5060 5061Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 5062to predefine this macro to either TRUE or FALSE during the system build. 5063 5064Replaced __FUNCTION_ with __func__ in the gcc-specific header. 5065 5066Example Code and Data Size: These are the sizes for the OS-independent 5067acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5068debug version of the code includes the debug output trace mechanism and 5069has a much larger code and data size. 5070 5071 Current Release: 5072 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5073 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5074 Previous Release: 5075 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5076 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5077 5078 50792) iASL Compiler/Disassembler and Tools: 5080 5081iASL: Implemented wildcard support for the -e option. This simplifies use 5082when there are many SSDTs that must be included to resolve external 5083method 5084declarations. ACPICA BZ 1041. Example: 5085 iasl -e ssdt*.dat -d dsdt.dat 5086 5087AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5088adds a portable module that implements full history and limited line 5089editing for Unix and Linux systems. It does not use readline() due to 5090portability issues. Instead it uses the POSIX termio interface to put the 5091terminal in raw input mode so that the various special keys can be 5092trapped 5093(such as up/down-arrow for history support and left/right-arrow for line 5094editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5095 5096AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5097one or more spaces. This provides compatible with early or different 5098versions of the AcpiDump utility. ACPICA BZ 1044. 5099 5100AcpiDump: Do not ignore tables that contain only an ACPI table header. 5101Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5102no other data. This change adds support to dump these tables. Any tables 5103shorter than the length of an ACPI table header remain in error (an error 5104message is emitted). Reported by Yi Li. 5105 5106Debugger: Echo actual command along with the "unknown command" message. 5107 5108---------------------------------------- 510923 August 2013. Summary of changes for version 20130823: 5110 51111) ACPICA kernel-resident subsystem: 5112 5113Implemented support for host-installed System Control Interrupt (SCI) 5114handlers. Certain ACPI functionality requires the host to handle raw 5115SCIs. For example, the "SCI Doorbell" that is defined for memory power 5116state support requires the host device driver to handle SCIs to examine 5117if the doorbell has been activated. Multiple SCI handlers can be 5118installed to allow for future expansion. New external interfaces are 5119AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5120details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5121 5122Operation region support: Never locally free the handler "context" 5123pointer. This change removes some dangerous code that attempts to free 5124the handler context pointer in some (rare) circumstances. The owner of 5125the handler owns this pointer and the ACPICA code should never touch it. 5126Although not seen to be an issue in any kernel, it did show up as a 5127problem (fault) under AcpiExec. Also, set the internal storage field for 5128the context pointer to zero when the region is deactivated, simply for 5129sanity. David Box. ACPICA BZ 1039. 5130 5131AcpiRead: On error, do not modify the return value target location. If an 5132error happens in the middle of a split 32/32 64-bit I/O operation, do not 5133modify the target of the return value pointer. Makes the code consistent 5134with the rest of ACPICA. Bjorn Helgaas. 5135 5136Example Code and Data Size: These are the sizes for the OS-independent 5137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5138debug version of the code includes the debug output trace mechanism and 5139has a much larger code and data size. 5140 5141 Current Release: 5142 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5143 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5144 Previous Release: 5145 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5146 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5147 5148 51492) iASL Compiler/Disassembler and Tools: 5150 5151AcpiDump: Implemented several new features and fixed some problems: 51521) Added support to dump the RSDP, RSDT, and XSDT tables. 51532) Added support for multiple table instances (SSDT, UEFI). 51543) Added option to dump "customized" (overridden) tables (-c). 51554) Fixed a problem where some table filenames were improperly 5156constructed. 51575) Improved some error messages, removed some unnecessary messages. 5158 5159iASL: Implemented additional support for disassembly of ACPI tables that 5160contain invocations of external control methods. The -fe<file> option 5161allows the import of a file that specifies the external methods along 5162with the required number of arguments for each -- allowing for the 5163correct disassembly of the table. This is a workaround for a limitation 5164of AML code where the disassembler often cannot determine the number of 5165arguments required for an external control method and generates incorrect 5166ASL code. See the iASL reference for details. ACPICA BZ 1030. 5167 5168Debugger: Implemented a new command (paths) that displays the full 5169pathnames (namepaths) and object types of all objects in the namespace. 5170This is an alternative to the namespace command. 5171 5172Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5173mechanism and any installed handlers. 5174 5175iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5176This can occur if there are too many parent prefixes in a namepath (for 5177example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5178 5179Application OSLs: Set the return value for the PCI read functions. These 5180functions simply return AE_OK, but should set the return value to zero 5181also. This change implements this. ACPICA BZ 1038. 5182 5183Debugger: Prevent possible command line buffer overflow. Increase the 5184size of a couple of the debugger line buffers, and ensure that overflow 5185cannot happen. ACPICA BZ 1037. 5186 5187iASL: Changed to abort immediately on serious errors during the parsing 5188phase. Due to the nature of ASL, there is no point in attempting to 5189compile these types of errors, and they typically end up causing a 5190cascade of hundreds of errors which obscure the original problem. 5191 5192---------------------------------------- 519325 July 2013. Summary of changes for version 20130725: 5194 51951) ACPICA kernel-resident subsystem: 5196 5197Fixed a problem with the DerefOf operator where references to FieldUnits 5198and BufferFields incorrectly returned the parent object, not the actual 5199value of the object. After this change, a dereference of a FieldUnit 5200reference results in a read operation on the field to get the value, and 5201likewise, the appropriate BufferField value is extracted from the target 5202buffer. 5203 5204Fixed a problem where the _WAK method could cause a fault under these 5205circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5206method returned no value. The problem is rarely seen because most kernels 5207run ACPICA in slack mode. 5208 5209For the DerefOf operator, a fatal error now results if an attempt is made 5210to dereference a reference (created by the Index operator) to a NULL 5211package element. Provides compatibility with other ACPI implementations, 5212and this behavior will be added to a future version of the ACPI 5213specification. 5214 5215The ACPI Power Management Timer (defined in the FADT) is now optional. 5216This provides compatibility with other ACPI implementations and will 5217appear in the next version of the ACPI specification. If there is no PM 5218Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5219zero in the FADT indicates no PM timer. 5220 5221Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5222allows the host to globally enable/disable all vendor strings, all 5223feature strings, or both. Intended to be primarily used for debugging 5224purposes only. Lv Zheng. 5225 5226Expose the collected _OSI data to the host via a global variable. This 5227data tracks the highest level vendor ID that has been invoked by the BIOS 5228so that the host (and potentially ACPICA itself) can change behaviors 5229based upon the age of the BIOS. 5230 5231Example Code and Data Size: These are the sizes for the OS-independent 5232acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5233debug version of the code includes the debug output trace mechanism and 5234has a much larger code and data size. 5235 5236 Current Release: 5237 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5238 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5239 Previous Release: 5240 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5241 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5242 5243 52442) iASL Compiler/Disassembler and Tools: 5245 5246iASL: Created the following enhancements for the -so option (create 5247offset table): 52481)Add offsets for the last nameseg in each namepath for every supported 5249object type 52502)Add support for Processor, Device, Thermal Zone, and Scope objects 52513)Add the actual AML opcode for the parent object of every supported 5252object type 52534)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5254 5255Disassembler: Emit all unresolved external symbols in a single block. 5256These are external references to control methods that could not be 5257resolved, and thus, the disassembler had to make a guess at the number of 5258arguments to parse. 5259 5260iASL: The argument to the -T option (create table template) is now 5261optional. If not specified, the default table is a DSDT, typically the 5262most common case. 5263 5264---------------------------------------- 526526 June 2013. Summary of changes for version 20130626: 5266 52671) ACPICA kernel-resident subsystem: 5268 5269Fixed an issue with runtime repair of the _CST object. Null or invalid 5270elements were not always removed properly. Lv Zheng. 5271 5272Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5273FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5274the maximum number of GPEs is 1016. Use of multiple GPE block devices 5275makes the system-wide number of GPEs essentially unlimited. 5276 5277Example Code and Data Size: These are the sizes for the OS-independent 5278acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5279debug version of the code includes the debug output trace mechanism and 5280has a much larger code and data size. 5281 5282 Current Release: 5283 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5284 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5285 Previous Release: 5286 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5287 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5288 5289 52902) iASL Compiler/Disassembler and Tools: 5291 5292Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5293hosts. Now supports Linux, FreeBSD, and Windows. 5294 5295Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5296Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5297 5298iASL/Preprocessor: Implemented full support for nested 5299#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5300 5301Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5302max. The original purpose of this constraint was to limit the amount of 5303debug output. However, the string function in question (UtPrintString) is 5304now used for the disassembler also, where 256 bytes is insufficient. 5305Reported by RehabMan@GitHub. 5306 5307iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5308tables. ACPICA BZ 999. Lv Zheng. 5309 5310iASL: Fixed a couple of error exit issues that could result in a "Could 5311not delete <file>" message during ASL compilation. 5312 5313AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5314the actual signatures for these tables are "FACP" and "APIC", 5315respectively. 5316 5317AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5318tables are allowed to have multiple instances. 5319 5320---------------------------------------- 532117 May 2013. Summary of changes for version 20130517: 5322 53231) ACPICA kernel-resident subsystem: 5324 5325Fixed a regression introduced in version 20130328 for _INI methods. This 5326change fixes a problem introduced in 20130328 where _INI methods are no 5327longer executed properly because of a memory block that was not 5328initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5329<tomasz.nowicki@linaro.org>. 5330 5331Fixed a possible problem with the new extended sleep registers in the 5332ACPI 53335.0 FADT. Do not use these registers (even if populated) unless the HW- 5334reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 53351020. Lv Zheng. 5336 5337Implemented return value repair code for _CST predefined objects: Sort 5338the 5339list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5340 5341Implemented a debug-only option to disable loading of SSDTs from the 5342RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5343ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5344acglobal.h - ACPICA BZ 1005. Lv Zheng. 5345 5346Fixed some issues in the ACPICA initialization and termination code: 5347Tomasz Nowicki <tomasz.nowicki@linaro.org> 53481) Clear events initialized flag upon event component termination. ACPICA 5349BZ 1013. 53502) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 53513) Delete global lock pending lock during termination. ACPICA BZ 1012. 53524) Clear debug buffer global on termination to prevent possible multiple 5353delete. ACPICA BZ 1010. 5354 5355Standardized all switch() blocks across the entire source base. After 5356many 5357years, different formatting for switch() had crept in. This change makes 5358the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5359 5360Split some files to enhance ACPICA modularity and configurability: 53611) Split buffer dump routines into utilities/utbuffer.c 53622) Split internal error message routines into utilities/uterror.c 53633) Split table print utilities into tables/tbprint.c 53644) Split iASL command-line option processing into asloptions.c 5365 5366Makefile enhancements: 53671) Support for all new files above. 53682) Abort make on errors from any subcomponent. Chao Guan. 53693) Add build support for Apple Mac OS X. Liang Qi. 5370 5371Example Code and Data Size: These are the sizes for the OS-independent 5372acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5373debug version of the code includes the debug output trace mechanism and 5374has a much larger code and data size. 5375 5376 Current Release: 5377 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5378 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5379 Previous Release: 5380 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5381 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5382 5383 53842) iASL Compiler/Disassembler and Tools: 5385 5386New utility: Implemented an easily portable version of the acpidump 5387utility to extract ACPI tables from the system (or a file) in an ASCII 5388hex 5389dump format. The top-level code implements the various command line 5390options, file I/O, and table dump routines. To port to a new host, only 5391three functions need to be implemented to get tables -- since this 5392functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5393the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 53941) The Windows version obtains the ACPI tables from the Registry. 53952) The Linux version is under development. 53963) Other hosts - If an OS-dependent module is submitted, it will be 5397distributed with ACPICA. 5398 5399iASL: Fixed a regression for -D preprocessor option (define symbol). A 5400restructuring/change to the initialization sequence caused this option to 5401no longer work properly. 5402 5403iASL: Implemented a mechanism to disable specific warnings and remarks. 5404Adds a new command line option, "-vw <messageid> as well as "#pragma 5405disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5406 5407iASL: Fix for too-strict package object validation. The package object 5408validation for return values from the predefined names is a bit too 5409strict, it does not allow names references within the package (which will 5410be resolved at runtime.) These types of references cannot be validated at 5411compile time. This change ignores named references within package objects 5412for names that return or define static packages. 5413 5414Debugger: Fixed the 80-character command line limitation for the History 5415command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5416 5417iASL: Added control method and package support for the -so option 5418(generates AML offset table for BIOS support.) 5419 5420iASL: issue a remark if a non-serialized method creates named objects. If 5421a thread blocks within the method for any reason, and another thread 5422enters the method, the method will fail because an attempt will be made 5423to 5424create the same (named) object twice. In this case, issue a remark that 5425the method should be marked serialized. NOTE: may become a warning later. 5426ACPICA BZ 909. 5427 5428---------------------------------------- 542918 April 2013. Summary of changes for version 20130418: 5430 54311) ACPICA kernel-resident subsystem: 5432 5433Fixed a possible buffer overrun during some rare but specific field unit 5434read operations. This overrun can only happen if the DSDT version is 1 -- 5435meaning that all AML integers are 32 bits -- and the field length is 5436between 33 and 55 bits long. During the read, an internal buffer object 5437is 5438created for the field unit because the field is larger than an integer 5439(32 5440bits). However, in this case, the buffer will be incorrectly written 5441beyond the end because the buffer length is less than the internal 5442minimum 5443of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5444long, but a full 8 bytes will be written. 5445 5446Updated the Embedded Controller "orphan" _REG method support. This refers 5447to _REG methods under the EC device that have no corresponding operation 5448region. This is allowed by the ACPI specification. This update removes a 5449dependency on the existence an ECDT table. It will execute an orphan _REG 5450method as long as the operation region handler for the EC is installed at 5451the EC device node and not the namespace root. Rui Zhang (original 5452update), Bob Moore (update/integrate). 5453 5454Implemented run-time argument typechecking for all predefined ACPI names 5455(_STA, _BIF, etc.) This change performs object typechecking on all 5456incoming arguments for all predefined names executed via 5457AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5458passing correct object types as well as the correct number of arguments 5459(therefore identifying any issues immediately). Also, the ASL/namespace 5460definition of the predefined name is checked against the ACPI 5461specification for the proper argument count. Adds one new file, 5462nsarguments.c 5463 5464Changed an exception code for the ASL UnLoad() operator. Changed the 5465exception code for the case where the input DdbHandle is invalid, from 5466AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5467 5468Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5469global makefile. The use of this flag causes compiler errors on earlier 5470versions of GCC, so it has been removed for compatibility. 5471 5472Miscellaneous cleanup: 54731) Removed some unused/obsolete macros 54742) Fixed a possible memory leak in the _OSI support 54753) Removed an unused variable in the predefined name support 54764) Windows OSL: remove obsolete reference to a memory list field 5477 5478Example Code and Data Size: These are the sizes for the OS-independent 5479acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5480debug version of the code includes the debug output trace mechanism and 5481has a much larger code and data size. 5482 5483 Current Release: 5484 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5485 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5486 Previous Release: 5487 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5488 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5489 5490 54912) iASL Compiler/Disassembler and Tools: 5492 5493AcpiExec: Added installation of a handler for the SystemCMOS address 5494space. This prevents control method abort if a method accesses this 5495space. 5496 5497AcpiExec: Added support for multiple EC devices, and now install EC 5498operation region handler(s) at the actual EC device instead of the 5499namespace root. This reflects the typical behavior of host operating 5500systems. 5501 5502AcpiExec: Updated to ensure that all operation region handlers are 5503installed before the _REG methods are executed. This prevents a _REG 5504method from aborting if it accesses an address space has no handler. 5505AcpiExec installs a handler for every possible address space. 5506 5507Debugger: Enhanced the "handlers" command to display non-root handlers. 5508This change enhances the handlers command to display handlers associated 5509with individual devices throughout the namespace, in addition to the 5510currently supported display of handlers associated with the root 5511namespace 5512node. 5513 5514ASL Test Suite: Several test suite errors have been identified and 5515resolved, reducing the total error count during execution. Chao Guan. 5516 5517---------------------------------------- 551828 March 2013. Summary of changes for version 20130328: 5519 55201) ACPICA kernel-resident subsystem: 5521 5522Fixed several possible race conditions with the internal object reference 5523counting mechanism. Some of the external ACPICA interfaces update object 5524reference counts without holding the interpreter or namespace lock. This 5525change adds a spinlock to protect reference count updates on the internal 5526ACPICA objects. Reported by and with assistance from Andriy Gapon 5527(avg@FreeBSD.org). 5528 5529FADT support: Removed an extraneous warning for very large GPE register 5530sets. This change removes a size mismatch warning if the legacy length 5531field for a GPE register set is larger than the 64-bit GAS structure can 5532accommodate. GPE register sets can be larger than the 255-bit width 5533limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5534 5535_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5536return from this interface. Handles a possible timeout case if 5537ACPI_WAIT_FOREVER is modified by the host to be a value less than 5538"forever". Jung-uk Kim. 5539 5540Predefined name support: Add allowed/required argument type information 5541to 5542the master predefined info table. This change adds the infrastructure to 5543enable typechecking on incoming arguments for all predefined 5544methods/objects. It does not actually contain the code that will fully 5545utilize this information, this is still under development. Also condenses 5546some duplicate code for the predefined names into a new module, 5547utilities/utpredef.c 5548 5549Example Code and Data Size: These are the sizes for the OS-independent 5550acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5551debug version of the code includes the debug output trace mechanism and 5552has a much larger code and data size. 5553 5554 Previous Release: 5555 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5556 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5557 Current Release: 5558 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5559 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5560 5561 55622) iASL Compiler/Disassembler and Tools: 5563 5564iASL: Implemented a new option to simplify the development of ACPI- 5565related 5566BIOS code. Adds support for a new "offset table" output file. The -so 5567option will create a C table containing the AML table offsets of various 5568named objects in the namespace so that BIOS code can modify them easily 5569at 5570boot time. This can simplify BIOS runtime code by eliminating expensive 5571searches for "magic values", enhancing boot times and adding greater 5572reliability. With assistance from Lee Hamel. 5573 5574iASL: Allow additional predefined names to return zero-length packages. 5575Now, all predefined names that are defined by the ACPI specification to 5576return a "variable-length package of packages" are allowed to return a 5577zero length top-level package. This allows the BIOS to tell the host that 5578the requested feature is not supported, and supports existing BIOS/ASL 5579code and practices. 5580 5581iASL: Changed the "result not used" warning to an error. This is the case 5582where an ASL operator is effectively a NOOP because the result of the 5583operation is not stored anywhere. For example: 5584 Add (4, Local0) 5585There is no target (missing 3rd argument), nor is the function return 5586value used. This is potentially a very serious problem -- since the code 5587was probably intended to do something, but for whatever reason, the value 5588was not stored. Therefore, this issue has been upgraded from a warning to 5589an error. 5590 5591AcpiHelp: Added allowable/required argument types to the predefined names 5592info display. This feature utilizes the recent update to the predefined 5593names table (above). 5594 5595---------------------------------------- 559614 February 2013. Summary of changes for version 20130214: 5597 55981) ACPICA Kernel-resident Subsystem: 5599 5600Fixed a possible regression on some hosts: Reinstated the safe return 5601macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5602evaluated only once. Although these macros are not needed for the ACPICA 5603code itself, they are often used by ACPI-related host device drivers 5604where 5605the safe feature may be necessary. 5606 5607Fixed several issues related to the ACPI 5.0 reduced hardware support 5608(SOC): Now ensure that if the platform declares itself as hardware- 5609reduced 5610via the FADT, the following functions become NOOPs (and always return 5611AE_OK) because ACPI is always enabled by definition on these machines: 5612 AcpiEnable 5613 AcpiDisable 5614 AcpiHwGetMode 5615 AcpiHwSetMode 5616 5617Dynamic Object Repair: Implemented additional runtime repairs for 5618predefined name return values. Both of these repairs can simplify code in 5619the related device drivers that invoke these methods: 56201) For the _STR and _MLS names, automatically repair/convert an ASCII 5621string to a Unicode buffer. 56222) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5623a 5624lone end tag descriptor in the following cases: A Return(0) was executed, 5625a null buffer was returned, or no object at all was returned (non-slack 5626mode only). Adds a new file, nsconvert.c 5627ACPICA BZ 998. Bob Moore, Lv Zheng. 5628 5629Resource Manager: Added additional code to prevent possible infinite 5630loops 5631while traversing corrupted or ill-formed resource template buffers. Check 5632for zero-length resource descriptors in all code that loops through 5633resource templates (the length field is used to index through the 5634template). This change also hardens the external AcpiWalkResources and 5635AcpiWalkResourceBuffer interfaces. 5636 5637Local Cache Manager: Enhanced the main data structure to eliminate an 5638unnecessary mechanism to access the next object in the list. Actually 5639provides a small performance enhancement for hosts that use the local 5640ACPICA cache manager. Jung-uk Kim. 5641 5642Example Code and Data Size: These are the sizes for the OS-independent 5643acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5644debug version of the code includes the debug output trace mechanism and 5645has a much larger code and data size. 5646 5647 Previous Release: 5648 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5649 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5650 Current Release: 5651 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5652 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5653 5654 56552) iASL Compiler/Disassembler and Tools: 5656 5657iASL/Disassembler: Fixed several issues with the definition of the ACPI 56585.0 RASF table (RAS Feature Table). This change incorporates late changes 5659that were made to the ACPI 5.0 specification. 5660 5661iASL/Disassembler: Added full support for the following new ACPI tables: 5662 1) The MTMR table (MID Timer Table) 5663 2) The VRTC table (Virtual Real Time Clock Table). 5664Includes header file, disassembler, table compiler, and template support 5665for both tables. 5666 5667iASL: Implemented compile-time validation of package objects returned by 5668predefined names. This new feature validates static package objects 5669returned by the various predefined names defined to return packages. Both 5670object types and package lengths are validated, for both parent packages 5671and sub-packages, if any. The code is similar in structure and behavior 5672to 5673the runtime repair mechanism within the AML interpreter and uses the 5674existing predefined name information table. Adds a new file, aslprepkg.c. 5675ACPICA BZ 938. 5676 5677iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5678This feature detects a binary file with a valid ACPI table header and 5679invokes the disassembler automatically. Eliminates the need to 5680specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5681 5682iASL/Disassembler: Added several warnings for the case where there are 5683unresolved control methods during the disassembly. This can potentially 5684cause errors when the output file is compiled, because the disassembler 5685assumes zero method arguments in these cases (it cannot determine the 5686actual number of arguments without resolution/definition of the method). 5687 5688Debugger: Added support to display all resources with a single command. 5689Invocation of the resources command with no arguments will now display 5690all 5691resources within the current namespace. 5692 5693AcpiHelp: Added descriptive text for each ACPICA exception code displayed 5694via the -e option. 5695 5696---------------------------------------- 569717 January 2013. Summary of changes for version 20130117: 5698 56991) ACPICA Kernel-resident Subsystem: 5700 5701Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 5702return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 5703objects to return a package containing one integer, most BIOS code 5704returns 5705two integers and the previous code reflects that. However, we also need 5706to 5707support BIOS code that actually implements to the ACPI spec, and this 5708change reflects this. 5709 5710Fixed two issues with the ACPI_DEBUG_PRINT macros: 57111) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 5712C compilers that require this support. 57132) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 5714ACPI_DEBUG is already used by many of the various hosts. 5715 5716Updated all ACPICA copyrights and signons to 2013. Added the 2013 5717copyright to all module headers and signons, including the standard Linux 5718header. This affects virtually every file in the ACPICA core subsystem, 5719iASL compiler, all ACPICA utilities, and the test suites. 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: 94.5K Code, 25.5K Data, 120.0K Total 5728 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5729 Current Release: 5730 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5731 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5732 5733 57342) iASL Compiler/Disassembler and Tools: 5735 5736Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5737prevent a possible fault on some hosts. Some C libraries modify the arg 5738pointer parameter to vfprintf making it difficult to call it twice in the 5739AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5740does not affect the Windows OSL since the Win C library does not modify 5741the arg pointer. Chao Guan, Bob Moore. 5742 5743iASL: Fixed a possible infinite loop when the maximum error count is 5744reached. If an output file other than the .AML file is specified (such as 5745a listing file), and the maximum number of errors is reached, do not 5746attempt to flush data to the output file(s) as the compiler is aborting. 5747This can cause an infinite loop as the max error count code essentially 5748keeps calling itself. 5749 5750iASL/Disassembler: Added an option (-in) to ignore NOOP 5751opcodes/operators. 5752Implemented for both the compiler and the disassembler. Often, the NOOP 5753opcode is used as padding for packages that are changed dynamically by 5754the 5755BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5756errors. This option causes the disassembler to ignore all NOOP opcodes 5757(0xA3), and it also causes the compiler to ignore all ASL source code 5758NOOP 5759statements as well. 5760 5761Debugger: Enhanced the Sleep command to execute all sleep states. This 5762change allows Sleep to be invoked with no arguments and causes the 5763debugger to execute all of the sleep states, 0-5, automatically. 5764 5765---------------------------------------- 576620 December 2012. Summary of changes for version 20121220: 5767 57681) ACPICA Kernel-resident Subsystem: 5769 5770Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5771alternate entry point for AcpiWalkResources and improves the usability of 5772the resource manager by accepting as input a buffer containing the output 5773of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5774input buffer is not deleted by this interface so that it can be used by 5775the host later. See the ACPICA reference for details. 5776 5777Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5778(DSDT version < 2). The constant will be truncated and this warning 5779reflects that behavior. 5780 5781Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5782ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5783both get and set the new wake bit in these descriptors, separately from 5784the existing share bit. Reported by Aaron Lu. 5785 5786Interpreter: Fix Store() when an implicit conversion is not possible. For 5787example, in the cases such as a store of a string to an existing package 5788object, implement the store as a CopyObject(). This is a small departure 5789from the ACPI specification which states that the control method should 5790be 5791aborted in this case. However, the ASLTS suite depends on this behavior. 5792 5793Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5794macros: check if debug output is currently enabled as soon as possible to 5795minimize performance impact if debug is in fact not enabled. 5796 5797Source code restructuring: Cleanup to improve modularity. The following 5798new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5799psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5800Associated makefiles and project files have been updated. 5801 5802Changed an exception code for LoadTable operator. For the case where one 5803of the input strings is too long, change the returned exception code from 5804AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5805 5806Fixed a possible memory leak in dispatcher error path. On error, delete 5807the mutex object created during method mutex creation. Reported by 5808tim.gardner@canonical.com. 5809 5810Example Code and Data Size: These are the sizes for the OS-independent 5811acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5812debug version of the code includes the debug output trace mechanism and 5813has a much larger code and data size. 5814 5815 Previous Release: 5816 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5817 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5818 Current Release: 5819 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5820 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5821 5822 58232) iASL Compiler/Disassembler and Tools: 5824 5825iASL: Disallow a method call as argument to the ObjectType ASL operator. 5826This change tracks an errata to the ACPI 5.0 document. The AML grammar 5827will not allow the interpreter to differentiate between a method and a 5828method invocation when these are used as an argument to the ObjectType 5829operator. The ACPI specification change is to disallow a method 5830invocation 5831(UserTerm) for the ObjectType operator. 5832 5833Finish support for the TPM2 and CSRT tables in the headers, table 5834compiler, and disassembler. 5835 5836Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5837always expires immediately if the semaphore is not available. The 5838original 5839code was using a relative-time timeout, but sem_timedwait requires the 5840use 5841of an absolute time. 5842 5843iASL: Added a remark if the Timer() operator is used within a 32-bit 5844table. This operator returns a 64-bit time value that will be truncated 5845within a 32-bit table. 5846 5847iASL Source code restructuring: Cleanup to improve modularity. The 5848following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5849aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5850been updated. 5851 5852 5853---------------------------------------- 585414 November 2012. Summary of changes for version 20121114: 5855 58561) ACPICA Kernel-resident Subsystem: 5857 5858Implemented a performance enhancement for ACPI/AML Package objects. This 5859change greatly increases the performance of Package objects within the 5860interpreter. It changes the processing of reference counts for packages 5861by 5862optimizing for the most common case where the package sub-objects are 5863either Integers, Strings, or Buffers. Increases the overall performance 5864of 5865the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 58662X.) 5867Chao Guan. ACPICA BZ 943. 5868 5869Implemented and deployed common macros to extract flag bits from resource 5870descriptors. Improves readability and maintainability of the code. Fixes 5871a 5872problem with the UART serial bus descriptor for the number of data bits 5873flags (was incorrectly 2 bits, should be 3). 5874 5875Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5876of the macros and changed the SETx macros to the style of (destination, 5877source). Also added ACPI_CASTx companion macros. Lv Zheng. 5878 5879Example Code and Data Size: These are the sizes for the OS-independent 5880acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5881debug version of the code includes the debug output trace mechanism and 5882has a much larger code and data size. 5883 5884 Previous Release: 5885 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5886 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5887 Current Release: 5888 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5889 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5890 5891 58922) iASL Compiler/Disassembler and Tools: 5893 5894Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5895adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5896Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5897 5898Disassembler: Fixed a problem with external declaration generation. Fixes 5899a problem where an incorrect pathname could be generated for an external 5900declaration if the original reference to the object includes leading 5901carats (^). ACPICA BZ 984. 5902 5903Debugger: Completed a major update for the Disassemble<method> command. 5904This command was out-of-date and did not properly disassemble control 5905methods that had any reasonable complexity. This fix brings the command 5906up 5907to the same level as the rest of the disassembler. Adds one new file, 5908dmdeferred.c, which is existing code that is now common with the main 5909disassembler and the debugger disassemble command. ACPICA MZ 978. 5910 5911iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5912Newer versions of Bison emit this prototype, so moved the prototype out 5913of 5914the iASL header to where it is actually used in order to avoid a 5915duplicate 5916declaration. 5917 5918iASL/Tools: Standardized use of the stream I/O functions: 5919 1) Ensure check for I/O error after every fopen/fread/fwrite 5920 2) Ensure proper order of size/count arguments for fread/fwrite 5921 3) Use test of (Actual != Requested) after all fwrite, and most fread 5922 4) Standardize I/O error messages 5923Improves reliability and maintainability of the code. Bob Moore, Lv 5924Zheng. 5925ACPICA BZ 981. 5926 5927Disassembler: Prevent duplicate External() statements. During generation 5928of external statements, detect similar pathnames that are actually 5929duplicates such as these: 5930 External (\ABCD) 5931 External (ABCD) 5932Remove all leading '\' characters from pathnames during the external 5933statement generation so that duplicates will be detected and tossed. 5934ACPICA BZ 985. 5935 5936Tools: Replace low-level I/O with stream I/O functions. Replace 5937open/read/write/close with the stream I/O equivalents 5938fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5939Moore. 5940 5941AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5942name header so that AcpiXtract recognizes the output file/table. 5943 5944iASL: Remove obsolete -2 option flag. Originally intended to force the 5945compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5946and the entire concept is now obsolete. 5947 5948---------------------------------------- 594918 October 2012. Summary of changes for version 20121018: 5950 5951 59521) ACPICA Kernel-resident Subsystem: 5953 5954Updated support for the ACPI 5.0 MPST table. Fixes some problems 5955introduced by late changes to the table as it was added to the ACPI 5.0 5956specification. Includes header, disassembler, and data table compiler 5957support as well as a new version of the MPST template. 5958 5959AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 59605.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5961methods: _HID, _CID, and _UID. 5962 5963Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5964ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5965name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5966names for their various drivers. Affects the AcpiGetObjectInfo external 5967interface, and other internal interfaces as well. 5968 5969Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5970This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5971on machines that support non-aligned transfers. Optimizes for this case 5972rather than using a strncpy. With assistance from Zheng Lv. 5973 5974Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5975error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5976 5977Added a new debug print message for AML mutex objects that are force- 5978released. At control method termination, any currently acquired mutex 5979objects are force-released. Adds a new debug-only message for each one 5980that is released. 5981 5982Audited/updated all ACPICA return macros and the function debug depth 5983counter: 1) Ensure that all functions that use the various TRACE macros 5984also use the appropriate ACPICA return macros. 2) Ensure that all normal 5985return statements surround the return expression (value) with parens to 5986ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5987Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5988 5989Global source code changes/maintenance: All extra lines at the start and 5990end of each source file have been removed for consistency. Also, within 5991comments, all new sentences start with a single space instead of a double 5992space, again for consistency across the code base. 5993 5994Example Code and Data Size: These are the sizes for the OS-independent 5995acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5996debug version of the code includes the debug output trace mechanism and 5997has a much larger code and data size. 5998 5999 Previous Release: 6000 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6001 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6002 Current Release: 6003 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6004 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6005 6006 60072) iASL Compiler/Disassembler and Tools: 6008 6009AcpiExec: Improved the algorithm used for memory leak/corruption 6010detection. Added some intelligence to the code that maintains the global 6011list of allocated memory. The list is now ordered by allocated memory 6012address, significantly improving performance. When running AcpiExec on 6013the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 6014on the platform and/or the environment. Note, this performance 6015enhancement affects the AcpiExec utility only, not the kernel-resident 6016ACPICA code. 6017 6018Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 6019the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 6020incorrect table offset reported for invalid opcodes. Report the original 602132-bit value for bad ACPI_NAMEs (as well as the repaired name.) 6022 6023Disassembler: Enhanced the -vt option to emit the binary table data in 6024hex format to assist with debugging. 6025 6026Fixed a potential filename buffer overflow in osunixdir.c. Increased the 6027size of file structure. Colin Ian King. 6028 6029---------------------------------------- 603013 September 2012. Summary of changes for version 20120913: 6031 6032 60331) ACPICA Kernel-resident Subsystem: 6034 6035ACPI 5.0: Added two new notify types for the Hardware Error Notification 6036Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 6037and 6038MCE(6). 6039 6040Table Manager: Merged/removed duplicate code in the root table resize 6041functions. One function is external, the other is internal. Lv Zheng, 6042ACPICA 6043BZ 846. 6044 6045Makefiles: Completely removed the obsolete "Linux" makefiles under 6046acpica/generate/linux. These makefiles are obsolete and have been 6047replaced 6048by 6049the generic unix makefiles under acpica/generate/unix. 6050 6051Makefiles: Ensure that binary files always copied properly. Minor rule 6052change 6053to ensure that the final binary output files are always copied up to the 6054appropriate binary directory (bin32 or bin64.) 6055 6056Example Code and Data Size: These are the sizes for the OS-independent 6057acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6058debug 6059version of the code includes the debug output trace mechanism and has a 6060much 6061larger code and data size. 6062 6063 Previous Release: 6064 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6065 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6066 Current Release: 6067 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6068 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6069 6070 60712) iASL Compiler/Disassembler and Tools: 6072 6073Disassembler: Fixed a possible fault during the disassembly of resource 6074descriptors when a second parse is required because of the invocation of 6075external control methods within the table. With assistance from 6076adq@lidskialf.net. ACPICA BZ 976. 6077 6078iASL: Fixed a namepath optimization problem. An error can occur if the 6079parse 6080node that contains the namepath to be optimized does not have a parent 6081node 6082that is a named object. This change fixes the problem. 6083 6084iASL: Fixed a regression where the AML file is not deleted on errors. The 6085AML 6086output file should be deleted if there are any errors during the 6087compiler. 6088The 6089only exception is if the -f (force output) option is used. ACPICA BZ 974. 6090 6091iASL: Added a feature to automatically increase internal line buffer 6092sizes. 6093Via realloc(), automatically increase the internal line buffer sizes as 6094necessary to support very long source code lines. The current version of 6095the 6096preprocessor requires a buffer long enough to contain full source code 6097lines. 6098This change increases the line buffer(s) if the input lines go beyond the 6099current buffer size. This eliminates errors that occurred when a source 6100code 6101line was longer than the buffer. 6102 6103iASL: Fixed a problem with constant folding in method declarations. The 6104SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6105if a 6106Type3 opcode was used. 6107 6108Debugger: Improved command help support. For incorrect argument count, 6109display 6110full help for the command. For help command itself, allow an argument to 6111specify a command. 6112 6113Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6114errors during execution of the suite. Guan Chao. 6115 6116---------------------------------------- 611716 August 2012. Summary of changes for version 20120816: 6118 6119 61201) ACPICA Kernel-resident Subsystem: 6121 6122Removed all use of the deprecated _GTS and _BFS predefined methods. The 6123_GTS 6124(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6125deprecated and will probably be removed from the ACPI specification. 6126Windows 6127does not invoke them, and reportedly never will. The final nail in the 6128coffin 6129is that the ACPI specification states that these methods must be run with 6130interrupts off, which is not going to happen in a kernel interpreter. 6131Note: 6132Linux has removed all use of the methods also. It was discovered that 6133invoking these functions caused failures on some machines, probably 6134because 6135they were never tested since Windows does not call them. Affects two 6136external 6137interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6138ACPICA BZ 969. 6139 6140Implemented support for complex bit-packed buffers returned from the _PLD 6141(Physical Location of Device) predefined method. Adds a new external 6142interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6143C 6144structure. Note: C Bitfields cannot be used for this type of predefined 6145structure since the memory layout of individual bitfields is not defined 6146by 6147the C language. In addition, there are endian concerns where a compiler 6148will 6149change the bitfield ordering based on the machine type. The new ACPICA 6150interface eliminates these issues, and should be called after _PLD is 6151executed. ACPICA BZ 954. 6152 6153Implemented a change to allow a scope change to root (via "Scope (\)") 6154during 6155execution of module-level ASL code (code that is executed at table load 6156time.) Lin Ming. 6157 6158Added the Windows8/Server2012 string for the _OSI method. This change 6159adds 6160a 6161new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 61622012. 6163 6164Added header support for the new ACPI tables DBG2 (Debug Port Table Type 61652) 6166and CSRT (Core System Resource Table). 6167 6168Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6169names. This simplifies access to the buffers returned by these predefined 6170names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6171 6172GPE support: Removed an extraneous parameter from the various low-level 6173internal GPE functions. Tang Feng. 6174 6175Removed the linux makefiles from the unix packages. The generate/linux 6176makefiles are obsolete and have been removed from the unix tarball 6177release 6178packages. The replacement makefiles are under generate/unix, and there is 6179a 6180top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6181 6182Updates for Unix makefiles: 61831) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 61842) Update linker flags (move to end of command line) for AcpiExec 6185utility. 6186Guan Chao. 6187 6188Split ACPICA initialization functions to new file, utxfinit.c. Split from 6189utxface.c to improve modularity and reduce file size. 6190 6191Example Code and Data Size: These are the sizes for the OS-independent 6192acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6193debug version of the code includes the debug output trace mechanism and 6194has a 6195much larger code and data size. 6196 6197 Previous Release: 6198 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6199 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6200 Current Release: 6201 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6202 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6203 6204 62052) iASL Compiler/Disassembler and Tools: 6206 6207iASL: Fixed a problem with constant folding for fixed-length constant 6208expressions. The constant-folding code was not being invoked for constant 6209expressions that allow the use of type 3/4/5 opcodes to generate 6210constants 6211for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6212result 6213in the generation of invalid AML bytecode. ACPICA BZ 970. 6214 6215iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6216apparently automatically emit some of the necessary externals. This 6217change 6218handles these versions in order to eliminate generation warnings. 6219 6220Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6221 6222Disassembler: Add support to decode _PLD buffers. The decoded buffer 6223appears 6224within comments in the output file. 6225 6226Debugger: Fixed a regression with the "Threads" command where 6227AE_BAD_PARAMETER was always returned. 6228 6229---------------------------------------- 623011 July 2012. Summary of changes for version 20120711: 6231 62321) ACPICA Kernel-resident Subsystem: 6233 6234Fixed a possible fault in the return package object repair code. Fixes a 6235problem that can occur when a lone package object is wrapped with an 6236outer 6237package object in order to force conformance to the ACPI specification. 6238Can 6239affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6240_DLM, 6241_CSD, _PSD, _TSD. 6242 6243Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6244PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6245ARB_DIS bit must be implemented in the host-dependent C3 processor power 6246state 6247support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6248both 6249Intel and other vendors. (for Intel: ICH4-M and earlier) 6250 6251This change removes the code to disable/enable bus master arbitration 6252during 6253suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6254causes 6255resume problems on some machines. The change has been in use for over 6256seven 6257years within Linux. 6258 6259Implemented two new external interfaces to support host-directed dynamic 6260ACPI 6261table load and unload. They are intended to simplify the host 6262implementation 6263of hot-plug support: 6264 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6265 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6266table. 6267See the ACPICA reference for additional details. Adds one new file, 6268components/tables/tbxfload.c 6269 6270Implemented and deployed two new interfaces for errors and warnings that 6271are 6272known to be caused by BIOS/firmware issues: 6273 AcpiBiosError: Prints "ACPI Firmware Error" message. 6274 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6275Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6276table 6277and FADT errors. Additional deployment to be completed as appropriate in 6278the 6279future. The associated conditional macros are ACPI_BIOS_ERROR and 6280ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6281ACPICA 6282BZ 6283843. 6284 6285Implicit notify support: ensure that no memory allocation occurs within a 6286critical region. This fix moves a memory allocation outside of the time 6287that a 6288spinlock is held. Fixes issues on systems that do not allow this 6289behavior. 6290Jung-uk Kim. 6291 6292Split exception code utilities and tables into a new file, 6293utilities/utexcep.c 6294 6295Example Code and Data Size: These are the sizes for the OS-independent 6296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6297debug 6298version of the code includes the debug output trace mechanism and has a 6299much 6300larger code and data size. 6301 6302 Previous Release: 6303 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6304 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6305 Current Release: 6306 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6307 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6308 6309 63102) iASL Compiler/Disassembler and Tools: 6311 6312iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6313of 63140. Jung-uk Kim. 6315 6316Debugger: Enhanced the "tables" command to emit additional information 6317about 6318the current set of ACPI tables, including the owner ID and flags decode. 6319 6320Debugger: Reimplemented the "unload" command to use the new 6321AcpiUnloadParentTable external interface. This command was disable 6322previously 6323due to need for an unload interface. 6324 6325AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6326option 6327will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6328 6329---------------------------------------- 633020 June 2012. Summary of changes for version 20120620: 6331 6332 63331) ACPICA Kernel-resident Subsystem: 6334 6335Implemented support to expand the "implicit notify" feature to allow 6336multiple 6337devices to be notified by a single GPE. This feature automatically 6338generates a 6339runtime device notification in the absence of a BIOS-provided GPE control 6340method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6341notify is 6342provided by ACPICA for Windows compatibility, and is a workaround for 6343BIOS 6344AML 6345code errors. See the description of the AcpiSetupGpeForWake interface in 6346the 6347APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6348 6349Changed some comments and internal function names to simplify and ensure 6350correctness of the Linux code translation. No functional changes. 6351 6352Example Code and Data Size: These are the sizes for the OS-independent 6353acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6354debug 6355version of the code includes the debug output trace mechanism and has a 6356much 6357larger code and data size. 6358 6359 Previous Release: 6360 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6361 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6362 Current Release: 6363 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6364 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6365 6366 63672) iASL Compiler/Disassembler and Tools: 6368 6369Disassembler: Added support to emit short, commented descriptions for the 6370ACPI 6371predefined names in order to improve the readability of the disassembled 6372output. ACPICA BZ 959. Changes include: 6373 1) Emit descriptions for all standard predefined names (_INI, _STA, 6374_PRW, 6375etc.) 6376 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6377 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6378etc.) 6379 6380AcpiSrc: Fixed several long-standing Linux code translation issues. 6381Argument 6382descriptions in function headers are now translated properly to lower 6383case 6384and 6385underscores. ACPICA BZ 961. Also fixes translation problems such as 6386these: 6387(old -> new) 6388 i_aSL -> iASL 6389 00-7_f -> 00-7F 6390 16_k -> 16K 6391 local_fADT -> local_FADT 6392 execute_oSI -> execute_OSI 6393 6394iASL: Fixed a problem where null bytes were inadvertently emitted into 6395some 6396listing files. 6397 6398iASL: Added the existing debug options to the standard help screen. There 6399are 6400no longer two different help screens. ACPICA BZ 957. 6401 6402AcpiHelp: Fixed some typos in the various predefined name descriptions. 6403Also 6404expand some of the descriptions where appropriate. 6405 6406iASL: Fixed the -ot option (display compile times/statistics). Was not 6407working 6408properly for standard output; only worked for the debug file case. 6409 6410---------------------------------------- 641118 May 2012. Summary of changes for version 20120518: 6412 6413 64141) ACPICA Core Subsystem: 6415 6416Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6417defined 6418to block until asynchronous events such as notifies and GPEs have 6419completed. 6420Within ACPICA, it is only called before a notify or GPE handler is 6421removed/uninstalled. It also may be useful for the host OS within related 6422drivers such as the Embedded Controller driver. See the ACPICA reference 6423for 6424additional information. ACPICA BZ 868. 6425 6426ACPI Tables: Added a new error message for a possible overflow failure 6427during 6428the conversion of FADT 32-bit legacy register addresses to internal 6429common 643064- 6431bit GAS structure representation. The GAS has a one-byte "bit length" 6432field, 6433thus limiting the register length to 255 bits. ACPICA BZ 953. 6434 6435Example Code and Data Size: These are the sizes for the OS-independent 6436acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6437debug 6438version of the code includes the debug output trace mechanism and has a 6439much 6440larger code and data size. 6441 6442 Previous Release: 6443 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6444 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6445 Current Release: 6446 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6447 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6448 6449 64502) iASL Compiler/Disassembler and Tools: 6451 6452iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6453macro. 6454This keyword was added late in the ACPI 5.0 release cycle and was not 6455implemented until now. 6456 6457Disassembler: Added support for Operation Region externals. Adds missing 6458support for operation regions that are defined in another table, and 6459referenced locally via a Field or BankField ASL operator. Now generates 6460the 6461correct External statement. 6462 6463Disassembler: Several additional fixes for the External() statement 6464generation 6465related to some ASL operators. Also, order the External() statements 6466alphabetically in the disassembler output. Fixes the External() 6467generation 6468for 6469the Create* field, Alias, and Scope operators: 6470 1) Create* buffer field operators - fix type mismatch warning on 6471disassembly 6472 2) Alias - implement missing External support 6473 3) Scope - fix to make sure all necessary externals are emitted. 6474 6475iASL: Improved pathname support. For include files, merge the prefix 6476pathname 6477with the file pathname and eliminate unnecessary components. Convert 6478backslashes in all pathnames to forward slashes, for readability. Include 6479file 6480pathname changes affect both #include and Include() type operators. 6481 6482iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6483end 6484of a valid line by inserting a newline and then returning the EOF during 6485the 6486next call to GetNextLine. Prevents the line from being ignored due to EOF 6487condition. 6488 6489iASL: Implemented some changes to enhance the IDE support (-vi option.) 6490Error 6491and Warning messages are now correctly recognized for both the source 6492code 6493browser and the global error and warning counts. 6494 6495---------------------------------------- 649620 April 2012. Summary of changes for version 20120420: 6497 6498 64991) ACPICA Core Subsystem: 6500 6501Implemented support for multiple notify handlers. This change adds 6502support 6503to 6504allow multiple system and device notify handlers on Device, Thermal Zone, 6505and 6506Processor objects. This can simplify the host OS notification 6507implementation. 6508Also re-worked and restructured the entire notify support code to 6509simplify 6510handler installation, handler removal, notify event queuing, and notify 6511dispatch to handler(s). Note: there can still only be two global notify 6512handlers - one for system notifies and one for device notifies. There are 6513no 6514changes to the existing handler install/remove interfaces. Lin Ming, Bob 6515Moore, Rafael Wysocki. 6516 6517Fixed a regression in the package repair code where the object reference 6518count was calculated incorrectly. Regression was introduced in the commit 6519"Support to add Package wrappers". 6520 6521Fixed a couple possible memory leaks in the AML parser, in the error 6522recovery 6523path. Jesper Juhl, Lin Ming. 6524 6525Example Code and Data Size: These are the sizes for the OS-independent 6526acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6527debug version of the code includes the debug output trace mechanism and 6528has a 6529much larger code and data size. 6530 6531 Previous Release: 6532 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6533 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6534 Current Release: 6535 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6536 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6537 6538 65392) iASL Compiler/Disassembler and Tools: 6540 6541iASL: Fixed a problem with the resource descriptor support where the 6542length 6543of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6544included in cumulative descriptor offset, resulting in incorrect values 6545for 6546resource tags within resource descriptors appearing after a 6547StartDependent* 6548descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6549 6550iASL and Preprocessor: Implemented full support for the #line directive 6551to 6552correctly track original source file line numbers through the .i 6553preprocessor 6554output file - for error and warning messages. 6555 6556iASL: Expand the allowable byte constants for address space IDs. 6557Previously, 6558the allowable range was 0x80-0xFF (user-defined spaces), now the range is 65590x0A-0xFF to allow for custom and new IDs without changing the compiler. 6560 6561iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6562 6563iASL: Add option to completely disable the preprocessor (-Pn). 6564 6565iASL: Now emit all error/warning messages to standard error (stderr) by 6566default (instead of the previous stdout). 6567 6568ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6569Update 6570for resource descriptor offset fix above. Update/cleanup error output 6571routines. Enable and send iASL errors/warnings to an error logfile 6572(error.txt). Send all other iASL output to a logfile (compiler.txt). 6573Fixed 6574several extraneous "unrecognized operator" messages. 6575 6576---------------------------------------- 657720 March 2012. Summary of changes for version 20120320: 6578 6579 65801) ACPICA Core Subsystem: 6581 6582Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6583(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6584apparently 6585does not execute these methods, and therefore these methods are often 6586untested. It has been seen on some systems where the execution of these 6587methods causes errors and also prevents the machine from entering S5. It 6588is 6589therefore suggested that host operating systems do not execute these 6590methods 6591by default. In the future, perhaps these methods can be optionally 6592executed 6593based on the age of the system and/or what is the newest version of 6594Windows 6595that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6596and 6597AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6598Ming. 6599 6600Fixed a problem where the length of the local/common FADT was set too 6601early. 6602The local FADT table length cannot be set to the common length until the 6603original length has been examined. There is code that checks the table 6604length 6605and sets various fields appropriately. This can affect older machines 6606with 6607early FADT versions. For example, this can cause inadvertent writes to 6608the 6609CST_CNT register. Julian Anastasov. 6610 6611Fixed a mapping issue related to a physical table override. Use the 6612deferred 6613mapping mechanism for tables loaded via the physical override OSL 6614interface. 6615This allows for early mapping before the virtual memory manager is 6616available. 6617Thomas Renninger, Bob Moore. 6618 6619Enhanced the automatic return-object repair code: Repair a common problem 6620with 6621predefined methods that are defined to return a variable-length Package 6622of 6623sub-objects. If there is only one sub-object, some BIOS ASL code 6624mistakenly 6625simply returns the single object instead of a Package with one sub- 6626object. 6627This new support will repair this error by wrapping a Package object 6628around 6629the original object, creating the correct and expected Package with one 6630sub- 6631object. Names that can be repaired in this manner include: _ALR, _CSD, 6632_HPX, 6633_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6634939. 6635 6636Changed the exception code returned for invalid ACPI paths passed as 6637parameters to external interfaces such as AcpiEvaluateObject. Was 6638AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6639 6640Example Code and Data Size: These are the sizes for the OS-independent 6641acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6642debug 6643version of the code includes the debug output trace mechanism and has a 6644much 6645larger code and data size. 6646 6647 Previous Release: 6648 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6649 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6650 Current Release: 6651 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6652 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6653 6654 66552) iASL Compiler/Disassembler and Tools: 6656 6657iASL: Added the infrastructure and initial implementation of a integrated 6658C- 6659like preprocessor. This will simplify BIOS development process by 6660eliminating 6661the need for a separate preprocessing step during builds. On Windows, it 6662also 6663eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6664features including full #define() macro support are still under 6665development. 6666These preprocessor directives are supported: 6667 #define 6668 #elif 6669 #else 6670 #endif 6671 #error 6672 #if 6673 #ifdef 6674 #ifndef 6675 #include 6676 #pragma message 6677 #undef 6678 #warning 6679In addition, these new command line options are supported: 6680 -D <symbol> Define symbol for preprocessor use 6681 -li Create preprocessed output file (*.i) 6682 -P Preprocess only and create preprocessor output file (*.i) 6683 6684Table Compiler: Fixed a problem where the equals operator within an 6685expression 6686did not work properly. 6687 6688Updated iASL to use the current versions of Bison/Flex. Updated the 6689Windows 6690project file to invoke these tools from the standard location. ACPICA BZ 6691904. 6692Versions supported: 6693 Flex for Windows: V2.5.4 6694 Bison for Windows: V2.4.1 6695 6696---------------------------------------- 669715 February 2012. Summary of changes for version 20120215: 6698 6699 67001) ACPICA Core Subsystem: 6701 6702There have been some major changes to the sleep/wake support code, as 6703described below (a - e). 6704 6705a) The AcpiLeaveSleepState has been split into two interfaces, similar to 6706AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 6707AcpiLeaveSleepStatePrep. This allows the host to perform actions between 6708the 6709time the _BFS method is called and the _WAK method is called. NOTE: all 6710hosts 6711must update their wake/resume code or else sleep/wake will not work 6712properly. 6713Rafael Wysocki. 6714 6715b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 6716_WAK 6717method. Some machines require that the GPEs are enabled before the _WAK 6718method 6719is executed. Thomas Renninger. 6720 6721c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 6722bit. 6723Some BIOS code assumes that WAK_STS will be cleared on resume and use it 6724to 6725determine whether the system is rebooting or resuming. Matthew Garrett. 6726 6727d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 6728Sleep) to 6729match the ACPI specification requirement. Rafael Wysocki. 6730 6731e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 6732registers within the V5 FADT. This support adds two new files: 6733hardware/hwesleep.c implements the support for the new registers. Moved 6734all 6735sleep/wake external interfaces to hardware/hwxfsleep.c. 6736 6737 6738Added a new OSL interface for ACPI table overrides, 6739AcpiOsPhysicalTableOverride. This interface allows the host to override a 6740table via a physical address, instead of the logical address required by 6741AcpiOsTableOverride. This simplifies the host implementation. Initial 6742implementation by Thomas Renninger. The ACPICA implementation creates a 6743single 6744shared function for table overrides that attempts both a logical and a 6745physical override. 6746 6747Expanded the OSL memory read/write interfaces to 64-bit data 6748(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6749transfer support for GAS register structures passed to AcpiRead and 6750AcpiWrite. 6751 6752Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6753custom 6754build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6755model. 6756See the ACPICA reference for details. ACPICA BZ 942. This option removes 6757about 675810% of the code and 5% of the static data, and the following hardware 6759ACPI 6760features become unavailable: 6761 PM Event and Control registers 6762 SCI interrupt (and handler) 6763 Fixed Events 6764 General Purpose Events (GPEs) 6765 Global Lock 6766 ACPI PM timer 6767 FACS table (Waking vectors and Global Lock) 6768 6769Updated the unix tarball directory structure to match the ACPICA git 6770source 6771tree. This ensures that the generic unix makefiles work properly (in 6772generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6773867. 6774 6775Updated the return value of the _REV predefined method to integer value 5 6776to 6777reflect ACPI 5.0 support. 6778 6779Moved the external ACPI PM timer interface prototypes to the public 6780acpixf.h 6781file where they belong. 6782 6783Example Code and Data Size: These are the sizes for the OS-independent 6784acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6785debug 6786version of the code includes the debug output trace mechanism and has a 6787much 6788larger code and data size. 6789 6790 Previous Release: 6791 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6792 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6793 Current Release: 6794 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6795 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6796 6797 67982) iASL Compiler/Disassembler and Tools: 6799 6800Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6801descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6802incorrectly displayed. 6803 6804AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6805specification. 6806 6807---------------------------------------- 680811 January 2012. Summary of changes for version 20120111: 6809 6810 68111) ACPICA Core Subsystem: 6812 6813Implemented a new mechanism to allow host device drivers to check for 6814address 6815range conflicts with ACPI Operation Regions. Both SystemMemory and 6816SystemIO 6817address spaces are supported. A new external interface, 6818AcpiCheckAddressRange, 6819allows drivers to check an address range against the ACPI namespace. See 6820the 6821ACPICA reference for additional details. Adds one new file, 6822utilities/utaddress.c. Lin Ming, Bob Moore. 6823 6824Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6825Control 6826and 6827Status registers, update the ACPI 5.0 flags, and update internal data 6828structures to handle an FADT larger than 256 bytes. The size of the ACPI 68295.0 6830FADT is 268 bytes. 6831 6832Updated all ACPICA copyrights and signons to 2012. Added the 2012 6833copyright to 6834all module headers and signons, including the standard Linux header. This 6835affects virtually every file in the ACPICA core subsystem, iASL compiler, 6836and 6837all ACPICA utilities. 6838 6839Example Code and Data Size: These are the sizes for the OS-independent 6840acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6841debug 6842version of the code includes the debug output trace mechanism and has a 6843much 6844larger code and data size. 6845 6846 Previous Release: 6847 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6848 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6849 Current Release: 6850 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6851 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6852 6853 68542) iASL Compiler/Disassembler and Tools: 6855 6856Disassembler: fixed a problem with the automatic resource tag generation 6857support. Fixes a problem where the resource tags are inadvertently not 6858constructed if the table being disassembled contains external references 6859to 6860control methods. Moved the actual construction of the tags to after the 6861final 6862namespace is constructed (after 2nd parse is invoked due to external 6863control 6864method references.) ACPICA BZ 941. 6865 6866Table Compiler: Make all "generic" operators caseless. These are the 6867operators 6868like UINT8, String, etc. Making these caseless improves ease-of-use. 6869ACPICA BZ 6870934. 6871 6872---------------------------------------- 687323 November 2011. Summary of changes for version 20111123: 6874 68750) ACPI 5.0 Support: 6876 6877This release contains full support for the ACPI 5.0 specification, as 6878summarized below. 6879 6880Reduced Hardware Support: 6881------------------------- 6882 6883This support allows for ACPI systems without the usual ACPI hardware. 6884This 6885support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6886will 6887not attempt to initialize or use any of the usual ACPI hardware. Note, 6888when 6889this flag is set, all of the following ACPI hardware is assumed to be not 6890present and is not initialized or accessed: 6891 6892 General Purpose Events (GPEs) 6893 Fixed Events (PM1a/PM1b and PM Control) 6894 Power Management Timer and Console Buttons (power/sleep) 6895 Real-time Clock Alarm 6896 Global Lock 6897 System Control Interrupt (SCI) 6898 The FACS is assumed to be non-existent 6899 6900ACPI Tables: 6901------------ 6902 6903All new tables and updates to existing tables are fully supported in the 6904ACPICA headers (for use by device drivers), the disassembler, and the 6905iASL 6906Data Table Compiler. ACPI 5.0 defines these new tables: 6907 6908 BGRT /* Boot Graphics Resource Table */ 6909 DRTM /* Dynamic Root of Trust for Measurement table */ 6910 FPDT /* Firmware Performance Data Table */ 6911 GTDT /* Generic Timer Description Table */ 6912 MPST /* Memory Power State Table */ 6913 PCCT /* Platform Communications Channel Table */ 6914 PMTT /* Platform Memory Topology Table */ 6915 RASF /* RAS Feature table */ 6916 6917Operation Regions/SpaceIDs: 6918--------------------------- 6919 6920All new operation regions are fully supported by the iASL compiler, the 6921disassembler, and the ACPICA runtime code (for dispatch to region 6922handlers.) 6923The new operation region Space IDs are: 6924 6925 GeneralPurposeIo 6926 GenericSerialBus 6927 6928Resource Descriptors: 6929--------------------- 6930 6931All new ASL resource descriptors are fully supported by the iASL 6932compiler, 6933the 6934ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6935(including 6936all new predefined resource tags). New descriptors are: 6937 6938 FixedDma 6939 GpioIo 6940 GpioInt 6941 I2cSerialBus 6942 SpiSerialBus 6943 UartSerialBus 6944 6945ASL/AML Operators, New and Modified: 6946------------------------------------ 6947 6948One new operator is added, the Connection operator, which is used to 6949associate 6950a GeneralPurposeIo or GenericSerialBus resource descriptor with 6951individual 6952field objects within an operation region. Several new protocols are 6953associated 6954with the AccessAs operator. All are fully supported by the iASL compiler, 6955disassembler, and runtime ACPICA AML interpreter: 6956 6957 Connection // Declare Field Connection 6958attributes 6959 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6960 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6961Protocol 6962 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6963 RawDataBuffer // Data type for Vendor Data 6964fields 6965 6966Predefined ASL/AML Objects: 6967--------------------------- 6968 6969All new predefined objects/control-methods are supported by the iASL 6970compiler 6971and the ACPICA runtime validation/repair (arguments and return values.) 6972New 6973predefined names include the following: 6974 6975Standard Predefined Names (Objects or Control Methods): 6976 _AEI, _CLS, _CPC, _CWS, _DEP, 6977 _DLM, _EVT, _GCP, _CRT, _GWS, 6978 _HRV, _PRE, _PSE, _SRT, _SUB. 6979 6980Resource Tags (Names used to access individual fields within resource 6981descriptors): 6982 _DBT, _DPL, _DRS, _END, _FLC, 6983 _IOR, _LIN, _MOD, _PAR, _PHA, 6984 _PIN, _PPI, _POL, _RXL, _SLV, 6985 _SPE, _STB, _TXL, _VEN. 6986 6987ACPICA External Interfaces: 6988--------------------------- 6989 6990Several new interfaces have been defined for use by ACPI-related device 6991drivers and other host OS services: 6992 6993AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6994to 6995acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6996provided by the BIOS. They are intended to be used in conjunction with 6997the 6998ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6999mutual exclusion with the AML code/interpreter. 7000 7001AcpiGetEventResources: Returns the (formatted) resource descriptors as 7002defined 7003by the ACPI 5.0 _AEI object (ACPI Event Information). This object 7004provides 7005resource descriptors associated with hardware-reduced platform events, 7006similar 7007to the AcpiGetCurrentResources interface. 7008 7009Operation Region Handlers: For General Purpose IO and Generic Serial Bus 7010operation regions, information about the Connection() object and any 7011optional 7012length information is passed to the region handler within the Context 7013parameter. 7014 7015AcpiBufferToResource: This interface converts a raw AML buffer containing 7016a 7017resource template or resource descriptor to the ACPI_RESOURCE internal 7018format 7019suitable for use by device drivers. Can be used by an operation region 7020handler 7021to convert the Connection() buffer object into a ACPI_RESOURCE. 7022 7023Miscellaneous/Tools/TestSuites: 7024------------------------------- 7025 7026Support for extended _HID names (Four alpha characters instead of three). 7027Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 7028Support for ACPI 5.0 features in the ASLTS test suite. 7029Fully updated documentation (ACPICA and iASL reference documents.) 7030 7031ACPI Table Definition Language: 7032------------------------------- 7033 7034Support for this language was implemented and released as a subsystem of 7035the 7036iASL compiler in 2010. (See the iASL compiler User Guide.) 7037 7038 7039Non-ACPI 5.0 changes for this release: 7040-------------------------------------- 7041 70421) ACPICA Core Subsystem: 7043 7044Fix a problem with operation region declarations where a failure can 7045occur 7046if 7047the region name and an argument that evaluates to an object (such as the 7048region address) are in different namespace scopes. Lin Ming, ACPICA BZ 7049937. 7050 7051Do not abort an ACPI table load if an invalid space ID is found within. 7052This 7053will be caught later if the offending method is executed. ACPICA BZ 925. 7054 7055Fixed an issue with the FFixedHW space ID where the ID was not always 7056recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 7057 7058Fixed a problem with the 32-bit generation of the unix-specific OSL 7059(osunixxf.c). Lin Ming, ACPICA BZ 936. 7060 7061Several changes made to enable generation with the GCC 4.6 compiler. 7062ACPICA BZ 7063935. 7064 7065New error messages: Unsupported I/O requests (not 8/16/32 bit), and 7066Index/Bank 7067field registers out-of-range. 7068 70692) iASL Compiler/Disassembler and Tools: 7070 7071iASL: Implemented the __PATH__ operator, which returns the full pathname 7072of 7073the current source file. 7074 7075AcpiHelp: Automatically display expanded keyword information for all ASL 7076operators. 7077 7078Debugger: Add "Template" command to disassemble/dump resource template 7079buffers. 7080 7081Added a new master script to generate and execute the ASLTS test suite. 7082Automatically handles 32- and 64-bit generation. See tests/aslts.sh 7083 7084iASL: Fix problem with listing generation during processing of the 7085Switch() 7086operator where AML listing was disabled until the entire Switch block was 7087completed. 7088 7089iASL: Improve support for semicolon statement terminators. Fix "invalid 7090character" message for some cases when the semicolon is used. Semicolons 7091are 7092now allowed after every <Term> grammar element. ACPICA BZ 927. 7093 7094iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7095923. 7096 7097Disassembler: Fix problem with disassembly of the DataTableRegion 7098operator 7099where an inadvertent "Unhandled deferred opcode" message could be 7100generated. 7101 71023) Example Code and Data Size 7103 7104These are the sizes for the OS-independent acpica.lib produced by the 7105Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7106includes the debug output trace mechanism and has a much larger code and 7107data 7108size. 7109 7110 Previous Release: 7111 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7112 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7113 Current Release: 7114 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7115 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7116 7117---------------------------------------- 711822 September 2011. Summary of changes for version 20110922: 7119 71200) ACPI 5.0 News: 7121 7122Support for ACPI 5.0 in ACPICA has been underway for several months and 7123will 7124be released at the same time that ACPI 5.0 is officially released. 7125 7126The ACPI 5.0 specification is on track for release in the next few 7127months. 7128 71291) ACPICA Core Subsystem: 7130 7131Fixed a problem where the maximum sleep time for the Sleep() operator was 7132intended to be limited to two seconds, but was inadvertently limited to 713320 7134seconds instead. 7135 7136Linux and Unix makefiles: Added header file dependencies to ensure 7137correct 7138generation of ACPICA core code and utilities. Also simplified the 7139makefiles 7140considerably through the use of the vpath variable to specify search 7141paths. 7142ACPICA BZ 924. 7143 71442) iASL Compiler/Disassembler and Tools: 7145 7146iASL: Implemented support to check the access length for all fields 7147created to 7148access named Resource Descriptor fields. For example, if a resource field 7149is 7150defined to be two bits, a warning is issued if a CreateXxxxField() is 7151used 7152with an incorrect bit length. This is implemented for all current 7153resource 7154descriptor names. ACPICA BZ 930. 7155 7156Disassembler: Fixed a byte ordering problem with the output of 24-bit and 715756- 7158bit integers. 7159 7160iASL: Fixed a couple of issues associated with variable-length package 7161objects. 1) properly handle constants like One, Ones, Zero -- do not make 7162a 7163VAR_PACKAGE when these are used as a package length. 2) Allow the 7164VAR_PACKAGE 7165opcode (in addition to PACKAGE) when validating object types for 7166predefined 7167names. 7168 7169iASL: Emit statistics for all output files (instead of just the ASL input 7170and 7171AML output). Includes listings, hex files, etc. 7172 7173iASL: Added -G option to the table compiler to allow the compilation of 7174custom 7175ACPI tables. The only part of a table that is required is the standard 717636- 7177byte 7178ACPI header. 7179 7180AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7181headers), 7182which also adds correct 64-bit support. Also, now all output filenames 7183are 7184completely lower case. 7185 7186AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7187loading table files. A warning is issued for any such tables. The only 7188exception is an FADT. This also fixes a possible fault when attempting to 7189load 7190non-AML tables. ACPICA BZ 932. 7191 7192AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7193a 7194missing table terminator could cause a fault when using the -p option. 7195 7196AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7197statistics. 7198 71993) Example Code and Data Size 7200 7201These are the sizes for the OS-independent acpica.lib produced by the 7202Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7203includes the debug output trace mechanism and has a much larger code and 7204data 7205size. 7206 7207 Previous Release (VC 9.0): 7208 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7209 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7210 Current Release (VC 9.0): 7211 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7212 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7213 7214 7215---------------------------------------- 721623 June 2011. Summary of changes for version 20110623: 7217 72181) ACPI CA Core Subsystem: 7219 7220Updated the predefined name repair mechanism to not attempt repair of a 7221_TSS 7222return object if a _PSS object is present. We can only sort the _TSS 7223return 7224package if there is no _PSS within the same scope. This is because if 7225_PSS 7226is 7227present, the ACPI specification dictates that the _TSS Power Dissipation 7228field 7229is to be ignored, and therefore some BIOSs leave garbage values in the 7230_TSS 7231Power field(s). In this case, it is best to just return the _TSS package 7232as- 7233is. Reported by, and fixed with assistance from Fenghua Yu. 7234 7235Added an option to globally disable the control method return value 7236validation 7237and repair. This runtime option can be used to disable return value 7238repair 7239if 7240this is causing a problem on a particular machine. Also added an option 7241to 7242AcpiExec (-dr) to set this disable flag. 7243 7244All makefiles and project files: Major changes to improve generation of 7245ACPICA 7246tools. ACPICA BZ 912: 7247 Reduce default optimization levels to improve compatibility 7248 For Linux, add strict-aliasing=0 for gcc 4 7249 Cleanup and simplify use of command line defines 7250 Cleanup multithread library support 7251 Improve usage messages 7252 7253Linux-specific header: update handling of THREAD_ID and pthread. For the 725432- 7255bit case, improve casting to eliminate possible warnings, especially with 7256the 7257acpica tools. 7258 7259Example Code and Data Size: These are the sizes for the OS-independent 7260acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7261debug 7262version of the code includes the debug output trace mechanism and has a 7263much 7264larger code and data size. 7265 7266 Previous Release (VC 9.0): 7267 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7268 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7269 Current Release (VC 9.0): 7270 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7271 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7272 72732) iASL Compiler/Disassembler and Tools: 7274 7275With this release, a new utility named "acpihelp" has been added to the 7276ACPICA 7277package. This utility summarizes the ACPI specification chapters for the 7278ASL 7279and AML languages. It generates under Linux/Unix as well as Windows, and 7280provides the following functionality: 7281 Find/display ASL operator(s) -- with description and syntax. 7282 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7283 Find/display ACPI predefined name(s) -- with description, number 7284 of arguments, and the return value data type. 7285 Find/display AML opcode name(s) -- with opcode, arguments, and 7286grammar. 7287 Decode/display AML opcode -- with opcode name, arguments, and 7288grammar. 7289 7290Service Layers: Make multi-thread support configurable. Conditionally 7291compile 7292the multi-thread support so that threading libraries will not be linked 7293if 7294not 7295necessary. The only tool that requires multi-thread support is AcpiExec. 7296 7297iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7298of 7299Bison appear to want the interface to yyerror to be a const char * (or at 7300least this is a problem when generating iASL on some systems.) ACPICA BZ 7301923 7302Pierre Lejeune. 7303 7304Tools: Fix for systems where O_BINARY is not defined. Only used for 7305Windows 7306versions of the tools. 7307 7308---------------------------------------- 730927 May 2011. Summary of changes for version 20110527: 7310 73111) ACPI CA Core Subsystem: 7312 7313ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7314table 7315signature. Now, only allow SSDT, OEMx, and a null signature. History: 7316 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7317 (PSDT is now obsolete.) 7318 2) We added support for OEMx tables, signature "OEM" plus a fourth 7319 "don't care" character. 7320 3) Valid tables were encountered with a null signature, so we just 7321 gave up on validating the signature, (05/2008). 7322 4) We encountered non-AML tables such as the MADT, which caused 7323 interpreter errors and kernel faults. So now, we once again allow 7324 only SSDT, OEMx, and now, also a null signature. (05/2011). 7325 7326Added the missing _TDL predefined name to the global name list in order 7327to 7328enable validation. Affects both the core ACPICA code and the iASL 7329compiler. 7330 7331Example Code and Data Size: These are the sizes for the OS-independent 7332acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7333debug 7334version of the code includes the debug output trace mechanism and has a 7335much 7336larger code and data size. 7337 7338 Previous Release (VC 9.0): 7339 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7340 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7341 Current Release (VC 9.0): 7342 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7343 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7344 73452) iASL Compiler/Disassembler and Tools: 7346 7347Debugger/AcpiExec: Implemented support for "complex" method arguments on 7348the 7349debugger command line. This adds support beyond simple integers -- 7350including 7351Strings, Buffers, and Packages. Includes support for nested packages. 7352Increased the default command line buffer size to accommodate these 7353arguments. 7354See the ACPICA reference for details and syntax. ACPICA BZ 917. 7355 7356Debugger/AcpiExec: Implemented support for "default" method arguments for 7357the 7358Execute/Debug command. Now, the debugger will always invoke a control 7359method 7360with the required number of arguments -- even if the command line 7361specifies 7362none or insufficient arguments. It uses default integer values for any 7363missing 7364arguments. Also fixes a bug where only six method arguments maximum were 7365supported instead of the required seven. 7366 7367Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7368and 7369also return status in order to prevent buffer overruns. See the ACPICA 7370reference for details and syntax. ACPICA BZ 921 7371 7372iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7373makefiles to simplify support for the two different but similar parser 7374generators, bison and yacc. 7375 7376Updated the generic unix makefile for gcc 4. The default gcc version is 7377now 7378expected to be 4 or greater, since options specific to gcc 4 are used. 7379 7380---------------------------------------- 738113 April 2011. Summary of changes for version 20110413: 7382 73831) ACPI CA Core Subsystem: 7384 7385Implemented support to execute a so-called "orphan" _REG method under the 7386EC 7387device. This change will force the execution of a _REG method underneath 7388the 7389EC 7390device even if there is no corresponding operation region of type 7391EmbeddedControl. Fixes a problem seen on some machines and apparently is 7392compatible with Windows behavior. ACPICA BZ 875. 7393 7394Added more predefined methods that are eligible for automatic NULL 7395package 7396element removal. This change adds another group of predefined names to 7397the 7398list 7399of names that can be repaired by having NULL package elements dynamically 7400removed. This group are those methods that return a single variable- 7401length 7402package containing simple data types such as integers, buffers, strings. 7403This 7404includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7405_PSL, 7406_Sx, 7407and _TZD. ACPICA BZ 914. 7408 7409Split and segregated all internal global lock functions to a new file, 7410evglock.c. 7411 7412Updated internal address SpaceID for DataTable regions. Moved this 7413internal 7414space 7415id in preparation for ACPI 5.0 changes that will include some new space 7416IDs. 7417This 7418change should not affect user/host code. 7419 7420Example Code and Data Size: These are the sizes for the OS-independent 7421acpica.lib 7422produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7423version of 7424the code includes the debug output trace mechanism and has a much larger 7425code 7426and 7427data size. 7428 7429 Previous Release (VC 9.0): 7430 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7431 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7432 Current Release (VC 9.0): 7433 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7434 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7435 74362) iASL Compiler/Disassembler and Tools: 7437 7438iASL/DTC: Major update for new grammar features. Allow generic data types 7439in 7440custom ACPI tables. Field names are now optional. Any line can be split 7441to 7442multiple lines using the continuation char (\). Large buffers now use 7443line- 7444continuation character(s) and no colon on the continuation lines. See the 7445grammar 7446update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7447Moore. 7448 7449iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7450statements. 7451Since the parser stuffs a "zero" as the return value for these statements 7452(due 7453to 7454the underlying AML grammar), they were seen as "return with value" by the 7455iASL 7456semantic checking. They are now seen correctly as "null" return 7457statements. 7458 7459iASL: Check if a_REG declaration has a corresponding Operation Region. 7460Adds a 7461check for each _REG to ensure that there is in fact a corresponding 7462operation 7463region declaration in the same scope. If not, the _REG method is not very 7464useful 7465since it probably won't be executed. ACPICA BZ 915. 7466 7467iASL/DTC: Finish support for expression evaluation. Added a new 7468expression 7469parser 7470that implements c-style operator precedence and parenthesization. ACPICA 7471bugzilla 7472908. 7473 7474Disassembler/DTC: Remove support for () and <> style comments in data 7475tables. 7476Now 7477that DTC has full expression support, we don't want to have comment 7478strings 7479that 7480start with a parentheses or a less-than symbol. Now, only the standard /* 7481and 7482// 7483comments are supported, as well as the bracket [] comments. 7484 7485AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7486"unusual" 7487headers in the acpidump file. Update the header validation to support 7488these 7489tables. Problem introduced in previous AcpiXtract version in the change 7490to 7491support "wrong checksum" error messages emitted by acpidump utility. 7492 7493iASL: Add a * option to generate all template files (as a synonym for 7494ALL) 7495as 7496in 7497"iasl -T *" or "iasl -T ALL". 7498 7499iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7500completely 7501abort the compiler on "fatal" errors, simply should abort the current 7502compile. 7503This allows multiple compiles with a single (possibly wildcard) compiler 7504invocation. 7505 7506---------------------------------------- 750716 March 2011. Summary of changes for version 20110316: 7508 75091) ACPI CA Core Subsystem: 7510 7511Fixed a problem caused by a _PRW method appearing at the namespace root 7512scope 7513during the setup of wake GPEs. A fault could occur if a _PRW directly 7514under 7515the 7516root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7517 7518Implemented support for "spurious" Global Lock interrupts. On some 7519systems, a 7520global lock interrupt can occur without the pending flag being set. Upon 7521a 7522GL 7523interrupt, we now ensure that a thread is actually waiting for the lock 7524before 7525signaling GL availability. Rafael Wysocki, Bob Moore. 7526 7527Example Code and Data Size: These are the sizes for the OS-independent 7528acpica.lib 7529produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7530version of 7531the code includes the debug output trace mechanism and has a much larger 7532code 7533and 7534data size. 7535 7536 Previous Release (VC 9.0): 7537 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7538 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7539 Current Release (VC 9.0): 7540 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7541 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7542 75432) iASL Compiler/Disassembler and Tools: 7544 7545Implemented full support for the "SLIC" ACPI table. Includes support in 7546the 7547header files, disassembler, table compiler, and template generator. Bob 7548Moore, 7549Lin Ming. 7550 7551AcpiXtract: Correctly handle embedded comments and messages from 7552AcpiDump. 7553Apparently some or all versions of acpidump will occasionally emit a 7554comment 7555like 7556"Wrong checksum", etc., into the dump file. This was causing problems for 7557AcpiXtract. ACPICA BZ 905. 7558 7559iASL: Fix the Linux makefile by removing an inadvertent double file 7560inclusion. 7561ACPICA BZ 913. 7562 7563AcpiExec: Update installation of operation region handlers. Install one 7564handler 7565for a user-defined address space. This is used by the ASL test suite 7566(ASLTS). 7567 7568---------------------------------------- 756911 February 2011. Summary of changes for version 20110211: 7570 75711) ACPI CA Core Subsystem: 7572 7573Added a mechanism to defer _REG methods for some early-installed 7574handlers. 7575Most user handlers should be installed before call to 7576AcpiEnableSubsystem. 7577However, Event handlers and region handlers should be installed after 7578AcpiInitializeObjects. Override handlers for the "default" regions should 7579be 7580installed early, however. This change executes all _REG methods for the 7581default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7582chicken/egg issues between them. ACPICA BZ 848. 7583 7584Implemented an optimization for GPE detection. This optimization will 7585simply 7586ignore GPE registers that contain no enabled GPEs -- there is no need to 7587read the register since this information is available internally. This 7588becomes more important on machines with a large GPE space. ACPICA 7589bugzilla 7590884. Lin Ming. Suggestion from Joe Liu. 7591 7592Removed all use of the highly unreliable FADT revision field. The 7593revision 7594number in the FADT has been found to be completely unreliable and cannot 7595be 7596trusted. Only the actual table length can be used to infer the version. 7597This 7598change updates the ACPICA core and the disassembler so that both no 7599longer 7600even look at the FADT version and instead depend solely upon the FADT 7601length. 7602 7603Fix an unresolved name issue for the no-debug and no-error-message source 7604generation cases. The _AcpiModuleName was left undefined in these cases, 7605but 7606it is actually needed as a parameter to some interfaces. Define 7607_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7608 7609Split several large files (makefiles and project files updated) 7610 utglobal.c -> utdecode.c 7611 dbcomds.c -> dbmethod.c dbnames.c 7612 dsopcode.c -> dsargs.c dscontrol.c 7613 dsload.c -> dsload2.c 7614 aslanalyze.c -> aslbtypes.c aslwalks.c 7615 7616Example Code and Data Size: These are the sizes for the OS-independent 7617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7618debug version of the code includes the debug output trace mechanism and 7619has 7620a much larger code and data size. 7621 7622 Previous Release (VC 9.0): 7623 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7624 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7625 Current Release (VC 9.0): 7626 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7627 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7628 76292) iASL Compiler/Disassembler and Tools: 7630 7631iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7632These are useful C-style macros with the standard definitions. ACPICA 7633bugzilla 898. 7634 7635iASL/DTC: Added support for integer expressions and labels. Support for 7636full 7637expressions for all integer fields in all ACPI tables. Support for labels 7638in 7639"generic" portions of tables such as UEFI. See the iASL reference manual. 7640 7641Debugger: Added a command to display the status of global handlers. The 7642"handlers" command will display op region, fixed event, and miscellaneous 7643global handlers. installation status -- and for op regions, whether 7644default 7645or user-installed handler will be used. 7646 7647iASL: Warn if reserved method incorrectly returns a value. Many 7648predefined 7649names are defined such that they do not return a value. If implemented as 7650a 7651method, issue a warning if such a name explicitly returns a value. ACPICA 7652Bugzilla 855. 7653 7654iASL: Added detection of GPE method name conflicts. Detects a conflict 7655where 7656there are two GPE methods of the form _Lxy and _Exy in the same scope. 7657(For 7658example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7659 7660iASL/DTC: Fixed a couple input scanner issues with comments and line 7661numbers. Comment remover could get confused and miss a comment ending. 7662Fixed 7663a problem with line counter maintenance. 7664 7665iASL/DTC: Reduced the severity of some errors from fatal to error. There 7666is 7667no need to abort on simple errors within a field definition. 7668 7669Debugger: Simplified the output of the help command. All help output now 7670in 7671a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7672 7673---------------------------------------- 767412 January 2011. Summary of changes for version 20110112: 7675 76761) ACPI CA Core Subsystem: 7677 7678Fixed a race condition between method execution and namespace walks that 7679can 7680possibly cause a fault. The problem was apparently introduced in version 768120100528 as a result of a performance optimization that reduces the 7682number 7683of 7684namespace walks upon method exit by using the delete_namespace_subtree 7685function instead of the delete_namespace_by_owner function used 7686previously. 7687Bug is a missing namespace lock in the delete_namespace_subtree function. 7688dana.myers@oracle.com 7689 7690Fixed several issues and a possible fault with the automatic "serialized" 7691method support. History: This support changes a method to "serialized" on 7692the 7693fly if the method generates an AE_ALREADY_EXISTS error, indicating the 7694possibility that it cannot handle reentrancy. This fix repairs a couple 7695of 7696issues seen in the field, especially on machines with many cores: 7697 7698 1) Delete method children only upon the exit of the last thread, 7699 so as to not delete objects out from under other running threads 7700 (and possibly causing a fault.) 7701 2) Set the "serialized" bit for the method only upon the exit of the 7702 Last thread, so as to not cause deadlock when running threads 7703 attempt to exit. 7704 3) Cleanup the use of the AML "MethodFlags" and internal method flags 7705 so that there is no longer any confusion between the two. 7706 7707 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 7708 7709Debugger: Now lock the namespace for duration of a namespace dump. 7710Prevents 7711issues if the namespace is changing dynamically underneath the debugger. 7712Especially affects temporary namespace nodes, since the debugger displays 7713these also. 7714 7715Updated the ordering of include files. The ACPICA headers should appear 7716before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 7717set 7718any necessary compiler-specific defines, etc. Affects the ACPI-related 7719tools 7720and utilities. 7721 7722Updated all ACPICA copyrights and signons to 2011. Added the 2011 7723copyright 7724to all module headers and signons, including the Linux header. This 7725affects 7726virtually every file in the ACPICA core subsystem, iASL compiler, and all 7727utilities. 7728 7729Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 7730project files for VC++ 6.0 are now obsolete. New project files can be 7731found 7732under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 7733details. 7734 7735Example Code and Data Size: These are the sizes for the OS-independent 7736acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7737debug version of the code includes the debug output trace mechanism and 7738has a 7739much larger code and data size. 7740 7741 Previous Release (VC 6.0): 7742 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7743 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7744 Current Release (VC 9.0): 7745 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7746 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7747 77482) iASL Compiler/Disassembler and Tools: 7749 7750iASL: Added generic data types to the Data Table compiler. Add "generic" 7751data 7752types such as UINT32, String, Unicode, etc., to simplify the generation 7753of 7754platform-defined tables such as UEFI. Lin Ming. 7755 7756iASL: Added listing support for the Data Table Compiler. Adds listing 7757support 7758(-l) to display actual binary output for each line of input code. 7759 7760---------------------------------------- 776109 December 2010. Summary of changes for version 20101209: 7762 77631) ACPI CA Core Subsystem: 7764 7765Completed the major overhaul of the GPE support code that was begun in 7766July 77672010. Major features include: removal of _PRW execution in ACPICA (host 7768executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7769changes to existing interfaces, simplification of GPE handler operation, 7770and 7771a handful of new interfaces: 7772 7773 AcpiUpdateAllGpes 7774 AcpiFinishGpe 7775 AcpiSetupGpeForWake 7776 AcpiSetGpeWakeMask 7777 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7778 7779See the ACPICA Programmer Reference for full details and programming 7780information. See the new section 4.4 "General Purpose Event (GPE) 7781Support" 7782for a full overview, and section 8.7 "ACPI General Purpose Event 7783Management" 7784for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7785Ming, 7786Bob Moore, Rafael Wysocki. 7787 7788Implemented a new GPE feature for Windows compatibility, the "Implicit 7789Wake 7790GPE Notify". This feature will automatically issue a Notify(2) on a 7791device 7792when a Wake GPE is received if there is no corresponding GPE method or 7793handler. ACPICA BZ 870. 7794 7795Fixed a problem with the Scope() operator during table parse and load 7796phase. 7797During load phase (table load or method execution), the scope operator 7798should 7799not enter the target into the namespace. Instead, it should open a new 7800scope 7801at the target location. Linux BZ 19462, ACPICA BZ 882. 7802 7803Example Code and Data Size: These are the sizes for the OS-independent 7804acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7805debug version of the code includes the debug output trace mechanism and 7806has a 7807much larger code and data size. 7808 7809 Previous Release: 7810 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7811 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7812 Current Release: 7813 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7814 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7815 78162) iASL Compiler/Disassembler and Tools: 7817 7818iASL: Relax the alphanumeric restriction on _CID strings. These strings 7819are 7820"bus-specific" per the ACPI specification, and therefore any characters 7821are 7822acceptable. The only checks that can be performed are for a null string 7823and 7824perhaps for a leading asterisk. ACPICA BZ 886. 7825 7826iASL: Fixed a problem where a syntax error that caused a premature EOF 7827condition on the source file emitted a very confusing error message. The 7828premature EOF is now detected correctly. ACPICA BZ 891. 7829 7830Disassembler: Decode the AccessSize within a Generic Address Structure 7831(byte 7832access, word access, etc.) Note, this field does not allow arbitrary bit 7833access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7834 7835New: AcpiNames utility - Example namespace dump utility. Shows an example 7836of 7837ACPICA configuration for a minimal namespace dump utility. Uses table and 7838namespace managers, but no AML interpreter. Does not add any 7839functionality 7840over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7841partition and configure ACPICA. ACPICA BZ 883. 7842 7843AML Debugger: Increased the debugger buffer size for method return 7844objects. 7845Was 4K, increased to 16K. Also enhanced error messages for debugger 7846method 7847execution, including the buffer overflow case. 7848 7849---------------------------------------- 785013 October 2010. Summary of changes for version 20101013: 7851 78521) ACPI CA Core Subsystem: 7853 7854Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7855now 7856clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7857HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7858 7859Changed the type of the predefined namespace object _TZ from ThermalZone 7860to 7861Device. This was found to be confusing to the host software that 7862processes 7863the various thermal zones, since _TZ is not really a ThermalZone. 7864However, 7865a 7866Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7867Zhang. 7868 7869Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7870string is "Windows 2006 SP2". 7871 7872Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7873nsrepair 7874code automatically repairs _HID-related strings, this type of code is no 7875longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7876878. 7877 7878Example Code and Data Size: These are the sizes for the OS-independent 7879acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7880debug version of the code includes the debug output trace mechanism and 7881has a 7882much larger code and data size. 7883 7884 Previous Release: 7885 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7886 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7887 Current Release: 7888 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7889 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7890 78912) iASL Compiler/Disassembler and Tools: 7892 7893iASL: Implemented additional compile-time validation for _HID strings. 7894The 7895non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7896length 7897of 7898the string must be exactly seven or eight characters. For both _HID and 7899_CID 7900strings, all characters must be alphanumeric. ACPICA BZ 874. 7901 7902iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7903descriptors that are mostly or all zeros, with the expectation that they 7904will 7905be filled in at runtime. iASL now allows this as long as there is a 7906"resource 7907tag" (name) associated with the descriptor, which gives the ASL a handle 7908needed to modify the descriptor. ACPICA BZ 873. 7909 7910Added single-thread support to the generic Unix application OSL. 7911Primarily 7912for iASL support, this change removes the use of semaphores in the 7913single- 7914threaded ACPICA tools/applications - increasing performance. The 7915_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7916option. ACPICA BZ 879. 7917 7918AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7919support 7920for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7921 7922iASL: Moved all compiler messages to a new file, aslmessages.h. 7923 7924---------------------------------------- 792515 September 2010. Summary of changes for version 20100915: 7926 79271) ACPI CA Core Subsystem: 7928 7929Removed the AcpiOsDerivePciId OSL interface. The various host 7930implementations 7931of this function were not OS-dependent and are now obsolete and can be 7932removed from all host OSLs. This function has been replaced by 7933AcpiHwDerivePciId, which is now part of the ACPICA core code. 7934AcpiHwDerivePciId has been implemented without recursion. Adds one new 7935module, hwpci.c. ACPICA BZ 857. 7936 7937Implemented a dynamic repair for _HID and _CID strings. The following 7938problems are now repaired at runtime: 1) Remove a leading asterisk in the 7939string, and 2) the entire string is uppercased. Both repairs are in 7940accordance with the ACPI specification and will simplify host driver 7941code. 7942ACPICA BZ 871. 7943 7944The ACPI_THREAD_ID type is no longer configurable, internally it is now 7945always UINT64. This simplifies the ACPICA code, especially any printf 7946output. 7947UINT64 is the only common data type for all thread_id types across all 7948operating systems. It is now up to the host OSL to cast the native 7949thread_id 7950type to UINT64 before returning the value to ACPICA (via 7951AcpiOsGetThreadId). 7952Lin Ming, Bob Moore. 7953 7954Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7955"inline" 7956keyword is not standard across compilers, and this type allows inline to 7957be 7958configured on a per-compiler basis. Lin Ming. 7959 7960Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7961available. 7962Added an extern for this boolean in acpixf.h. Some hosts utilize this 7963value 7964during suspend/restore operations. ACPICA BZ 869. 7965 7966All code that implements error/warning messages with the "ACPI:" prefix 7967has 7968been moved to a new module, utxferror.c. 7969 7970The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7971it 7972is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7973 7974Example Code and Data Size: These are the sizes for the OS-independent 7975acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7976debug version of the code includes the debug output trace mechanism and 7977has a 7978much larger code and data size. 7979 7980 Previous Release: 7981 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7982 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7983 Current Release: 7984 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7985 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7986 79872) iASL Compiler/Disassembler and Tools: 7988 7989iASL/Disassembler: Write ACPI errors to stderr instead of the output 7990file. 7991This keeps the output files free of random error messages that may 7992originate 7993from within the namespace/interpreter code. Used this opportunity to 7994merge 7995all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7996866. Lin Ming, Bob Moore. 7997 7998Tools: update some printfs for ansi warnings on size_t. Handle width 7999change 8000of size_t on 32-bit versus 64-bit generations. Lin Ming. 8001 8002---------------------------------------- 800306 August 2010. Summary of changes for version 20100806: 8004 80051) ACPI CA Core Subsystem: 8006 8007Designed and implemented a new host interface to the _OSI support code. 8008This 8009will allow the host to dynamically add or remove multiple _OSI strings, 8010as 8011well as install an optional handler that is called for each _OSI 8012invocation. 8013Also added a new AML debugger command, 'osi' to display and modify the 8014global 8015_OSI string table, and test support in the AcpiExec utility. See the 8016ACPICA 8017reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 8018New Functions: 8019 AcpiInstallInterface - Add an _OSI string. 8020 AcpiRemoveInterface - Delete an _OSI string. 8021 AcpiInstallInterfaceHandler - Install optional _OSI handler. 8022Obsolete Functions: 8023 AcpiOsValidateInterface - no longer used. 8024New Files: 8025 source/components/utilities/utosi.c 8026 8027Re-introduced the support to enable multi-byte transfers for Embedded 8028Controller (EC) operation regions. A reported problem was found to be a 8029bug 8030in the host OS, not in the multi-byte support. Previously, the maximum 8031data 8032size passed to the EC operation region handler was a single byte. There 8033are 8034often EC Fields larger than one byte that need to be transferred, and it 8035is 8036useful for the EC driver to lock these as a single transaction. This 8037change 8038enables single transfers larger than 8 bits. This effectively changes the 8039access to the EC space from ByteAcc to AnyAcc, and will probably require 8040changes to the host OS Embedded Controller driver to enable 16/32/64/256- 8041bit 8042transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 8043 8044Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 8045prototype in acpiosxf.h had the output value pointer as a (void *). 8046It should be a (UINT64 *). This may affect some host OSL code. 8047 8048Fixed a couple problems with the recently modified Linux makefiles for 8049iASL 8050and AcpiExec. These new makefiles place the generated object files in the 8051local directory so that there can be no collisions between the files that 8052are 8053shared between them that are compiled with different options. 8054 8055Example Code and Data Size: These are the sizes for the OS-independent 8056acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8057debug version of the code includes the debug output trace mechanism and 8058has a 8059much larger code and data size. 8060 8061 Previous Release: 8062 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8063 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8064 Current Release: 8065 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8066 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8067 80682) iASL Compiler/Disassembler and Tools: 8069 8070iASL/Disassembler: Added a new option (-da, "disassemble all") to load 8071the 8072namespace from and disassemble an entire group of AML files. Useful for 8073loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 8074and 8075disassembling with one simple command. ACPICA BZ 865. Lin Ming. 8076 8077iASL: Allow multiple invocations of -e option. This change allows 8078multiple 8079uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 8080834. 8081Lin Ming. 8082 8083---------------------------------------- 808402 July 2010. Summary of changes for version 20100702: 8085 80861) ACPI CA Core Subsystem: 8087 8088Implemented several updates to the recently added GPE reference count 8089support. The model for "wake" GPEs is changing to give the host OS 8090complete 8091control of these GPEs. Eventually, the ACPICA core will not execute any 8092_PRW 8093methods, since the host already must execute them. Also, additional 8094changes 8095were made to help ensure that the reference counts are kept in proper 8096synchronization with reality. Rafael J. Wysocki. 8097 80981) Ensure that GPEs are not enabled twice during initialization. 80992) Ensure that GPE enable masks stay in sync with the reference count. 81003) Do not inadvertently enable GPEs when writing GPE registers. 81014) Remove the internal wake reference counter and add new AcpiGpeWakeup 8102interface. This interface will set or clear individual GPEs for wakeup. 81035) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8104interfaces 8105are now used for "runtime" GPEs only. 8106 8107Changed the behavior of the GPE install/remove handler interfaces. The 8108GPE 8109is 8110no longer disabled during this process, as it was found to cause problems 8111on 8112some machines. Rafael J. Wysocki. 8113 8114Reverted a change introduced in version 20100528 to enable Embedded 8115Controller multi-byte transfers. This change was found to cause problems 8116with 8117Index Fields and possibly Bank Fields. It will be reintroduced when these 8118problems have been resolved. 8119 8120Fixed a problem with references to Alias objects within Package Objects. 8121A 8122reference to an Alias within the definition of a Package was not always 8123resolved properly. Aliases to objects like Processors, Thermal zones, 8124etc. 8125were resolved to the actual object instead of a reference to the object 8126as 8127it 8128should be. Package objects are only allowed to contain integer, string, 8129buffer, package, and reference objects. Redhat bugzilla 608648. 8130 8131Example Code and Data Size: These are the sizes for the OS-independent 8132acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8133debug version of the code includes the debug output trace mechanism and 8134has a 8135much larger code and data size. 8136 8137 Previous Release: 8138 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8139 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8140 Current Release: 8141 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8142 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8143 81442) iASL Compiler/Disassembler and Tools: 8145 8146iASL: Implemented a new compiler subsystem to allow definition and 8147compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8148These 8149are called "ACPI Data Tables", and the new compiler is the "Data Table 8150Compiler". This compiler is intended to simplify the existing error-prone 8151process of creating these tables for the BIOS, as well as allowing the 8152disassembly, modification, recompilation, and override of existing ACPI 8153data 8154tables. See the iASL User Guide for detailed information. 8155 8156iASL: Implemented a new Template Generator option in support of the new 8157Data 8158Table Compiler. This option will create examples of all known ACPI tables 8159that can be used as the basis for table development. See the iASL 8160documentation and the -T option. 8161 8162Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8163Descriptor Table). 8164 8165Updated the Linux makefiles for iASL and AcpiExec to place the generated 8166object files in the local directory so that there can be no collisions 8167between the shared files between them that are generated with different 8168options. 8169 8170Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8171Use 8172the #define __APPLE__ to enable this support. 8173 8174---------------------------------------- 817528 May 2010. Summary of changes for version 20100528: 8176 8177Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8178available at www.acpi.info. This is primarily an errata release. 8179 81801) ACPI CA Core Subsystem: 8181 8182Undefined ACPI tables: We are looking for the definitions for the 8183following 8184ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8185 8186Implemented support to enable multi-byte transfers for Embedded 8187Controller 8188(EC) operation regions. Previously, the maximum data size passed to the 8189EC 8190operation region handler was a single byte. There are often EC Fields 8191larger 8192than one byte that need to be transferred, and it is useful for the EC 8193driver 8194to lock these as a single transaction. This change enables single 8195transfers 8196larger than 8 bits. This effectively changes the access to the EC space 8197from 8198ByteAcc to AnyAcc, and will probably require changes to the host OS 8199Embedded 8200Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8201bit 8202transfers. Alexey Starikovskiy, Lin Ming 8203 8204Implemented a performance enhancement for namespace search and access. 8205This 8206change enhances the performance of namespace searches and walks by adding 8207a 8208backpointer to the parent in each namespace node. On large namespaces, 8209this 8210change can improve overall ACPI performance by up to 9X. Adding a pointer 8211to 8212each namespace node increases the overall size of the internal namespace 8213by 8214about 5%, since each namespace entry usually consists of both a namespace 8215node and an ACPI operand object. However, this is the first growth of the 8216namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8217 8218Implemented a performance optimization that reduces the number of 8219namespace 8220walks. On control method exit, only walk the namespace if the method is 8221known 8222to have created namespace objects outside of its local scope. Previously, 8223the 8224entire namespace was traversed on each control method exit. This change 8225can 8226improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8227Moore. 8228 8229Added support to truncate I/O addresses to 16 bits for Windows 8230compatibility. 8231Some ASL code has been seen in the field that inadvertently has bits set 8232above bit 15. This feature is optional and is enabled if the BIOS 8233requests 8234any Windows OSI strings. It can also be enabled by the host OS. Matthew 8235Garrett, Bob Moore. 8236 8237Added support to limit the maximum time for the ASL Sleep() operator. To 8238prevent accidental deep sleeps, limit the maximum time that Sleep() will 8239actually sleep. Configurable, the default maximum is two seconds. ACPICA 8240bugzilla 854. 8241 8242Added run-time validation support for the _WDG and_WED Microsoft 8243predefined 8244methods. These objects are defined by "Windows Instrumentation", and are 8245not 8246part of the ACPI spec. ACPICA BZ 860. 8247 8248Expanded all statistic counters used during namespace and device 8249initialization from 16 to 32 bits in order to support very large 8250namespaces. 8251 8252Replaced all instances of %d in printf format specifiers with %u since 8253nearly 8254all integers in ACPICA are unsigned. 8255 8256Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8257returned 8258as AE_NO_HANDLER. 8259 8260Example Code and Data Size: These are the sizes for the OS-independent 8261acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8262debug version of the code includes the debug output trace mechanism and 8263has a 8264much larger code and data size. 8265 8266 Previous Release: 8267 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8268 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8269 Current Release: 8270 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8271 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8272 82732) iASL Compiler/Disassembler and Tools: 8274 8275iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8276methods. These objects are defined by "Windows Instrumentation", and are 8277not 8278part of the ACPI spec. ACPICA BZ 860. 8279 8280AcpiExec: added option to disable the memory tracking mechanism. The -dt 8281option will disable the tracking mechanism, which improves performance 8282considerably. 8283 8284AcpiExec: Restructured the command line options into -d (disable) and -e 8285(enable) options. 8286 8287---------------------------------------- 828828 April 2010. Summary of changes for version 20100428: 8289 82901) ACPI CA Core Subsystem: 8291 8292Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8293including FADT-based and GPE Block Devices, execute any _PRW methods in 8294the 8295new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8296runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8297immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8298Devices. Provides compatibility with other ACPI implementations. Two new 8299files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8300Moore. 8301 8302Fixed a regression introduced in version 20100331 within the table 8303manager 8304where initial table loading could fail. This was introduced in the fix 8305for 8306AcpiReallocateRootTable. Also, renamed some of fields in the table 8307manager 8308data structures to clarify their meaning and use. 8309 8310Fixed a possible allocation overrun during internal object copy in 8311AcpiUtCopySimpleObject. The original code did not correctly handle the 8312case 8313where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8314847. 8315 8316Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8317possible access beyond end-of-allocation. Also, now fully validate 8318descriptor 8319(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8320 8321Example Code and Data Size: These are the sizes for the OS-independent 8322acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8323debug version of the code includes the debug output trace mechanism and 8324has a 8325much larger code and data size. 8326 8327 Previous Release: 8328 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8329 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8330 Current Release: 8331 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8332 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8333 83342) iASL Compiler/Disassembler and Tools: 8335 8336iASL: Implemented Min/Max/Len/Gran validation for address resource 8337descriptors. This change implements validation for the address fields 8338that 8339are common to all address-type resource descriptors. These checks are 8340implemented: Checks for valid Min/Max, length within the Min/Max window, 8341valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8342per 8343table 6-40 in the ACPI 4.0a specification. Also split the large 8344aslrestype1.c 8345and aslrestype2.c files into five new files. ACPICA BZ 840. 8346 8347iASL: Added support for the _Wxx predefined names. This support was 8348missing 8349and these names were not recognized by the compiler as valid predefined 8350names. ACPICA BZ 851. 8351 8352iASL: Added an error for all predefined names that are defined to return 8353no 8354value and thus must be implemented as Control Methods. These include all 8355of 8356the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8357names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8358 8359iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8360an 8361ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8362be 8363dynamically loaded via the Load() operator. Also cleaned up output for 8364the 8365- 8366ta and -tc options. ACPICA BZ 853. 8367 8368Tests: Added a new file with examples of extended iASL error checking. 8369Demonstrates the advanced error checking ability of the iASL compiler. 8370Available at tests/misc/badcode.asl. 8371 8372---------------------------------------- 837331 March 2010. Summary of changes for version 20100331: 8374 83751) ACPI CA Core Subsystem: 8376 8377Completed a major update for the GPE support in order to improve support 8378for 8379shared GPEs and to simplify both host OS and ACPICA code. Added a 8380reference 8381count mechanism to support shared GPEs that require multiple device 8382drivers. 8383Several external interfaces have changed. One external interface has been 8384removed. One new external interface was added. Most of the GPE external 8385interfaces now use the GPE spinlock instead of the events mutex (and the 8386Flags parameter for many GPE interfaces has been removed.) See the 8387updated 8388ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8389Rafael 8390Wysocki. ACPICA BZ 831. 8391 8392Changed: 8393 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8394Removed: 8395 AcpiSetGpeType 8396New: 8397 AcpiSetGpe 8398 8399Implemented write support for DataTable operation regions. These regions 8400are 8401defined via the DataTableRegion() operator. Previously, only read support 8402was 8403implemented. The ACPI specification allows DataTableRegions to be 8404read/write, 8405however. 8406 8407Implemented a new subsystem option to force a copy of the DSDT to local 8408memory. Optionally copy the entire DSDT to local memory (instead of 8409simply 8410mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8411replace 8412the original DSDT, creating the need for this option. Default is FALSE, 8413do 8414not copy the DSDT. 8415 8416Implemented detection of a corrupted or replaced DSDT. This change adds 8417support to detect a DSDT that has been corrupted and/or replaced from 8418outside 8419the OS (by firmware). This is typically catastrophic for the system, but 8420has 8421been seen on some machines. Once this problem has been detected, the DSDT 8422copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8423 8424Fixed two problems with AcpiReallocateRootTable during the root table 8425copy. 8426When copying the root table to the new allocation, the length used was 8427incorrect. The new size was used instead of the current table size, 8428meaning 8429too much data was copied. Also, the count of available slots for ACPI 8430tables 8431was not set correctly. Alexey Starikovskiy, Bob Moore. 8432 8433Example Code and Data Size: These are the sizes for the OS-independent 8434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8435debug version of the code includes the debug output trace mechanism and 8436has a 8437much larger code and data size. 8438 8439 Previous Release: 8440 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8441 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8442 Current Release: 8443 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8444 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8445 84462) iASL Compiler/Disassembler and Tools: 8447 8448iASL: Implement limited typechecking for values returned from predefined 8449control methods. The type of any returned static (unnamed) object is now 8450validated. For example, Return(1). ACPICA BZ 786. 8451 8452iASL: Fixed a predefined name object verification regression. Fixes a 8453problem 8454introduced in version 20100304. An error is incorrectly generated if a 8455predefined name is declared as a static named object with a value defined 8456using the keywords "Zero", "One", or "Ones". Lin Ming. 8457 8458iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8459by 8460reducing the requested registry access rights. ACPICA BZ 842. 8461 8462Disassembler: fixed a possible fault when generating External() 8463statements. 8464Introduced in commit ae7d6fd: Properly handle externals with parent- 8465prefix 8466(carat). Fixes a string length allocation calculation. Lin Ming. 8467 8468---------------------------------------- 846904 March 2010. Summary of changes for version 20100304: 8470 84711) ACPI CA Core Subsystem: 8472 8473Fixed a possible problem with the AML Mutex handling function 8474AcpiExReleaseMutex where the function could fault under the very rare 8475condition when the interpreter has blocked, the interpreter lock is 8476released, 8477the interpreter is then reentered via the same thread, and attempts to 8478acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8479Lin 8480Ming. 8481 8482Implemented additional configuration support for the AML "Debug Object". 8483Output from the debug object can now be enabled via a global variable, 8484AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8485debugging. 8486This debug output is now available in the release version of ACPICA 8487instead 8488of just the debug version. Also, the entire debug output module can now 8489be 8490configured out of the ACPICA build if desired. One new file added, 8491executer/exdebug.c. Lin Ming, Bob Moore. 8492 8493Added header support for the ACPI MCHI table (Management Controller Host 8494Interface Table). This table was added in ACPI 4.0, but the defining 8495document 8496has only recently become available. 8497 8498Standardized output of integer values for ACPICA warnings/errors. Always 8499use 85000x prefix for hex output, always use %u for unsigned integer decimal 8501output. 8502Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8503400 8504invocations.) These invocations were converted from the original 8505ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8506 8507Example Code and Data Size: These are the sizes for the OS-independent 8508acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8509debug version of the code includes the debug output trace mechanism and 8510has a 8511much larger code and data size. 8512 8513 Previous Release: 8514 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8515 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8516 Current Release: 8517 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8518 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8519 85202) iASL Compiler/Disassembler and Tools: 8521 8522iASL: Implemented typechecking support for static (non-control method) 8523predefined named objects that are declared with the Name() operator. For 8524example, the type of this object is now validated to be of type Integer: 8525Name(_BBN, 1). This change migrates the compiler to using the core 8526predefined 8527name table instead of maintaining a local version. Added a new file, 8528aslpredef.c. ACPICA BZ 832. 8529 8530Disassembler: Added support for the ACPI 4.0 MCHI table. 8531 8532---------------------------------------- 853321 January 2010. Summary of changes for version 20100121: 8534 85351) ACPI CA Core Subsystem: 8536 8537Added the 2010 copyright to all module headers and signons. This affects 8538virtually every file in the ACPICA core subsystem, the iASL compiler, the 8539tools/utilities, and the test suites. 8540 8541Implemented a change to the AcpiGetDevices interface to eliminate 8542unnecessary 8543invocations of the _STA method. In the case where a specific _HID is 8544requested, do not run _STA until a _HID match is found. This eliminates 8545potentially dozens of _STA calls during a search for a particular 8546device/HID, 8547which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8548 8549Implemented an additional repair for predefined method return values. 8550Attempt 8551to repair unexpected NULL elements within returned Package objects. 8552Create 8553an 8554Integer of value zero, a NULL String, or a zero-length Buffer as 8555appropriate. 8556ACPICA BZ 818. Lin Ming, Bob Moore. 8557 8558Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8559the 8560code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8561(with 856264-bit AML integers). It is now obsolete and this change removes it from 8563the 8564ACPICA code base, replaced by UINT64. The original typedef has been 8565retained 8566for now for compatibility with existing device driver code. ACPICA BZ 8567824. 8568 8569Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8570in 8571the parse tree object. 8572 8573Added additional warning options for the gcc-4 generation. Updated the 8574source 8575accordingly. This includes some code restructuring to eliminate 8576unreachable 8577code, elimination of some gotos, elimination of unused return values, 8578some 8579additional casting, and removal of redundant declarations. 8580 8581Example Code and Data Size: These are the sizes for the OS-independent 8582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8583debug version of the code includes the debug output trace mechanism and 8584has a 8585much larger code and data size. 8586 8587 Previous Release: 8588 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8589 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8590 Current Release: 8591 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8592 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8593 85942) iASL Compiler/Disassembler and Tools: 8595 8596No functional changes for this release. 8597 8598---------------------------------------- 859914 December 2009. Summary of changes for version 20091214: 8600 86011) ACPI CA Core Subsystem: 8602 8603Enhanced automatic data type conversions for predefined name repairs. 8604This 8605change expands the automatic repairs/conversions for predefined name 8606return 8607values to make Integers, Strings, and Buffers fully interchangeable. 8608Also, 8609a 8610Buffer can be converted to a Package of Integers if necessary. The 8611nsrepair.c 8612module was completely restructured. Lin Ming, Bob Moore. 8613 8614Implemented automatic removal of null package elements during predefined 8615name 8616repairs. This change will automatically remove embedded and trailing NULL 8617package elements from returned package objects that are defined to 8618contain 8619a 8620variable number of sub-packages. The driver is then presented with a 8621package 8622with no null elements to deal with. ACPICA BZ 819. 8623 8624Implemented a repair for the predefined _FDE and _GTM names. The expected 8625return value for both names is a Buffer of 5 DWORDs. This repair fixes 8626two 8627possible problems (both seen in the field), where a package of integers 8628is 8629returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8630Kim. 8631 8632Implemented additional module-level code support. This change will 8633properly 8634execute module-level code that is not at the root of the namespace (under 8635a 8636Device object, etc.). Now executes the code within the current scope 8637instead 8638of the root. ACPICA BZ 762. Lin Ming. 8639 8640Fixed possible mutex acquisition errors when running _REG methods. Fixes 8641a 8642problem where mutex errors can occur when running a _REG method that is 8643in 8644the same scope as a method-defined operation region or an operation 8645region 8646under a module-level IF block. This type of code is rare, so the problem 8647has 8648not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8649 8650Fixed a possible memory leak during module-level code execution. An 8651object 8652could be leaked for each block of executed module-level code if the 8653interpreter slack mode is enabled This change deletes any implicitly 8654returned 8655object from the module-level code block. Lin Ming. 8656 8657Removed messages for successful predefined repair(s). The repair 8658mechanism 8659was considered too wordy. Now, messages are only unconditionally emitted 8660if 8661the return object cannot be repaired. Existing messages for successful 8662repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8663827. 8664 8665Example Code and Data Size: These are the sizes for the OS-independent 8666acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8667debug version of the code includes the debug output trace mechanism and 8668has a 8669much larger code and data size. 8670 8671 Previous Release: 8672 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8673 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8674 Current Release: 8675 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8676 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8677 86782) iASL Compiler/Disassembler and Tools: 8679 8680iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8681files 8682were no longer automatically removed at the termination of the compile. 8683 8684acpiexec: Implemented the -f option to specify default region fill value. 8685This option specifies the value used to initialize buffers that simulate 8686operation regions. Default value is zero. Useful for debugging problems 8687that 8688depend on a specific initial value for a region or field. 8689 8690---------------------------------------- 869112 November 2009. Summary of changes for version 20091112: 8692 86931) ACPI CA Core Subsystem: 8694 8695Implemented a post-order callback to AcpiWalkNamespace. The existing 8696interface only has a pre-order callback. This change adds an additional 8697parameter for a post-order callback which will be more useful for bus 8698scans. 8699ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 8700 8701Modified the behavior of the operation region memory mapping cache for 8702SystemMemory. Ensure that the memory mappings created for operation 8703regions 8704do not cross 4K page boundaries. Crossing a page boundary while mapping 8705regions can cause kernel warnings on some hosts if the pages have 8706different 8707attributes. Such regions are probably BIOS bugs, and this is the 8708workaround. 8709Linux BZ 14445. Lin Ming. 8710 8711Implemented an automatic repair for predefined methods that must return 8712sorted lists. This change will repair (by sorting) packages returned by 8713_ALR, 8714_PSS, and _TSS. Drivers can now assume that the packages are correctly 8715sorted 8716and do not contain NULL package elements. Adds one new file, 8717namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 8718 8719Fixed a possible fault during predefined name validation if a return 8720Package 8721object contains NULL elements. Also adds a warning if a NULL element is 8722followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 8723may 8724include repair or removal of all such NULL elements where possible. 8725 8726Implemented additional module-level executable AML code support. This 8727change 8728will execute module-level code that is not at the root of the namespace 8729(under a Device object, etc.) at table load time. Module-level executable 8730AML 8731code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 8732 8733Implemented a new internal function to create Integer objects. This 8734function 8735simplifies miscellaneous object creation code. ACPICA BZ 823. 8736 8737Reduced the severity of predefined repair messages, Warning to Info. 8738Since 8739the object was successfully repaired, a warning is too severe. Reduced to 8740an 8741info message for now. These messages may eventually be changed to debug- 8742only. 8743ACPICA BZ 812. 8744 8745Example Code and Data Size: These are the sizes for the OS-independent 8746acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8747debug version of the code includes the debug output trace mechanism and 8748has a 8749much larger code and data size. 8750 8751 Previous Release: 8752 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8753 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8754 Current Release: 8755 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8756 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8757 87582) iASL Compiler/Disassembler and Tools: 8759 8760iASL: Implemented Switch() with While(1) so that Break works correctly. 8761This 8762change correctly implements the Switch operator with a surrounding 8763While(1) 8764so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8765 8766iASL: Added a message if a package initializer list is shorter than 8767package 8768length. Adds a new remark for a Package() declaration if an initializer 8769list 8770exists, but is shorter than the declared length of the package. Although 8771technically legal, this is probably a coding error and it is seen in the 8772field. ACPICA BZ 815. Lin Ming, Bob Moore. 8773 8774iASL: Fixed a problem where the compiler could fault after the maximum 8775number 8776of errors was reached (200). 8777 8778acpixtract: Fixed a possible warning for pointer cast if the compiler 8779warning 8780level set very high. 8781 8782---------------------------------------- 878313 October 2009. Summary of changes for version 20091013: 8784 87851) ACPI CA Core Subsystem: 8786 8787Fixed a problem where an Operation Region _REG method could be executed 8788more 8789than once. If a custom address space handler is installed by the host 8790before 8791the "initialize operation regions" phase of the ACPICA initialization, 8792any 8793_REG methods for that address space could be executed twice. This change 8794fixes the problem. ACPICA BZ 427. Lin Ming. 8795 8796Fixed a possible memory leak for the Scope() ASL operator. When the exact 8797invocation of "Scope(\)" is executed (change scope to root), one internal 8798operand object was leaked. Lin Ming. 8799 8800Implemented a run-time repair for the _MAT predefined method. If the _MAT 8801return value is defined as a Field object in the AML, and the field 8802size is less than or equal to the default width of an integer (32 or 880364),_MAT 8804can incorrectly return an Integer instead of a Buffer. ACPICA now 8805automatically repairs this problem. ACPICA BZ 810. 8806 8807Implemented a run-time repair for the _BIF and _BIX predefined methods. 8808The 8809"OEM Information" field is often incorrectly returned as an Integer with 8810value zero if the field is not supported by the platform. This is due to 8811an 8812ambiguity in the ACPI specification. The field should always be a string. 8813ACPICA now automatically repairs this problem by returning a NULL string 8814within the returned Package. ACPICA BZ 807. 8815 8816Example Code and Data Size: These are the sizes for the OS-independent 8817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8818debug version of the code includes the debug output trace mechanism and 8819has a 8820much larger code and data size. 8821 8822 Previous Release: 8823 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8824 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8825 Current Release: 8826 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8827 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8828 88292) iASL Compiler/Disassembler and Tools: 8830 8831Disassembler: Fixed a problem where references to external symbols that 8832contained one or more parent-prefixes (carats) were not handled 8833correctly, 8834possibly causing a fault. ACPICA BZ 806. Lin Ming. 8835 8836Disassembler: Restructured the code so that all functions that handle 8837external symbols are in a single module. One new file is added, 8838common/dmextern.c. 8839 8840AML Debugger: Added a max count argument for the Batch command (which 8841executes multiple predefined methods within the namespace.) 8842 8843iASL: Updated the compiler documentation (User Reference.) Available at 8844http://www.acpica.org/documentation/. ACPICA BZ 750. 8845 8846AcpiXtract: Updated for Lint and other formatting changes. Close all open 8847files. 8848 8849---------------------------------------- 885003 September 2009. Summary of changes for version 20090903: 8851 88521) ACPI CA Core Subsystem: 8853 8854For Windows Vista compatibility, added the automatic execution of an _INI 8855method located at the namespace root (\_INI). This method is executed at 8856table load time. This support is in addition to the automatic execution 8857of 8858\_SB._INI. Lin Ming. 8859 8860Fixed a possible memory leak in the interpreter for AML package objects 8861if 8862the package initializer list is longer than the defined size of the 8863package. 8864This apparently can only happen if the BIOS changes the package size on 8865the 8866fly (seen in a _PSS object), as ASL compilers do not allow this. The 8867interpreter will truncate the package to the defined size (and issue an 8868error 8869message), but previously could leave the extra objects undeleted if they 8870were 8871pre-created during the argument processing (such is the case if the 8872package 8873consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8874 8875Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8876This has been reported in the field. Previously, ACPICA would zero out 8877the 8878buffer/string. Now, the operation is treated as a noop. Provides Windows 8879compatibility. ACPICA BZ 803. Lin Ming. 8880 8881Removed an extraneous error message for ASL constructs of the form 8882Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8883statements 8884are seen in many BIOSs and are once again treated as NOOPs and no error 8885is 8886emitted when they are encountered. ACPICA BZ 785. 8887 8888Fixed an extraneous warning message if a _DSM reserved method returns a 8889Package object. _DSM can return any type of object, so validation on the 8890return type cannot be performed. ACPICA BZ 802. 8891 8892Example Code and Data Size: These are the sizes for the OS-independent 8893acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8894debug version of the code includes the debug output trace mechanism and 8895has a 8896much larger code and data size. 8897 8898 Previous Release: 8899 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8900 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8901 Current Release: 8902 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8903 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8904 89052) iASL Compiler/Disassembler and Tools: 8906 8907iASL: Fixed a problem with the use of the Alias operator and Resource 8908Templates. The correct alias is now constructed and no error is emitted. 8909ACPICA BZ 738. 8910 8911iASL: Implemented the -I option to specify additional search directories 8912for 8913include files. Allows multiple additional search paths for include files. 8914Directories are searched in the order specified on the command line 8915(after 8916the local directory is searched.) ACPICA BZ 800. 8917 8918iASL: Fixed a problem where the full pathname for include files was not 8919emitted for warnings/errors. This caused the IDE support to not work 8920properly. ACPICA BZ 765. 8921 8922iASL: Implemented the -@ option to specify a Windows-style response file 8923containing additional command line options. ACPICA BZ 801. 8924 8925AcpiExec: Added support to load multiple AML files simultaneously (such 8926as 8927a 8928DSDT and multiple SSDTs). Also added support for wildcards within the AML 8929pathname. These features allow all machine tables to be easily loaded and 8930debugged together. ACPICA BZ 804. 8931 8932Disassembler: Added missing support for disassembly of HEST table Error 8933Bank 8934subtables. 8935 8936---------------------------------------- 893730 July 2009. Summary of changes for version 20090730: 8938 8939The ACPI 4.0 implementation for ACPICA is complete with this release. 8940 89411) ACPI CA Core Subsystem: 8942 8943ACPI 4.0: Added header file support for all new and changed ACPI tables. 8944Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8945new 8946for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8947BERT, 8948EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8949There 8950have been some ACPI 4.0 changes to other existing tables. Split the large 8951actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8952 8953ACPI 4.0: Implemented predefined name validation for all new names. There 8954are 895531 new names in ACPI 4.0. The predefined validation module was split into 8956two 8957files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8958 8959Implemented support for so-called "module-level executable code". This is 8960executable AML code that exists outside of any control method and is 8961intended 8962to be executed at table load time. Although illegal since ACPI 2.0, this 8963type 8964of code still exists and is apparently still being created. Blocks of 8965this 8966code are now detected and executed as intended. Currently, the code 8967blocks 8968must exist under either an If, Else, or While construct; these are the 8969typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8970 8971Implemented an automatic dynamic repair for predefined names that return 8972nested Package objects. This applies to predefined names that are defined 8973to 8974return a variable-length Package of sub-packages. If the number of sub- 8975packages is one, BIOS code is occasionally seen that creates a simple 8976single 8977package with no sub-packages. This code attempts to fix the problem by 8978wrapping a new package object around the existing package. These methods 8979can 8980be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8981BZ 8982790. 8983 8984Fixed a regression introduced in 20090625 for the AcpiGetDevices 8985interface. 8986The _HID/_CID matching was broken and no longer matched IDs correctly. 8987ACPICA 8988BZ 793. 8989 8990Fixed a problem with AcpiReset where the reset would silently fail if the 8991register was one of the protected I/O ports. AcpiReset now bypasses the 8992port 8993validation mechanism. This may eventually be driven into the 8994AcpiRead/Write 8995interfaces. 8996 8997Fixed a regression related to the recent update of the AcpiRead/Write 8998interfaces. A sleep/suspend could fail if the optional PM2 Control 8999register 9000does not exist during an attempt to write the Bus Master Arbitration bit. 9001(However, some hosts already delete the code that writes this bit, and 9002the 9003code may in fact be obsolete at this date.) ACPICA BZ 799. 9004 9005Fixed a problem where AcpiTerminate could fault if inadvertently called 9006twice 9007in succession. ACPICA BZ 795. 9008 9009Example Code and Data Size: These are the sizes for the OS-independent 9010acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9011debug version of the code includes the debug output trace mechanism and 9012has a 9013much larger code and data size. 9014 9015 Previous Release: 9016 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9017 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9018 Current Release: 9019 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9020 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9021 90222) iASL Compiler/Disassembler and Tools: 9023 9024ACPI 4.0: Implemented disassembler support for all new ACPI tables and 9025changes to existing tables. ACPICA BZ 775. 9026 9027---------------------------------------- 902825 June 2009. Summary of changes for version 20090625: 9029 9030The ACPI 4.0 Specification was released on June 16 and is available at 9031www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 9032continue for the next few releases. 9033 90341) ACPI CA Core Subsystem: 9035 9036ACPI 4.0: Implemented interpreter support for the IPMI operation region 9037address space. Includes support for bi-directional data buffers and an 9038IPMI 9039address space handler (to be installed by an IPMI device driver.) ACPICA 9040BZ 9041773. Lin Ming. 9042 9043ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 9044Includes 9045support in both the header files and the disassembler. 9046 9047Completed a major update for the AcpiGetObjectInfo external interface. 9048Changes include: 9049 - Support for variable, unlimited length HID, UID, and CID strings. 9050 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 9051etc.) 9052 - Call the _SxW power methods on behalf of a device object. 9053 - Determine if a device is a PCI root bridge. 9054 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 9055These changes will require an update to all callers of this interface. 9056See 9057the updated ACPICA Programmer Reference for details. One new source file 9058has 9059been added - utilities/utids.c. ACPICA BZ 368, 780. 9060 9061Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 9062transfers. The Value parameter has been extended from 32 bits to 64 bits 9063in 9064order to support new ACPI 4.0 tables. These changes will require an 9065update 9066to 9067all callers of these interfaces. See the ACPICA Programmer Reference for 9068details. ACPICA BZ 768. 9069 9070Fixed several problems with AcpiAttachData. The handler was not invoked 9071when 9072the host node was deleted. The data sub-object was not automatically 9073deleted 9074when the host node was deleted. The interface to the handler had an 9075unused 9076parameter, this was removed. ACPICA BZ 778. 9077 9078Enhanced the function that dumps ACPI table headers. All non-printable 9079characters in the string fields are now replaced with '?' (Signature, 9080OemId, 9081OemTableId, and CompilerId.) ACPI tables with non-printable characters in 9082these fields are occasionally seen in the field. ACPICA BZ 788. 9083 9084Fixed a problem with predefined method repair code where the code that 9085attempts to repair/convert an object of incorrect type is only executed 9086on 9087the first time the predefined method is called. The mechanism that 9088disables 9089warnings on subsequent calls was interfering with the repair mechanism. 9090ACPICA BZ 781. 9091 9092Fixed a possible memory leak in the predefined validation/repair code 9093when 9094a 9095buffer is automatically converted to an expected string object. 9096 9097Removed obsolete 16-bit files from the distribution and from the current 9098git 9099tree head. ACPICA BZ 776. 9100 9101Example Code and Data Size: These are the sizes for the OS-independent 9102acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9103debug version of the code includes the debug output trace mechanism and 9104has a 9105much larger code and data size. 9106 9107 Previous Release: 9108 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9109 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9110 Current Release: 9111 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9112 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9113 91142) iASL Compiler/Disassembler and Tools: 9115 9116ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9117operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9118 9119ACPI 4.0: iASL - implemented compile-time validation support for all new 9120predefined names and control methods (31 total). ACPICA BZ 769. 9121 9122---------------------------------------- 912321 May 2009. Summary of changes for version 20090521: 9124 91251) ACPI CA Core Subsystem: 9126 9127Disabled the preservation of the SCI enable bit in the PM1 control 9128register. 9129The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9130to 9131be 9132a "preserved" bit - "OSPM always preserves this bit position", section 91334.7.3.2.1. However, some machines fail if this bit is in fact preserved 9134because the bit needs to be explicitly set by the OS as a workaround. No 9135machines fail if the bit is not preserved. Therefore, ACPICA no longer 9136attempts to preserve this bit. 9137 9138Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9139incorrectly formed _PRT package could cause a fault. Added validation to 9140ensure that each package element is actually a sub-package. 9141 9142Implemented a new interface to install or override a single control 9143method, 9144AcpiInstallMethod. This interface is useful when debugging in order to 9145repair 9146an existing method or to install a missing method without having to 9147override 9148the entire ACPI table. See the ACPICA Programmer Reference for use and 9149examples. Lin Ming, Bob Moore. 9150 9151Fixed several reference count issues with the DdbHandle object that is 9152created from a Load or LoadTable operator. Prevent premature deletion of 9153the 9154object. Also, mark the object as invalid once the table has been 9155unloaded. 9156This is needed because the handle itself may not be deleted after the 9157table 9158unload, depending on whether it has been stored in a named object by the 9159caller. Lin Ming. 9160 9161Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9162mutexes of the same sync level are acquired but then not released in 9163strict 9164opposite order, the internally maintained Current Sync Level becomes 9165confused 9166and can cause subsequent execution errors. ACPICA BZ 471. 9167 9168Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9169specification has been changed to make the SyncLevel for mutex objects 9170more 9171useful. When releasing a mutex, the SyncLevel of the mutex must now be 9172the 9173same as the current sync level. This makes more sense than the previous 9174rule 9175(SyncLevel less than or equal). This change updates the code to match the 9176specification. 9177 9178Fixed a problem with the local version of the AcpiOsPurgeCache function. 9179The 9180(local) cache must be locked during all cache object deletions. Andrew 9181Baumann. 9182 9183Updated the Load operator to use operation region interfaces. This 9184replaces 9185direct memory mapping with region access calls. Now, all region accesses 9186go 9187through the installed region handler as they should. 9188 9189Simplified and optimized the NsGetNextNode function. Reduced parameter 9190count 9191and reduced code for this frequently used function. 9192 9193Example Code and Data Size: These are the sizes for the OS-independent 9194acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9195debug version of the code includes the debug output trace mechanism and 9196has a 9197much larger code and data size. 9198 9199 Previous Release: 9200 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9201 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9202 Current Release: 9203 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9204 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9205 92062) iASL Compiler/Disassembler and Tools: 9207 9208Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9209problems 9210with sub-table disassembly and handling invalid sub-tables. Attempt 9211recovery 9212after an invalid sub-table ID. 9213 9214---------------------------------------- 921522 April 2009. Summary of changes for version 20090422: 9216 92171) ACPI CA Core Subsystem: 9218 9219Fixed a compatibility issue with the recently released I/O port 9220protection 9221mechanism. For windows compatibility, 1) On a port protection violation, 9222simply ignore the request and do not return an exception (allow the 9223control 9224method to continue execution.) 2) If only part of the request overlaps a 9225protected port, read/write the individual ports that are not protected. 9226Linux 9227BZ 13036. Lin Ming 9228 9229Enhanced the execution of the ASL/AML BreakPoint operator so that it 9230actually 9231breaks into the AML debugger if the debugger is present. This matches the 9232ACPI-defined behavior. 9233 9234Fixed several possible warnings related to the use of the configurable 9235ACPI_THREAD_ID. This type can now be configured as either an integer or a 9236pointer with no warnings. Also fixes several warnings in printf-like 9237statements for the 64-bit build when the type is configured as a pointer. 9238ACPICA BZ 766, 767. 9239 9240Fixed a number of possible warnings when compiling with gcc 4+ (depending 9241on 9242warning options.) Examples include printf formats, aliasing, unused 9243globals, 9244missing prototypes, missing switch default statements, use of non-ANSI 9245library functions, use of non-ANSI constructs. See generate/unix/Makefile 9246for 9247a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9248 9249Example Code and Data Size: These are the sizes for the OS-independent 9250acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9251debug version of the code includes the debug output trace mechanism and 9252has a 9253much larger code and data size. 9254 9255 Previous Release: 9256 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9257 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9258 Current Release: 9259 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9260 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9261 92622) iASL Compiler/Disassembler and Tools: 9263 9264iASL: Fixed a generation warning from Bison 2.3 and fixed several 9265warnings 9266on 9267the 64-bit build. 9268 9269iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9270not 9271correctly digest Windows/DOS formatted files (with CR/LF). 9272 9273iASL: Added a new option for "quiet mode" (-va) that produces only the 9274compilation summary, not individual errors and warnings. Useful for large 9275batch compilations. 9276 9277AcpiExec: Implemented a new option (-z) to enable a forced 9278semaphore/mutex 9279timeout that can be used to detect hang conditions during execution of 9280AML 9281code (includes both internal semaphores and AML-defined mutexes and 9282events.) 9283 9284Added new makefiles for the generation of acpica in a generic unix-like 9285environment. These makefiles are intended to generate the acpica tools 9286and 9287utilities from the original acpica git source tree structure. 9288 9289Test Suites: Updated and cleaned up the documentation files. Updated the 9290copyrights to 2009, affecting all source files. Use the new version of 9291iASL 9292with quiet mode. Increased the number of available semaphores in the 9293Windows 9294OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9295added 9296an alternate implementation of the semaphore timeout to allow aslts to 9297execute fully on Cygwin. 9298 9299---------------------------------------- 930020 March 2009. Summary of changes for version 20090320: 9301 93021) ACPI CA Core Subsystem: 9303 9304Fixed a possible race condition between AcpiWalkNamespace and dynamic 9305table 9306unloads. Added a reader/writer locking mechanism to allow multiple 9307concurrent 9308namespace walks (readers), but block a dynamic table unload until it can 9309gain 9310exclusive write access to the namespace. This fixes a problem where a 9311table 9312unload could (possibly catastrophically) delete the portion of the 9313namespace 9314that is currently being examined by a walk. Adds a new file, utlock.c, 9315that 9316implements the reader/writer lock mechanism. ACPICA BZ 749. 9317 9318Fixed a regression introduced in version 20090220 where a change to the 9319FADT 9320handling could cause the ACPICA subsystem to access non-existent I/O 9321ports. 9322 9323Modified the handling of FADT register and table (FACS/DSDT) addresses. 9324The 9325FADT can contain both 32-bit and 64-bit versions of these addresses. 9326Previously, the 64-bit versions were favored, meaning that if both 32 and 932764 9328versions were valid, but not equal, the 64-bit version was used. This was 9329found to cause some machines to fail. Now, in this case, the 32-bit 9330version 9331is used instead. This now matches the Windows behavior. 9332 9333Implemented a new mechanism to protect certain I/O ports. Provides 9334Microsoft 9335compatibility and protects the standard PC I/O ports from access via AML 9336code. Adds a new file, hwvalid.c 9337 9338Fixed a possible extraneous warning message from the FADT support. The 9339message warns of a 32/64 length mismatch between the legacy and GAS 9340definitions for a register. 9341 9342Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9343is 9344made obsolete by the port protection mechanism above. It was previously 9345used 9346to validate the entire address range of an operation region, which could 9347be 9348incorrect if the range included illegal ports, but fields within the 9349operation region did not actually access those ports. Validation is now 9350performed on a per-field basis instead of the entire region. 9351 9352Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9353Ignored bits must be "preserved" according to the ACPI spec. Usually, 9354this 9355means a read/modify/write when writing to the register. However, for 9356status 9357registers, writing a one means clear the event. Writing a zero means 9358preserve 9359the event (do not clear.) This behavior is clarified in the ACPI 4.0 9360spec, 9361and the ACPICA code now simply always writes a zero to the ignored bit. 9362 9363Modified the handling of ignored bits for the PM1 A/B Control Registers. 9364As 9365per the ACPI specification, for the control registers, preserve 9366(read/modify/write) all bits that are defined as either reserved or 9367ignored. 9368 9369Updated the handling of write-only bits in the PM1 A/B Control Registers. 9370When reading the register, zero the write-only bits as per the ACPI spec. 9371ACPICA BZ 443. Lin Ming. 9372 9373Removed "Linux" from the list of supported _OSI strings. Linux no longer 9374wants to reply true to this request. The Windows strings are the only 9375paths 9376through the AML that are tested and known to work properly. 9377 9378 Previous Release: 9379 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9380 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9381 Current Release: 9382 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9383 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9384 93852) iASL Compiler/Disassembler and Tools: 9386 9387Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9388and 9389aetables.c 9390 9391---------------------------------------- 939220 February 2009. Summary of changes for version 20090220: 9393 93941) ACPI CA Core Subsystem: 9395 9396Optimized the ACPI register locking. Removed locking for reads from the 9397ACPI 9398bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9399is 9400not required when reading the single-bit registers. The 9401AcpiGetRegisterUnlocked function is no longer needed and has been 9402removed. 9403This will improve performance for reads on these registers. ACPICA BZ 9404760. 9405 9406Fixed the parameter validation for AcpiRead/Write. Now return 9407AE_BAD_PARAMETER if the input register pointer is null, and 9408AE_BAD_ADDRESS 9409if 9410the register has an address of zero. Previously, these cases simply 9411returned 9412AE_OK. For optional registers such as PM1B status/enable/control, the 9413caller 9414should check for a valid register address before calling. ACPICA BZ 748. 9415 9416Renamed the external ACPI bit register access functions. Renamed 9417AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9418functions. The new names are AcpiReadBitRegister and 9419AcpiWriteBitRegister. 9420Also, restructured the code for these functions by simplifying the code 9421path 9422and condensing duplicate code to reduce code size. 9423 9424Added new functions to transparently handle the possibly split PM1 A/B 9425registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9426functions 9427now handle the split registers for PM1 Status, Enable, and Control. 9428ACPICA 9429BZ 9430746. 9431 9432Added a function to handle the PM1 control registers, 9433AcpiHwWritePm1Control. 9434This function writes both of the PM1 control registers (A/B). These 9435registers 9436are different than the PM1 A/B status and enable registers in that 9437different 9438values can be written to the A/B registers. Most notably, the SLP_TYP 9439bits 9440can be different, as per the values returned from the _Sx predefined 9441methods. 9442 9443Removed an extra register write within AcpiHwClearAcpiStatus. This 9444function 9445was writing an optional PM1B status register twice. The existing call to 9446the 9447low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9448A/B 9449register. ACPICA BZ 751. 9450 9451Split out the PM1 Status registers from the FADT. Added new globals for 9452these 9453registers (A/B), similar to the way the PM1 Enable registers are handled. 9454Instead of overloading the FADT Event Register blocks. This makes the 9455code 9456clearer and less prone to error. 9457 9458Fixed the warning message for when the platform contains too many ACPI 9459tables 9460for the default size of the global root table data structure. The 9461calculation 9462for the truncation value was incorrect. 9463 9464Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9465obsolete macro, since it is now a simple reference to ->common.type. 9466There 9467were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9468 9469Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9470TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9471simply SLEEP_TYPE. ACPICA BZ 754. 9472 9473Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9474function is only needed on 64-bit host operating systems and is thus not 9475included for 32-bit hosts. 9476 9477Debug output: print the input and result for invocations of the _OSI 9478reserved 9479control method via the ACPI_LV_INFO debug level. Also, reduced some of 9480the 9481verbosity of this debug level. Len Brown. 9482 9483Example Code and Data Size: These are the sizes for the OS-independent 9484acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9485debug version of the code includes the debug output trace mechanism and 9486has a 9487much larger code and data size. 9488 9489 Previous Release: 9490 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9491 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9492 Current Release: 9493 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9494 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9495 94962) iASL Compiler/Disassembler and Tools: 9497 9498Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9499various legal performance profiles. 9500 9501---------------------------------------- 950223 January 2009. Summary of changes for version 20090123: 9503 95041) ACPI CA Core Subsystem: 9505 9506Added the 2009 copyright to all module headers and signons. This affects 9507virtually every file in the ACPICA core subsystem, the iASL compiler, and 9508the tools/utilities. 9509 9510Implemented a change to allow the host to override any ACPI table, 9511including 9512dynamically loaded tables. Previously, only the DSDT could be replaced by 9513the 9514host. With this change, the AcpiOsTableOverride interface is called for 9515each 9516table found in the RSDT/XSDT during ACPICA initialization, and also 9517whenever 9518a table is dynamically loaded via the AML Load operator. 9519 9520Updated FADT flag definitions, especially the Boot Architecture flags. 9521 9522Debugger: For the Find command, automatically pad the input ACPI name 9523with 9524underscores if the name is shorter than 4 characters. This enables a 9525match 9526with the actual namespace entry which is itself padded with underscores. 9527 9528Example Code and Data Size: These are the sizes for the OS-independent 9529acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9530debug version of the code includes the debug output trace mechanism and 9531has a 9532much larger code and data size. 9533 9534 Previous Release: 9535 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9536 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9537 Current Release: 9538 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9539 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9540 95412) iASL Compiler/Disassembler and Tools: 9542 9543Fix build error under Bison-2.4. 9544 9545Disassembler: Enhanced FADT support. Added decoding of the Boot 9546Architecture 9547flags. Now decode all flags, regardless of the FADT version. Flag output 9548includes the FADT version which first defined each flag. 9549 9550The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9551and 9552DSDT). Windows only. 9553 9554---------------------------------------- 955504 December 2008. Summary of changes for version 20081204: 9556 95571) ACPI CA Core Subsystem: 9558 9559The ACPICA Programmer Reference has been completely updated and revamped 9560for 9561this release. This includes updates to the external interfaces, OSL 9562interfaces, the overview sections, and the debugger reference. 9563 9564Several new ACPICA interfaces have been implemented and documented in the 9565programmer reference: 9566AcpiReset - Writes the reset value to the FADT-defined reset register. 9567AcpiDisableAllGpes - Disable all available GPEs. 9568AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9569AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9570AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9571AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9572AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9573 9574Most of the public ACPI hardware-related interfaces have been moved to a 9575new 9576file, components/hardware/hwxface.c 9577 9578Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9579register lengths within the FADT are now used, and the low level ACPI 9580register access no longer hardcodes the ACPI register lengths. Given that 9581there may be some risk in actually trusting the FADT register lengths, a 9582run- 9583time option was added to fall back to the default hardcoded lengths if 9584the 9585FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9586option is set to true for now, and a warning is issued if a suspicious 9587FADT 9588register length is overridden with the default value. 9589 9590Fixed a reference count issue in NsRepairObject. This problem was 9591introduced 9592in version 20081031 as part of a fix to repair Buffer objects within 9593Packages. Lin Ming. 9594 9595Added semaphore support to the Linux/Unix application OS-services layer 9596(OSL). ACPICA BZ 448. Lin Ming. 9597 9598Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9599will 9600be implemented in the OSL, or will binary semaphores be used instead. 9601 9602Example Code and Data Size: These are the sizes for the OS-independent 9603acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9604debug version of the code includes the debug output trace mechanism and 9605has a 9606much larger code and data size. 9607 9608 Previous Release: 9609 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9610 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9611 Current Release: 9612 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9613 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9614 96152) iASL Compiler/Disassembler and Tools: 9616 9617iASL: Completed the '-e' option to include additional ACPI tables in 9618order 9619to 9620aid with disassembly and External statement generation. ACPICA BZ 742. 9621Lin 9622Ming. 9623 9624iASL: Removed the "named object in while loop" error. The compiler cannot 9625determine how many times a loop will execute. ACPICA BZ 730. 9626 9627Disassembler: Implemented support for FADT revision 2 (MS extension). 9628ACPICA 9629BZ 743. 9630 9631Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9632MCFG). 9633 9634---------------------------------------- 963531 October 2008. Summary of changes for version 20081031: 9636 96371) ACPI CA Core Subsystem: 9638 9639Restructured the ACPICA header files into public/private. acpi.h now 9640includes 9641only the "public" acpica headers. All other acpica headers are "private" 9642and 9643should not be included by acpica users. One new file, accommon.h is used 9644to 9645include the commonly used private headers for acpica code generation. 9646Future 9647plans include moving all private headers to a new subdirectory. 9648 9649Implemented an automatic Buffer->String return value conversion for 9650predefined ACPI methods. For these methods (such as _BIF), added 9651automatic 9652conversion for return objects that are required to be a String, but a 9653Buffer 9654was found instead. This can happen when reading string battery data from 9655an 9656operation region, because it used to be difficult to convert the data 9657from 9658buffer to string from within the ASL. Ensures that the host OS is 9659provided 9660with a valid null-terminated string. Linux BZ 11822. 9661 9662Updated the FACS waking vector interfaces. Split 9663AcpiSetFirmwareWakingVector 9664into two: one for the 32-bit vector, another for the 64-bit vector. This 9665is 9666required because the host OS must setup the wake much differently for 9667each 9668vector (real vs. protected mode, etc.) and the interface itself should 9669not 9670be 9671deciding which vector to use. Also, eliminated the 9672GetFirmwareWakingVector 9673interface, as it served no purpose (only the firmware reads the vector, 9674OS 9675only writes the vector.) ACPICA BZ 731. 9676 9677Implemented a mechanism to escape infinite AML While() loops. Added a 9678loop 9679counter to force exit from AML While loops if the count becomes too 9680large. 9681This can occur in poorly written AML when the hardware does not respond 9682within a while loop and the loop does not implement a timeout. The 9683maximum 9684loop count is configurable. A new exception code is returned when a loop 9685is 9686broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9687 9688Optimized the execution of AML While loops. Previously, a control state 9689object was allocated and freed for each execution of the loop. The 9690optimization is to simply reuse the control state for each iteration. 9691This 9692speeds up the raw loop execution time by about 5%. 9693 9694Enhanced the implicit return mechanism. For Windows compatibility, return 9695an 9696implicit integer of value zero for methods that contain no executable 9697code. 9698Such methods are seen in the field as stubs (presumably), and can cause 9699drivers to fail if they expect a return value. Lin Ming. 9700 9701Allow multiple backslashes as root prefixes in namepaths. In a fully 9702qualified namepath, allow multiple backslash prefixes. This can happen 9703(and 9704is seen in the field) because of the use of a double-backslash in strings 9705(since backslash is the escape character) causing confusion. ACPICA BZ 9706739 9707Lin Ming. 9708 9709Emit a warning if two different FACS or DSDT tables are discovered in the 9710FADT. Checks if there are two valid but different addresses for the FACS 9711and 9712DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 9713 9714Consolidated the method argument count validation code. Merged the code 9715that 9716validates control method argument counts into the predefined validation 9717module. Eliminates possible multiple warnings for incorrect argument 9718counts. 9719 9720Implemented ACPICA example code. Includes code for ACPICA initialization, 9721handler installation, and calling a control method. Available at 9722source/tools/examples. 9723 9724Added a global pointer for FACS table to simplify internal FACS access. 9725Use 9726the global pointer instead of using AcpiGetTableByIndex for each FACS 9727access. 9728This simplifies the code for the Global Lock and the Firmware Waking 9729Vector(s). 9730 9731Example Code and Data Size: These are the sizes for the OS-independent 9732acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9733debug version of the code includes the debug output trace mechanism and 9734has a 9735much larger code and data size. 9736 9737 Previous Release: 9738 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9739 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9740 Current Release: 9741 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9742 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9743 97442) iASL Compiler/Disassembler and Tools: 9745 9746iASL: Improved disassembly of external method calls. Added the -e option 9747to 9748allow the inclusion of additional ACPI tables to help with the 9749disassembly 9750of 9751method invocations and the generation of external declarations during the 9752disassembly. Certain external method invocations cannot be disassembled 9753properly without the actual declaration of the method. Use the -e option 9754to 9755include the table where the external method(s) are actually declared. 9756Most 9757useful for disassembling SSDTs that make method calls back to the master 9758DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9759-d 9760-e dsdt.aml ssdt1.aml 9761 9762iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9763problem where the use of an alias within a namepath would result in a not 9764found error or cause the compiler to fault. Also now allows forward 9765references from the Alias operator itself. ACPICA BZ 738. 9766 9767---------------------------------------- 976826 September 2008. Summary of changes for version 20080926: 9769 97701) ACPI CA Core Subsystem: 9771 9772Designed and implemented a mechanism to validate predefined ACPI methods 9773and 9774objects. This code validates the predefined ACPI objects (objects whose 9775names 9776start with underscore) that appear in the namespace, at the time they are 9777evaluated. The argument count and the type of the returned object are 9778validated against the ACPI specification. The purpose of this validation 9779is 9780to detect problems with the BIOS-implemented predefined ACPI objects 9781before 9782the results are returned to the ACPI-related drivers. Future enhancements 9783may 9784include actual repair of incorrect return objects where possible. Two new 9785files are nspredef.c and acpredef.h. 9786 9787Fixed a fault in the AML parser if a memory allocation fails during the 9788Op 9789completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9790 9791Fixed an issue with implicit return compatibility. This change improves 9792the 9793implicit return mechanism to be more compatible with the MS interpreter. 9794Lin 9795Ming, ACPICA BZ 349. 9796 9797Implemented support for zero-length buffer-to-string conversions. Allow 9798zero 9799length strings during interpreter buffer-to-string conversions. For 9800example, 9801during the ToDecimalString and ToHexString operators, as well as implicit 9802conversions. Fiodor Suietov, ACPICA BZ 585. 9803 9804Fixed two possible memory leaks in the error exit paths of 9805AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9806are 9807similar in that they use a stack of state objects in order to eliminate 9808recursion. The stack must be fully unwound and deallocated if an error 9809occurs. Lin Ming. ACPICA BZ 383. 9810 9811Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9812global 9813ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9814Moore ACPICA BZ 442. 9815 9816Removed the obsolete version number in module headers. Removed the 9817"$Revision" number that appeared in each module header. This version 9818number 9819was useful under SourceSafe and CVS, but has no meaning under git. It is 9820not 9821only incorrect, it could also be misleading. 9822 9823Example Code and Data Size: These are the sizes for the OS-independent 9824acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9825debug version of the code includes the debug output trace mechanism and 9826has a 9827much larger code and data size. 9828 9829 Previous Release: 9830 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9831 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9832 Current Release: 9833 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9834 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9835 9836---------------------------------------- 983729 August 2008. Summary of changes for version 20080829: 9838 98391) ACPI CA Core Subsystem: 9840 9841Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9842Reference. Changes include the elimination of cheating on the Object 9843field 9844for the DdbHandle subtype, addition of a reference class field to 9845differentiate the various reference types (instead of an AML opcode), and 9846the 9847cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9848 9849Reduce an error to a warning for an incorrect method argument count. 9850Previously aborted with an error if too few arguments were passed to a 9851control method via the external ACPICA interface. Now issue a warning 9852instead 9853and continue. Handles the case where the method inadvertently declares 9854too 9855many arguments, but does not actually use the extra ones. Applies mainly 9856to 9857the predefined methods. Lin Ming. Linux BZ 11032. 9858 9859Disallow the evaluation of named object types with no intrinsic value. 9860Return 9861AE_TYPE for objects that have no value and therefore evaluation is 9862undefined: 9863Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9864of 9865these types were allowed, but an exception would be generated at some 9866point 9867during the evaluation. Now, the error is generated up front. 9868 9869Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9870(nsnames.c). Fixes a leak in the error exit path. 9871 9872Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9873debug 9874levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9875ACPI_EXCEPTION 9876interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9877ACPI_LV_EVENTS. 9878 9879Removed obsolete and/or unused exception codes from the acexcep.h header. 9880There is the possibility that certain device drivers may be affected if 9881they 9882use any of these exceptions. 9883 9884The ACPICA documentation has been added to the public git source tree, 9885under 9886acpica/documents. Included are the ACPICA programmer reference, the iASL 9887compiler reference, and the changes.txt release logfile. 9888 9889Example Code and Data Size: These are the sizes for the OS-independent 9890acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9891debug version of the code includes the debug output trace mechanism and 9892has a 9893much larger code and data size. 9894 9895 Previous Release: 9896 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9897 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9898 Current Release: 9899 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9900 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9901 99022) iASL Compiler/Disassembler and Tools: 9903 9904Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9905defines _SCP with 3 arguments. Previous versions defined it with only 1 9906argument. iASL now allows both definitions. 9907 9908iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9909zero- 9910length subtables when disassembling ACPI tables. Also fixed a couple of 9911errors where a full 16-bit table type field was not extracted from the 9912input 9913properly. 9914 9915acpisrc: Improve comment counting mechanism for generating source code 9916statistics. Count first and last lines of multi-line comments as 9917whitespace, 9918not comment lines. Handle Linux legal header in addition to standard 9919acpica 9920header. 9921 9922---------------------------------------- 9923 992429 July 2008. Summary of changes for version 20080729: 9925 99261) ACPI CA Core Subsystem: 9927 9928Fix a possible deadlock in the GPE dispatch. Remove call to 9929AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9930attempt 9931to acquire the GPE lock but can deadlock since the GPE lock is already 9932held 9933at dispatch time. This code was introduced in version 20060831 as a 9934response 9935to Linux BZ 6881 and has since been removed from Linux. 9936 9937Add a function to dereference returned reference objects. Examines the 9938return 9939object from a call to AcpiEvaluateObject. Any Index or RefOf references 9940are 9941automatically dereferenced in an attempt to return something useful 9942(these 9943reference types cannot be converted into an external ACPI_OBJECT.) 9944Provides 9945MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9946 9947x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9948subtables for the MADT and one new subtable for the SRAT. Includes 9949disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9950x2APIC 9951Specification, June 2008. 9952 9953Additional error checking for pathname utilities. Add error check after 9954all 9955calls to AcpiNsGetPathnameLength. Add status return from 9956AcpiNsBuildExternalPath and check after all calls. Add parameter 9957validation 9958to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9959 9960Return status from the global init function AcpiUtGlobalInitialize. This 9961is 9962used by both the kernel subsystem and the utilities such as iASL 9963compiler. 9964The function could possibly fail when the caches are initialized. Yang 9965Yi. 9966 9967Add a function to decode reference object types to strings. Created for 9968improved error messages. 9969 9970Improve object conversion error messages. Better error messages during 9971object 9972conversion from internal to the external ACPI_OBJECT. Used for external 9973calls 9974to AcpiEvaluateObject. 9975 9976Example Code and Data Size: These are the sizes for the OS-independent 9977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9978debug version of the code includes the debug output trace mechanism and 9979has a 9980much larger code and data size. 9981 9982 Previous Release: 9983 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9984 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9985 Current Release: 9986 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9987 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9988 99892) iASL Compiler/Disassembler and Tools: 9990 9991Debugger: fix a possible hang when evaluating non-methods. Fixes a 9992problem 9993introduced in version 20080701. If the object being evaluated (via 9994execute 9995command) is not a method, the debugger can hang while trying to obtain 9996non- 9997existent parameters. 9998 9999iASL: relax error for using reserved "_T_x" identifiers. These names can 10000appear in a disassembled ASL file if they were emitted by the original 10001compiler. Instead of issuing an error or warning and forcing the user to 10002manually change these names, issue a remark instead. 10003 10004iASL: error if named object created in while loop. Emit an error if any 10005named 10006object is created within a While loop. If allowed, this code will 10007generate 10008a 10009run-time error on the second iteration of the loop when an attempt is 10010made 10011to 10012create the same named object twice. ACPICA bugzilla 730. 10013 10014iASL: Support absolute pathnames for include files. Add support for 10015absolute 10016pathnames within the Include operator. previously, only relative 10017pathnames 10018were supported. 10019 10020iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 10021Descriptor. 10022The ACPI spec requires one interrupt minimum. BZ 423 10023 10024iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 10025Handles the case for the Interrupt Resource Descriptor where 10026the ResourceSource argument is omitted but ResourceSourceIndex 10027is present. Now leave room for the Index. BZ 426 10028 10029iASL: Prevent error message if CondRefOf target does not exist. Fixes 10030cases 10031where an error message is emitted if the target does not exist. BZ 516 10032 10033iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 10034(get ACPI tables on Windows). This was apparently broken in version 1003520070919. 10036 10037AcpiXtract: Handle EOF while extracting data. Correctly handle the case 10038where 10039the EOF happens immediately after the last table in the input file. Print 10040completion message. Previously, no message was displayed in this case. 10041 10042---------------------------------------- 1004301 July 2008. Summary of changes for version 20080701: 10044 100450) Git source tree / acpica.org 10046 10047Fixed a problem where a git-clone from http would not transfer the entire 10048source tree. 10049 100501) ACPI CA Core Subsystem: 10051 10052Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 10053enable bit. Now performs a read-change-write of the enable register 10054instead 10055of simply writing out the cached enable mask. This will prevent 10056inadvertent 10057enabling of GPEs if a rogue GPE is received during initialization (before 10058GPE 10059handlers are installed.) 10060 10061Implemented a copy for dynamically loaded tables. Previously, dynamically 10062loaded tables were simply mapped - but on some machines this memory is 10063corrupted after suspend. Now copy the table to a local buffer. For the 10064OpRegion case, added checksum verify. Use the table length from the table 10065header, not the region length. For the Buffer case, use the table length 10066also. Dennis Noordsij, Bob Moore. BZ 10734 10067 10068Fixed a problem where the same ACPI table could not be dynamically loaded 10069and 10070unloaded more than once. Without this change, a table cannot be loaded 10071again 10072once it has been loaded/unloaded one time. The current mechanism does not 10073unregister a table upon an unload. During a load, if the same table is 10074found, 10075this no longer returns an exception. BZ 722 10076 10077Fixed a problem where the wrong descriptor length was calculated for the 10078EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 10079EndTag 10080are calculated as 12 bytes long, but the actual length in the internal 10081descriptor is 16 because of the round-up to 8 on the 64-bit build. 10082Reported 10083by Linn Crosetto. BZ 728 10084 10085Fixed a possible memory leak in the Unload operator. The DdbHandle 10086returned 10087by Load() did not have its reference count decremented during unload, 10088leading 10089to a memory leak. Lin Ming. BZ 727 10090 10091Fixed a possible memory leak when deleting thermal/processor objects. Any 10092associated notify handlers (and objects) were not being deleted. Fiodor 10093Suietov. BZ 506 10094 10095Fixed the ordering of the ASCII names in the global mutex table to match 10096the 10097actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10098only. 10099Vegard Nossum. BZ 726 10100 10101Enhanced the AcpiGetObjectInfo interface to return the number of required 10102arguments if the object is a control method. Added this call to the 10103debugger 10104so the proper number of default arguments are passed to a method. This 10105prevents a warning when executing methods from AcpiExec. 10106 10107Added a check for an invalid handle in AcpiGetObjectInfo. Return 10108AE_BAD_PARAMETER if input handle is invalid. BZ 474 10109 10110Fixed an extraneous warning from exconfig.c on the 64-bit build. 10111 10112Example Code and Data Size: These are the sizes for the OS-independent 10113acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10114debug version of the code includes the debug output trace mechanism and 10115has a 10116much larger code and data size. 10117 10118 Previous Release: 10119 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10120 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10121 Current Release: 10122 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10123 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10124 101252) iASL Compiler/Disassembler and Tools: 10126 10127iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10128resource descriptor names. 10129 10130iASL: Detect invalid ASCII characters in input (windows version). Removed 10131the 10132"-CF" flag from the flex compile, enables correct detection of non-ASCII 10133characters in the input. BZ 441 10134 10135iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10136the 10137"result of operation not used" warning when the DDB handle returned from 10138LoadTable is not used. The warning is not needed. BZ 590 10139 10140AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10141method 10142to 10143pass address of table to the AML. Added option to disable OpRegion 10144simulation 10145to allow creation of an OpRegion with a real address that was passed to 10146_CFG. 10147All of this allows testing of the Load and Unload operators from 10148AcpiExec. 10149 10150Debugger: update tables command for unloaded tables. Handle unloaded 10151tables 10152and use the standard table header output routine. 10153 10154---------------------------------------- 1015509 June 2008. Summary of changes for version 20080609: 10156 101571) ACPI CA Core Subsystem: 10158 10159Implemented a workaround for reversed _PRT entries. A significant number 10160of 10161BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10162change dynamically detects and repairs this problem. Provides 10163compatibility 10164with MS ACPI. BZ 6859 10165 10166Simplified the internal ACPI hardware interfaces to eliminate the locking 10167flag parameter from Register Read/Write. Added a new external interface, 10168AcpiGetRegisterUnlocked. 10169 10170Fixed a problem where the invocation of a GPE control method could hang. 10171This 10172was a regression introduced in 20080514. The new method argument count 10173validation mechanism can enter an infinite loop when a GPE method is 10174dispatched. Problem fixed by removing the obsolete code that passed GPE 10175block 10176information to the notify handler via the control method parameter 10177pointer. 10178 10179Fixed a problem where the _SST execution status was incorrectly returned 10180to 10181the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10182in 1018320080514. _SST is optional and a NOT_FOUND exception should never be 10184returned. BZ 716 10185 10186Fixed a problem where a deleted object could be accessed from within the 10187AML 10188parser. This was a regression introduced in version 20080123 as a fix for 10189the 10190Unload operator. Lin Ming. BZ 10669 10191 10192Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10193operands 10194and eliminated the use of a negative index in a loop. Operands are now 10195displayed in the correct order, not backwards. This also fixes a 10196regression 10197introduced in 20080514 on 64-bit systems where the elimination of 10198ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10199715 10200 10201Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10202exit 10203path did not delete a locally allocated structure. 10204 10205Updated definitions for the DMAR and SRAT tables to synchronize with the 10206current specifications. Includes disassembler support. 10207 10208Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10209loop termination value was used. Loop terminated on iteration early, 10210missing 10211one mutex. Linn Crosetto 10212 10213Example Code and Data Size: These are the sizes for the OS-independent 10214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10215debug version of the code includes the debug output trace mechanism and 10216has a 10217much larger code and data size. 10218 10219 Previous Release: 10220 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10221 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10222 Current Release: 10223 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10224 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10225 102262) iASL Compiler/Disassembler and Tools: 10227 10228Disassembler: Implemented support for EisaId() within _CID objects. Now 10229disassemble integer _CID objects back to EisaId invocations, including 10230multiple integers within _CID packages. Includes single-step support for 10231debugger also. 10232 10233Disassembler: Added support for DMAR and SRAT table definition changes. 10234 10235---------------------------------------- 1023614 May 2008. Summary of changes for version 20080514: 10237 102381) ACPI CA Core Subsystem: 10239 10240Fixed a problem where GPEs were enabled too early during the ACPICA 10241initialization. This could lead to "handler not installed" errors on some 10242machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10243This 10244ensures that all operation regions and devices throughout the namespace 10245have 10246been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10247 10248Implemented a change to the enter sleep code. Moved execution of the _GTS 10249method to just before setting sleep enable bit. The execution was moved 10250from 10251AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10252immediately before the SLP_EN bit is set, as per the ACPI specification. 10253Luming Yu, BZ 1653. 10254 10255Implemented a fix to disable unknown GPEs (2nd version). Now always 10256disable 10257the GPE, even if ACPICA thinks that that it is already disabled. It is 10258possible that the AML or some other code has enabled the GPE unbeknownst 10259to 10260the ACPICA code. 10261 10262Fixed a problem with the Field operator where zero-length fields would 10263return 10264an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10265ASL 10266field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10267 10268Implemented a fix for the Load operator, now load the table at the 10269namespace 10270root. This reverts a change introduced in version 20071019. The table is 10271now 10272loaded at the namespace root even though this goes against the ACPI 10273specification. This provides compatibility with other ACPI 10274implementations. 10275The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10276Ming. 10277 10278Fixed a problem where ACPICA would not Load() tables with unusual 10279signatures. 10280Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10281acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10282Therefore, signature validation is worthless. Apparently MS ACPI accepts 10283such 10284signatures, ACPICA must be compatible. BZ 10454. 10285 10286Fixed a possible negative array index in AcpiUtValidateException. Added 10287NULL 10288fields to the exception string arrays to eliminate a -1 subtraction on 10289the 10290SubStatus field. 10291 10292Updated the debug tracking macros to reduce overall code and data size. 10293Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10294instead of pointers to static strings. Jan Beulich and Bob Moore. 10295 10296Implemented argument count checking in control method invocation via 10297AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10298too 10299many. This applies only to extern programmatic control method execution, 10300not 10301method-to-method calls within the AML. Lin Ming. 10302 10303Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10304no 10305longer needed, especially with the removal of 16-bit support. It was 10306replaced 10307mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10308bit 10309on 1031032/64-bit platforms is required. 10311 10312Added the C const qualifier for appropriate string constants -- mostly 10313MODULE_NAME and printf format strings. Jan Beulich. 10314 10315Example Code and Data Size: These are the sizes for the OS-independent 10316acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10317debug version of the code includes the debug output trace mechanism and 10318has a 10319much larger code and data size. 10320 10321 Previous Release: 10322 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10323 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10324 Current Release: 10325 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10326 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10327 103282) iASL Compiler/Disassembler and Tools: 10329 10330Implemented ACPI table revision ID validation in the disassembler. Zero 10331is 10332always invalid. For DSDTs, the ID controls the interpreter integer width. 103331 10334means 32-bit and this is unusual. 2 or greater is 64-bit. 10335 10336---------------------------------------- 1033721 March 2008. Summary of changes for version 20080321: 10338 103391) ACPI CA Core Subsystem: 10340 10341Implemented an additional change to the GPE support in order to suppress 10342spurious or stray GPEs. The AcpiEvDisableGpe function will now 10343permanently 10344disable incoming GPEs that are neither enabled nor disabled -- meaning 10345that 10346the GPE is unknown to the system. This should prevent future interrupt 10347floods 10348from that GPE. BZ 6217 (Zhang Rui) 10349 10350Fixed a problem where NULL package elements were not returned to the 10351AcpiEvaluateObject interface correctly. The element was simply ignored 10352instead of returning a NULL ACPI_OBJECT package element, potentially 10353causing 10354a buffer overflow and/or confusing the caller who expected a fixed number 10355of 10356elements. BZ 10132 (Lin Ming, Bob Moore) 10357 10358Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10359Dword, 10360Qword), Field, BankField, and IndexField operators when invoked from 10361inside 10362an executing control method. In this case, these operators created 10363namespace 10364nodes that were incorrectly left marked as permanent nodes instead of 10365temporary nodes. This could cause a problem if there is race condition 10366between an exiting control method and a running namespace walk. (Reported 10367by 10368Linn Crosetto) 10369 10370Fixed a problem where the CreateField and CreateXXXField operators would 10371incorrectly allow duplicate names (the name of the field) with no 10372exception 10373generated. 10374 10375Implemented several changes for Notify handling. Added support for new 10376Notify 10377values (ACPI 2.0+) and improved the Notify debug output. Notify on 10378PowerResource objects is no longer allowed, as per the ACPI 10379specification. 10380(Bob Moore, Zhang Rui) 10381 10382All Reference Objects returned via the AcpiEvaluateObject interface are 10383now 10384marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10385for 10386NULL objects - either NULL package elements or unresolved named 10387references. 10388 10389Fixed a problem where an extraneous debug message was produced for 10390package 10391objects (when debugging enabled). The message "Package List length larger 10392than NumElements count" is now produced in the correct case, and is now 10393an 10394error message rather than a debug message. Added a debug message for the 10395opposite case, where NumElements is larger than the Package List (the 10396package 10397will be padded out with NULL elements as per the ACPI spec.) 10398 10399Implemented several improvements for the output of the ASL "Debug" object 10400to 10401clarify and keep all data for a given object on one output line. 10402 10403Fixed two size calculation issues with the variable-length Start 10404Dependent 10405resource descriptor. 10406 10407Example Code and Data Size: These are the sizes for the OS-independent 10408acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10409debug version of the code includes the debug output trace mechanism and 10410has 10411a much larger code and data size. 10412 10413 Previous Release: 10414 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10415 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10416 Current Release: 10417 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10418 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10419 104202) iASL Compiler/Disassembler and Tools: 10421 10422Fixed a problem with the use of the Switch operator where execution of 10423the 10424containing method by multiple concurrent threads could cause an 10425AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10426actual Switch opcode, it must be simulated with local named temporary 10427variables and if/else pairs. The solution chosen was to mark any method 10428that 10429uses Switch as Serialized, thus preventing multiple thread entries. BZ 10430469. 10431 10432---------------------------------------- 1043313 February 2008. Summary of changes for version 20080213: 10434 104351) ACPI CA Core Subsystem: 10436 10437Implemented another MS compatibility design change for GPE/Notify 10438handling. 10439GPEs are now cleared/enabled asynchronously to allow all pending notifies 10440to 10441complete first. It is expected that the OSL will queue the enable request 10442behind all pending notify requests (may require changes to the local host 10443OSL 10444in AcpiOsExecute). Alexey Starikovskiy. 10445 10446Fixed a problem where buffer and package objects passed as arguments to a 10447control method via the external AcpiEvaluateObject interface could cause 10448an 10449AE_AML_INTERNAL exception depending on the order and type of operators 10450executed by the target control method. 10451 10452Fixed a problem where resource descriptor size optimization could cause a 10453problem when a _CRS resource template is passed to a _SRS method. The 10454_SRS 10455resource template must use the same descriptors (with the same size) as 10456returned from _CRS. This change affects the following resource 10457descriptors: 10458IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 104599487) 10460 10461Fixed a problem where a CopyObject to RegionField, BankField, and 10462IndexField 10463objects did not perform an implicit conversion as it should. These types 10464must 10465retain their initial type permanently as per the ACPI specification. 10466However, 10467a CopyObject to all other object types should not perform an implicit 10468conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10469 10470Fixed a problem with the AcpiGetDevices interface where the mechanism to 10471match device CIDs did not examine the entire list of available CIDs, but 10472instead aborted on the first non-matching CID. Andrew Patterson. 10473 10474Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10475was 10476inadvertently changed to return a 16-bit value instead of a 32-bit value, 10477truncating the upper dword of a 64-bit value. This macro is only used to 10478display debug output, so no incorrect calculations were made. Also, 10479reimplemented the macro so that a 64-bit shift is not performed by 10480inefficient compilers. 10481 10482Added missing va_end statements that should correspond with each va_start 10483statement. 10484 10485Example Code and Data Size: These are the sizes for the OS-independent 10486acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10487debug version of the code includes the debug output trace mechanism and 10488has 10489a much larger code and data size. 10490 10491 Previous Release: 10492 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10493 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10494 Current Release: 10495 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10496 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10497 104982) iASL Compiler/Disassembler and Tools: 10499 10500Implemented full disassembler support for the following new ACPI tables: 10501BERT, EINJ, and ERST. Implemented partial disassembler support for the 10502complicated HEST table. These tables support the Windows Hardware Error 10503Architecture (WHEA). 10504 10505---------------------------------------- 1050623 January 2008. Summary of changes for version 20080123: 10507 105081) ACPI CA Core Subsystem: 10509 10510Added the 2008 copyright to all module headers and signons. This affects 10511virtually every file in the ACPICA core subsystem, the iASL compiler, and 10512the tools/utilities. 10513 10514Fixed a problem with the SizeOf operator when used with Package and 10515Buffer 10516objects. These objects have deferred execution for some arguments, and 10517the 10518execution is now completed before the SizeOf is executed. This problem 10519caused 10520unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10521BZ 105229558 10523 10524Implemented an enhancement to the interpreter "slack mode". In the 10525absence 10526of 10527an explicit return or an implicitly returned object from the last 10528executed 10529opcode, a control method will now implicitly return an integer of value 0 10530for 10531Microsoft compatibility. (Lin Ming) BZ 392 10532 10533Fixed a problem with the Load operator where an exception was not 10534returned 10535in 10536the case where the table is already loaded. (Lin Ming) BZ 463 10537 10538Implemented support for the use of DDBHandles as an Indexed Reference, as 10539per 10540the ACPI spec. (Lin Ming) BZ 486 10541 10542Implemented support for UserTerm (Method invocation) for the Unload 10543operator 10544as per the ACPI spec. (Lin Ming) BZ 580 10545 10546Fixed a problem with the LoadTable operator where the OemId and 10547OemTableId 10548input strings could cause unexpected failures if they were shorter than 10549the 10550maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10551 10552Implemented support for UserTerm (Method invocation) for the Unload 10553operator 10554as per the ACPI spec. (Lin Ming) BZ 580 10555 10556Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10557HEST, 10558IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10559 10560Example Code and Data Size: These are the sizes for the OS-independent 10561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10562debug version of the code includes the debug output trace mechanism and 10563has 10564a much larger code and data size. 10565 10566 Previous Release: 10567 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10568 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10569 Current Release: 10570 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10571 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10572 105732) iASL Compiler/Disassembler and Tools: 10574 10575Implemented support in the disassembler for checksum validation on 10576incoming 10577binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10578table 10579header dump at the start of the disassembly. 10580 10581Implemented additional debugging information in the namespace listing 10582file 10583created during compilation. In addition to the namespace hierarchy, the 10584full 10585pathname to each namespace object is displayed. 10586 10587Fixed a problem with the disassembler where invalid ACPI tables could 10588cause 10589faults or infinite loops. 10590 10591Fixed an unexpected parse error when using the optional "parameter types" 10592list in a control method declaration. (Lin Ming) BZ 397 10593 10594Fixed a problem where two External declarations with the same name did 10595not 10596cause an error (Lin Ming) BZ 509 10597 10598Implemented support for full TermArgs (adding Argx, Localx and method 10599invocation) for the ParameterData parameter to the LoadTable operator. 10600(Lin 10601Ming) BZ 583,587 10602 10603---------------------------------------- 1060419 December 2007. Summary of changes for version 20071219: 10605 106061) ACPI CA Core Subsystem: 10607 10608Implemented full support for deferred execution for the TermArg string 10609arguments for DataTableRegion. This enables forward references and full 10610operand resolution for the three string arguments. Similar to 10611OperationRegion 10612deferred argument execution.) Lin Ming. BZ 430 10613 10614Implemented full argument resolution support for the BankValue argument 10615to 10616BankField. Previously, only constants were supported, now any TermArg may 10617be 10618used. Lin Ming BZ 387, 393 10619 10620Fixed a problem with AcpiGetDevices where the search of a branch of the 10621device tree could be terminated prematurely. In accordance with the ACPI 10622specification, the search down the current branch is terminated if a 10623device 10624is both not present and not functional (instead of just not present.) 10625Yakui 10626Zhao. 10627 10628Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10629if 10630the underlying AML code changed the GPE enable registers. Now, any 10631unknown 10632incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10633disabled 10634instead of simply ignored. Rui Zhang. 10635 10636Fixed a problem with Index Fields where the Index register was 10637incorrectly 10638limited to a maximum of 32 bits. Now any size may be used. 10639 10640Fixed a couple memory leaks associated with "implicit return" objects 10641when 10642the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10643 10644Example Code and Data Size: These are the sizes for the OS-independent 10645acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10646debug version of the code includes the debug output trace mechanism and 10647has 10648a much larger code and data size. 10649 10650 Previous Release: 10651 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10652 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10653 Current Release: 10654 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10655 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10656 10657---------------------------------------- 1065814 November 2007. Summary of changes for version 20071114: 10659 106601) ACPI CA Core Subsystem: 10661 10662Implemented event counters for each of the Fixed Events, the ACPI SCI 10663(interrupt) itself, and control methods executed. Named 10664AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10665These 10666should be useful for debugging and statistics. 10667 10668Implemented a new external interface, AcpiGetStatistics, to retrieve the 10669contents of the various event counters. Returns the current values for 10670AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10671AcpiMethodCount. The interface can be expanded in the future if new 10672counters 10673are added. Device drivers should use this interface rather than access 10674the 10675counters directly. 10676 10677Fixed a problem with the FromBCD and ToBCD operators. With some 10678compilers, 10679the ShortDivide function worked incorrectly, causing problems with the 10680BCD 10681functions with large input values. A truncation from 64-bit to 32-bit 10682inadvertently occurred. Internal BZ 435. Lin Ming 10683 10684Fixed a problem with Index references passed as method arguments. 10685References 10686passed as arguments to control methods were dereferenced immediately 10687(before 10688control was passed to the called method). The references are now 10689correctly 10690passed directly to the called method. BZ 5389. Lin Ming 10691 10692Fixed a problem with CopyObject used in conjunction with the Index 10693operator. 10694The reference was incorrectly dereferenced before the copy. The reference 10695is 10696now correctly copied. BZ 5391. Lin Ming 10697 10698Fixed a problem with Control Method references within Package objects. 10699These 10700references are now correctly generated. This completes the package 10701construction overhaul that began in version 20071019. 10702 10703Example Code and Data Size: These are the sizes for the OS-independent 10704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10705debug version of the code includes the debug output trace mechanism and 10706has 10707a much larger code and data size. 10708 10709 Previous Release: 10710 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10711 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10712 Current Release: 10713 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10714 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10715 10716 107172) iASL Compiler/Disassembler and Tools: 10718 10719The AcpiExec utility now installs handlers for all of the predefined 10720Operation Region types. New types supported are: PCI_Config, CMOS, and 10721PCIBARTarget. 10722 10723Fixed a problem with the 64-bit version of AcpiExec where the extended 10724(64- 10725bit) address fields for the DSDT and FACS within the FADT were not being 10726used, causing truncation of the upper 32-bits of these addresses. Lin 10727Ming 10728and Bob Moore 10729 10730---------------------------------------- 1073119 October 2007. Summary of changes for version 20071019: 10732 107331) ACPI CA Core Subsystem: 10734 10735Fixed a problem with the Alias operator when the target of the alias is a 10736named ASL operator that opens a new scope -- Scope, Device, 10737PowerResource, 10738Processor, and ThermalZone. In these cases, any children of the original 10739operator could not be accessed via the alias, potentially causing 10740unexpected 10741AE_NOT_FOUND exceptions. (BZ 9067) 10742 10743Fixed a problem with the Package operator where all named references were 10744created as object references and left otherwise unresolved. According to 10745the 10746ACPI specification, a Package can only contain Data Objects or references 10747to 10748control methods. The implication is that named references to Data Objects 10749(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10750immediately upon package creation. This is the approach taken with this 10751change. References to all other named objects (Methods, Devices, Scopes, 10752etc.) are all now properly created as reference objects. (BZ 5328) 10753 10754Reverted a change to Notify handling that was introduced in version 1075520070508. This version changed the Notify handling from asynchronous to 10756fully synchronous (Device driver Notify handling with respect to the 10757Notify 10758ASL operator). It was found that this change caused more problems than it 10759solved and was removed by most users. 10760 10761Fixed a problem with the Increment and Decrement operators where the type 10762of 10763the target object could be unexpectedly and incorrectly changed. (BZ 353) 10764Lin Ming. 10765 10766Fixed a problem with the Load and LoadTable operators where the table 10767location within the namespace was ignored. Instead, the table was always 10768loaded into the root or current scope. Lin Ming. 10769 10770Fixed a problem with the Load operator when loading a table from a buffer 10771object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10772 10773Fixed a problem with the Debug object where a store of a DdbHandle 10774reference 10775object to the Debug object could cause a fault. 10776 10777Added a table checksum verification for the Load operator, in the case 10778where 10779the load is from a buffer. (BZ 578). 10780 10781Implemented additional parameter validation for the LoadTable operator. 10782The 10783length of the input strings SignatureString, OemIdString, and OemTableId 10784are 10785now checked for maximum lengths. (BZ 582) Lin Ming. 10786 10787Example Code and Data Size: These are the sizes for the OS-independent 10788acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10789debug version of the code includes the debug output trace mechanism and 10790has 10791a much larger code and data size. 10792 10793 Previous Release: 10794 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10795 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10796 Current Release: 10797 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10798 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10799 10800 108012) iASL Compiler/Disassembler: 10802 10803Fixed a problem where if a single file was specified and the file did not 10804exist, no error message was emitted. (Introduced with wildcard support in 10805version 20070917.) 10806 10807---------------------------------------- 1080819 September 2007. Summary of changes for version 20070919: 10809 108101) ACPI CA Core Subsystem: 10811 10812Designed and implemented new external interfaces to install and remove 10813handlers for ACPI table-related events. Current events that are defined 10814are 10815LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10816they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10817AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10818 10819Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10820(acpi_serialized option on Linux) could cause some systems to hang during 10821initialization. (Bob Moore) BZ 8171 10822 10823Fixed a problem where objects of certain types (Device, ThermalZone, 10824Processor, PowerResource) can be not found if they are declared and 10825referenced from within the same control method (Lin Ming) BZ 341 10826 10827Example Code and Data Size: These are the sizes for the OS-independent 10828acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10829debug version of the code includes the debug output trace mechanism and 10830has 10831a much larger code and data size. 10832 10833 Previous Release: 10834 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10835 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10836 Current Release: 10837 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10838 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10839 10840 108412) iASL Compiler/Disassembler: 10842 10843Implemented support to allow multiple files to be compiled/disassembled 10844in 10845a 10846single invocation. This includes command line wildcard support for both 10847the 10848Windows and Unix versions of the compiler. This feature simplifies the 10849disassembly and compilation of multiple ACPI tables in a single 10850directory. 10851 10852---------------------------------------- 1085308 May 2007. Summary of changes for version 20070508: 10854 108551) ACPI CA Core Subsystem: 10856 10857Implemented a Microsoft compatibility design change for the handling of 10858the 10859Notify AML operator. Previously, notify handlers were dispatched and 10860executed completely asynchronously in a deferred thread. The new design 10861still executes the notify handlers in a different thread, but the 10862original 10863thread that executed the Notify() now waits at a synchronization point 10864for 10865the notify handler to complete. Some machines depend on a synchronous 10866Notify 10867operator in order to operate correctly. 10868 10869Implemented support to allow Package objects to be passed as method 10870arguments to the external AcpiEvaluateObject interface. Previously, this 10871would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10872implemented since there were no reserved control methods that required it 10873until recently. 10874 10875Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10876that 10877contained invalid non-zero values in reserved fields could cause later 10878failures because these fields have meaning in later revisions of the 10879FADT. 10880For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10881fields 10882are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10883 10884Fixed a problem where the Global Lock handle was not properly updated if 10885a 10886thread that acquired the Global Lock via executing AML code then 10887attempted 10888to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10889Joe 10890Liu. 10891 10892Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10893could be corrupted if the interrupt being removed was at the head of the 10894list. Reported by Linn Crosetto. 10895 10896Example Code and Data Size: These are the sizes for the OS-independent 10897acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10898debug version of the code includes the debug output trace mechanism and 10899has 10900a much larger code and data size. 10901 10902 Previous Release: 10903 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10904 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10905 Current Release: 10906 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10907 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10908 10909---------------------------------------- 1091020 March 2007. Summary of changes for version 20070320: 10911 109121) ACPI CA Core Subsystem: 10913 10914Implemented a change to the order of interpretation and evaluation of AML 10915operand objects within the AML interpreter. The interpreter now evaluates 10916operands in the order that they appear in the AML stream (and the 10917corresponding ASL code), instead of in the reverse order (after the 10918entire 10919operand list has been parsed). The previous behavior caused several 10920subtle 10921incompatibilities with the Microsoft AML interpreter as well as being 10922somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10923 10924Implemented a change to the ACPI Global Lock support. All interfaces to 10925the 10926global lock now allow the same thread to acquire the lock multiple times. 10927This affects the AcpiAcquireGlobalLock external interface to the global 10928lock 10929as well as the internal use of the global lock to support AML fields -- a 10930control method that is holding the global lock can now simultaneously 10931access 10932AML fields that require global lock protection. Previously, in both 10933cases, 10934this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10935to 10936AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10937Controller. There is no change to the behavior of the AML Acquire 10938operator, 10939as this can already be used to acquire a mutex multiple times by the same 10940thread. BZ 8066. With assistance from Alexey Starikovskiy. 10941 10942Fixed a problem where invalid objects could be referenced in the AML 10943Interpreter after error conditions. During operand evaluation, ensure 10944that 10945the internal "Return Object" field is cleared on error and only valid 10946pointers are stored there. Caused occasional access to deleted objects 10947that 10948resulted in "large reference count" warning messages. Valery Podrezov. 10949 10950Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10951on 10952deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10953Podrezov. 10954 10955Fixed an internal problem with the handling of result objects on the 10956interpreter result stack. BZ 7872. Valery Podrezov. 10957 10958Removed obsolete code that handled the case where AML_NAME_OP is the 10959target 10960of a reference (Reference.Opcode). This code was no longer necessary. BZ 109617874. Valery Podrezov. 10962 10963Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10964was 10965a 10966remnant from the previously discontinued 16-bit support. 10967 10968Example Code and Data Size: These are the sizes for the OS-independent 10969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10970debug version of the code includes the debug output trace mechanism and 10971has 10972a much larger code and data size. 10973 10974 Previous Release: 10975 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10976 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10977 Current Release: 10978 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10979 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10980 10981---------------------------------------- 1098226 January 2007. Summary of changes for version 20070126: 10983 109841) ACPI CA Core Subsystem: 10985 10986Added the 2007 copyright to all module headers and signons. This affects 10987virtually every file in the ACPICA core subsystem, the iASL compiler, and 10988the utilities. 10989 10990Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10991during a table load. A bad pointer was passed in the case where the DSDT 10992is 10993overridden, causing a fault in this case. 10994 10995Example Code and Data Size: These are the sizes for the OS-independent 10996acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10997debug version of the code includes the debug output trace mechanism and 10998has 10999a much larger code and data size. 11000 11001 Previous Release: 11002 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11003 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11004 Current Release: 11005 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11006 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11007 11008---------------------------------------- 1100915 December 2006. Summary of changes for version 20061215: 11010 110111) ACPI CA Core Subsystem: 11012 11013Support for 16-bit ACPICA has been completely removed since it is no 11014longer 11015necessary and it clutters the code. All 16-bit macros, types, and 11016conditional compiles have been removed, cleaning up and simplifying the 11017code 11018across the entire subsystem. DOS support is no longer needed since the 11019bootable Linux firmware kit is now available. 11020 11021The handler for the Global Lock is now removed during AcpiTerminate to 11022enable a clean subsystem restart, via the implementation of the 11023AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 11024HP) 11025 11026Implemented enhancements to the multithreading support within the 11027debugger 11028to enable improved multithreading debugging and evaluation of the 11029subsystem. 11030(Valery Podrezov) 11031 11032Debugger: Enhanced the Statistics/Memory command to emit the total 11033(maximum) 11034memory used during the execution, as well as the maximum memory consumed 11035by 11036each of the various object types. (Valery Podrezov) 11037 11038Example Code and Data Size: These are the sizes for the OS-independent 11039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11040debug version of the code includes the debug output trace mechanism and 11041has 11042a much larger code and data size. 11043 11044 Previous Release: 11045 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11046 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11047 Current Release: 11048 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11049 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11050 11051 110522) iASL Compiler/Disassembler and Tools: 11053 11054AcpiExec: Implemented a new option (-m) to display full memory use 11055statistics upon subsystem/program termination. (Valery Podrezov) 11056 11057---------------------------------------- 1105809 November 2006. Summary of changes for version 20061109: 11059 110601) ACPI CA Core Subsystem: 11061 11062Optimized the Load ASL operator in the case where the source operand is 11063an 11064operation region. Simply map the operation region memory, instead of 11065performing a bytewise read. (Region must be of type SystemMemory, see 11066below.) 11067 11068Fixed the Load ASL operator for the case where the source operand is a 11069region field. A buffer object is also allowed as the source operand. BZ 11070480 11071 11072Fixed a problem where the Load ASL operator allowed the source operand to 11073be 11074an operation region of any type. It is now restricted to regions of type 11075SystemMemory, as per the ACPI specification. BZ 481 11076 11077Additional cleanup and optimizations for the new Table Manager code. 11078 11079AcpiEnable will now fail if all of the required ACPI tables are not 11080loaded 11081(FADT, FACS, DSDT). BZ 477 11082 11083Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11084this 11085header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11086manually optimized to be aligned and will not work if it is byte-packed. 11087 11088Example Code and Data Size: These are the sizes for the OS-independent 11089acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11090debug version of the code includes the debug output trace mechanism and 11091has 11092a much larger code and data size. 11093 11094 Previous Release: 11095 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11096 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11097 Current Release: 11098 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11099 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11100 11101 111022) iASL Compiler/Disassembler and Tools: 11103 11104Fixed a problem where the presence of the _OSI predefined control method 11105within complex expressions could cause an internal compiler error. 11106 11107AcpiExec: Implemented full region support for multiple address spaces. 11108SpaceId is now part of the REGION object. BZ 429 11109 11110---------------------------------------- 1111111 October 2006. Summary of changes for version 20061011: 11112 111131) ACPI CA Core Subsystem: 11114 11115Completed an AML interpreter performance enhancement for control method 11116execution. Previously a 2-pass parse/execution, control methods are now 11117completely parsed and executed in a single pass. This improves overall 11118interpreter performance by ~25%, reduces code size, and reduces CPU stack 11119use. (Valery Podrezov + interpreter changes in version 20051202 that 11120eliminated namespace loading during the pass one parse.) 11121 11122Implemented _CID support for PCI Root Bridge detection. If the _HID does 11123not 11124match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11125now 11126obtained and also checked for an ID match. 11127 11128Implemented additional support for the PCI _ADR execution: upsearch until 11129a 11130device scope is found before executing _ADR. This allows PCI_Config 11131operation regions to be declared locally within control methods 11132underneath 11133PCI device objects. 11134 11135Fixed a problem with a possible race condition between threads executing 11136AcpiWalkNamespace and the AML interpreter. This condition was removed by 11137modifying AcpiWalkNamespace to (by default) ignore all temporary 11138namespace 11139entries created during any concurrent control method execution. An 11140additional namespace race condition is known to exist between 11141AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11142investigation. 11143 11144Restructured the AML ParseLoop function, breaking it into several 11145subfunctions in order to reduce CPU stack use and improve 11146maintainability. 11147(Mikhail Kouzmich) 11148 11149AcpiGetHandle: Fix for parameter validation to detect invalid 11150combinations 11151of prefix handle and pathname. BZ 478 11152 11153Example Code and Data Size: These are the sizes for the OS-independent 11154acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11155debug version of the code includes the debug output trace mechanism and 11156has 11157a much larger code and data size. 11158 11159 Previous Release: 11160 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11161 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11162 Current Release: 11163 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11164 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11165 111662) iASL Compiler/Disassembler and Tools: 11167 11168Ported the -g option (get local ACPI tables) to the new ACPICA Table 11169Manager 11170to restore original behavior. 11171 11172---------------------------------------- 1117327 September 2006. Summary of changes for version 20060927: 11174 111751) ACPI CA Core Subsystem: 11176 11177Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11178These functions now use a spinlock for mutual exclusion and the interrupt 11179level indication flag is not needed. 11180 11181Fixed a problem with the Global Lock where the lock could appear to be 11182obtained before it is actually obtained. The global lock semaphore was 11183inadvertently created with one unit instead of zero units. (BZ 464) 11184Fiodor 11185Suietov. 11186 11187Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11188during 11189a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11190 11191Example Code and Data Size: These are the sizes for the OS-independent 11192acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11193debug version of the code includes the debug output trace mechanism and 11194has 11195a much larger code and data size. 11196 11197 Previous Release: 11198 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11199 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11200 Current Release: 11201 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11202 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11203 11204 112052) iASL Compiler/Disassembler and Tools: 11206 11207Fixed a compilation problem with the pre-defined Resource Descriptor 11208field 11209names where an "object does not exist" error could be incorrectly 11210generated 11211if the parent ResourceTemplate pathname places the template within a 11212different namespace scope than the current scope. (BZ 7212) 11213 11214Fixed a problem where the compiler could hang after syntax errors 11215detected 11216in an ElseIf construct. (BZ 453) 11217 11218Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11219operator. An incorrect output filename was produced when this parameter 11220was 11221a null string (""). Now, the original input filename is used as the AML 11222output filename, with an ".aml" extension. 11223 11224Implemented a generic batch command mode for the AcpiExec utility 11225(execute 11226any AML debugger command) (Valery Podrezov). 11227 11228---------------------------------------- 1122912 September 2006. Summary of changes for version 20060912: 11230 112311) ACPI CA Core Subsystem: 11232 11233Enhanced the implementation of the "serialized mode" of the interpreter 11234(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11235specified, instead of creating a serialization semaphore per control 11236method, 11237the interpreter lock is simply no longer released before a blocking 11238operation during control method execution. This effectively makes the AML 11239Interpreter single-threaded. The overhead of a semaphore per-method is 11240eliminated. 11241 11242Fixed a regression where an error was no longer emitted if a control 11243method 11244attempts to create 2 objects of the same name. This once again returns 11245AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11246that 11247will dynamically serialize the control method to possible prevent future 11248errors. (BZ 440) 11249 11250Integrated a fix for a problem with PCI Express HID detection in the PCI 11251Config Space setup procedure. (BZ 7145) 11252 11253Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11254AcpiHwInitialize function - the FADT registers are now validated when the 11255table is loaded. 11256 11257Added two new warnings during FADT verification - 1) if the FADT is 11258larger 11259than the largest known FADT version, and 2) if there is a mismatch 11260between 11261a 1126232-bit block address and the 64-bit X counterpart (when both are non- 11263zero.) 11264 11265Example Code and Data Size: These are the sizes for the OS-independent 11266acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11267debug version of the code includes the debug output trace mechanism and 11268has 11269a much larger code and data size. 11270 11271 Previous Release: 11272 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11273 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11274 Current Release: 11275 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11276 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11277 11278 112792) iASL Compiler/Disassembler and Tools: 11280 11281Fixed a problem with the implementation of the Switch() operator where 11282the 11283temporary variable was declared too close to the actual Switch, instead 11284of 11285at method level. This could cause a problem if the Switch() operator is 11286within a while loop, causing an error on the second iteration. (BZ 460) 11287 11288Disassembler - fix for error emitted for unknown type for target of scope 11289operator. Now, ignore it and continue. 11290 11291Disassembly of an FADT now verifies the input FADT and reports any errors 11292found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11293 11294Disassembly of raw data buffers with byte initialization data now 11295prefixes 11296each output line with the current buffer offset. 11297 11298Disassembly of ASF! table now includes all variable-length data fields at 11299the end of some of the subtables. 11300 11301The disassembler now emits a comment if a buffer appears to be a 11302ResourceTemplate, but cannot be disassembled as such because the EndTag 11303does 11304not appear at the very end of the buffer. 11305 11306AcpiExec - Added the "-t" command line option to enable the serialized 11307mode 11308of the AML interpreter. 11309 11310---------------------------------------- 1131131 August 2006. Summary of changes for version 20060831: 11312 113131) ACPI CA Core Subsystem: 11314 11315Miscellaneous fixes for the Table Manager: 11316- Correctly initialize internal common FADT for all 64-bit "X" fields 11317- Fixed a couple table mapping issues during table load 11318- Fixed a couple alignment issues for IA64 11319- Initialize input array to zero in AcpiInitializeTables 11320- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11321AcpiGetTableByIndex 11322 11323Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11324now 11325immediately disabled to prevent the waking GPE from firing again and to 11326prevent other wake GPEs from interrupting the wake process. 11327 11328Added the AcpiGpeCount global that tracks the number of processed GPEs, 11329to 11330be used for debugging systems with a large number of ACPI interrupts. 11331 11332Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11333both the ACPICA headers and the disassembler. 11334 11335Example Code and Data Size: These are the sizes for the OS-independent 11336acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11337debug version of the code includes the debug output trace mechanism and 11338has 11339a much larger code and data size. 11340 11341 Previous Release: 11342 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11343 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11344 Current Release: 11345 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11346 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11347 11348 113492) iASL Compiler/Disassembler and Tools: 11350 11351Disassembler support for the DMAR ACPI table. 11352 11353---------------------------------------- 1135423 August 2006. Summary of changes for version 20060823: 11355 113561) ACPI CA Core Subsystem: 11357 11358The Table Manager component has been completely redesigned and 11359reimplemented. The new design is much simpler, and reduces the overall 11360code 11361and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11362is 11363now possible to obtain the ACPI tables very early during kernel 11364initialization, even before dynamic memory management is initialized. 11365(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11366 11367Obsolete ACPICA interfaces: 11368 11369- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11370init 11371time). 11372- AcpiLoadTable: Not needed. 11373- AcpiUnloadTable: Not needed. 11374 11375New ACPICA interfaces: 11376 11377- AcpiInitializeTables: Must be called before the table manager can be 11378used. 11379- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11380allocated memory after it becomes available. 11381- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11382tables 11383in the RSDT/XSDT. 11384 11385Other ACPICA changes: 11386 11387- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11388Use 11389AcpiOsUnmapMemory to free this mapping. 11390- AcpiGetTable returns the actual mapped table. The mapping is managed 11391internally and must not be deleted by the caller. Use of this interface 11392causes no additional dynamic memory allocation. 11393- AcpiFindRootPointer: Support for physical addressing has been 11394eliminated, 11395it appeared to be unused. 11396- The interface to AcpiOsMapMemory has changed to be consistent with the 11397other allocation interfaces. 11398- The interface to AcpiOsGetRootPointer has changed to eliminate 11399unnecessary 11400parameters. 11401- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1140264- 11403bit platforms. Was previously 64 bits on all platforms. 11404- The interface to the ACPI Global Lock acquire/release macros have 11405changed 11406slightly since ACPICA no longer keeps a local copy of the FACS with a 11407constructed pointer to the actual global lock. 11408 11409Porting to the new table manager: 11410 11411- AcpiInitializeTables: Must be called once, and can be called anytime 11412during the OS initialization process. It allows the host to specify an 11413area 11414of memory to be used to store the internal version of the RSDT/XSDT (root 11415table). This allows the host to access ACPI tables before memory 11416management 11417is initialized and running. 11418- AcpiReallocateRootTable: Can be called after memory management is 11419running 11420to copy the root table to a dynamically allocated array, freeing up the 11421scratch memory specified in the call to AcpiInitializeTables. 11422- AcpiSubsystemInitialize: This existing interface is independent of the 11423Table Manager, and does not have to be called before the Table Manager 11424can 11425be used, it only must be called before the rest of ACPICA can be used. 11426- ACPI Tables: Some changes have been made to the names and structure of 11427the 11428actbl.h and actbl1.h header files and may require changes to existing 11429code. 11430For example, bitfields have been completely removed because of their lack 11431of 11432portability across C compilers. 11433- Update interfaces to the Global Lock acquire/release macros if local 11434versions are used. (see acwin.h) 11435 11436Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11437 11438New files: tbfind.c 11439 11440Example Code and Data Size: These are the sizes for the OS-independent 11441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11442debug version of the code includes the debug output trace mechanism and 11443has 11444a much larger code and data size. 11445 11446 Previous Release: 11447 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11448 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11449 Current Release: 11450 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11451 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11452 11453 114542) iASL Compiler/Disassembler and Tools: 11455 11456No changes for this release. 11457 11458---------------------------------------- 1145921 July 2006. Summary of changes for version 20060721: 11460 114611) ACPI CA Core Subsystem: 11462 11463The full source code for the ASL test suite used to validate the iASL 11464compiler and the ACPICA core subsystem is being released with the ACPICA 11465source for the first time. The source is contained in a separate package 11466and 11467consists of over 1100 files that exercise all ASL/AML operators. The 11468package 11469should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11470Fiodor 11471Suietov) 11472 11473Completed a new design and implementation for support of the ACPI Global 11474Lock. On the OS side, the global lock is now treated as a standard AML 11475mutex. Previously, multiple OS threads could "acquire" the global lock 11476simultaneously. However, this could cause the BIOS to be starved out of 11477the 11478lock - especially in cases such as the Embedded Controller driver where 11479there is a tight coupling between the OS and the BIOS. 11480 11481Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11482The Global Lock interrupt handler no longer queues the execution of a 11483separate thread to signal the global lock semaphore. Instead, the 11484semaphore 11485is signaled directly from the interrupt handler. 11486 11487Implemented support within the AML interpreter for package objects that 11488contain a larger AML length (package list length) than the package 11489element 11490count. In this case, the length of the package is truncated to match the 11491package element count. Some BIOS code apparently modifies the package 11492length 11493on the fly, and this change supports this behavior. Provides 11494compatibility 11495with the MS AML interpreter. (With assistance from Fiodor Suietov) 11496 11497Implemented a temporary fix for the BankValue parameter of a Bank Field 11498to 11499support all constant values, now including the Zero and One opcodes. 11500Evaluation of this parameter must eventually be converted to a full 11501TermArg 11502evaluation. A not-implemented error is now returned (temporarily) for 11503non- 11504constant values for this parameter. 11505 11506Fixed problem reports (Fiodor Suietov) integrated: 11507- Fix for premature object deletion after CopyObject on Operation Region 11508(BZ 11509350) 11510 11511Example Code and Data Size: These are the sizes for the OS-independent 11512acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11513debug version of the code includes the debug output trace mechanism and 11514has 11515a much larger code and data size. 11516 11517 Previous Release: 11518 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11519 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11520 Current Release: 11521 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11522 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11523 11524 115252) iASL Compiler/Disassembler and Tools: 11526 11527No changes for this release. 11528 11529---------------------------------------- 1153007 July 2006. Summary of changes for version 20060707: 11531 115321) ACPI CA Core Subsystem: 11533 11534Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11535that do not allow the initialization of address pointers within packed 11536structures - even though the hardware itself may support misaligned 11537transfers. Some of the debug data structures are packed by default to 11538minimize size. 11539 11540Added an error message for the case where AcpiOsGetThreadId() returns 11541zero. 11542A non-zero value is required by the core ACPICA code to ensure the proper 11543operation of AML mutexes and recursive control methods. 11544 11545The DSDT is now the only ACPI table that determines whether the AML 11546interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11547but 11548the hooks for per-table 32/64 switching have been removed from the code. 11549A 11550clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11551 11552Fixed a possible leak of an OwnerID in the error path of 11553AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11554deletion to a single place in AcpiTbUninstallTable to correct possible 11555leaks 11556when using the AcpiTbDeleteTablesByType interface (with assistance from 11557Lance Ortiz.) 11558 11559Fixed a problem with Serialized control methods where the semaphore 11560associated with the method could be over-signaled after multiple method 11561invocations. 11562 11563Fixed two issues with the locking of the internal namespace data 11564structure. 11565Both the Unload() operator and AcpiUnloadTable interface now lock the 11566namespace during the namespace deletion associated with the table unload 11567(with assistance from Linn Crosetto.) 11568 11569Fixed problem reports (Valery Podrezov) integrated: 11570- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11571 11572Fixed problem reports (Fiodor Suietov) integrated: 11573- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11574- On Address Space handler deletion, needless deactivation call (BZ 374) 11575- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11576375) 11577- Possible memory leak, Notify sub-objects of Processor, Power, 11578ThermalZone 11579(BZ 376) 11580- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11581- Minimum Length of RSDT should be validated (BZ 379) 11582- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11583Handler (BZ (380) 11584- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11585loaded 11586(BZ 381) 11587 11588Example Code and Data Size: These are the sizes for the OS-independent 11589acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11590debug version of the code includes the debug output trace mechanism and 11591has 11592a much larger code and data size. 11593 11594 Previous Release: 11595 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11596 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11597 Current Release: 11598 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11599 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11600 11601 116022) iASL Compiler/Disassembler and Tools: 11603 11604Fixed problem reports: 11605Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11606436) 11607 11608---------------------------------------- 1160923 June 2006. Summary of changes for version 20060623: 11610 116111) ACPI CA Core Subsystem: 11612 11613Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11614allows the type to be customized to the host OS for improved efficiency 11615(since a spinlock is usually a very small object.) 11616 11617Implemented support for "ignored" bits in the ACPI registers. According 11618to 11619the ACPI specification, these bits should be preserved when writing the 11620registers via a read/modify/write cycle. There are 3 bits preserved in 11621this 11622manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11623 11624Implemented the initial deployment of new OSL mutex interfaces. Since 11625some 11626host operating systems have separate mutex and semaphore objects, this 11627feature was requested. The base code now uses mutexes (and the new mutex 11628interfaces) wherever a binary semaphore was used previously. However, for 11629the current release, the mutex interfaces are defined as macros to map 11630them 11631to the existing semaphore interfaces. Therefore, no OSL changes are 11632required 11633at this time. (See acpiosxf.h) 11634 11635Fixed several problems with the support for the control method SyncLevel 11636parameter. The SyncLevel now works according to the ACPI specification 11637and 11638in concert with the Mutex SyncLevel parameter, since the current 11639SyncLevel 11640is a property of the executing thread. Mutual exclusion for control 11641methods 11642is now implemented with a mutex instead of a semaphore. 11643 11644Fixed three instances of the use of the C shift operator in the bitfield 11645support code (exfldio.c) to avoid the use of a shift value larger than 11646the 11647target data width. The behavior of C compilers is undefined in this case 11648and 11649can cause unpredictable results, and therefore the case must be detected 11650and 11651avoided. (Fiodor Suietov) 11652 11653Added an info message whenever an SSDT or OEM table is loaded dynamically 11654via the Load() or LoadTable() ASL operators. This should improve 11655debugging 11656capability since it will show exactly what tables have been loaded 11657(beyond 11658the tables present in the RSDT/XSDT.) 11659 11660Example Code and Data Size: These are the sizes for the OS-independent 11661acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11662debug version of the code includes the debug output trace mechanism and 11663has 11664a much larger code and data size. 11665 11666 Previous Release: 11667 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11668 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11669 Current Release: 11670 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11671 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11672 11673 116742) iASL Compiler/Disassembler and Tools: 11675 11676No changes for this release. 11677 11678---------------------------------------- 1167908 June 2006. Summary of changes for version 20060608: 11680 116811) ACPI CA Core Subsystem: 11682 11683Converted the locking mutex used for the ACPI hardware to a spinlock. 11684This 11685change should eliminate all problems caused by attempting to acquire a 11686semaphore at interrupt level, and it means that all ACPICA external 11687interfaces that directly access the ACPI hardware can be safely called 11688from 11689interrupt level. OSL code that implements the semaphore interfaces should 11690be 11691able to eliminate any workarounds for being called at interrupt level. 11692 11693Fixed a regression introduced in 20060526 where the ACPI device 11694initialization could be prematurely aborted with an AE_NOT_FOUND if a 11695device 11696did not have an optional _INI method. 11697 11698Fixed an IndexField issue where a write to the Data Register should be 11699limited in size to the AccessSize (width) of the IndexField itself. (BZ 11700433, 11701Fiodor Suietov) 11702 11703Fixed problem reports (Valery Podrezov) integrated: 11704- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 11705 11706Fixed problem reports (Fiodor Suietov) integrated: 11707- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 11708 11709Removed four global mutexes that were obsolete and were no longer being 11710used. 11711 11712Example Code and Data Size: These are the sizes for the OS-independent 11713acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11714debug version of the code includes the debug output trace mechanism and 11715has 11716a much larger code and data size. 11717 11718 Previous Release: 11719 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11720 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11721 Current Release: 11722 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11723 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11724 11725 117262) iASL Compiler/Disassembler and Tools: 11727 11728Fixed a fault when using -g option (get tables from registry) on Windows 11729machines. 11730 11731Fixed problem reports integrated: 11732- Generate error if CreateField NumBits parameter is zero. (BZ 405) 11733- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 11734Suietov) 11735- Global table revision override (-r) is ignored (BZ 413) 11736 11737---------------------------------------- 1173826 May 2006. Summary of changes for version 20060526: 11739 117401) ACPI CA Core Subsystem: 11741 11742Restructured, flattened, and simplified the internal interfaces for 11743namespace object evaluation - resulting in smaller code, less CPU stack 11744use, 11745and fewer interfaces. (With assistance from Mikhail Kouzmich) 11746 11747Fixed a problem with the CopyObject operator where the first parameter 11748was 11749not typed correctly for the parser, interpreter, compiler, and 11750disassembler. 11751Caused various errors and unexpected behavior. 11752 11753Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11754produced incorrect results with some C compilers. Since the behavior of C 11755compilers when the shift value is larger than the datatype width is 11756apparently not well defined, the interpreter now detects this condition 11757and 11758simply returns zero as expected in all such cases. (BZ 395) 11759 11760Fixed problem reports (Valery Podrezov) integrated: 11761- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11762- Allow interpreter to handle nested method declarations (BZ 5361) 11763 11764Fixed problem reports (Fiodor Suietov) integrated: 11765- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11766355) 11767- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11768356) 11769- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11770- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11771- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11772- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11773- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11774- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11775- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11776365) 11777- Status of the Global Initialization Handler call not used (BZ 366) 11778- Incorrect object parameter to Global Initialization Handler (BZ 367) 11779 11780Example Code and Data Size: These are the sizes for the OS-independent 11781acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11782debug version of the code includes the debug output trace mechanism and 11783has 11784a much larger code and data size. 11785 11786 Previous Release: 11787 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11788 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11789 Current Release: 11790 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11791 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11792 11793 117942) iASL Compiler/Disassembler and Tools: 11795 11796Modified the parser to allow the names IO, DMA, and IRQ to be used as 11797namespace identifiers with no collision with existing resource descriptor 11798macro names. This provides compatibility with other ASL compilers and is 11799most useful for disassembly/recompilation of existing tables without 11800parse 11801errors. (With assistance from Thomas Renninger) 11802 11803Disassembler: fixed an incorrect disassembly problem with the 11804DataTableRegion and CopyObject operators. Fixed a possible fault during 11805disassembly of some Alias operators. 11806 11807---------------------------------------- 1180812 May 2006. Summary of changes for version 20060512: 11809 118101) ACPI CA Core Subsystem: 11811 11812Replaced the AcpiOsQueueForExecution interface with a new interface named 11813AcpiOsExecute. The major difference is that the new interface does not 11814have 11815a Priority parameter, this appeared to be useless and has been replaced 11816by 11817a 11818Type parameter. The Type tells the host what type of execution is being 11819requested, such as global lock handler, notify handler, GPE handler, etc. 11820This allows the host to queue and execute the request as appropriate for 11821the 11822request type, possibly using different work queues and different 11823priorities 11824for the various request types. This enables fixes for multithreading 11825deadlock problems such as BZ #5534, and will require changes to all 11826existing 11827OS interface layers. (Alexey Starikovskiy and Bob Moore) 11828 11829Fixed a possible memory leak associated with the support for the so- 11830called 11831"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11832Suietov) 11833 11834Fixed a problem with the Load() operator where a table load from an 11835operation region could overwrite an internal table buffer by up to 7 11836bytes 11837and cause alignment faults on IPF systems. (With assistance from Luming 11838Yu) 11839 11840Example Code and Data Size: These are the sizes for the OS-independent 11841acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11842debug version of the code includes the debug output trace mechanism and 11843has 11844a much larger code and data size. 11845 11846 Previous Release: 11847 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11848 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11849 Current Release: 11850 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11851 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11852 11853 11854 118552) iASL Compiler/Disassembler and Tools: 11856 11857Disassembler: Implemented support to cross reference the internal 11858namespace 11859and automatically generate ASL External() statements for symbols not 11860defined 11861within the current table being disassembled. This will simplify the 11862disassembly and recompilation of interdependent tables such as SSDTs 11863since 11864these statements will no longer have to be added manually. 11865 11866Disassembler: Implemented experimental support to automatically detect 11867invocations of external control methods and generate appropriate 11868External() 11869statements. This is problematic because the AML cannot be correctly 11870parsed 11871until the number of arguments for each control method is known. 11872Currently, 11873standalone method invocations and invocations as the source operand of a 11874Store() statement are supported. 11875 11876Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11877LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11878LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11879more readable and likely closer to the original ASL source. 11880 11881---------------------------------------- 1188221 April 2006. Summary of changes for version 20060421: 11883 118841) ACPI CA Core Subsystem: 11885 11886Removed a device initialization optimization introduced in 20051216 where 11887the _STA method was not run unless an _INI was also present for the same 11888device. This optimization could cause problems because it could allow 11889_INI 11890methods to be run within a not-present device subtree. (If a not-present 11891device had no _INI, _STA would not be run, the not-present status would 11892not 11893be discovered, and the children of the device would be incorrectly 11894traversed.) 11895 11896Implemented a new _STA optimization where namespace subtrees that do not 11897contain _INI are identified and ignored during device initialization. 11898Selectively running _STA can significantly improve boot time on large 11899machines (with assistance from Len Brown.) 11900 11901Implemented support for the device initialization case where the returned 11902_STA flags indicate a device not-present but functioning. In this case, 11903_INI 11904is not run, but the device children are examined for presence, as per the 11905ACPI specification. 11906 11907Implemented an additional change to the IndexField support in order to 11908conform to MS behavior. The value written to the Index Register is not 11909simply a byte offset, it is a byte offset in units of the access width of 11910the parent Index Field. (Fiodor Suietov) 11911 11912Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11913interface is called during the creation of all AML operation regions, and 11914allows the host OS to exert control over what addresses it will allow the 11915AML code to access. Operation Regions whose addresses are disallowed will 11916cause a runtime exception when they are actually accessed (will not 11917affect 11918or abort table loading.) See oswinxf or osunixxf for an example 11919implementation. 11920 11921Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11922interface allows the host OS to match the various "optional" 11923interface/behavior strings for the _OSI predefined control method as 11924appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11925for an example implementation. 11926 11927Restructured and corrected various problems in the exception handling 11928code 11929paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11930(with assistance from Takayoshi Kochi.) 11931 11932Modified the Linux source converter to ignore quoted string literals 11933while 11934converting identifiers from mixed to lower case. This will correct 11935problems 11936with the disassembler and other areas where such strings must not be 11937modified. 11938 11939The ACPI_FUNCTION_* macros no longer require quotes around the function 11940name. This allows the Linux source converter to convert the names, now 11941that 11942the converter ignores quoted strings. 11943 11944Example Code and Data Size: These are the sizes for the OS-independent 11945acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11946debug version of the code includes the debug output trace mechanism and 11947has 11948a much larger code and data size. 11949 11950 Previous Release: 11951 11952 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11953 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11954 Current Release: 11955 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11956 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11957 11958 119592) iASL Compiler/Disassembler and Tools: 11960 11961Implemented 3 new warnings for iASL, and implemented multiple warning 11962levels 11963(w2 flag). 11964 119651) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11966not 11967WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11968check for the possible timeout, a warning is issued. 11969 119702) Useless operators: If an ASL operator does not specify an optional 11971target 11972operand and it also does not use the function return value from the 11973operator, a warning is issued since the operator effectively does 11974nothing. 11975 119763) Unreferenced objects: If a namespace object is created, but never 11977referenced, a warning is issued. This is a warning level 2 since there 11978are 11979cases where this is ok, such as when a secondary table is loaded that 11980uses 11981the unreferenced objects. Even so, care is taken to only flag objects 11982that 11983don't look like they will ever be used. For example, the reserved methods 11984(starting with an underscore) are usually not referenced because it is 11985expected that the OS will invoke them. 11986 11987---------------------------------------- 1198831 March 2006. Summary of changes for version 20060331: 11989 119901) ACPI CA Core Subsystem: 11991 11992Implemented header file support for the following additional ACPI tables: 11993ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11994support, 11995all current and known ACPI tables are now defined in the ACPICA headers 11996and 11997are available for use by device drivers and other software. 11998 11999Implemented support to allow tables that contain ACPI names with invalid 12000characters to be loaded. Previously, this would cause the table load to 12001fail, but since there are several known cases of such tables on existing 12002machines, this change was made to enable ACPI support for them. Also, 12003this 12004matches the behavior of the Microsoft ACPI implementation. 12005 12006Fixed a couple regressions introduced during the memory optimization in 12007the 1200820060317 release. The namespace node definition required additional 12009reorganization and an internal datatype that had been changed to 8-bit 12010was 12011restored to 32-bit. (Valery Podrezov) 12012 12013Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 12014could be passed through to AcpiOsReleaseObject which is unexpected. Such 12015null pointers are now trapped and ignored, matching the behavior of the 12016previous implementation before the deployment of AcpiOsReleaseObject. 12017(Valery Podrezov, Fiodor Suietov) 12018 12019Fixed a memory mapping leak during the deletion of a SystemMemory 12020operation 12021region where a cached memory mapping was not deleted. This became a 12022noticeable problem for operation regions that are defined within 12023frequently 12024used control methods. (Dana Meyers) 12025 12026Reorganized the ACPI table header files into two main files: one for the 12027ACPI tables consumed by the ACPICA core, and another for the 12028miscellaneous 12029ACPI tables that are consumed by the drivers and other software. The 12030various 12031FADT definitions were merged into one common section and three different 12032tables (ACPI 1.0, 1.0+, and 2.0) 12033 12034Example Code and Data Size: These are the sizes for the OS-independent 12035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12036debug version of the code includes the debug output trace mechanism and 12037has 12038a much larger code and data size. 12039 12040 Previous Release: 12041 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12042 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12043 Current Release: 12044 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12045 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12046 12047 120482) iASL Compiler/Disassembler and Tools: 12049 12050Disassembler: Implemented support to decode and format all non-AML ACPI 12051tables (tables other than DSDTs and SSDTs.) This includes the new tables 12052added to the ACPICA headers, therefore all current and known ACPI tables 12053are 12054supported. 12055 12056Disassembler: The change to allow ACPI names with invalid characters also 12057enables the disassembly of such tables. Invalid characters within names 12058are 12059changed to '*' to make the name printable; the iASL compiler will still 12060generate an error for such names, however, since this is an invalid ACPI 12061character. 12062 12063Implemented an option for AcpiXtract (-a) to extract all tables found in 12064the 12065input file. The default invocation extracts only the DSDTs and SSDTs. 12066 12067Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 12068makefile for the AcpiXtract utility. 12069 12070---------------------------------------- 1207117 March 2006. Summary of changes for version 20060317: 12072 120731) ACPI CA Core Subsystem: 12074 12075Implemented the use of a cache object for all internal namespace nodes. 12076Since there are about 1000 static nodes in a typical system, this will 12077decrease memory use for cache implementations that minimize per- 12078allocation 12079overhead (such as a slab allocator.) 12080 12081Removed the reference count mechanism for internal namespace nodes, since 12082it 12083was deemed unnecessary. This reduces the size of each namespace node by 12084about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12085case, 12086and 32 bytes for the 64-bit case. 12087 12088Optimized several internal data structures to reduce object size on 64- 12089bit 12090platforms by packing data within the 64-bit alignment. This includes the 12091frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12092instances corresponding to the namespace objects. 12093 12094Added two new strings for the predefined _OSI method: "Windows 2001.1 12095SP1" 12096and "Windows 2006". 12097 12098Split the allocation tracking mechanism out to a separate file, from 12099utalloc.c to uttrack.c. This mechanism appears to be only useful for 12100application-level code. Kernels may wish to not include uttrack.c in 12101distributions. 12102 12103Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12104associated 12105code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12106macros.) 12107 12108Code and Data Size: These are the sizes for the acpica.lib produced by 12109the 12110Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12111ACPI 12112driver or OSPM code. The debug version of the code includes the debug 12113output 12114trace mechanism and has a much larger code and data size. Note that these 12115values will vary depending on the efficiency of the compiler and the 12116compiler options used during generation. 12117 12118 Previous Release: 12119 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12120 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12121 Current Release: 12122 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12123 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12124 12125 121262) iASL Compiler/Disassembler and Tools: 12127 12128Implemented an ANSI C version of the acpixtract utility. This version 12129will 12130automatically extract the DSDT and all SSDTs from the input acpidump text 12131file and dump the binary output to separate files. It can also display a 12132summary of the input file including the headers for each table found and 12133will extract any single ACPI table, with any signature. (See 12134source/tools/acpixtract) 12135 12136---------------------------------------- 1213710 March 2006. Summary of changes for version 20060310: 12138 121391) ACPI CA Core Subsystem: 12140 12141Tagged all external interfaces to the subsystem with the new 12142ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12143assist 12144kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12145macro. The default definition is NULL. 12146 12147Added the ACPI_THREAD_ID type for the return value from 12148AcpiOsGetThreadId. 12149This allows the host to define this as necessary to simplify kernel 12150integration. The default definition is ACPI_NATIVE_UINT. 12151 12152Fixed two interpreter problems related to error processing, the deletion 12153of 12154objects, and placing invalid pointers onto the internal operator result 12155stack. BZ 6028, 6151 (Valery Podrezov) 12156 12157Increased the reference count threshold where a warning is emitted for 12158large 12159reference counts in order to eliminate unnecessary warnings on systems 12160with 12161large namespaces (especially 64-bit.) Increased the value from 0x400 to 121620x800. 12163 12164Due to universal disagreement as to the meaning of the 'c' in the 12165calloc() 12166function, the ACPI_MEM_CALLOCATE macro has been renamed to 12167ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12168ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12169ACPI_FREE. 12170 12171Code and Data Size: These are the sizes for the acpica.lib produced by 12172the 12173Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12174ACPI 12175driver or OSPM code. The debug version of the code includes the debug 12176output 12177trace mechanism and has a much larger code and data size. Note that these 12178values will vary depending on the efficiency of the compiler and the 12179compiler options used during generation. 12180 12181 Previous Release: 12182 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12183 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12184 Current Release: 12185 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12186 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12187 12188 121892) iASL Compiler/Disassembler: 12190 12191Disassembler: implemented support for symbolic resource descriptor 12192references. If a CreateXxxxField operator references a fixed offset 12193within 12194a 12195resource descriptor, a name is assigned to the descriptor and the offset 12196is 12197translated to the appropriate resource tag and pathname. The addition of 12198this support brings the disassembled code very close to the original ASL 12199source code and helps eliminate run-time errors when the disassembled 12200code 12201is modified (and recompiled) in such a way as to invalidate the original 12202fixed offsets. 12203 12204Implemented support for a Descriptor Name as the last parameter to the 12205ASL 12206Register() macro. This parameter was inadvertently left out of the ACPI 12207specification, and will be added for ACPI 3.0b. 12208 12209Fixed a problem where the use of the "_OSI" string (versus the full path 12210"\_OSI") caused an internal compiler error. ("No back ptr to op") 12211 12212Fixed a problem with the error message that occurs when an invalid string 12213is 12214used for a _HID object (such as one with an embedded asterisk: 12215"*PNP010A".) 12216The correct message is now displayed. 12217 12218---------------------------------------- 1221917 February 2006. Summary of changes for version 20060217: 12220 122211) ACPI CA Core Subsystem: 12222 12223Implemented a change to the IndexField support to match the behavior of 12224the 12225Microsoft AML interpreter. The value written to the Index register is now 12226a 12227byte offset, no longer an index based upon the width of the Data 12228register. 12229This should fix IndexField problems seen on some machines where the Data 12230register is not exactly one byte wide. The ACPI specification will be 12231clarified on this point. 12232 12233Fixed a problem where several resource descriptor types could overrun the 12234internal descriptor buffer due to size miscalculation: VendorShort, 12235VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12236affect all platforms. 12237 12238Fixed a problem where individual resource descriptors were misaligned 12239within 12240the internal buffer, causing alignment faults on IA64 platforms. 12241 12242Code and Data Size: These are the sizes for the acpica.lib produced by 12243the 12244Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12245ACPI 12246driver or OSPM code. The debug version of the code includes the debug 12247output 12248trace mechanism and has a much larger code and data size. Note that these 12249values will vary depending on the efficiency of the compiler and the 12250compiler options used during generation. 12251 12252 Previous Release: 12253 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12254 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12255 Current Release: 12256 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12257 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12258 12259 122602) iASL Compiler/Disassembler: 12261 12262Implemented support for new reserved names: _WDG and _WED are Microsoft 12263extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12264defined method (Throttling Depth Limit.) 12265 12266Fixed a problem where a zero-length VendorShort or VendorLong resource 12267descriptor was incorrectly emitted as a descriptor of length one. 12268 12269---------------------------------------- 1227010 February 2006. Summary of changes for version 20060210: 12271 122721) ACPI CA Core Subsystem: 12273 12274Removed a couple of extraneous ACPI_ERROR messages that appeared during 12275normal execution. These became apparent after the conversion from 12276ACPI_DEBUG_PRINT. 12277 12278Fixed a problem where the CreateField operator could hang if the BitIndex 12279or 12280NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12281 12282Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12283failed with an exception. This also fixes a couple of related RefOf and 12284DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12285 12286Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12287of 12288AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12289BZ 122905480) 12291 12292Implemented a memory cleanup at the end of the execution of each 12293iteration 12294of an AML While() loop, preventing the accumulation of outstanding 12295objects. 12296(Valery Podrezov, BZ 5427) 12297 12298Eliminated a chunk of duplicate code in the object resolution code. 12299(Valery 12300Podrezov, BZ 5336) 12301 12302Fixed several warnings during the 64-bit code generation. 12303 12304The AcpiSrc source code conversion tool now inserts one line of 12305whitespace 12306after an if() statement that is followed immediately by a comment, 12307improving 12308readability of the Linux code. 12309 12310Code and Data Size: The current and previous library sizes for the core 12311subsystem are shown below. These are the code and data sizes for the 12312acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12313These 12314values do not include any ACPI driver or OSPM code. The debug version of 12315the 12316code includes the debug output trace mechanism and has a much larger code 12317and data size. Note that these values will vary depending on the 12318efficiency 12319of the compiler and the compiler options used during generation. 12320 12321 Previous Release: 12322 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12323 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12324 Current Release: 12325 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12326 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12327 12328 123292) iASL Compiler/Disassembler: 12330 12331Fixed a problem with the disassembly of a BankField operator with a 12332complex 12333expression for the BankValue parameter. 12334 12335---------------------------------------- 1233627 January 2006. Summary of changes for version 20060127: 12337 123381) ACPI CA Core Subsystem: 12339 12340Implemented support in the Resource Manager to allow unresolved 12341namestring 12342references within resource package objects for the _PRT method. This 12343support 12344is in addition to the previously implemented unresolved reference support 12345within the AML parser. If the interpreter slack mode is enabled, these 12346unresolved references will be passed through to the caller as a NULL 12347package 12348entry. 12349 12350Implemented and deployed new macros and functions for error and warning 12351messages across the subsystem. These macros are simpler and generate less 12352code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12353ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12354macros remain defined to allow ACPI drivers time to migrate to the new 12355macros. 12356 12357Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12358the 12359Acquire/Release Lock OSL interfaces. 12360 12361Fixed a problem where Alias ASL operators are sometimes not correctly 12362resolved, in both the interpreter and the iASL compiler. 12363 12364Fixed several problems with the implementation of the 12365ConcatenateResTemplate 12366ASL operator. As per the ACPI specification, zero length buffers are now 12367treated as a single EndTag. One-length buffers always cause a fatal 12368exception. Non-zero length buffers that do not end with a full 2-byte 12369EndTag 12370cause a fatal exception. 12371 12372Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12373interface. (With assistance from Thomas Renninger) 12374 12375Code and Data Size: The current and previous library sizes for the core 12376subsystem are shown below. These are the code and data sizes for the 12377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12378These 12379values do not include any ACPI driver or OSPM code. The debug version of 12380the 12381code includes the debug output trace mechanism and has a much larger code 12382and data size. Note that these values will vary depending on the 12383efficiency 12384of the compiler and the compiler options used during generation. 12385 12386 Previous Release: 12387 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12388 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12389 Current Release: 12390 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12391 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12392 12393 123942) iASL Compiler/Disassembler: 12395 12396Fixed an internal error that was generated for any forward references to 12397ASL 12398Alias objects. 12399 12400---------------------------------------- 1240113 January 2006. Summary of changes for version 20060113: 12402 124031) ACPI CA Core Subsystem: 12404 12405Added 2006 copyright to all module headers and signons. This affects 12406virtually every file in the ACPICA core subsystem, iASL compiler, and the 12407utilities. 12408 12409Enhanced the ACPICA error reporting in order to simplify user migration 12410to 12411the non-debug version of ACPICA. Replaced all instances of the 12412ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12413debug 12414levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12415respectively. This preserves all error and warning messages in the non- 12416debug 12417version of the ACPICA code (this has been referred to as the "debug lite" 12418option.) Over 200 cases were converted to create a total of over 380 12419error/warning messages across the ACPICA code. This increases the code 12420and 12421data size of the default non-debug version of the code somewhat (about 1242213K), 12423but all error/warning reporting may be disabled if desired (and code 12424eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12425configuration option. The size of the debug version of ACPICA remains 12426about 12427the same. 12428 12429Fixed a memory leak within the AML Debugger "Set" command. One object was 12430not properly deleted for every successful invocation of the command. 12431 12432Code and Data Size: The current and previous library sizes for the core 12433subsystem are shown below. These are the code and data sizes for the 12434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12435These 12436values do not include any ACPI driver or OSPM code. The debug version of 12437the 12438code includes the debug output trace mechanism and has a much larger code 12439and data size. Note that these values will vary depending on the 12440efficiency 12441of the compiler and the compiler options used during generation. 12442 12443 Previous Release: 12444 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12445 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12446 Current Release: 12447 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12448 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12449 12450 124512) iASL Compiler/Disassembler: 12452 12453The compiler now officially supports the ACPI 3.0a specification that was 12454released on December 30, 2005. (Specification is available at 12455www.acpi.info) 12456 12457---------------------------------------- 1245816 December 2005. Summary of changes for version 20051216: 12459 124601) ACPI CA Core Subsystem: 12461 12462Implemented optional support to allow unresolved names within ASL Package 12463objects. A null object is inserted in the package when a named reference 12464cannot be located in the current namespace. Enabled via the interpreter 12465slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12466machines 12467that contain such code. 12468 12469Implemented an optimization to the initialization sequence that can 12470improve 12471boot time. During ACPI device initialization, the _STA method is now run 12472if 12473and only if the _INI method exists. The _STA method is used to determine 12474if 12475the device is present; An _INI can only be run if _STA returns present, 12476but 12477it is a waste of time to run the _STA method if the _INI does not exist. 12478(Prototype and assistance from Dong Wei) 12479 12480Implemented use of the C99 uintptr_t for the pointer casting macros if it 12481is 12482available in the current compiler. Otherwise, the default (void *) cast 12483is 12484used as before. 12485 12486Fixed some possible memory leaks found within the execution path of the 12487Break, Continue, If, and CreateField operators. (Valery Podrezov) 12488 12489Fixed a problem introduced in the 20051202 release where an exception is 12490generated during method execution if a control method attempts to declare 12491another method. 12492 12493Moved resource descriptor string constants that are used by both the AML 12494disassembler and AML debugger to the common utilities directory so that 12495these components are independent. 12496 12497Implemented support in the AcpiExec utility (-e switch) to globally 12498ignore 12499exceptions during control method execution (method is not aborted.) 12500 12501Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12502generation. 12503 12504Code and Data Size: The current and previous library sizes for the core 12505subsystem are shown below. These are the code and data sizes for the 12506acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12507These 12508values do not include any ACPI driver or OSPM code. The debug version of 12509the 12510code includes the debug output trace mechanism and has a much larger code 12511and data size. Note that these values will vary depending on the 12512efficiency 12513of the compiler and the compiler options used during generation. 12514 12515 Previous Release: 12516 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12517 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12518 Current Release: 12519 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12520 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12521 12522 125232) iASL Compiler/Disassembler: 12524 12525Fixed a problem where a CPU stack overflow fault could occur if a 12526recursive 12527method call was made from within a Return statement. 12528 12529---------------------------------------- 1253002 December 2005. Summary of changes for version 20051202: 12531 125321) ACPI CA Core Subsystem: 12533 12534Modified the parsing of control methods to no longer create namespace 12535objects during the first pass of the parse. Objects are now created only 12536during the execute phase, at the moment the namespace creation operator 12537is 12538encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12539This 12540should eliminate ALREADY_EXISTS exceptions seen on some machines where 12541reentrant control methods are protected by an AML mutex. The mutex will 12542now 12543correctly block multiple threads from attempting to create the same 12544object 12545more than once. 12546 12547Increased the number of available Owner Ids for namespace object tracking 12548from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12549on 12550some machines with a large number of ACPI tables (either static or 12551dynamic). 12552 12553Fixed a problem with the AcpiExec utility where a fault could occur when 12554the 12555-b switch (batch mode) is used. 12556 12557Enhanced the namespace dump routine to output the owner ID for each 12558namespace object. 12559 12560Code and Data Size: The current and previous library sizes for the core 12561subsystem are shown below. These are the code and data sizes for the 12562acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12563These 12564values do not include any ACPI driver or OSPM code. The debug version of 12565the 12566code includes the debug output trace mechanism and has a much larger code 12567and data size. Note that these values will vary depending on the 12568efficiency 12569of the compiler and the compiler options used during generation. 12570 12571 Previous Release: 12572 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12573 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12574 Current Release: 12575 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12576 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12577 12578 125792) iASL Compiler/Disassembler: 12580 12581Fixed a parse error during compilation of certain Switch/Case constructs. 12582To 12583simplify the parse, the grammar now allows for multiple Default 12584statements 12585and this error is now detected and flagged during the analysis phase. 12586 12587Disassembler: The disassembly now includes the contents of the original 12588table header within a comment at the start of the file. This includes the 12589name and version of the original ASL compiler. 12590 12591---------------------------------------- 1259217 November 2005. Summary of changes for version 20051117: 12593 125941) ACPI CA Core Subsystem: 12595 12596Fixed a problem in the AML parser where the method thread count could be 12597decremented below zero if any errors occurred during the method parse 12598phase. 12599This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12600machines. 12601This also fixed a related regression with the mechanism that detects and 12602corrects methods that cannot properly handle reentrancy (related to the 12603deployment of the new OwnerId mechanism.) 12604 12605Eliminated the pre-parsing of control methods (to detect errors) during 12606table load. Related to the problem above, this was causing unwind issues 12607if 12608any errors occurred during the parse, and it seemed to be overkill. A 12609table 12610load should not be aborted if there are problems with any single control 12611method, thus rendering this feature rather pointless. 12612 12613Fixed a problem with the new table-driven resource manager where an 12614internal 12615buffer overflow could occur for small resource templates. 12616 12617Implemented a new external interface, AcpiGetVendorResource. This 12618interface 12619will find and return a vendor-defined resource descriptor within a _CRS 12620or 12621_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12622Helgaas. 12623 12624Removed the length limit (200) on string objects as per the upcoming ACPI 126253.0A specification. This affects the following areas of the interpreter: 126261) 12627any implicit conversion of a Buffer to a String, 2) a String object 12628result 12629of the ASL Concatenate operator, 3) the String object result of the ASL 12630ToString operator. 12631 12632Fixed a problem in the Windows OS interface layer (OSL) where a 12633WAIT_FOREVER 12634on a semaphore object would incorrectly timeout. This allows the 12635multithreading features of the AcpiExec utility to work properly under 12636Windows. 12637 12638Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12639the recently added file named "utresrc.c". 12640 12641Code and Data Size: The current and previous library sizes for the core 12642subsystem are shown below. These are the code and data sizes for the 12643acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12644These 12645values do not include any ACPI driver or OSPM code. The debug version of 12646the 12647code includes the debug output trace mechanism and has a much larger code 12648and data size. Note that these values will vary depending on the 12649efficiency 12650of the compiler and the compiler options used during generation. 12651 12652 Previous Release: 12653 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12654 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12655 Current Release: 12656 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12657 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12658 12659 126602) iASL Compiler/Disassembler: 12661 12662Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12663specification. For the iASL compiler, this means that string literals 12664within 12665the source ASL can be of any length. 12666 12667Enhanced the listing output to dump the AML code for resource descriptors 12668immediately after the ASL code for each descriptor, instead of in a block 12669at 12670the end of the entire resource template. 12671 12672Enhanced the compiler debug output to dump the entire original parse tree 12673constructed during the parse phase, before any transforms are applied to 12674the 12675tree. The transformed tree is dumped also. 12676 12677---------------------------------------- 1267802 November 2005. Summary of changes for version 20051102: 12679 126801) ACPI CA Core Subsystem: 12681 12682Modified the subsystem initialization sequence to improve GPE support. 12683The 12684GPE initialization has been split into two parts in order to defer 12685execution 12686of the _PRW methods (Power Resources for Wake) until after the hardware 12687is 12688fully initialized and the SCI handler is installed. This allows the _PRW 12689methods to access fields protected by the Global Lock. This will fix 12690systems 12691where a NO_GLOBAL_LOCK exception has been seen during initialization. 12692 12693Converted the ACPI internal object disassemble and display code within 12694the 12695AML debugger to fully table-driven operation, reducing code size and 12696increasing maintainability. 12697 12698Fixed a regression with the ConcatenateResTemplate() ASL operator 12699introduced 12700in the 20051021 release. 12701 12702Implemented support for "local" internal ACPI object types within the 12703debugger "Object" command and the AcpiWalkNamespace external interfaces. 12704These local types include RegionFields, BankFields, IndexFields, Alias, 12705and 12706reference objects. 12707 12708Moved common AML resource handling code into a new file, "utresrc.c". 12709This 12710code is shared by both the Resource Manager and the AML Debugger. 12711 12712Code and Data Size: The current and previous library sizes for the core 12713subsystem are shown below. These are the code and data sizes for the 12714acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12715These 12716values do not include any ACPI driver or OSPM code. The debug version of 12717the 12718code includes the debug output trace mechanism and has a much larger code 12719and data size. Note that these values will vary depending on the 12720efficiency 12721of the compiler and the compiler options used during generation. 12722 12723 Previous Release: 12724 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12725 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12726 Current Release: 12727 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12728 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12729 12730 127312) iASL Compiler/Disassembler: 12732 12733Fixed a problem with very large initializer lists (more than 4000 12734elements) 12735for both Buffer and Package objects where the parse stack could overflow. 12736 12737Enhanced the pre-compile source code scan for non-ASCII characters to 12738ignore 12739characters within comment fields. The scan is now always performed and is 12740no 12741longer optional, detecting invalid characters within a source file 12742immediately rather than during the parse phase or later. 12743 12744Enhanced the ASL grammar definition to force early reductions on all 12745list- 12746style grammar elements so that the overall parse stack usage is greatly 12747reduced. This should improve performance and reduce the possibility of 12748parse 12749stack overflow. 12750 12751Eliminated all reduce/reduce conflicts in the iASL parser generation. 12752Also, 12753with the addition of a %expected statement, the compiler generates from 12754source with no warnings. 12755 12756Fixed a possible segment fault in the disassembler if the input filename 12757does not contain a "dot" extension (Thomas Renninger). 12758 12759---------------------------------------- 1276021 October 2005. Summary of changes for version 20051021: 12761 127621) ACPI CA Core Subsystem: 12763 12764Implemented support for the EM64T and other x86-64 processors. This 12765essentially entails recognizing that these processors support non-aligned 12766memory transfers. Previously, all 64-bit processors were assumed to lack 12767hardware support for non-aligned transfers. 12768 12769Completed conversion of the Resource Manager to nearly full table-driven 12770operation. Specifically, the resource conversion code (convert AML to 12771internal format and the reverse) and the debug code to dump internal 12772resource descriptors are fully table-driven, reducing code and data size 12773and 12774improving maintainability. 12775 12776The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12777word 12778on 64-bit processors instead of a fixed 32-bit word. (With assistance 12779from 12780Alexey Starikovskiy) 12781 12782Implemented support within the resource conversion code for the Type- 12783Specific byte within the various ACPI 3.0 *WordSpace macros. 12784 12785Fixed some issues within the resource conversion code for the type- 12786specific 12787flags for both Memory and I/O address resource descriptors. For Memory, 12788implemented support for the MTP and TTP flags. For I/O, split the TRS and 12789TTP flags into two separate fields. 12790 12791Code and Data Size: The current and previous library sizes for the core 12792subsystem are shown below. These are the code and data sizes for the 12793acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12794These 12795values do not include any ACPI driver or OSPM code. The debug version of 12796the 12797code includes the debug output trace mechanism and has a much larger code 12798and data size. Note that these values will vary depending on the 12799efficiency 12800of the compiler and the compiler options used during generation. 12801 12802 Previous Release: 12803 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12804 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12805 Current Release: 12806 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12807 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12808 12809 12810 128112) iASL Compiler/Disassembler: 12812 12813Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12814the 12815corresponding ResourceSource string was not also present in a resource 12816descriptor declaration. This restriction caused problems with existing 12817AML/ASL code that includes the Index byte without the string. When such 12818AML 12819was disassembled, it could not be compiled without modification. Further, 12820the modified code created a resource template with a different size than 12821the 12822original, breaking code that used fixed offsets into the resource 12823template 12824buffer. 12825 12826Removed a recent feature of the disassembler to ignore a lone 12827ResourceIndex 12828byte. This byte is now emitted if present so that the exact AML can be 12829reproduced when the disassembled code is recompiled. 12830 12831Improved comments and text alignment for the resource descriptor code 12832emitted by the disassembler. 12833 12834Implemented disassembler support for the ACPI 3.0 AccessSize field within 12835a 12836Register() resource descriptor. 12837 12838---------------------------------------- 1283930 September 2005. Summary of changes for version 20050930: 12840 128411) ACPI CA Core Subsystem: 12842 12843Completed a major overhaul of the Resource Manager code - specifically, 12844optimizations in the area of the AML/internal resource conversion code. 12845The 12846code has been optimized to simplify and eliminate duplicated code, CPU 12847stack 12848use has been decreased by optimizing function parameters and local 12849variables, and naming conventions across the manager have been 12850standardized 12851for clarity and ease of maintenance (this includes function, parameter, 12852variable, and struct/typedef names.) The update may force changes in some 12853driver code, depending on how resources are handled by the host OS. 12854 12855All Resource Manager dispatch and information tables have been moved to a 12856single location for clarity and ease of maintenance. One new file was 12857created, named "rsinfo.c". 12858 12859The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12860guarantee that the argument is not evaluated twice, making them less 12861prone 12862to macro side-effects. However, since there exists the possibility of 12863additional stack use if a particular compiler cannot optimize them (such 12864as 12865in the debug generation case), the original macros are optionally 12866available. 12867Note that some invocations of the return_VALUE macro may now cause size 12868mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12869to 12870eliminate these. (From Randy Dunlap) 12871 12872Implemented a new mechanism to enable debug tracing for individual 12873control 12874methods. A new external interface, AcpiDebugTrace, is provided to enable 12875this mechanism. The intent is to allow the host OS to easily enable and 12876disable tracing for problematic control methods. This interface can be 12877easily exposed to a user or debugger interface if desired. See the file 12878psxface.c for details. 12879 12880AcpiUtCallocate will now return a valid pointer if a length of zero is 12881specified - a length of one is used and a warning is issued. This matches 12882the behavior of AcpiUtAllocate. 12883 12884Code and Data Size: The current and previous library sizes for the core 12885subsystem are shown below. These are the code and data sizes for the 12886acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12887These 12888values do not include any ACPI driver or OSPM code. The debug version of 12889the 12890code includes the debug output trace mechanism and has a much larger code 12891and data size. Note that these values will vary depending on the 12892efficiency 12893of the compiler and the compiler options used during generation. 12894 12895 Previous Release: 12896 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12897 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12898 Current Release: 12899 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12900 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12901 12902 129032) iASL Compiler/Disassembler: 12904 12905A remark is issued if the effective compile-time length of a package or 12906buffer is zero. Previously, this was a warning. 12907 12908---------------------------------------- 1290916 September 2005. Summary of changes for version 20050916: 12910 129111) ACPI CA Core Subsystem: 12912 12913Fixed a problem within the Resource Manager where support for the Generic 12914Register descriptor was not fully implemented. This descriptor is now 12915fully 12916recognized, parsed, disassembled, and displayed. 12917 12918Completely restructured the Resource Manager code to utilize table-driven 12919dispatch and lookup, eliminating many of the large switch() statements. 12920This 12921reduces overall subsystem code size and code complexity. Affects the 12922resource parsing and construction, disassembly, and debug dump output. 12923 12924Cleaned up and restructured the debug dump output for all resource 12925descriptors. Improved readability of the output and reduced code size. 12926 12927Fixed a problem where changes to internal data structures caused the 12928optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12929 12930Code and Data Size: The current and previous library sizes for the core 12931subsystem are shown below. These are the code and data sizes for the 12932acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12933These 12934values do not include any ACPI driver or OSPM code. The debug version of 12935the 12936code includes the debug output trace mechanism and has a much larger code 12937and data size. Note that these values will vary depending on the 12938efficiency 12939of the compiler and the compiler options used during generation. 12940 12941 Previous Release: 12942 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12943 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12944 Current Release: 12945 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12946 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12947 12948 129492) iASL Compiler/Disassembler: 12950 12951Updated the disassembler to automatically insert an EndDependentFn() 12952macro 12953into the ASL stream if this macro is missing in the original AML code, 12954simplifying compilation of the resulting ASL module. 12955 12956Fixed a problem in the disassembler where a disassembled ResourceSource 12957string (within a large resource descriptor) was not surrounded by quotes 12958and 12959not followed by a comma, causing errors when the resulting ASL module was 12960compiled. Also, escape sequences within a ResourceSource string are now 12961handled correctly (especially "\\") 12962 12963---------------------------------------- 1296402 September 2005. Summary of changes for version 20050902: 12965 129661) ACPI CA Core Subsystem: 12967 12968Fixed a problem with the internal Owner ID allocation and deallocation 12969mechanisms for control method execution and recursive method invocation. 12970This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12971messages seen on some systems. Recursive method invocation depth is 12972currently limited to 255. (Alexey Starikovskiy) 12973 12974Completely eliminated all vestiges of support for the "module-level 12975executable code" until this support is fully implemented and debugged. 12976This 12977should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12978some systems that invoke this support. 12979 12980Fixed a problem within the resource manager code where the transaction 12981flags 12982for a 64-bit address descriptor were handled incorrectly in the type- 12983specific flag byte. 12984 12985Consolidated duplicate code within the address descriptor resource 12986manager 12987code, reducing overall subsystem code size. 12988 12989Fixed a fault when using the AML debugger "disassemble" command to 12990disassemble individual control methods. 12991 12992Removed references to the "release_current" directory within the Unix 12993release package. 12994 12995Code and Data Size: The current and previous core subsystem library sizes 12996are shown below. These are the code and data sizes for the acpica.lib 12997produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12998include any ACPI driver or OSPM code. The debug version of the code 12999includes 13000the debug output trace mechanism and has a much larger code and data 13001size. 13002Note that these values will vary depending on the efficiency of the 13003compiler 13004and the compiler options used during generation. 13005 13006 Previous Release: 13007 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13008 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13009 Current Release: 13010 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13011 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13012 13013 130142) iASL Compiler/Disassembler: 13015 13016Implemented an error check for illegal duplicate values in the interrupt 13017and 13018dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 13019Interrupt(). 13020 13021Implemented error checking for the Irq() and IrqNoFlags() macros to 13022detect 13023too many values in the interrupt list (16 max) and invalid values in the 13024list (range 0 - 15) 13025 13026The maximum length string literal within an ASL file is now restricted to 13027200 characters as per the ACPI specification. 13028 13029Fixed a fault when using the -ln option (generate namespace listing). 13030 13031Implemented an error check to determine if a DescriptorName within a 13032resource descriptor has already been used within the current scope. 13033 13034---------------------------------------- 1303515 August 2005. Summary of changes for version 20050815: 13036 130371) ACPI CA Core Subsystem: 13038 13039Implemented a full bytewise compare to determine if a table load request 13040is 13041attempting to load a duplicate table. The compare is performed if the 13042table 13043signatures and table lengths match. This will allow different tables with 13044the same OEM Table ID and revision to be loaded - probably against the 13045ACPI 13046specification, but discovered in the field nonetheless. 13047 13048Added the changes.txt logfile to each of the zipped release packages. 13049 13050Code and Data Size: Current and previous core subsystem library sizes are 13051shown below. These are the code and data sizes for the acpica.lib 13052produced 13053by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13054any ACPI driver or OSPM code. The debug version of the code includes the 13055debug output trace mechanism and has a much larger code and data size. 13056Note 13057that these values will vary depending on the efficiency of the compiler 13058and 13059the compiler options used during generation. 13060 13061 Previous Release: 13062 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13063 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13064 Current Release: 13065 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13066 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13067 13068 130692) iASL Compiler/Disassembler: 13070 13071Fixed a problem where incorrect AML code could be generated for Package 13072objects if optimization is disabled (via the -oa switch). 13073 13074Fixed a problem with where incorrect AML code is generated for variable- 13075length packages when the package length is not specified and the number 13076of 13077initializer values is greater than 255. 13078 13079 13080---------------------------------------- 1308129 July 2005. Summary of changes for version 20050729: 13082 130831) ACPI CA Core Subsystem: 13084 13085Implemented support to ignore an attempt to install/load a particular 13086ACPI 13087table more than once. Apparently there exists BIOS code that repeatedly 13088attempts to load the same SSDT upon certain events. With assistance from 13089Venkatesh Pallipadi. 13090 13091Restructured the main interface to the AML parser in order to correctly 13092handle all exceptional conditions. This will prevent leakage of the 13093OwnerId 13094resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13095some 13096machines. With assistance from Alexey Starikovskiy. 13097 13098Support for "module level code" has been disabled in this version due to 13099a 13100number of issues that have appeared on various machines. The support can 13101be 13102enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13103compilation. When the issues are fully resolved, the code will be enabled 13104by 13105default again. 13106 13107Modified the internal functions for debug print support to define the 13108FunctionName parameter as a (const char *) for compatibility with 13109compiler 13110built-in macros such as __FUNCTION__, etc. 13111 13112Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13113 13114Implemented support to display an object count summary for the AML 13115Debugger 13116commands Object and Methods. 13117 13118Code and Data Size: Current and previous core subsystem library sizes are 13119shown below. These are the code and data sizes for the acpica.lib 13120produced 13121by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13122any ACPI driver or OSPM code. The debug version of the code includes the 13123debug output trace mechanism and has a much larger code and data size. 13124Note 13125that these values will vary depending on the efficiency of the compiler 13126and 13127the compiler options used during generation. 13128 13129 Previous Release: 13130 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13131 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13132 Current Release: 13133 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13134 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13135 13136 131372) iASL Compiler/Disassembler: 13138 13139Fixed a regression that appeared in the 20050708 version of the compiler 13140where an error message was inadvertently emitted for invocations of the 13141_OSI 13142reserved control method. 13143 13144---------------------------------------- 1314508 July 2005. Summary of changes for version 20050708: 13146 131471) ACPI CA Core Subsystem: 13148 13149The use of the CPU stack in the debug version of the subsystem has been 13150considerably reduced. Previously, a debug structure was declared in every 13151function that used the debug macros. This structure has been removed in 13152favor of declaring the individual elements as parameters to the debug 13153functions. This reduces the cumulative stack use during nested execution 13154of 13155ACPI function calls at the cost of a small increase in the code size of 13156the 13157debug version of the subsystem. With assistance from Alexey Starikovskiy 13158and 13159Len Brown. 13160 13161Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13162headers to define a macro that will return the current function name at 13163runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13164by 13165the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13166compiler-dependent header, the function name is saved on the CPU stack 13167(one 13168pointer per function.) This mechanism is used because apparently there 13169exists no standard ANSI-C defined macro that that returns the function 13170name. 13171 13172Redesigned and reimplemented the "Owner ID" mechanism used to track 13173namespace objects created/deleted by ACPI tables and control method 13174execution. A bitmap is now used to allocate and free the IDs, thus 13175solving 13176the wraparound problem present in the previous implementation. The size 13177of 13178the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13179Starikovskiy). 13180 13181Removed the UINT32_BIT and UINT16_BIT types that were used for the 13182bitfield 13183flag definitions within the headers for the predefined ACPI tables. These 13184have been replaced by UINT8_BIT in order to increase the code portability 13185of 13186the subsystem. If the use of UINT8 remains a problem, we may be forced to 13187eliminate bitfields entirely because of a lack of portability. 13188 13189Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13190This 13191is a frequently used function and this improvement increases the 13192performance 13193of the entire subsystem (Alexey Starikovskiy). 13194 13195Fixed several possible memory leaks and the inverse - premature object 13196deletion (Alexey Starikovskiy). 13197 13198Code and Data Size: Current and previous core subsystem library sizes are 13199shown below. These are the code and data sizes for the acpica.lib 13200produced 13201by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13202any ACPI driver or OSPM code. The debug version of the code includes the 13203debug output trace mechanism and has a much larger code and data size. 13204Note 13205that these values will vary depending on the efficiency of the compiler 13206and 13207the compiler options used during generation. 13208 13209 Previous Release: 13210 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13211 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13212 Current Release: 13213 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13214 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13215 13216---------------------------------------- 1321724 June 2005. Summary of changes for version 20050624: 13218 132191) ACPI CA Core Subsystem: 13220 13221Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13222the host-defined cache object. This allows the OSL implementation to 13223define 13224and type this object in any manner desired, simplifying the OSL 13225implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13226Linux, and should be defined in the OS-specific header file for other 13227operating systems as required. 13228 13229Changed the interface to AcpiOsAcquireObject to directly return the 13230requested object as the function return (instead of ACPI_STATUS.) This 13231change was made for performance reasons, since this is the purpose of the 13232interface in the first place. AcpiOsAcquireObject is now similar to the 13233AcpiOsAllocate interface. 13234 13235Implemented a new AML debugger command named Businfo. This command 13236displays 13237information about all devices that have an associate _PRT object. The 13238_ADR, 13239_HID, _UID, and _CID are displayed for these devices. 13240 13241Modified the initialization sequence in AcpiInitializeSubsystem to call 13242the 13243OSL interface AcpiOslInitialize first, before any local initialization. 13244This 13245change was required because the global initialization now calls OSL 13246interfaces. 13247 13248Enhanced the Dump command to display the entire contents of Package 13249objects 13250(including all sub-objects and their values.) 13251 13252Restructured the code base to split some files because of size and/or 13253because the code logically belonged in a separate file. New files are 13254listed 13255below. All makefiles and project files included in the ACPI CA release 13256have 13257been updated. 13258 utilities/utcache.c /* Local cache interfaces */ 13259 utilities/utmutex.c /* Local mutex support */ 13260 utilities/utstate.c /* State object support */ 13261 interpreter/parser/psloop.c /* Main AML parse loop */ 13262 13263Code and Data Size: Current and previous core subsystem library sizes are 13264shown below. These are the code and data sizes for the acpica.lib 13265produced 13266by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13267any ACPI driver or OSPM code. The debug version of the code includes the 13268debug output trace mechanism and has a much larger code and data size. 13269Note 13270that these values will vary depending on the efficiency of the compiler 13271and 13272the compiler options used during generation. 13273 13274 Previous Release: 13275 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13276 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13277 Current Release: 13278 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13279 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13280 13281 132822) iASL Compiler/Disassembler: 13283 13284Fixed a regression introduced in version 20050513 where the use of a 13285Package 13286object within a Case() statement caused a compile time exception. The 13287original behavior has been restored (a Match() operator is emitted.) 13288 13289---------------------------------------- 1329017 June 2005. Summary of changes for version 20050617: 13291 132921) ACPI CA Core Subsystem: 13293 13294Moved the object cache operations into the OS interface layer (OSL) to 13295allow 13296the host OS to handle these operations if desired (for example, the Linux 13297OSL will invoke the slab allocator). This support is optional; the 13298compile 13299time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13300cache 13301code in the ACPI CA core. The new OSL interfaces are shown below. See 13302utalloc.c for an example implementation, and acpiosxf.h for the exact 13303interface definitions. With assistance from Alexey Starikovskiy. 13304 AcpiOsCreateCache 13305 AcpiOsDeleteCache 13306 AcpiOsPurgeCache 13307 AcpiOsAcquireObject 13308 AcpiOsReleaseObject 13309 13310Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13311return 13312and restore a flags parameter. This fits better with many OS lock models. 13313Note: the current execution state (interrupt handler or not) is no longer 13314passed to these interfaces. If necessary, the OSL must determine this 13315state 13316by itself, a simple and fast operation. With assistance from Alexey 13317Starikovskiy. 13318 13319Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13320present if the revision of the RSDP was 2 or greater. According to the 13321ACPI 13322specification, the XSDT is optional in all cases, and the table manager 13323therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13324Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13325contain 13326only the RSDT. 13327 13328Fixed an interpreter problem with the Mid() operator in the case of an 13329input 13330string where the resulting output string is of zero length. It now 13331correctly 13332returns a valid, null terminated string object instead of a string object 13333with a null pointer. 13334 13335Fixed a problem with the control method argument handling to allow a 13336store 13337to an Arg object that already contains an object of type Device. The 13338Device 13339object is now correctly overwritten. Previously, an error was returned. 13340 13341 13342Enhanced the debugger Find command to emit object values in addition to 13343the 13344found object pathnames. The output format is the same as the dump 13345namespace 13346command. 13347 13348Enhanced the debugger Set command. It now has the ability to set the 13349value 13350of any Named integer object in the namespace (Previously, only method 13351locals 13352and args could be set.) 13353 13354Code and Data Size: Current and previous core subsystem library sizes are 13355shown below. These are the code and data sizes for the acpica.lib 13356produced 13357by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13358any ACPI driver or OSPM code. The debug version of the code includes the 13359debug output trace mechanism and has a much larger code and data size. 13360Note 13361that these values will vary depending on the efficiency of the compiler 13362and 13363the compiler options used during generation. 13364 13365 Previous Release: 13366 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13367 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13368 Current Release: 13369 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13370 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13371 13372 133732) iASL Compiler/Disassembler: 13374 13375Fixed a regression in the disassembler where if/else/while constructs 13376were 13377output incorrectly. This problem was introduced in the previous release 13378(20050526). This problem also affected the single-step disassembly in the 13379debugger. 13380 13381Fixed a problem where compiling the reserved _OSI method would randomly 13382(but 13383rarely) produce compile errors. 13384 13385Enhanced the disassembler to emit compilable code in the face of 13386incorrect 13387AML resource descriptors. If the optional ResourceSourceIndex is present, 13388but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13389disassembly. Otherwise, the resulting code cannot be compiled without 13390errors. 13391 13392---------------------------------------- 1339326 May 2005. Summary of changes for version 20050526: 13394 133951) ACPI CA Core Subsystem: 13396 13397Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13398the module level (not within a control method.) These opcodes are 13399executed 13400exactly once at the time the table is loaded. This type of code was legal 13401up 13402until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13403in 13404order to provide backwards compatibility with earlier BIOS 13405implementations. 13406This eliminates the "Encountered executable code at module level" warning 13407that was previously generated upon detection of such code. 13408 13409Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13410inadvertently be generated during the lookup of namespace objects in the 13411second pass parse of ACPI tables and control methods. It appears that 13412this 13413problem could occur during the resolution of forward references to 13414namespace 13415objects. 13416 13417Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13418corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13419allows the deadlock detection debug code to be compiled out in the normal 13420case, improving mutex performance (and overall subsystem performance) 13421considerably. 13422 13423Implemented a handful of miscellaneous fixes for possible memory leaks on 13424error conditions and error handling control paths. These fixes were 13425suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13426 13427Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13428(tbxfroot.c) 13429to prevent a fault in this error case. 13430 13431Code and Data Size: Current and previous core subsystem library sizes are 13432shown below. These are the code and data sizes for the acpica.lib 13433produced 13434by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13435any ACPI driver or OSPM code. The debug version of the code includes the 13436debug output trace mechanism and has a much larger code and data size. 13437Note 13438that these values will vary depending on the efficiency of the compiler 13439and 13440the compiler options used during generation. 13441 13442 Previous Release: 13443 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13444 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13445 Current Release: 13446 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13447 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13448 13449 134502) iASL Compiler/Disassembler: 13451 13452Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13453the module level (not within a control method.) These operators will be 13454executed once at the time the table is loaded. This type of code was 13455legal 13456up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13457compiler in order to provide backwards compatibility with earlier BIOS 13458ASL 13459code. 13460 13461The ACPI integer width (specified via the table revision ID or the -r 13462override, 32 or 64 bits) is now used internally during compile-time 13463constant 13464folding to ensure that constants are truncated to 32 bits if necessary. 13465Previously, the revision ID value was only emitted in the AML table 13466header. 13467 13468An error message is now generated for the Mutex and Method operators if 13469the 13470SyncLevel parameter is outside the legal range of 0 through 15. 13471 13472Fixed a problem with the Method operator ParameterTypes list handling 13473(ACPI 134743.0). Previously, more than 2 types or 2 arguments generated a syntax 13475error. 13476The actual underlying implementation of method argument typechecking is 13477still under development, however. 13478 13479---------------------------------------- 1348013 May 2005. Summary of changes for version 20050513: 13481 134821) ACPI CA Core Subsystem: 13483 13484Implemented support for PCI Express root bridges -- added support for 13485device 13486PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13487 13488The interpreter now automatically truncates incoming 64-bit constants to 1348932 13490bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13491This 13492also affects the iASL compiler constant folding. (Note: as per below, the 13493iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13494 13495Fixed a problem where string and buffer objects with "static" pointers 13496(pointers to initialization data within an ACPI table) were not handled 13497consistently. The internal object copy operation now always copies the 13498data 13499to a newly allocated buffer, regardless of whether the source object is 13500static or not. 13501 13502Fixed a problem with the FromBCD operator where an implicit result 13503conversion was improperly performed while storing the result to the 13504target 13505operand. Since this is an "explicit conversion" operator, the implicit 13506conversion should never be performed on the output. 13507 13508Fixed a problem with the CopyObject operator where a copy to an existing 13509named object did not always completely overwrite the existing object 13510stored 13511at name. Specifically, a buffer-to-buffer copy did not delete the 13512existing 13513buffer. 13514 13515Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13516and 13517structs for consistency. 13518 13519Code and Data Size: Current and previous core subsystem library sizes are 13520shown below. These are the code and data sizes for the acpica.lib 13521produced 13522by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13523any ACPI driver or OSPM code. The debug version of the code includes the 13524debug output trace mechanism and has a much larger code and data size. 13525Note 13526that these values will vary depending on the efficiency of the compiler 13527and 13528the compiler options used during generation. 13529 13530 Previous Release: 13531 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13532 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13533 Current Release: (Same sizes) 13534 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13535 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13536 13537 135382) iASL Compiler/Disassembler: 13539 13540The compiler now emits a warning if an attempt is made to generate a 64- 13541bit 13542integer constant from within a 32-bit ACPI table (Revision < 2). The 13543integer 13544is truncated to 32 bits. 13545 13546Fixed a problem with large package objects: if the static length of the 13547package is greater than 255, the "variable length package" opcode is 13548emitted. Previously, this caused an error. This requires an update to the 13549ACPI spec, since it currently (incorrectly) states that packages larger 13550than 13551255 elements are not allowed. 13552 13553The disassembler now correctly handles variable length packages and 13554packages 13555larger than 255 elements. 13556 13557---------------------------------------- 1355808 April 2005. Summary of changes for version 20050408: 13559 135601) ACPI CA Core Subsystem: 13561 13562Fixed three cases in the interpreter where an "index" argument to an ASL 13563function was still (internally) 32 bits instead of the required 64 bits. 13564This was the Index argument to the Index, Mid, and Match operators. 13565 13566The "strupr" function is now permanently local (AcpiUtStrupr), since this 13567is 13568not a POSIX-defined function and not present in most kernel-level C 13569libraries. All references to the C library strupr function have been 13570removed 13571from the headers. 13572 13573Completed the deployment of static functions/prototypes. All prototypes 13574with 13575the static attribute have been moved from the headers to the owning C 13576file. 13577 13578Implemented an extract option (-e) for the AcpiBin utility (AML binary 13579utility). This option allows the utility to extract individual ACPI 13580tables 13581from the output of AcpiDmp. It provides the same functionality of the 13582acpixtract.pl perl script without the worry of setting the correct perl 13583options. AcpiBin runs on Windows and has not yet been generated/validated 13584in 13585the Linux/Unix environment (but should be soon). 13586 13587Updated and fixed the table dump option for AcpiBin (-d). This option 13588converts a single ACPI table to a hex/ascii file, similar to the output 13589of 13590AcpiDmp. 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.0K Code, 11.6K Data, 89.6K Total 13605 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13606 Current Release: 13607 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13608 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13609 13610 136112) iASL Compiler/Disassembler: 13612 13613Disassembler fix: Added a check to ensure that the table length found in 13614the 13615ACPI table header within the input file is not longer than the actual 13616input 13617file size. This indicates some kind of file or table corruption. 13618 13619---------------------------------------- 1362029 March 2005. Summary of changes for version 20050329: 13621 136221) ACPI CA Core Subsystem: 13623 13624An error is now generated if an attempt is made to create a Buffer Field 13625of 13626length zero (A CreateField with a length operand of zero.) 13627 13628The interpreter now issues a warning whenever executable code at the 13629module 13630level is detected during ACPI table load. This will give some idea of the 13631prevalence of this type of code. 13632 13633Implemented support for references to named objects (other than control 13634methods) within package objects. 13635 13636Enhanced package object output for the debug object. Package objects are 13637now 13638completely dumped, showing all elements. 13639 13640Enhanced miscellaneous object output for the debug object. Any object can 13641now be written to the debug object (for example, a device object can be 13642written, and the type of the object will be displayed.) 13643 13644The "static" qualifier has been added to all local functions across both 13645the 13646core subsystem and the iASL compiler. 13647 13648The number of "long" lines (> 80 chars) within the source has been 13649significantly reduced, by about 1/3. 13650 13651Cleaned up all header files to ensure that all CA/iASL functions are 13652prototyped (even static functions) and the formatting is consistent. 13653 13654Two new header files have been added, acopcode.h and acnames.h. 13655 13656Removed several obsolete functions that were no longer used. 13657 13658Code and Data Size: Current and previous core subsystem library sizes are 13659shown below. These are the code and data sizes for the acpica.lib 13660produced 13661by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13662any ACPI driver or OSPM code. The debug version of the code includes the 13663debug output trace mechanism and has a much larger code and data size. 13664Note 13665that these values will vary depending on the efficiency of the compiler 13666and 13667the compiler options used during generation. 13668 13669 Previous Release: 13670 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13671 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13672 Current Release: 13673 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13674 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13675 13676 13677 136782) iASL Compiler/Disassembler: 13679 13680Fixed a problem with the resource descriptor generation/support. For the 13681ResourceSourceIndex and the ResourceSource fields, both must be present, 13682or 13683both must be not present - can't have one without the other. 13684 13685The compiler now returns non-zero from the main procedure if any errors 13686have 13687occurred during the compilation. 13688 13689 13690---------------------------------------- 1369109 March 2005. Summary of changes for version 20050309: 13692 136931) ACPI CA Core Subsystem: 13694 13695The string-to-buffer implicit conversion code has been modified again 13696after 13697a change to the ACPI specification. In order to match the behavior of 13698the 13699other major ACPI implementation, the target buffer is no longer truncated 13700if 13701the source string is smaller than an existing target buffer. This change 13702requires an update to the ACPI spec, and should eliminate the recent 13703AE_AML_BUFFER_LIMIT issues. 13704 13705The "implicit return" support was rewritten to a new algorithm that 13706solves 13707the general case. Rather than attempt to determine when a method is about 13708to 13709exit, the result of every ASL operator is saved momentarily until the 13710very 13711next ASL operator is executed. Therefore, no matter how the method exits, 13712there will always be a saved implicit return value. This feature is only 13713enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 13714eliminate 13715AE_AML_NO_RETURN_VALUE errors when enabled. 13716 13717Implemented implicit conversion support for the predicate (operand) of 13718the 13719If, Else, and While operators. String and Buffer arguments are 13720automatically 13721converted to Integers. 13722 13723Changed the string-to-integer conversion behavior to match the new ACPI 13724errata: "If no integer object exists, a new integer is created. The ASCII 13725string is interpreted as a hexadecimal constant. Each string character is 13726interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 13727with the first character as the most significant digit, and ending with 13728the 13729first non-hexadecimal character or end-of-string." This means that the 13730first 13731non-hex character terminates the conversion and this is the code that was 13732changed. 13733 13734Fixed a problem where the ObjectType operator would fail (fault) when 13735used 13736on an Index of a Package which pointed to a null package element. The 13737operator now properly returns zero (Uninitialized) in this case. 13738 13739Fixed a problem where the While operator used excessive memory by not 13740properly popping the result stack during execution. There was no memory 13741leak 13742after execution, however. (Code provided by Valery Podrezov.) 13743 13744Fixed a problem where references to control methods within Package 13745objects 13746caused the method to be invoked, instead of producing a reference object 13747pointing to the method. 13748 13749Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13750to 13751improve performance and reduce code size. (Code provided by Alexey 13752Starikovskiy.) 13753 13754Code and Data Size: Current and previous core subsystem library sizes are 13755shown below. These are the code and data sizes for the acpica.lib 13756produced 13757by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13758any ACPI driver or OSPM code. The debug version of the code includes the 13759debug output trace mechanism and has a much larger code and data size. 13760Note 13761that these values will vary depending on the efficiency of the compiler 13762and 13763the compiler options used during generation. 13764 13765 Previous Release: 13766 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13767 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13768 Current Release: 13769 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13770 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13771 13772 137732) iASL Compiler/Disassembler: 13774 13775Fixed a problem with the Return operator with no arguments. Since the AML 13776grammar for the byte encoding requires an operand for the Return opcode, 13777the 13778compiler now emits a Return(Zero) for this case. An ACPI specification 13779update has been written for this case. 13780 13781For tables other than the DSDT, namepath optimization is automatically 13782disabled. This is because SSDTs can be loaded anywhere in the namespace, 13783the 13784compiler has no knowledge of where, and thus cannot optimize namepaths. 13785 13786Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13787inadvertently omitted from the ACPI specification, and will require an 13788update to the spec. 13789 13790The source file scan for ASCII characters is now optional (-a). This 13791change 13792was made because some vendors place non-ascii characters within comments. 13793However, the scan is simply a brute-force byte compare to ensure all 13794characters in the file are in the range 0x00 to 0x7F. 13795 13796Fixed a problem with the CondRefOf operator where the compiler was 13797inappropriately checking for the existence of the target. Since the point 13798of 13799the operator is to check for the existence of the target at run-time, the 13800compiler no longer checks for the target existence. 13801 13802Fixed a problem where errors generated from the internal AML interpreter 13803during constant folding were not handled properly, causing a fault. 13804 13805Fixed a problem with overly aggressive range checking for the Stall 13806operator. The valid range (max 255) is now only checked if the operand is 13807of 13808type Integer. All other operand types cannot be statically checked. 13809 13810Fixed a problem where control method references within the RefOf, 13811DeRefOf, 13812and ObjectType operators were not treated properly. They are now treated 13813as 13814actual references, not method invocations. 13815 13816Fixed and enhanced the "list namespace" option (-ln). This option was 13817broken 13818a number of releases ago. 13819 13820Improved error handling for the Field, IndexField, and BankField 13821operators. 13822The compiler now cleanly reports and recovers from errors in the field 13823component (FieldUnit) list. 13824 13825Fixed a disassembler problem where the optional ResourceDescriptor fields 13826TRS and TTP were not always handled correctly. 13827 13828Disassembler - Comments in output now use "//" instead of "/*" 13829 13830---------------------------------------- 1383128 February 2005. Summary of changes for version 20050228: 13832 138331) ACPI CA Core Subsystem: 13834 13835Fixed a problem where the result of an Index() operator (an object 13836reference) must increment the reference count on the target object for 13837the 13838life of the object reference. 13839 13840Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13841Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13842WordSpace 13843resource descriptors. 13844 13845Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13846Space Descriptor" string, indicating interpreter support for the 13847descriptors 13848above. 13849 13850Implemented header support for the new ACPI 3.0 FADT flag bits. 13851 13852Implemented header support for the new ACPI 3.0 PCI Express bits for the 13853PM1 13854status/enable registers. 13855 13856Updated header support for the MADT processor local Apic struct and MADT 13857platform interrupt source struct for new ACPI 3.0 fields. 13858 13859Implemented header support for the SRAT and SLIT ACPI tables. 13860 13861Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13862flag 13863at runtime. 13864 13865Code and Data Size: Current and previous core subsystem library sizes are 13866shown below. These are the code and data sizes for the acpica.lib 13867produced 13868by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13869any ACPI driver or OSPM code. The debug version of the code includes the 13870debug output trace mechanism and has a much larger code and data size. 13871Note 13872that these values will vary depending on the efficiency of the compiler 13873and 13874the compiler options used during generation. 13875 13876 Previous Release: 13877 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13878 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13879 Current Release: 13880 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13881 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13882 13883 138842) iASL Compiler/Disassembler: 13885 13886Fixed a problem with the internal 64-bit String-to-integer conversion 13887with 13888strings less than two characters long. 13889 13890Fixed a problem with constant folding where the result of the Index() 13891operator can not be considered a constant. This means that Index() cannot 13892be 13893a type3 opcode and this will require an update to the ACPI specification. 13894 13895Disassembler: Implemented support for the TTP, MTP, and TRS resource 13896descriptor fields. These fields were inadvertently ignored and not output 13897in 13898the disassembly of the resource descriptor. 13899 13900 13901 ---------------------------------------- 1390211 February 2005. Summary of changes for version 20050211: 13903 139041) ACPI CA Core Subsystem: 13905 13906Implemented ACPI 3.0 support for implicit conversion within the Match() 13907operator. MatchObjects can now be of type integer, buffer, or string 13908instead 13909of just type integer. Package elements are implicitly converted to the 13910type 13911of the MatchObject. This change aligns the behavior of Match() with the 13912behavior of the other logical operators (LLess(), etc.) It also requires 13913an 13914errata change to the ACPI specification as this support was intended for 13915ACPI 3.0, but was inadvertently omitted. 13916 13917Fixed a problem with the internal implicit "to buffer" conversion. 13918Strings 13919that are converted to buffers will cause buffer truncation if the string 13920is 13921smaller than the target buffer. Integers that are converted to buffers 13922will 13923not cause buffer truncation, only zero extension (both as per the ACPI 13924spec.) The problem was introduced when code was added to truncate the 13925buffer, but this should not be performed in all cases, only the string 13926case. 13927 13928Fixed a problem with the Buffer and Package operators where the 13929interpreter 13930would get confused if two such operators were used as operands to an ASL 13931operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13932stack was not being popped after the execution of these operators, 13933resulting 13934in an AE_NO_RETURN_VALUE exception. 13935 13936Fixed a problem with constructs of the form Store(Index(...),...). The 13937reference object returned from Index was inadvertently resolved to an 13938actual 13939value. This problem was introduced in version 20050114 when the behavior 13940of 13941Store() was modified to restrict the object types that can be used as the 13942source operand (to match the ACPI specification.) 13943 13944Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13945 13946Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13947 13948Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13949 13950Code and Data Size: Current and previous core subsystem library sizes are 13951shown below. These are the code and data sizes for the acpica.lib 13952produced 13953by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13954any ACPI driver or OSPM code. The debug version of the code includes the 13955debug output trace mechanism and has a much larger code and data size. 13956Note 13957that these values will vary depending on the efficiency of the compiler 13958and 13959the compiler options used during generation. 13960 13961 Previous Release: 13962 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13963 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13964 Current Release: 13965 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13966 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13967 13968 139692) iASL Compiler/Disassembler: 13970 13971Fixed a code generation problem in the constant folding optimization code 13972where incorrect code was generated if a constant was reduced to a buffer 13973object (i.e., a reduced type 5 opcode.) 13974 13975Fixed a typechecking problem for the ToBuffer operator. Caused by an 13976incorrect return type in the internal opcode information table. 13977 13978---------------------------------------- 1397925 January 2005. Summary of changes for version 20050125: 13980 139811) ACPI CA Core Subsystem: 13982 13983Fixed a recently introduced problem with the Global Lock where the 13984underlying semaphore was not created. This problem was introduced in 13985version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13986Acquire() operation on _GL. 13987 13988The local object cache is now optional, and is disabled by default. Both 13989AcpiExec and the iASL compiler enable the cache because they run in user 13990mode and this enhances their performance. #define 13991ACPI_ENABLE_OBJECT_CACHE 13992to enable the local cache. 13993 13994Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13995the 13996optional "implicit return" support where an error was returned if no 13997return 13998object was expected, but one was implicitly returned. AE_OK is now 13999returned 14000in this case and the implicitly returned object is deleted. 14001AcpiUtEvaluateObject is only occasionally used, and only to execute 14002reserved 14003methods such as _STA and _INI where the return type is known up front. 14004 14005Fixed a few issues with the internal convert-to-integer code. It now 14006returns 14007an error if an attempt is made to convert a null string, a string of only 14008blanks/tabs, or a zero-length buffer. This affects both implicit 14009conversion 14010and explicit conversion via the ToInteger() operator. 14011 14012The internal debug code in AcpiUtAcquireMutex has been commented out. It 14013is 14014not needed for normal operation and should increase the performance of 14015the 14016entire subsystem. The code remains in case it is needed for debug 14017purposes 14018again. 14019 14020The AcpiExec source and makefile are included in the Unix/Linux package 14021for 14022the first time. 14023 14024Code and Data Size: Current and previous core subsystem library sizes are 14025shown below. These are the code and data sizes for the acpica.lib 14026produced 14027by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14028any ACPI driver or OSPM code. The debug version of the code includes the 14029debug output trace mechanism and has a much larger code and data size. 14030Note 14031that these values will vary depending on the efficiency of the compiler 14032and 14033the compiler options used during generation. 14034 14035 Previous Release: 14036 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14037 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14038 Current Release: 14039 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14040 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14041 140422) iASL Compiler/Disassembler: 14043 14044Switch/Case support: A warning is now issued if the type of the Switch 14045value 14046cannot be determined at compile time. For example, Switch(Arg0) will 14047generate the warning, and the type is assumed to be an integer. As per 14048the 14049ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 14050the 14051warning. 14052 14053Switch/Case support: Implemented support for buffer and string objects as 14054the switch value. This is an ACPI 3.0 feature, now that LEqual supports 14055buffers and strings. 14056 14057Switch/Case support: The emitted code for the LEqual() comparisons now 14058uses 14059the switch value as the first operand, not the second. The case value is 14060now 14061the second operand, and this allows the case value to be implicitly 14062converted to the type of the switch value, not the other way around. 14063 14064Switch/Case support: Temporary variables are now emitted immediately 14065within 14066the control method, not at the global level. This means that there are 14067now 1406836 temps available per-method, not 36 temps per-module as was the case 14069with 14070the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 14071 14072---------------------------------------- 1407314 January 2005. Summary of changes for version 20050114: 14074 14075Added 2005 copyright to all module headers. This affects every module in 14076the core subsystem, iASL compiler, and the utilities. 14077 140781) ACPI CA Core Subsystem: 14079 14080Fixed an issue with the String-to-Buffer conversion code where the string 14081null terminator was not included in the buffer after conversion, but 14082there 14083is existing ASL that assumes the string null terminator is included. This 14084is 14085the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14086introduced in the previous version when the code was updated to correctly 14087set the converted buffer size as per the ACPI specification. The ACPI 14088spec 14089is ambiguous and will be updated to specify that the null terminator must 14090be 14091included in the converted buffer. This also affects the ToBuffer() ASL 14092operator. 14093 14094Fixed a problem with the Mid() ASL/AML operator where it did not work 14095correctly on Buffer objects. Newly created sub-buffers were not being 14096marked 14097as initialized. 14098 14099 14100Fixed a problem in AcpiTbFindTable where incorrect string compares were 14101performed on the OemId and OemTableId table header fields. These fields 14102are 14103not null terminated, so strncmp is now used instead of strcmp. 14104 14105Implemented a restriction on the Store() ASL/AML operator to align the 14106behavior with the ACPI specification. Previously, any object could be 14107used 14108as the source operand. Now, the only objects that may be used are 14109Integers, 14110Buffers, Strings, Packages, Object References, and DDB Handles. If 14111necessary, the original behavior can be restored by enabling the 14112EnableInterpreterSlack flag. 14113 14114Enhanced the optional "implicit return" support to allow an implicit 14115return 14116value from methods that are invoked externally via the AcpiEvaluateObject 14117interface. This enables implicit returns from the _STA and _INI methods, 14118for example. 14119 14120Changed the Revision() ASL/AML operator to return the current version of 14121the 14122AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14123returned 14124the supported ACPI version (This is the function of the _REV method). 14125 14126Updated the _REV predefined method to return the currently supported 14127version 14128of ACPI, now 3. 14129 14130Implemented batch mode option for the AcpiExec utility (-b). 14131 14132Code and Data Size: Current and previous core subsystem library sizes are 14133shown below. These are the code and data sizes for the acpica.lib 14134produced 14135by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14136any ACPI driver or OSPM code. The debug version of the code includes the 14137debug output trace mechanism and has a much larger code and data size. 14138Note 14139that these values will vary depending on the efficiency of the compiler 14140and 14141the compiler options used during generation. 14142 14143 Previous Release: 14144 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14145 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14146 Current Release: 14147 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14148 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14149 14150---------------------------------------- 1415110 December 2004. Summary of changes for version 20041210: 14152 14153ACPI 3.0 support is nearing completion in both the iASL compiler and the 14154ACPI CA core subsystem. 14155 141561) ACPI CA Core Subsystem: 14157 14158Fixed a problem in the ToDecimalString operator where the resulting 14159string 14160length was incorrectly calculated. The length is now calculated exactly, 14161eliminating incorrect AE_STRING_LIMIT exceptions. 14162 14163Fixed a problem in the ToHexString operator to allow a maximum 200 14164character 14165string to be produced. 14166 14167Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14168copy 14169routine where the length of the resulting buffer was not truncated to the 14170new size (if the target buffer already existed). 14171 14172Code and Data Size: Current and previous core subsystem library sizes are 14173shown below. These are the code and data sizes for the acpica.lib 14174produced 14175by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14176any ACPI driver or OSPM code. The debug version of the code includes the 14177debug output trace mechanism and has a much larger code and data size. 14178Note 14179that these values will vary depending on the efficiency of the compiler 14180and 14181the compiler options used during generation. 14182 14183 Previous Release: 14184 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14185 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14186 Current Release: 14187 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14188 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14189 14190 141912) iASL Compiler/Disassembler: 14192 14193Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14194ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14195Includes support in the disassembler. 14196 14197Implemented support for the new (ACPI 3.0) parameter to the Register 14198macro, 14199AccessSize. 14200 14201Fixed a problem where the _HE resource name for the Interrupt macro was 14202referencing bit 0 instead of bit 1. 14203 14204Implemented check for maximum 255 interrupts in the Interrupt macro. 14205 14206Fixed a problem with the predefined resource descriptor names where 14207incorrect AML code was generated if the offset within the resource buffer 14208was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14209but did not update the surrounding package lengths. 14210 14211Changes to the Dma macro: All channels within the channel list must be 14212in 14213the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14214optional (default is BusMaster). 14215 14216Implemented check for maximum 7 data bytes for the VendorShort macro. 14217 14218The ReadWrite parameter is now optional for the Memory32 and similar 14219macros. 14220 14221---------------------------------------- 1422203 December 2004. Summary of changes for version 20041203: 14223 142241) ACPI CA Core Subsystem: 14225 14226The low-level field insertion/extraction code (exfldio) has been 14227completely 14228rewritten to eliminate unnecessary complexity, bugs, and boundary 14229conditions. 14230 14231Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14232ToDecimalString 14233operators where the input operand could be inadvertently deleted if no 14234conversion was necessary (e.g., if the input to ToInteger was an Integer 14235object.) 14236 14237Fixed a problem with the ToDecimalString and ToHexString where an 14238incorrect 14239exception code was returned if the resulting string would be > 200 chars. 14240AE_STRING_LIMIT is now returned. 14241 14242Fixed a problem with the Concatenate operator where AE_OK was always 14243returned, even if the operation failed. 14244 14245Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14246semaphores to be allocated. 14247 14248Code and Data Size: Current and previous core subsystem library sizes are 14249shown below. These are the code and data sizes for the acpica.lib 14250produced 14251by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14252any ACPI driver or OSPM code. The debug version of the code includes the 14253debug output trace mechanism and has a much larger code and data size. 14254Note 14255that these values will vary depending on the efficiency of the compiler 14256and 14257the compiler options used during generation. 14258 14259 Previous Release: 14260 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14261 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14262 Current Release: 14263 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14264 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14265 14266 142672) iASL Compiler/Disassembler: 14268 14269Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14270recently introduced in 20041119. 14271 14272Fixed a problem with the ToUUID macro where the upper nybble of each 14273buffer 14274byte was inadvertently set to zero. 14275 14276---------------------------------------- 1427719 November 2004. Summary of changes for version 20041119: 14278 142791) ACPI CA Core Subsystem: 14280 14281Fixed a problem in the internal ConvertToInteger routine where new 14282integers 14283were not truncated to 32 bits for 32-bit ACPI tables. This routine 14284converts 14285buffers and strings to integers. 14286 14287Implemented support to store a value to an Index() on a String object. 14288This 14289is an ACPI 2.0 feature that had not yet been implemented. 14290 14291Implemented new behavior for storing objects to individual package 14292elements 14293(via the Index() operator). The previous behavior was to invoke the 14294implicit 14295conversion rules if an object was already present at the index. The new 14296behavior is to simply delete any existing object and directly store the 14297new 14298object. Although the ACPI specification seems unclear on this subject, 14299other 14300ACPI implementations behave in this manner. (This is the root of the 14301AE_BAD_HEX_CONSTANT issue.) 14302 14303Modified the RSDP memory scan mechanism to support the extended checksum 14304for 14305ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14306RSDP signature is found with a valid checksum. 14307 14308Code and Data Size: Current and previous core subsystem library sizes are 14309shown below. These are the code and data sizes for the acpica.lib 14310produced 14311by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14312any ACPI driver or OSPM code. The debug version of the code includes the 14313debug output trace mechanism and has a much larger code and data size. 14314Note 14315that these values will vary depending on the efficiency of the compiler 14316and 14317the compiler options used during generation. 14318 14319 Previous Release: 14320 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14321 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14322 Current Release: 14323 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14324 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14325 14326 143272) iASL Compiler/Disassembler: 14328 14329Fixed a missing semicolon in the aslcompiler.y file. 14330 14331---------------------------------------- 1433205 November 2004. Summary of changes for version 20041105: 14333 143341) ACPI CA Core Subsystem: 14335 14336Implemented support for FADT revision 2. This was an interim table 14337(between 14338ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14339 14340Implemented optional support to allow uninitialized LocalX and ArgX 14341variables in a control method. The variables are initialized to an 14342Integer 14343object with a value of zero. This support is enabled by setting the 14344AcpiGbl_EnableInterpreterSlack flag to TRUE. 14345 14346Implemented support for Integer objects for the SizeOf operator. Either 143474 14348or 8 is returned, depending on the current integer size (32-bit or 64- 14349bit, 14350depending on the parent table revision). 14351 14352Fixed a problem in the implementation of the SizeOf and ObjectType 14353operators 14354where the operand was resolved to a value too early, causing incorrect 14355return values for some objects. 14356 14357Fixed some possible memory leaks during exceptional conditions. 14358 14359Code and Data Size: Current and previous core subsystem library sizes are 14360shown below. These are the code and data sizes for the acpica.lib 14361produced 14362by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14363any ACPI driver or OSPM code. The debug version of the code includes the 14364debug output trace mechanism and has a much larger code and data size. 14365Note 14366that these values will vary depending on the efficiency of the compiler 14367and 14368the compiler options used during generation. 14369 14370 Previous Release: 14371 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14372 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14373 Current Release: 14374 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14375 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14376 14377 143782) iASL Compiler/Disassembler: 14379 14380Implemented support for all ACPI 3.0 reserved names and methods. 14381 14382Implemented all ACPI 3.0 grammar elements in the front-end, including 14383support for semicolons. 14384 14385Implemented the ACPI 3.0 Function() and ToUUID() macros 14386 14387Fixed a problem in the disassembler where a Scope() operator would not be 14388emitted properly if the target of the scope was in another table. 14389 14390---------------------------------------- 1439115 October 2004. Summary of changes for version 20041015: 14392 14393Note: ACPI CA is currently undergoing an in-depth and complete formal 14394evaluation to test/verify the following areas. Other suggestions are 14395welcome. This will result in an increase in the frequency of releases and 14396the number of bug fixes in the next few months. 14397 - Functional tests for all ASL/AML operators 14398 - All implicit/explicit type conversions 14399 - Bit fields and operation regions 14400 - 64-bit math support and 32-bit-only "truncated" math support 14401 - Exceptional conditions, both compiler and interpreter 14402 - Dynamic object deletion and memory leaks 14403 - ACPI 3.0 support when implemented 14404 - External interfaces to the ACPI subsystem 14405 14406 144071) ACPI CA Core Subsystem: 14408 14409Fixed two alignment issues on 64-bit platforms - within debug statements 14410in 14411AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14412Address 14413field within the non-aligned ACPI generic address structure. 14414 14415Fixed a problem in the Increment and Decrement operators where incorrect 14416operand resolution could result in the inadvertent modification of the 14417original integer when the integer is passed into another method as an 14418argument and the arg is then incremented/decremented. 14419 14420Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14421bit 14422BCD number were truncated during conversion. 14423 14424Fixed a problem in the ToDecimal operator where the length of the 14425resulting 14426string could be set incorrectly too long if the input operand was a 14427Buffer 14428object. 14429 14430Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14431(0) 14432within a buffer would prematurely terminate a compare between buffer 14433objects. 14434 14435Added a check for string overflow (>200 characters as per the ACPI 14436specification) during the Concatenate operator with two string operands. 14437 14438Code and Data Size: Current and previous core subsystem library sizes are 14439shown below. These are the code and data sizes for the acpica.lib 14440produced 14441by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14442any ACPI driver or OSPM code. The debug version of the code includes the 14443debug output trace mechanism and has a much larger code and data size. 14444Note 14445that these values will vary depending on the efficiency of the compiler 14446and 14447the compiler options used during generation. 14448 14449 Previous Release: 14450 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14451 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14452 Current Release: 14453 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14454 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14455 14456 14457 144582) iASL Compiler/Disassembler: 14459 14460Allow the use of the ObjectType operator on uninitialized Locals and Args 14461(returns 0 as per the ACPI specification). 14462 14463Fixed a problem where the compiler would fault if there was a syntax 14464error 14465in the FieldName of all of the various CreateXXXField operators. 14466 14467Disallow the use of lower case letters within the EISAID macro, as per 14468the 14469ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14470Where 14471U is an uppercase letter and N is a hex digit. 14472 14473 14474---------------------------------------- 1447506 October 2004. Summary of changes for version 20041006: 14476 144771) ACPI CA Core Subsystem: 14478 14479Implemented support for the ACPI 3.0 Timer operator. This ASL function 14480implements a 64-bit timer with 100 nanosecond granularity. 14481 14482Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14483implement the ACPI 3.0 Timer operator. This allows the host OS to 14484implement 14485the timer with the best clock available. Also, it keeps the core 14486subsystem 14487out of the clock handling business, since the host OS (usually) performs 14488this function. 14489 14490Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14491functions use a 64-bit address which is part of the packed ACPI Generic 14492Address Structure. Since the structure is non-aligned, the alignment 14493macros 14494are now used to extract the address to a local variable before use. 14495 14496Fixed a problem where the ToInteger operator assumed all input strings 14497were 14498hexadecimal. The operator now handles both decimal strings and hex 14499strings 14500(prefixed with "0x"). 14501 14502Fixed a problem where the string length in the string object created as a 14503result of the internal ConvertToString procedure could be incorrect. This 14504potentially affected all implicit conversions and also the 14505ToDecimalString 14506and ToHexString operators. 14507 14508Fixed two problems in the ToString operator. If the length parameter was 14509zero, an incorrect string object was created and the value of the input 14510length parameter was inadvertently changed from zero to Ones. 14511 14512Fixed a problem where the optional ResourceSource string in the 14513ExtendedIRQ 14514resource macro was ignored. 14515 14516Simplified the interfaces to the internal division functions, reducing 14517code 14518size and complexity. 14519 14520Code and Data Size: Current and previous core subsystem library sizes are 14521shown below. These are the code and data sizes for the acpica.lib 14522produced 14523by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14524any ACPI driver or OSPM code. The debug version of the code includes the 14525debug output trace mechanism and has a much larger code and data size. 14526Note 14527that these values will vary depending on the efficiency of the compiler 14528and 14529the compiler options used during generation. 14530 14531 Previous Release: 14532 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14533 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14534 Current Release: 14535 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14536 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14537 14538 145392) iASL Compiler/Disassembler: 14540 14541Implemented support for the ACPI 3.0 Timer operator. 14542 14543Fixed a problem where the Default() operator was inadvertently ignored in 14544a 14545Switch/Case block. This was a problem in the translation of the Switch 14546statement to If...Else pairs. 14547 14548Added support to allow a standalone Return operator, with no parentheses 14549(or 14550operands). 14551 14552Fixed a problem with code generation for the ElseIf operator where the 14553translated Else...If parse tree was improperly constructed leading to the 14554loss of some code. 14555 14556---------------------------------------- 1455722 September 2004. Summary of changes for version 20040922: 14558 145591) ACPI CA Core Subsystem: 14560 14561Fixed a problem with the implementation of the LNot() operator where 14562"Ones" 14563was not returned for the TRUE case. Changed the code to return Ones 14564instead 14565of (!Arg) which was usually 1. This change affects iASL constant folding 14566for 14567this operator also. 14568 14569Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14570not 14571initialized properly -- Now zero the entire buffer in this case where the 14572buffer already exists. 14573 14574Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14575Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14576related code considerably. This will require changes/updates to all OS 14577interface layers (OSLs.) 14578 14579Implemented a new external interface, AcpiInstallExceptionHandler, to 14580allow 14581a system exception handler to be installed. This handler is invoked upon 14582any 14583run-time exception that occurs during control method execution. 14584 14585Added support for the DSDT in AcpiTbFindTable. This allows the 14586DataTableRegion() operator to access the local copy of the DSDT. 14587 14588Code and Data Size: Current and previous core subsystem library sizes are 14589shown below. These are the code and data sizes for the acpica.lib 14590produced 14591by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14592any ACPI driver or OSPM code. The debug version of the code includes the 14593debug output trace mechanism and has a much larger code and data size. 14594Note 14595that these values will vary depending on the efficiency of the compiler 14596and 14597the compiler options used during generation. 14598 14599 Previous Release: 14600 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14601 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14602 Current Release: 14603 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14604 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14605 14606 146072) iASL Compiler/Disassembler: 14608 14609Fixed a problem with constant folding and the LNot operator. LNot was 14610returning 1 in the TRUE case, not Ones as per the ACPI specification. 14611This 14612could result in the generation of an incorrect folded/reduced constant. 14613 14614End-Of-File is now allowed within a "//"-style comment. A parse error no 14615longer occurs if such a comment is at the very end of the input ASL 14616source 14617file. 14618 14619Implemented the "-r" option to override the Revision in the table header. 14620The initial use of this option will be to simplify the evaluation of the 14621AML 14622interpreter by allowing a single ASL source module to be compiled for 14623either 1462432-bit or 64-bit integers. 14625 14626 14627---------------------------------------- 1462827 August 2004. Summary of changes for version 20040827: 14629 146301) ACPI CA Core Subsystem: 14631 14632- Implemented support for implicit object conversion in the non-numeric 14633logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14634and 14635LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14636the second operand is implicitly converted on the fly to match the type 14637of 14638the first operand. For example: 14639 14640 LEqual (Source1, Source2) 14641 14642Source1 and Source2 must each evaluate to an integer, a string, or a 14643buffer. 14644The data type of Source1 dictates the required type of Source2. Source2 14645is 14646implicitly converted if necessary to match the type of Source1. 14647 14648- Updated and corrected the behavior of the string conversion support. 14649The 14650rules concerning conversion of buffers to strings (according to the ACPI 14651specification) are as follows: 14652 14653ToDecimalString - explicit byte-wise conversion of buffer to string of 14654decimal values (0-255) separated by commas. ToHexString - explicit byte- 14655wise 14656conversion of buffer to string of hex values (0-FF) separated by commas. 14657ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14658byte 14659copy with no transform except NULL terminated. Any other implicit buffer- 14660to- 14661string conversion - byte-wise conversion of buffer to string of hex 14662values 14663(0-FF) separated by spaces. 14664 14665- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14666 14667- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14668was 14669one byte too short in the case of a node in the root scope. This could 14670cause a fault during debug output. 14671 14672- Code and Data Size: Current and previous core subsystem library sizes 14673are 14674shown below. These are the code and data sizes for the acpica.lib 14675produced 14676by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14677any ACPI driver or OSPM code. The debug version of the code includes the 14678debug output trace mechanism and has a much larger code and data size. 14679Note 14680that these values will vary depending on the efficiency of the compiler 14681and 14682the compiler options used during generation. 14683 14684 Previous Release: 14685 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14686 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14687 Current Release: 14688 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14689 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14690 14691 146922) iASL Compiler/Disassembler: 14693 14694- Fixed a Linux generation error. 14695 14696 14697---------------------------------------- 1469816 August 2004. Summary of changes for version 20040816: 14699 147001) ACPI CA Core Subsystem: 14701 14702Designed and implemented support within the AML interpreter for the so- 14703called "implicit return". This support returns the result of the last 14704ASL 14705operation within a control method, in the absence of an explicit Return() 14706operator. A few machines depend on this behavior, even though it is not 14707explicitly supported by the ASL language. It is optional support that 14708can 14709be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 14710 14711Removed support for the PCI_Config address space from the internal low 14712level 14713hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 14714support was not used internally, and would not work correctly anyway 14715because 14716the PCI bus number and segment number were not supported. There are 14717separate interfaces for PCI configuration space access because of the 14718unique 14719interface. 14720 14721Code and Data Size: Current and previous core subsystem library sizes are 14722shown below. These are the code and data sizes for the acpica.lib 14723produced 14724by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14725any ACPI driver or OSPM code. The debug version of the code includes the 14726debug output trace mechanism and has a much larger code and data size. 14727Note 14728that these values will vary depending on the efficiency of the compiler 14729and 14730the compiler options used during generation. 14731 14732 Previous Release: 14733 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14734 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14735 Current Release: 14736 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14737 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14738 14739 147402) iASL Compiler/Disassembler: 14741 14742Fixed a problem where constants in ASL expressions at the root level (not 14743within a control method) could be inadvertently truncated during code 14744generation. This problem was introduced in the 20040715 release. 14745 14746 14747---------------------------------------- 1474815 July 2004. Summary of changes for version 20040715: 14749 147501) ACPI CA Core Subsystem: 14751 14752Restructured the internal HW GPE interfaces to pass/track the current 14753state 14754of interrupts (enabled/disabled) in order to avoid possible deadlock and 14755increase flexibility of the interfaces. 14756 14757Implemented a "lexicographical compare" for String and Buffer objects 14758within 14759the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14760- 14761as per further clarification to the ACPI specification. Behavior is 14762similar 14763to C library "strcmp". 14764 14765Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14766external function. In the 32-bit non-debug case, the stack use has been 14767reduced from 168 bytes to 32 bytes. 14768 14769Deployed a new run-time configuration flag, 14770AcpiGbl_EnableInterpreterSlack, 14771whose purpose is to allow the AML interpreter to forgive certain bad AML 14772constructs. Default setting is FALSE. 14773 14774Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14775IO 14776support code. If enabled, it allows field access to go beyond the end of 14777a 14778region definition if the field is within the region length rounded up to 14779the 14780next access width boundary (a common coding error.) 14781 14782Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14783ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14784these 14785symbols are lowercase by the latest version of the AcpiSrc tool. 14786 14787The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14788rename "Register" to simply "Reg" to prevent certain compilers from 14789complaining. 14790 14791Code and Data Size: Current and previous core subsystem library sizes are 14792shown below. These are the code and data sizes for the acpica.lib 14793produced 14794by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14795any ACPI driver or OSPM code. The debug version of the code includes the 14796debug output trace mechanism and has a much larger code and data size. 14797Note 14798that these values will vary depending on the efficiency of the compiler 14799and 14800the compiler options used during generation. 14801 14802 Previous Release: 14803 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14804 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14805 Current Release: 14806 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14807 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14808 14809 148102) iASL Compiler/Disassembler: 14811 14812Implemented full support for Package objects within the Case() operator. 14813Note: The Break() operator is currently not supported within Case blocks 14814(TermLists) as there is some question about backward compatibility with 14815ACPI 148161.0 interpreters. 14817 14818 14819Fixed a problem where complex terms were not supported properly within 14820the 14821Switch() operator. 14822 14823Eliminated extraneous warning for compiler-emitted reserved names of the 14824form "_T_x". (Used in Switch/Case operators.) 14825 14826Eliminated optimization messages for "_T_x" objects and small constants 14827within the DefinitionBlock operator. 14828 14829 14830---------------------------------------- 1483115 June 2004. Summary of changes for version 20040615: 14832 148331) ACPI CA Core Subsystem: 14834 14835Implemented support for Buffer and String objects (as per ACPI 2.0) for 14836the 14837following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14838LLessEqual. 14839 14840All directory names in the entire source package are lower case, as they 14841were in earlier releases. 14842 14843Implemented "Disassemble" command in the AML debugger that will 14844disassemble 14845a single control method. 14846 14847Code and Data Size: Current and previous core subsystem library sizes are 14848shown below. These are the code and data sizes for the acpica.lib 14849produced 14850by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14851any ACPI driver or OSPM code. The debug version of the code includes the 14852debug output trace mechanism and has a much larger code and data size. 14853Note 14854that these values will vary depending on the efficiency of the compiler 14855and 14856the compiler options used during generation. 14857 14858 Previous Release: 14859 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14860 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14861 14862 Current Release: 14863 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14864 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14865 14866 148672) iASL Compiler/Disassembler: 14868 14869Implemented support for Buffer and String objects (as per ACPI 2.0) for 14870the 14871following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14872LLessEqual. 14873 14874All directory names in the entire source package are lower case, as they 14875were in earlier releases. 14876 14877Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14878not found. 14879 14880Fixed an issue with the Windows version of the compiler where later 14881versions 14882of Windows place the FADT in the registry under the name "FADT" and not 14883"FACP" as earlier versions did. This applies when using the -g or - 14884d<nofilename> options. The compiler now looks for both strings as 14885necessary. 14886 14887Fixed a problem with compiler namepath optimization where a namepath 14888within 14889the Scope() operator could not be optimized if the namepath was a subpath 14890of 14891the current scope path. 14892 14893---------------------------------------- 1489427 May 2004. Summary of changes for version 20040527: 14895 148961) ACPI CA Core Subsystem: 14897 14898Completed a new design and implementation for EBDA (Extended BIOS Data 14899Area) 14900support in the RSDP scan code. The original code improperly scanned for 14901the 14902EBDA by simply scanning from memory location 0 to 0x400. The correct 14903method 14904is to first obtain the EBDA pointer from within the BIOS data area, then 14905scan 1K of memory starting at the EBDA pointer. There appear to be few 14906if 14907any machines that place the RSDP in the EBDA, however. 14908 14909Integrated a fix for a possible fault during evaluation of BufferField 14910arguments. Obsolete code that was causing the problem was removed. 14911 14912Found and fixed a problem in the Field Support Code where data could be 14913corrupted on a bit field read that starts on an aligned boundary but does 14914not end on an aligned boundary. Merged the read/write "datum length" 14915calculation code into a common procedure. 14916 14917Rolled in a couple of changes to the FreeBSD-specific header. 14918 14919 14920Code and Data Size: Current and previous core subsystem library sizes are 14921shown below. These are the code and data sizes for the acpica.lib 14922produced 14923by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14924any ACPI driver or OSPM code. The debug version of the code includes the 14925debug output trace mechanism and has a much larger code and data size. 14926Note 14927that these values will vary depending on the efficiency of the compiler 14928and 14929the compiler options used during generation. 14930 14931 Previous Release: 14932 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14933 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14934 Current Release: 14935 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14936 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14937 14938 149392) iASL Compiler/Disassembler: 14940 14941Fixed a generation warning produced by some overly-verbose compilers for 14942a 1494364-bit constant. 14944 14945---------------------------------------- 1494614 May 2004. Summary of changes for version 20040514: 14947 149481) ACPI CA Core Subsystem: 14949 14950Fixed a problem where hardware GPE enable bits sometimes not set properly 14951during and after GPE method execution. Result of 04/27 changes. 14952 14953Removed extra "clear all GPEs" when sleeping/waking. 14954 14955Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14956AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14957to 14958the new AcpiEv* calls as appropriate. 14959 14960ACPI_OS_NAME was removed from the OS-specific headers. The default name 14961is 14962now "Microsoft Windows NT" for maximum compatibility. However this can 14963be 14964changed by modifying the acconfig.h file. 14965 14966Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14967traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14968 14969Run _INI methods on ThermalZone objects. This is against the ACPI 14970specification, but there is apparently ASL code in the field that has 14971these 14972_INI methods, and apparently "other" AML interpreters execute them. 14973 14974Performed a full 16/32/64 bit lint that resulted in some small changes. 14975 14976Added a sleep simulation command to the AML debugger to test sleep code. 14977 14978Code and Data Size: Current and previous core subsystem library sizes are 14979shown below. These are the code and data sizes for the acpica.lib 14980produced 14981by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14982any ACPI driver or OSPM code. The debug version of the code includes the 14983debug output trace mechanism and has a much larger code and data size. 14984Note 14985that these values will vary depending on the efficiency of the compiler 14986and 14987the compiler options used during generation. 14988 14989 Previous Release: 14990 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14991 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14992 Current Release: 14993 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14994 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14995 14996---------------------------------------- 1499727 April 2004. Summary of changes for version 20040427: 14998 149991) ACPI CA Core Subsystem: 15000 15001Completed a major overhaul of the GPE handling within ACPI CA. There are 15002now three types of GPEs: wake-only, runtime-only, and combination 15003wake/run. 15004The only GPEs allowed to be combination wake/run are for button-style 15005devices such as a control-method power button, control-method sleep 15006button, 15007or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 15008not 15009referenced by any _PRW methods are marked for "runtime" and hardware 15010enabled. Any GPE that is referenced by a _PRW method is marked for 15011"wake" 15012(and disabled at runtime). However, at sleep time, only those GPEs that 15013have been specifically enabled for wake via the AcpiEnableGpe interface 15014will 15015actually be hardware enabled. 15016 15017A new external interface has been added, AcpiSetGpeType(), that is meant 15018to 15019be used by device drivers to force a GPE to a particular type. It will 15020be 15021especially useful for the drivers for the button devices mentioned above. 15022 15023Completed restructuring of the ACPI CA initialization sequence so that 15024default operation region handlers are installed before GPEs are 15025initialized 15026and the _PRW methods are executed. This will prevent errors when the 15027_PRW 15028methods attempt to access system memory or I/O space. 15029 15030GPE enable/disable no longer reads the GPE enable register. We now keep 15031the 15032enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 15033thus no longer depend on the hardware to maintain these bits. 15034 15035Always clear the wake status and fixed/GPE status bits before sleep, even 15036for state S5. 15037 15038Improved the AML debugger output for displaying the GPE blocks and their 15039current status. 15040 15041Added new strings for the _OSI method, of the form "Windows 2001 SPx" 15042where 15043x = 0,1,2,3,4. 15044 15045Fixed a problem where the physical address was incorrectly calculated 15046when 15047the Load() operator was used to directly load from an Operation Region 15048(vs. 15049loading from a Field object.) Also added check for minimum table length 15050for 15051this case. 15052 15053Fix for multiple mutex acquisition. Restore original thread SyncLevel on 15054mutex release. 15055 15056Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 15057consistency with the other fields returned. 15058 15059Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 15060structure for each GPE in the system, so the size of this structure is 15061important. 15062 15063CPU stack requirement reduction: Cleaned up the method execution and 15064object 15065evaluation paths so that now a parameter structure is passed, instead of 15066copying the various method parameters over and over again. 15067 15068In evregion.c: Correctly exit and reenter the interpreter region if and 15069only if dispatching an operation region request to a user-installed 15070handler. 15071Do not exit/reenter when dispatching to a default handler (e.g., default 15072system memory or I/O handlers) 15073 15074 15075Notes for updating drivers for the new GPE support. The following 15076changes 15077must be made to ACPI-related device drivers that are attached to one or 15078more 15079GPEs: (This information will be added to the ACPI CA Programmer 15080Reference.) 15081 150821) AcpiInstallGpeHandler no longer automatically enables the GPE, you 15083must 15084explicitly call AcpiEnableGpe. 150852) There is a new interface called AcpiSetGpeType. This should be called 15086before enabling the GPE. Also, this interface will automatically disable 15087the GPE if it is currently enabled. 150883) AcpiEnableGpe no longer supports a GPE type flag. 15089 15090Specific drivers that must be changed: 150911) EC driver: 15092 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15093AeGpeHandler, NULL); 15094 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15095 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15096 150972) Button Drivers (Power, Lid, Sleep): 15098Run _PRW method under parent device 15099If _PRW exists: /* This is a control-method button */ 15100 Extract GPE number and possibly GpeDevice 15101 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15102 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15103 15104For all other devices that have _PRWs, we automatically set the GPE type 15105to 15106ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15107This 15108must be done on a selective basis, usually requiring some kind of user 15109app 15110to allow the user to pick the wake devices. 15111 15112 15113Code and Data Size: Current and previous core subsystem library sizes are 15114shown below. These are the code and data sizes for the acpica.lib 15115produced 15116by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15117any ACPI driver or OSPM code. The debug version of the code includes the 15118debug output trace mechanism and has a much larger code and data size. 15119Note 15120that these values will vary depending on the efficiency of the compiler 15121and 15122the compiler options used during generation. 15123 15124 Previous Release: 15125 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15126 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15127 Current Release: 15128 15129 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15130 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15131 15132 15133 15134---------------------------------------- 1513502 April 2004. Summary of changes for version 20040402: 15136 151371) ACPI CA Core Subsystem: 15138 15139Fixed an interpreter problem where an indirect store through an ArgX 15140parameter was incorrectly applying the "implicit conversion rules" during 15141the store. From the ACPI specification: "If the target is a method local 15142or 15143argument (LocalX or ArgX), no conversion is performed and the result is 15144stored directly to the target". The new behavior is to disable implicit 15145conversion during ALL stores to an ArgX. 15146 15147Changed the behavior of the _PRW method scan to ignore any and all errors 15148returned by a given _PRW. This prevents the scan from aborting from the 15149failure of any single _PRW. 15150 15151Moved the runtime configuration parameters from the global init procedure 15152to 15153static variables in acglobal.h. This will allow the host to override the 15154default values easily. 15155 15156Code and Data Size: Current and previous core subsystem library sizes are 15157shown below. These are the code and data sizes for the acpica.lib 15158produced 15159by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15160any ACPI driver or OSPM code. The debug version of the code includes the 15161debug output trace mechanism and has a much larger code and data size. 15162Note 15163that these values will vary depending on the efficiency of the compiler 15164and 15165the compiler options used during generation. 15166 15167 Previous Release: 15168 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15169 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15170 Current Release: 15171 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15172 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15173 15174 151752) iASL Compiler/Disassembler: 15176 15177iASL now fully disassembles SSDTs. However, External() statements are 15178not 15179generated automatically for unresolved symbols at this time. This is a 15180planned feature for future implementation. 15181 15182Fixed a scoping problem in the disassembler that occurs when the type of 15183the 15184target of a Scope() operator is overridden. This problem caused an 15185incorrectly nested internal namespace to be constructed. 15186 15187Any warnings or errors that are emitted during disassembly are now 15188commented 15189out automatically so that the resulting file can be recompiled without 15190any 15191hand editing. 15192 15193---------------------------------------- 1519426 March 2004. Summary of changes for version 20040326: 15195 151961) ACPI CA Core Subsystem: 15197 15198Implemented support for "wake" GPEs via interaction between GPEs and the 15199_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15200identified as a WAKE GPE and by default will no longer be enabled at 15201runtime. Previously, we were blindly enabling all GPEs with a 15202corresponding 15203_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15204We 15205believe this has been the cause of thousands of "spurious" GPEs on some 15206systems. 15207 15208This new GPE behavior is can be reverted to the original behavior (enable 15209ALL GPEs at runtime) via a runtime flag. 15210 15211Fixed a problem where aliased control methods could not access objects 15212properly. The proper scope within the namespace was not initialized 15213(transferred to the target of the aliased method) before executing the 15214target method. 15215 15216Fixed a potential race condition on internal object deletion on the 15217return 15218object in AcpiEvaluateObject. 15219 15220Integrated a fix for resource descriptors where both _MEM and _MTP were 15221being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15222wide, 0x0F instead of 0x03.) 15223 15224Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15225preventing 15226a 15227fault in some cases. 15228 15229Updated Notify() values for debug statements in evmisc.c 15230 15231Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15232 15233Code and Data Size: Current and previous core subsystem library sizes are 15234shown below. These are the code and data sizes for the acpica.lib 15235produced 15236by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15237any ACPI driver or OSPM code. The debug version of the code includes the 15238debug output trace mechanism and has a much larger code and data size. 15239Note 15240that these values will vary depending on the efficiency of the compiler 15241and 15242the compiler options used during generation. 15243 15244 Previous Release: 15245 15246 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15247 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15248 Current Release: 15249 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15250 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15251 15252---------------------------------------- 1525311 March 2004. Summary of changes for version 20040311: 15254 152551) ACPI CA Core Subsystem: 15256 15257Fixed a problem where errors occurring during the parse phase of control 15258method execution did not abort cleanly. For example, objects created and 15259installed in the namespace were not deleted. This caused all subsequent 15260invocations of the method to return the AE_ALREADY_EXISTS exception. 15261 15262Implemented a mechanism to force a control method to "Serialized" 15263execution 15264if the method attempts to create namespace objects. (The root of the 15265AE_ALREADY_EXISTS problem.) 15266 15267Implemented support for the predefined _OSI "internal" control method. 15268Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15269and 15270"Windows 2001.1", and can be easily upgraded for new strings as 15271necessary. 15272This feature will allow "other" operating systems to execute the fully 15273tested, "Windows" code path through the ASL code 15274 15275Global Lock Support: Now allows multiple acquires and releases with any 15276internal thread. Removed concept of "owning thread" for this special 15277mutex. 15278 15279Fixed two functions that were inappropriately declaring large objects on 15280the 15281CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15282during 15283method execution considerably. 15284 15285Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15286S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15287 15288Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15289defined on the machine. 15290 15291Implemented two runtime options: One to force all control method 15292execution 15293to "Serialized" to mimic Windows behavior, another to disable _OSI 15294support 15295if it causes problems on a given machine. 15296 15297Code and Data Size: Current and previous core subsystem library sizes are 15298shown below. These are the code and data sizes for the acpica.lib 15299produced 15300by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15301any ACPI driver or OSPM code. The debug version of the code includes the 15302debug output trace mechanism and has a much larger code and data size. 15303Note 15304that these values will vary depending on the efficiency of the compiler 15305and 15306the compiler options used during generation. 15307 15308 Previous Release: 15309 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15310 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15311 Current Release: 15312 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15313 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15314 153152) iASL Compiler/Disassembler: 15316 15317Fixed an array size problem for FreeBSD that would cause the compiler to 15318fault. 15319 15320---------------------------------------- 1532120 February 2004. Summary of changes for version 20040220: 15322 15323 153241) ACPI CA Core Subsystem: 15325 15326Implemented execution of _SxD methods for Device objects in the 15327GetObjectInfo interface. 15328 15329Fixed calls to _SST method to pass the correct arguments. 15330 15331Added a call to _SST on wake to restore to "working" state. 15332 15333Check for End-Of-Buffer failure case in the WalkResources interface. 15334 15335Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15336structures to the beginning of the file. 15337 15338After wake, clear GPE status register(s) before enabling GPEs. 15339 15340After wake, clear/enable power button. (Perhaps we should clear/enable 15341all 15342fixed events upon wake.) 15343 15344Fixed a couple of possible memory leaks in the Namespace manager. 15345 15346Integrated latest acnetbsd.h file. 15347 15348---------------------------------------- 1534911 February 2004. Summary of changes for version 20040211: 15350 15351 153521) ACPI CA Core Subsystem: 15353 15354Completed investigation and implementation of the call-by-reference 15355mechanism for control method arguments. 15356 15357Fixed a problem where a store of an object into an indexed package could 15358fail if the store occurs within a different method than the method that 15359created the package. 15360 15361Fixed a problem where the ToDecimal operator could return incorrect 15362results. 15363 15364Fixed a problem where the CopyObject operator could fail on some of the 15365more 15366obscure objects (e.g., Reference objects.) 15367 15368Improved the output of the Debug object to display buffer, package, and 15369index objects. 15370 15371Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15372return 15373the expected result. 15374 15375Added permanent ACPI_REPORT_ERROR macros for all instances of the 15376ACPI_AML_INTERNAL exception. 15377 15378Integrated latest version of acfreebsd.h 15379 15380---------------------------------------- 1538116 January 2004. Summary of changes for version 20040116: 15382 15383The purpose of this release is primarily to update the copyright years in 15384each module, thus causing a huge number of diffs. There are a few small 15385functional changes, however. 15386 153871) ACPI CA Core Subsystem: 15388 15389Improved error messages when there is a problem finding one or more of 15390the 15391required base ACPI tables 15392 15393Reintroduced the definition of APIC_HEADER in actbl.h 15394 15395Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15396 15397Removed extraneous reference to NewObj in dsmthdat.c 15398 153992) iASL compiler 15400 15401Fixed a problem introduced in December that disabled the correct 15402disassembly 15403of Resource Templates 15404 15405 15406---------------------------------------- 1540703 December 2003. Summary of changes for version 20031203: 15408 154091) ACPI CA Core Subsystem: 15410 15411Changed the initialization of Operation Regions during subsystem 15412init to perform two entire walks of the ACPI namespace; The first 15413to initialize the regions themselves, the second to execute the 15414_REG methods. This fixed some interdependencies across _REG 15415methods found on some machines. 15416 15417Fixed a problem where a Store(Local0, Local1) could simply update 15418the object reference count, and not create a new copy of the 15419object if the Local1 is uninitialized. 15420 15421Implemented support for the _SST reserved method during sleep 15422transitions. 15423 15424Implemented support to clear the SLP_TYP and SLP_EN bits when 15425waking up, this is apparently required by some machines. 15426 15427When sleeping, clear the wake status only if SleepState is not S5. 15428 15429Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15430pointer arithmetic advanced a string pointer too far. 15431 15432Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15433could be returned if the requested table has not been loaded. 15434 15435Within the support for IRQ resources, restructured the handling of 15436the active and edge/level bits. 15437 15438Fixed a few problems in AcpiPsxExecute() where memory could be 15439leaked under certain error conditions. 15440 15441Improved error messages for the cases where the ACPI mode could 15442not be entered. 15443 15444Code and Data Size: Current and previous core subsystem library 15445sizes are shown below. These are the code and data sizes for the 15446acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15447these values do not include any ACPI driver or OSPM code. The 15448debug version of the code includes the debug output trace 15449mechanism and has a much larger code and data size. Note that 15450these values will vary depending on the efficiency of the compiler 15451and the compiler options used during generation. 15452 15453 Previous Release (20031029): 15454 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15455 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15456 Current Release: 15457 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15458 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15459 154602) iASL Compiler/Disassembler: 15461 15462Implemented a fix for the iASL disassembler where a bad index was 15463generated. This was most noticeable on 64-bit platforms 15464 15465 15466---------------------------------------- 1546729 October 2003. Summary of changes for version 20031029: 15468 154691) ACPI CA Core Subsystem: 15470 15471 15472Fixed a problem where a level-triggered GPE with an associated 15473_Lxx control method was incorrectly cleared twice. 15474 15475Fixed a problem with the Field support code where an access can 15476occur beyond the end-of-region if the field is non-aligned but 15477extends to the very end of the parent region (resulted in an 15478AE_AML_REGION_LIMIT exception.) 15479 15480Fixed a problem with ACPI Fixed Events where an RT Clock handler 15481would not get invoked on an RTC event. The RTC event bitmasks for 15482the PM1 registers were not being initialized properly. 15483 15484Implemented support for executing _STA and _INI methods for 15485Processor objects. Although this is currently not part of the 15486ACPI specification, there is existing ASL code that depends on the 15487init-time execution of these methods. 15488 15489Implemented and deployed a GetDescriptorName function to decode 15490the various types of internal descriptors. Guards against null 15491descriptors during debug output also. 15492 15493Implemented and deployed a GetNodeName function to extract the 4- 15494character namespace node name. This function simplifies the debug 15495and error output, as well as guarding against null pointers during 15496output. 15497 15498Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15499simplify the debug and error output of 64-bit integers. This 15500macro replaces the HIDWORD and LODWORD macros for dumping these 15501integers. 15502 15503Updated the implementation of the Stall() operator to only call 15504AcpiOsStall(), and also return an error if the operand is larger 15505than 255. This preserves the required behavior of not 15506relinquishing the processor, as would happen if AcpiOsSleep() was 15507called for "long stalls". 15508 15509Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15510initialized are now treated as NOOPs. 15511 15512Cleaned up a handful of warnings during 64-bit generation. 15513 15514Fixed a reported error where and incorrect GPE number was passed 15515to the GPE dispatch handler. This value is only used for error 15516output, however. Used this opportunity to clean up and streamline 15517the GPE dispatch code. 15518 15519Code and Data Size: Current and previous core subsystem library 15520sizes are shown below. These are the code and data sizes for the 15521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15522these values do not include any ACPI driver or OSPM code. The 15523 15524debug version of the code includes the debug output trace 15525mechanism and has a much larger code and data size. Note that 15526these values will vary depending on the efficiency of the compiler 15527and the compiler options used during generation. 15528 15529 Previous Release (20031002): 15530 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15531 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15532 Current Release: 15533 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15534 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15535 15536 155372) iASL Compiler/Disassembler: 15538 15539Updated the iASL compiler to return an error if the operand to the 15540Stall() operator is larger than 255. 15541 15542 15543---------------------------------------- 1554402 October 2003. Summary of changes for version 20031002: 15545 15546 155471) ACPI CA Core Subsystem: 15548 15549Fixed a problem with Index Fields where the index was not 15550incremented for fields that require multiple writes to the 15551index/data registers (Fields that are wider than the data 15552register.) 15553 15554Fixed a problem with all Field objects where a write could go 15555beyond the end-of-field if the field was larger than the access 15556granularity and therefore required multiple writes to complete the 15557request. An extra write beyond the end of the field could happen 15558inadvertently. 15559 15560Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15561would incorrectly be returned if the width of the Data Register 15562was larger than the specified field access width. 15563 15564Completed fixes for LoadTable() and Unload() and verified their 15565operation. Implemented full support for the "DdbHandle" object 15566throughout the ACPI CA subsystem. 15567 15568Implemented full support for the MADT and ECDT tables in the ACPI 15569CA header files. Even though these tables are not directly 15570consumed by ACPI CA, the header definitions are useful for ACPI 15571device drivers. 15572 15573Integrated resource descriptor fixes posted to the Linux ACPI 15574list. This included checks for minimum descriptor length, and 15575support for trailing NULL strings within descriptors that have 15576optional string elements. 15577 15578Code and Data Size: Current and previous core subsystem library 15579sizes are shown below. These are the code and data sizes for the 15580acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15581these values do not include any ACPI driver or OSPM code. The 15582debug version of the code includes the debug output trace 15583mechanism and has a much larger code and data size. Note that 15584these values will vary depending on the efficiency of the compiler 15585and the compiler options used during generation. 15586 15587 Previous Release (20030918): 15588 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15589 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15590 Current Release: 15591 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15592 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15593 15594 155952) iASL Compiler: 15596 15597Implemented detection of non-ASCII characters within the input 15598source ASL file. This catches attempts to compile binary (AML) 15599files early in the compile, with an informative error message. 15600 15601Fixed a problem where the disassembler would fault if the output 15602filename could not be generated or if the output file could not be 15603opened. 15604 15605---------------------------------------- 1560618 September 2003. Summary of changes for version 20030918: 15607 15608 156091) ACPI CA Core Subsystem: 15610 15611Found and fixed a longstanding problem with the late execution of 15612the various deferred AML opcodes (such as Operation Regions, 15613Buffer Fields, Buffers, and Packages). If the name string 15614specified for the name of the new object placed the object in a 15615scope other than the current scope, the initialization/execution 15616of the opcode failed. The solution to this problem was to 15617implement a mechanism where the late execution of such opcodes 15618does not attempt to lookup/create the name a second time in an 15619incorrect scope. This fixes the "region size computed 15620incorrectly" problem. 15621 15622Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15623Global Lock AE_BAD_PARAMETER error. 15624 15625Fixed several 64-bit issues with prototypes, casting and data 15626types. 15627 15628Removed duplicate prototype from acdisasm.h 15629 15630Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15631 15632Code and Data Size: Current and previous core subsystem library 15633sizes are shown below. These are the code and data sizes for the 15634acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15635these values do not include any ACPI driver or OSPM code. The 15636debug version of the code includes the debug output trace 15637mechanism and has a much larger code and data size. Note that 15638these values will vary depending on the efficiency of the compiler 15639and the compiler options used during generation. 15640 15641 Previous Release: 15642 15643 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15644 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15645 Current Release: 15646 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15647 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15648 15649 156502) Linux: 15651 15652Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15653correct sleep time in seconds. 15654 15655---------------------------------------- 1565614 July 2003. Summary of changes for version 20030619: 15657 156581) ACPI CA Core Subsystem: 15659 15660Parse SSDTs in order discovered, as opposed to reverse order 15661(Hrvoje Habjanic) 15662 15663Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15664Klausner, 15665 Nate Lawson) 15666 15667 156682) Linux: 15669 15670Dynamically allocate SDT list (suggested by Andi Kleen) 15671 15672proc function return value cleanups (Andi Kleen) 15673 15674Correctly handle NMI watchdog during long stalls (Andrew Morton) 15675 15676Make it so acpismp=force works (reported by Andrew Morton) 15677 15678 15679---------------------------------------- 1568019 June 2003. Summary of changes for version 20030619: 15681 156821) ACPI CA Core Subsystem: 15683 15684Fix To/FromBCD, eliminating the need for an arch-specific #define. 15685 15686Do not acquire a semaphore in the S5 shutdown path. 15687 15688Fix ex_digits_needed for 0. (Takayoshi Kochi) 15689 15690Fix sleep/stall code reversal. (Andi Kleen) 15691 15692Revert a change having to do with control method calling 15693semantics. 15694 156952) Linux: 15696 15697acpiphp update (Takayoshi Kochi) 15698 15699Export acpi_disabled for sonypi (Stelian Pop) 15700 15701Mention acpismp=force in config help 15702 15703Re-add acpitable.c and acpismp=force. This improves backwards 15704 15705compatibility and also cleans up the code to a significant degree. 15706 15707Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 15708 15709---------------------------------------- 1571022 May 2003. Summary of changes for version 20030522: 15711 157121) ACPI CA Core Subsystem: 15713 15714Found and fixed a reported problem where an AE_NOT_FOUND error 15715occurred occasionally during _BST evaluation. This turned out to 15716be an Owner ID allocation issue where a called method did not get 15717a new ID assigned to it. Eventually, (after 64k calls), the Owner 15718ID UINT16 would wraparound so that the ID would be the same as the 15719caller's and the called method would delete the caller's 15720namespace. 15721 15722Implemented extended error reporting for control methods that are 15723aborted due to a run-time exception. Output includes the exact 15724AML instruction that caused the method abort, a dump of the method 15725locals and arguments at the time of the abort, and a trace of all 15726nested control method calls. 15727 15728Modified the interpreter to allow the creation of buffers of zero 15729length from the AML code. Implemented new code to ensure that no 15730attempt is made to actually allocate a memory buffer (of length 15731zero) - instead, a simple buffer object with a NULL buffer pointer 15732and length zero is created. A warning is no longer issued when 15733the AML attempts to create a zero-length buffer. 15734 15735Implemented a workaround for the "leading asterisk issue" in 15736_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15737asterisk is automatically removed if present in any HID, UID, or 15738CID strings. The iASL compiler will still flag this asterisk as 15739an error, however. 15740 15741Implemented full support for _CID methods that return a package of 15742multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15743now additionally returns a device _CID list if present. This 15744required a change to the external interface in order to pass an 15745ACPI_BUFFER object as a parameter since the _CID list is of 15746variable length. 15747 15748Fixed a problem with the new AE_SAME_HANDLER exception where 15749handler initialization code did not know about this exception. 15750 15751Code and Data Size: Current and previous core subsystem library 15752sizes are shown below. These are the code and data sizes for the 15753acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15754these values do not include any ACPI driver or OSPM code. The 15755debug version of the code includes the debug output trace 15756mechanism and has a much larger code and data size. Note that 15757these values will vary depending on the efficiency of the compiler 15758and the compiler options used during generation. 15759 15760 Previous Release (20030509): 15761 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15762 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15763 Current Release: 15764 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15765 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15766 15767 157682) Linux: 15769 15770Fixed a bug in which we would reinitialize the ACPI interrupt 15771after it was already working, thus disabling all ACPI and the IRQs 15772for any other device sharing the interrupt. (Thanks to Stian 15773Jordet) 15774 15775Toshiba driver update (John Belmonte) 15776 15777Return only 0 or 1 for our interrupt handler status (Andrew 15778Morton) 15779 15780 157813) iASL Compiler: 15782 15783Fixed a reported problem where multiple (nested) ElseIf() 15784statements were not handled correctly by the compiler, resulting 15785in incorrect warnings and incorrect AML code. This was a problem 15786in both the ASL parser and the code generator. 15787 15788 157894) Documentation: 15790 15791Added changes to existing interfaces, new exception codes, and new 15792text concerning reference count object management versus garbage 15793collection. 15794 15795---------------------------------------- 1579609 May 2003. Summary of changes for version 20030509. 15797 15798 157991) ACPI CA Core Subsystem: 15800 15801Changed the subsystem initialization sequence to hold off 15802installation of address space handlers until the hardware has been 15803initialized and the system has entered ACPI mode. This is because 15804the installation of space handlers can cause _REG methods to be 15805run. Previously, the _REG methods could potentially be run before 15806ACPI mode was enabled. 15807 15808Fixed some memory leak issues related to address space handler and 15809notify handler installation. There were some problems with the 15810reference count mechanism caused by the fact that the handler 15811objects are shared across several namespace objects. 15812 15813Fixed a reported problem where reference counts within the 15814namespace were not properly updated when named objects created by 15815method execution were deleted. 15816 15817Fixed a reported problem where multiple SSDTs caused a deletion 15818issue during subsystem termination. Restructured the table data 15819structures to simplify the linked lists and the related code. 15820 15821Fixed a problem where the table ID associated with secondary 15822tables (SSDTs) was not being propagated into the namespace objects 15823created by those tables. This would only present a problem for 15824tables that are unloaded at run-time, however. 15825 15826Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15827type as the length parameter (instead of UINT32). 15828 15829Solved a long-standing problem where an ALREADY_EXISTS error 15830appears on various systems. This problem could happen when there 15831are multiple PCI_Config operation regions under a single PCI root 15832bus. This doesn't happen very frequently, but there are some 15833systems that do this in the ASL. 15834 15835Fixed a reported problem where the internal DeleteNode function 15836was incorrectly handling the case where a namespace node was the 15837first in the parent's child list, and had additional peers (not 15838the only child, but first in the list of children.) 15839 15840Code and Data Size: Current core subsystem library sizes are shown 15841below. These are the code and data sizes for the acpica.lib 15842produced by the Microsoft Visual C++ 6.0 compiler, and these 15843values do not include any ACPI driver or OSPM code. The debug 15844version of the code includes the debug output trace mechanism and 15845has a much larger code and data size. Note that these values will 15846vary depending on the efficiency of the compiler and the compiler 15847options used during generation. 15848 15849 Previous Release 15850 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15851 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15852 Current Release: 15853 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15854 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15855 15856 158572) Linux: 15858 15859Allow ":" in OS override string (Ducrot Bruno) 15860 15861Kobject fix (Greg KH) 15862 15863 158643 iASL Compiler/Disassembler: 15865 15866Fixed a problem in the generation of the C source code files (AML 15867is emitted in C source statements for BIOS inclusion) where the 15868Ascii dump that appears within a C comment at the end of each line 15869could cause a compile time error if the AML sequence happens to 15870have an open comment or close comment sequence embedded. 15871 15872 15873---------------------------------------- 1587424 April 2003. Summary of changes for version 20030424. 15875 15876 158771) ACPI CA Core Subsystem: 15878 15879Support for big-endian systems has been implemented. Most of the 15880support has been invisibly added behind big-endian versions of the 15881ACPI_MOVE_* macros. 15882 15883Fixed a problem in AcpiHwDisableGpeBlock() and 15884AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15885low level hardware write routine. The offset parameter was 15886actually eliminated from the low level read/write routines because 15887they had become obsolete. 15888 15889Fixed a problem where a handler object was deleted twice during 15890the removal of a fixed event handler. 15891 15892 158932) Linux: 15894 15895A fix for SMP systems with link devices was contributed by 15896 15897Compaq's Dan Zink. 15898 15899(2.5) Return whether we handled the interrupt in our IRQ handler. 15900(Linux ISRs no longer return void, so we can propagate the handler 15901return value from the ACPI CA core back to the OS.) 15902 15903 15904 159053) Documentation: 15906 15907The ACPI CA Programmer Reference has been updated to reflect new 15908interfaces and changes to existing interfaces. 15909 15910---------------------------------------- 1591128 March 2003. Summary of changes for version 20030328. 15912 159131) ACPI CA Core Subsystem: 15914 15915The GPE Block Device support has been completed. New interfaces 15916are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15917interfaces (enable, disable, clear, getstatus) have been split 15918into separate interfaces for Fixed Events and General Purpose 15919Events (GPEs) in order to support GPE Block Devices properly. 15920 15921Fixed a problem where the error message "Failed to acquire 15922semaphore" would appear during operations on the embedded 15923controller (EC). 15924 15925Code and Data Size: Current core subsystem library sizes are shown 15926below. These are the code and data sizes for the acpica.lib 15927produced by the Microsoft Visual C++ 6.0 compiler, and these 15928values do not include any ACPI driver or OSPM code. The debug 15929version of the code includes the debug output trace mechanism and 15930has a much larger code and data size. Note that these values will 15931vary depending on the efficiency of the compiler and the compiler 15932options used during generation. 15933 15934 Previous Release 15935 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15936 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15937 Current Release: 15938 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15939 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15940 15941 15942---------------------------------------- 1594328 February 2003. Summary of changes for version 20030228. 15944 15945 159461) ACPI CA Core Subsystem: 15947 15948The GPE handling and dispatch code has been completely overhauled 15949in preparation for support of GPE Block Devices (ID ACPI0006). 15950This affects internal data structures and code only; there should 15951be no differences visible externally. One new file has been 15952added, evgpeblk.c 15953 15954The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15955fields that are used to determine the GPE block lengths. The 15956REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15957structures are ignored. This is per the ACPI specification but it 15958isn't very clear. The full 256 Block 0/1 GPEs are now supported 15959(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15960 15961In the SCI interrupt handler, removed the read of the PM1_CONTROL 15962register to look at the SCI_EN bit. On some machines, this read 15963causes an SMI event and greatly slows down SCI events. (This may 15964in fact be the cause of slow battery status response on some 15965systems.) 15966 15967Fixed a problem where a store of a NULL string to a package object 15968could cause the premature deletion of the object. This was seen 15969during execution of the battery _BIF method on some systems, 15970resulting in no battery data being returned. 15971 15972Added AcpiWalkResources interface to simplify parsing of resource 15973lists. 15974 15975Code and Data Size: Current core subsystem library sizes are shown 15976below. These are the code and data sizes for the acpica.lib 15977produced by the Microsoft Visual C++ 6.0 compiler, and these 15978values do not include any ACPI driver or OSPM code. The debug 15979version of the code includes the debug output trace mechanism and 15980has a much larger code and data size. Note that these values will 15981vary depending on the efficiency of the compiler and the compiler 15982options used during generation. 15983 15984 Previous Release 15985 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15986 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15987 Current Release: 15988 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15989 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15990 15991 159922) Linux 15993 15994S3 fixes (Ole Rohne) 15995 15996Update ACPI PHP driver with to use new acpi_walk_resource API 15997(Bjorn Helgaas) 15998 15999Add S4BIOS support (Pavel Machek) 16000 16001Map in entire table before performing checksum (John Stultz) 16002 16003Expand the mem= cmdline to allow the specification of reserved and 16004ACPI DATA blocks (Pavel Machek) 16005 16006Never use ACPI on VISWS 16007 16008Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 16009 16010Revert a change that allowed P_BLK lengths to be 4 or 5. This is 16011causing us to think that some systems support C2 when they really 16012don't. 16013 16014Do not count processor objects for non-present CPUs (Thanks to 16015Dominik Brodowski) 16016 16017 160183) iASL Compiler: 16019 16020Fixed a problem where ASL include files could not be found and 16021opened. 16022 16023Added support for the _PDC reserved name. 16024 16025 16026---------------------------------------- 1602722 January 2003. Summary of changes for version 20030122. 16028 16029 160301) ACPI CA Core Subsystem: 16031 16032Added a check for constructs of the form: Store (Local0, Local0) 16033where Local0 is not initialized. Apparently, some BIOS 16034programmers believe that this is a NOOP. Since this store doesn't 16035do anything anyway, the new prototype behavior will ignore this 16036error. This is a case where we can relax the strict checking in 16037the interpreter in the name of compatibility. 16038 16039 160402) Linux 16041 16042The AcpiSrc Source Conversion Utility has been released with the 16043Linux package for the first time. This is the utility that is 16044used to convert the ACPI CA base source code to the Linux version. 16045 16046(Both) Handle P_BLK lengths shorter than 6 more gracefully 16047 16048(Both) Move more headers to include/acpi, and delete an unused 16049header. 16050 16051(Both) Move drivers/acpi/include directory to include/acpi 16052 16053(Both) Boot functions don't use cmdline, so don't pass it around 16054 16055(Both) Remove include of unused header (Adrian Bunk) 16056 16057(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 16058the 16059former now also includes the latter, acpiphp.h only needs the one, 16060now. 16061 16062(2.5) Make it possible to select method of bios restoring after S3 16063resume. [=> no more ugly ifdefs] (Pavel Machek) 16064 16065(2.5) Make proc write interfaces work (Pavel Machek) 16066 16067(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 16068 16069(2.5) Break out ACPI Perf code into its own module, under cpufreq 16070(Dominik Brodowski) 16071 16072(2.4) S4BIOS support (Ducrot Bruno) 16073 16074(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 16075Visinoni) 16076 16077 160783) iASL Compiler: 16079 16080Added support to disassemble SSDT and PSDTs. 16081 16082Implemented support to obtain SSDTs from the Windows registry if 16083available. 16084 16085 16086---------------------------------------- 1608709 January 2003. Summary of changes for version 20030109. 16088 160891) ACPI CA Core Subsystem: 16090 16091Changed the behavior of the internal Buffer-to-String conversion 16092function. The current ACPI specification states that the contents 16093of the buffer are "converted to a string of two-character 16094hexadecimal numbers, each separated by a space". Unfortunately, 16095this definition is not backwards compatible with existing ACPI 1.0 16096implementations (although the behavior was not defined in the ACPI 160971.0 specification). The new behavior simply copies data from the 16098buffer to the string until a null character is found or the end of 16099the buffer is reached. The new String object is always null 16100terminated. This problem was seen during the generation of _BIF 16101battery data where incorrect strings were returned for battery 16102type, etc. This will also require an errata to the ACPI 16103specification. 16104 16105Renamed all instances of NATIVE_UINT and NATIVE_INT to 16106ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16107 16108Copyright in all module headers (both Linux and non-Linux) has be 16109updated to 2003. 16110 16111Code and Data Size: Current core subsystem library sizes are shown 16112below. These are the code and data sizes for the acpica.lib 16113produced by the Microsoft Visual C++ 6.0 compiler, and these 16114values do not include any ACPI driver or OSPM code. The debug 16115version of the code includes the debug output trace mechanism and 16116has a much larger code and data size. Note that these values will 16117vary depending on the efficiency of the compiler and the compiler 16118options used during generation. 16119 16120 Previous Release 16121 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16122 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16123 Current Release: 16124 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16125 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16126 16127 161282) Linux 16129 16130Fixed an oops on module insertion/removal (Matthew Tippett) 16131 16132(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16133 16134(2.5) Replace pr_debug (Randy Dunlap) 16135 16136(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16137 16138(Both) Eliminate spawning of thread from timer callback, in favor 16139of schedule_work() 16140 16141(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16142 16143(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16144 16145(Both) Add missing statics to button.c (Pavel Machek) 16146 16147Several changes have been made to the source code translation 16148utility that generates the Linux Code in order to make the code 16149more "Linux-like": 16150 16151All typedefs on structs and unions have been removed in keeping 16152with the Linux coding style. 16153 16154Removed the non-Linux SourceSafe module revision number from each 16155module header. 16156 16157Completed major overhaul of symbols to be lowercase for linux. 16158Doubled the number of symbols that are lowercase. 16159 16160Fixed a problem where identifiers within procedure headers and 16161within quotes were not fully lower cased (they were left with a 16162starting capital.) 16163 16164Some C macros whose only purpose is to allow the generation of 16- 16165bit code are now completely removed in the Linux code, increasing 16166readability and maintainability. 16167 16168---------------------------------------- 16169 1617012 December 2002. Summary of changes for version 20021212. 16171 16172 161731) ACPI CA Core Subsystem: 16174 16175Fixed a problem where the creation of a zero-length AML Buffer 16176would cause a fault. 16177 16178Fixed a problem where a Buffer object that pointed to a static AML 16179buffer (in an ACPI table) could inadvertently be deleted, causing 16180memory corruption. 16181 16182Fixed a problem where a user buffer (passed in to the external 16183ACPI CA interfaces) could be overwritten if the buffer was too 16184small to complete the operation, causing memory corruption. 16185 16186Fixed a problem in the Buffer-to-String conversion code where a 16187string of length one was always returned, regardless of the size 16188of the input Buffer object. 16189 16190Removed the NATIVE_CHAR data type across the entire source due to 16191lack of need and lack of consistent use. 16192 16193Code and Data Size: Current core subsystem library sizes are shown 16194below. These are the code and data sizes for the acpica.lib 16195produced by the Microsoft Visual C++ 6.0 compiler, and these 16196values do not include any ACPI driver or OSPM code. The debug 16197version of the code includes the debug output trace mechanism and 16198has a much larger code and data size. Note that these values will 16199vary depending on the efficiency of the compiler and the compiler 16200options used during generation. 16201 16202 Previous Release 16203 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16204 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16205 Current Release: 16206 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16207 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16208 16209 16210---------------------------------------- 1621105 December 2002. Summary of changes for version 20021205. 16212 162131) ACPI CA Core Subsystem: 16214 16215Fixed a problem where a store to a String or Buffer object could 16216cause corruption of the DSDT if the object type being stored was 16217the same as the target object type and the length of the object 16218being stored was equal to or smaller than the original (existing) 16219target object. This was seen to cause corruption of battery _BIF 16220buffers if the _BIF method modified the buffer on the fly. 16221 16222Fixed a problem where an internal error was generated if a control 16223method invocation was used in an OperationRegion, Buffer, or 16224Package declaration. This was caused by the deferred parsing of 16225the control method and thus the deferred creation of the internal 16226method object. The solution to this problem was to create the 16227internal method object at the moment the method is encountered in 16228the first pass - so that subsequent references to the method will 16229able to obtain the required parameter count and thus properly 16230parse the method invocation. This problem presented itself as an 16231AE_AML_INTERNAL during the pass 1 parse phase during table load. 16232 16233Fixed a problem where the internal String object copy routine did 16234not always allocate sufficient memory for the target String object 16235and caused memory corruption. This problem was seen to cause 16236"Allocation already present in list!" errors as memory allocation 16237became corrupted. 16238 16239Implemented a new function for the evaluation of namespace objects 16240that allows the specification of the allowable return object 16241types. This simplifies a lot of code that checks for a return 16242object of one or more specific objects returned from the 16243evaluation (such as _STA, etc.) This may become and external 16244function if it would be useful to ACPI-related drivers. 16245 16246Completed another round of prefixing #defines with "ACPI_" for 16247clarity. 16248 16249Completed additional code restructuring to allow more modular 16250linking for iASL compiler and AcpiExec. Several files were split 16251creating new files. New files: nsparse.c dsinit.c evgpe.c 16252 16253Implemented an abort mechanism to terminate an executing control 16254method via the AML debugger. This feature is useful for debugging 16255control methods that depend (wait) for specific hardware 16256responses. 16257 16258Code and Data Size: Current core subsystem library sizes are shown 16259below. These are the code and data sizes for the acpica.lib 16260produced by the Microsoft Visual C++ 6.0 compiler, and these 16261values do not include any ACPI driver or OSPM code. The debug 16262version of the code includes the debug output trace mechanism and 16263has a much larger code and data size. Note that these values will 16264vary depending on the efficiency of the compiler and the compiler 16265options used during generation. 16266 16267 Previous Release 16268 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16269 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16270 Current Release: 16271 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16272 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16273 16274 162752) iASL Compiler/Disassembler 16276 16277Fixed a compiler code generation problem for "Interrupt" Resource 16278Descriptors. If specified in the ASL, the optional "Resource 16279Source Index" and "Resource Source" fields were not inserted into 16280the correct location within the AML resource descriptor, creating 16281an invalid descriptor. 16282 16283Fixed a disassembler problem for "Interrupt" resource descriptors. 16284The optional "Resource Source Index" and "Resource Source" fields 16285were ignored. 16286 16287 16288---------------------------------------- 1628922 November 2002. Summary of changes for version 20021122. 16290 16291 162921) ACPI CA Core Subsystem: 16293 16294Fixed a reported problem where an object stored to a Method Local 16295or Arg was not copied to a new object during the store - the 16296object pointer was simply copied to the Local/Arg. This caused 16297all subsequent operations on the Local/Arg to also affect the 16298original source of the store operation. 16299 16300Fixed a problem where a store operation to a Method Local or Arg 16301was not completed properly if the Local/Arg contained a reference 16302(from RefOf) to a named field. The general-purpose store-to- 16303namespace-node code is now used so that this case is handled 16304automatically. 16305 16306Fixed a problem where the internal object copy routine would cause 16307a protection fault if the object being copied was a Package and 16308contained either 1) a NULL package element or 2) a nested sub- 16309package. 16310 16311Fixed a problem with the GPE initialization that resulted from an 16312ambiguity in the ACPI specification. One section of the 16313specification states that both the address and length of the GPE 16314block must be zero if the block is not supported. Another section 16315implies that only the address need be zero if the block is not 16316supported. The code has been changed so that both the address and 16317the length must be non-zero to indicate a valid GPE block (i.e., 16318if either the address or the length is zero, the GPE block is 16319invalid.) 16320 16321Code and Data Size: Current core subsystem library sizes are shown 16322below. These are the code and data sizes for the acpica.lib 16323produced by the Microsoft Visual C++ 6.0 compiler, and these 16324values do not include any ACPI driver or OSPM code. The debug 16325version of the code includes the debug output trace mechanism and 16326has a much larger code and data size. Note that these values will 16327vary depending on the efficiency of the compiler and the compiler 16328options used during generation. 16329 16330 Previous Release 16331 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16332 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16333 Current Release: 16334 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16335 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16336 16337 163382) Linux 16339 16340Cleaned up EC driver. Exported an external EC read/write 16341interface. By going through this, other drivers (most notably 16342sonypi) will be able to serialize access to the EC. 16343 16344 163453) iASL Compiler/Disassembler 16346 16347Implemented support to optionally generate include files for both 16348ASM and C (the -i switch). This simplifies BIOS development by 16349automatically creating include files that contain external 16350declarations for the symbols that are created within the 16351 16352(optionally generated) ASM and C AML source files. 16353 16354 16355---------------------------------------- 1635615 November 2002. Summary of changes for version 20021115. 16357 163581) ACPI CA Core Subsystem: 16359 16360Fixed a memory leak problem where an error during resolution of 16361 16362method arguments during a method invocation from another method 16363failed to cleanup properly by deleting all successfully resolved 16364argument objects. 16365 16366Fixed a problem where the target of the Index() operator was not 16367correctly constructed if the source object was a package. This 16368problem has not been detected because the use of a target operand 16369with Index() is very rare. 16370 16371Fixed a problem with the Index() operator where an attempt was 16372made to delete the operand objects twice. 16373 16374Fixed a problem where an attempt was made to delete an operand 16375twice during execution of the CondRefOf() operator if the target 16376did not exist. 16377 16378Implemented the first of perhaps several internal create object 16379functions that create and initialize a specific object type. This 16380consolidates duplicated code wherever the object is created, thus 16381shrinking the size of the subsystem. 16382 16383Implemented improved debug/error messages for errors that occur 16384during nested method invocations. All executing method pathnames 16385are displayed (with the error) as the call stack is unwound - thus 16386simplifying debug. 16387 16388Fixed a problem introduced in the 10/02 release that caused 16389premature deletion of a buffer object if a buffer was used as an 16390ASL operand where an integer operand is required (Thus causing an 16391implicit object conversion from Buffer to Integer.) The change in 16392the 10/02 release was attempting to fix a memory leak (albeit 16393incorrectly.) 16394 16395Code and Data Size: Current core subsystem library sizes are shown 16396below. These are the code and data sizes for the acpica.lib 16397produced by the Microsoft Visual C++ 6.0 compiler, and these 16398values do not include any ACPI driver or OSPM code. The debug 16399version of the code includes the debug output trace mechanism and 16400has a much larger code and data size. Note that these values will 16401vary depending on the efficiency of the compiler and the compiler 16402options used during generation. 16403 16404 Previous Release 16405 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16406 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16407 Current Release: 16408 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16409 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16410 16411 164122) Linux 16413 16414Changed the implementation of the ACPI semaphores to use down() 16415instead of down_interruptable(). It is important that the 16416execution of ACPI control methods not be interrupted by signals. 16417Methods must run to completion, or the system may be left in an 16418unknown/unstable state. 16419 16420Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16421(Shawn Starr) 16422 16423 164243) iASL Compiler/Disassembler 16425 16426 16427Changed the default location of output files. All output files 16428are now placed in the current directory by default instead of in 16429the directory of the source file. This change may affect some 16430existing makefiles, but it brings the behavior of the compiler in 16431line with other similar tools. The location of the output files 16432can be overridden with the -p command line switch. 16433 16434 16435---------------------------------------- 1643611 November 2002. Summary of changes for version 20021111. 16437 16438 164390) ACPI Specification 2.0B is released and is now available at: 16440http://www.acpi.info/index.html 16441 16442 164431) ACPI CA Core Subsystem: 16444 16445Implemented support for the ACPI 2.0 SMBus Operation Regions. 16446This includes the early detection and handoff of the request to 16447the SMBus region handler (avoiding all of the complex field 16448support code), and support for the bidirectional return packet 16449from an SMBus write operation. This paves the way for the 16450development of SMBus drivers in each host operating system. 16451 16452Fixed a problem where the semaphore WAIT_FOREVER constant was 16453defined as 32 bits, but must be 16 bits according to the ACPI 16454specification. This had the side effect of causing ASL 16455Mutex/Event timeouts even though the ASL code requested a wait 16456forever. Changed all internal references to the ACPI timeout 16457parameter to 16 bits to prevent future problems. Changed the name 16458of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16459 16460Code and Data Size: Current core subsystem library sizes are shown 16461below. These are the code and data sizes for the acpica.lib 16462produced by the Microsoft Visual C++ 6.0 compiler, and these 16463values do not include any ACPI driver or OSPM code. The debug 16464version of the code includes the debug output trace mechanism and 16465has a much larger code and data size. Note that these values will 16466vary depending on the efficiency of the compiler and the compiler 16467options used during generation. 16468 16469 Previous Release 16470 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16471 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16472 Current Release: 16473 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16474 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16475 16476 164772) Linux 16478 16479Module loading/unloading fixes (John Cagle) 16480 16481 164823) iASL Compiler/Disassembler 16483 16484Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16485 16486Implemented support for the disassembly of all SMBus protocol 16487keywords (SMBQuick, SMBWord, etc.) 16488 16489---------------------------------------- 1649001 November 2002. Summary of changes for version 20021101. 16491 16492 164931) ACPI CA Core Subsystem: 16494 16495Fixed a problem where platforms that have a GPE1 block but no GPE0 16496block were not handled correctly. This resulted in a "GPE 16497overlap" error message. GPE0 is no longer required. 16498 16499Removed code added in the previous release that inserted nodes 16500into the namespace in alphabetical order. This caused some side- 16501effects on various machines. The root cause of the problem is 16502still under investigation since in theory, the internal ordering 16503of the namespace nodes should not matter. 16504 16505 16506Enhanced error reporting for the case where a named object is not 16507found during control method execution. The full ACPI namepath 16508(name reference) of the object that was not found is displayed in 16509this case. 16510 16511Note: as a result of the overhaul of the namespace object types in 16512the previous release, the namespace nodes for the predefined 16513scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16514instead of ACPI_TYPE_ANY. This simplifies the namespace 16515management code but may affect code that walks the namespace tree 16516looking for specific object types. 16517 16518Code and Data Size: Current core subsystem library sizes are shown 16519below. These are the code and data sizes for the acpica.lib 16520produced by the Microsoft Visual C++ 6.0 compiler, and these 16521values do not include any ACPI driver or OSPM code. The debug 16522version of the code includes the debug output trace mechanism and 16523has a much larger code and data size. Note that these values will 16524vary depending on the efficiency of the compiler and the compiler 16525options used during generation. 16526 16527 Previous Release 16528 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16529 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16530 Current Release: 16531 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16532 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16533 16534 165352) Linux 16536 16537Fixed a problem introduced in the previous release where the 16538Processor and Thermal objects were not recognized and installed in 16539/proc. This was related to the scope type change described above. 16540 16541 165423) iASL Compiler/Disassembler 16543 16544Implemented the -g option to get all of the required ACPI tables 16545from the registry and save them to files (Windows version of the 16546compiler only.) The required tables are the FADT, FACS, and DSDT. 16547 16548Added ACPI table checksum validation during table disassembly in 16549order to catch corrupted tables. 16550 16551 16552---------------------------------------- 1655322 October 2002. Summary of changes for version 20021022. 16554 165551) ACPI CA Core Subsystem: 16556 16557Implemented a restriction on the Scope operator that the target 16558must already exist in the namespace at the time the operator is 16559encountered (during table load or method execution). In other 16560words, forward references are not allowed and Scope() cannot 16561create a new object. This changes the previous behavior where the 16562interpreter would create the name if not found. This new behavior 16563correctly enables the search-to-root algorithm during namespace 16564lookup of the target name. Because of this upsearch, this fixes 16565the known Compaq _SB_.OKEC problem and makes both the AML 16566interpreter and iASL compiler compatible with other ACPI 16567implementations. 16568 16569Completed a major overhaul of the internal ACPI object types for 16570the ACPI Namespace and the associated operand objects. Many of 16571these types had become obsolete with the introduction of the two- 16572pass namespace load. This cleanup simplifies the code and makes 16573the entire namespace load mechanism much clearer and easier to 16574understand. 16575 16576Improved debug output for tracking scope opening/closing to help 16577diagnose scoping issues. The old scope name as well as the new 16578scope name are displayed. Also improved error messages for 16579problems with ASL Mutex objects and error messages for GPE 16580problems. 16581 16582Cleaned up the namespace dump code, removed obsolete code. 16583 16584All string output (for all namespace/object dumps) now uses the 16585common ACPI string output procedure which handles escapes properly 16586and does not emit non-printable characters. 16587 16588Fixed some issues with constants in the 64-bit version of the 16589local C library (utclib.c) 16590 16591 165922) Linux 16593 16594EC Driver: No longer attempts to acquire the Global Lock at 16595interrupt level. 16596 16597 165983) iASL Compiler/Disassembler 16599 16600Implemented ACPI 2.0B grammar change that disallows all Type 1 and 166012 opcodes outside of a control method. This means that the 16602"executable" operators (versus the "namespace" operators) cannot 16603be used at the table level; they can only be used within a control 16604method. 16605 16606Implemented the restriction on the Scope() operator where the 16607target must already exist in the namespace at the time the 16608operator is encountered (during ASL compilation). In other words, 16609forward references are not allowed and Scope() cannot create a new 16610object. This makes the iASL compiler compatible with other ACPI 16611implementations and makes the Scope() implementation adhere to the 16612ACPI specification. 16613 16614Fixed a problem where namepath optimization for the Alias operator 16615was optimizing the wrong path (of the two namepaths.) This caused 16616a "Missing alias link" error message. 16617 16618Fixed a problem where an "unknown reserved name" warning could be 16619incorrectly generated for names like "_SB" when the trailing 16620underscore is not used in the original ASL. 16621 16622Fixed a problem where the reserved name check did not handle 16623NamePaths with multiple NameSegs correctly. The first nameseg of 16624the NamePath was examined instead of the last NameSeg. 16625 16626 16627---------------------------------------- 16628 1662902 October 2002. Summary of changes for this release. 16630 16631 166321) ACPI CA Core Subsystem version 20021002: 16633 16634Fixed a problem where a store/copy of a string to an existing 16635string did not always set the string length properly in the String 16636object. 16637 16638Fixed a reported problem with the ToString operator where the 16639behavior was identical to the ToHexString operator instead of just 16640simply converting a raw buffer to a string data type. 16641 16642Fixed a problem where CopyObject and the other "explicit" 16643conversion operators were not updating the internal namespace node 16644type as part of the store operation. 16645 16646Fixed a memory leak during implicit source operand conversion 16647where the original object was not deleted if it was converted to a 16648new object of a different type. 16649 16650Enhanced error messages for all problems associated with namespace 16651lookups. Common procedure generates and prints the lookup name as 16652well as the formatted status. 16653 16654Completed implementation of a new design for the Alias support 16655within the namespace. The existing design did not handle the case 16656where a new object was assigned to one of the two names due to the 16657use of an explicit conversion operator, resulting in the two names 16658pointing to two different objects. The new design simply points 16659the Alias name to the original name node - not to the object. 16660This results in a level of indirection that must be handled in the 16661name resolution mechanism. 16662 16663Code and Data Size: Current core subsystem library sizes are shown 16664below. These are the code and data sizes for the acpica.lib 16665produced by the Microsoft Visual C++ 6.0 compiler, and these 16666values do not include any ACPI driver or OSPM code. The debug 16667version of the code includes the debug output trace mechanism and 16668has a larger code and data size. Note that these values will vary 16669depending on the efficiency of the compiler and the compiler 16670options used during generation. 16671 16672 Previous Release 16673 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16674 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16675 Current Release: 16676 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16677 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16678 16679 166802) Linux 16681 16682Initialize thermal driver's timer before it is used. (Knut 16683Neumann) 16684 16685Allow handling negative celsius values. (Kochi Takayoshi) 16686 16687Fix thermal management and make trip points. R/W (Pavel Machek) 16688 16689Fix /proc/acpi/sleep. (P. Christeas) 16690 16691IA64 fixes. (David Mosberger) 16692 16693Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 16694 16695Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 16696Brodowski) 16697 16698 166993) iASL Compiler/Disassembler 16700 16701Clarified some warning/error messages. 16702 16703 16704---------------------------------------- 1670518 September 2002. Summary of changes for this release. 16706 16707 167081) ACPI CA Core Subsystem version 20020918: 16709 16710Fixed a reported problem with reference chaining (via the Index() 16711and RefOf() operators) in the ObjectType() and SizeOf() operators. 16712The definition of these operators includes the dereferencing of 16713all chained references to return information on the base object. 16714 16715Fixed a problem with stores to indexed package elements - the 16716existing code would not complete the store if an "implicit 16717conversion" was not performed. In other words, if the existing 16718object (package element) was to be replaced completely, the code 16719didn't handle this case. 16720 16721Relaxed typechecking on the ASL "Scope" operator to allow the 16722target name to refer to an object of type Integer, String, or 16723Buffer, in addition to the scoping object types (Device, 16724predefined Scopes, Processor, PowerResource, and ThermalZone.) 16725This allows existing AML code that has workarounds for a bug in 16726Windows to function properly. A warning is issued, however. This 16727affects both the AML interpreter and the iASL compiler. Below is 16728an example of this type of ASL code: 16729 16730 Name(DEB,0x00) 16731 Scope(DEB) 16732 { 16733 16734Fixed some reported problems with 64-bit integer support in the 16735local implementation of C library functions (clib.c) 16736 16737 167382) Linux 16739 16740Use ACPI fix map region instead of IOAPIC region, since it is 16741undefined in non-SMP. 16742 16743Ensure that the SCI has the proper polarity and trigger, even on 16744systems that do not have an interrupt override entry in the MADT. 16745 167462.5 big driver reorganization (Pat Mochel) 16747 16748Use early table mapping code from acpitable.c (Andi Kleen) 16749 16750New blacklist entries (Andi Kleen) 16751 16752Blacklist improvements. Split blacklist code out into a separate 16753file. Move checking the blacklist to very early. Previously, we 16754would use ACPI tables, and then halfway through init, check the 16755blacklist -- too late. Now, it's early enough to completely fall- 16756back to non-ACPI. 16757 16758 167593) iASL Compiler/Disassembler version 20020918: 16760 16761Fixed a problem where the typechecking code didn't know that an 16762alias could point to a method. In other words, aliases were not 16763being dereferenced during typechecking. 16764 16765 16766---------------------------------------- 1676729 August 2002. Summary of changes for this release. 16768 167691) ACPI CA Core Subsystem Version 20020829: 16770 16771If the target of a Scope() operator already exists, it must be an 16772object type that actually opens a scope -- such as a Device, 16773Method, Scope, etc. This is a fatal runtime error. Similar error 16774check has been added to the iASL compiler also. 16775 16776Tightened up the namespace load to disallow multiple names in the 16777same scope. This previously was allowed if both objects were of 16778the same type. (i.e., a lookup was the same as entering a new 16779name). 16780 16781 167822) Linux 16783 16784Ensure that the ACPI interrupt has the proper trigger and 16785polarity. 16786 16787local_irq_disable is extraneous. (Matthew Wilcox) 16788 16789Make "acpi=off" actually do what it says, and not use the ACPI 16790interpreter *or* the tables. 16791 16792Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16793Takayoshi) 16794 16795 167963) iASL Compiler/Disassembler Version 20020829: 16797 16798Implemented namepath optimization for name declarations. For 16799example, a declaration like "Method (\_SB_.ABCD)" would get 16800optimized to "Method (ABCD)" if the declaration is within the 16801\_SB_ scope. This optimization is in addition to the named 16802reference path optimization first released in the previous 16803version. This would seem to complete all possible optimizations 16804for namepaths within the ASL/AML. 16805 16806If the target of a Scope() operator already exists, it must be an 16807object type that actually opens a scope -- such as a Device, 16808Method, Scope, etc. 16809 16810Implemented a check and warning for unreachable code in the same 16811block below a Return() statement. 16812 16813Fixed a problem where the listing file was not generated if the 16814compiler aborted if the maximum error count was exceeded (200). 16815 16816Fixed a problem where the typechecking of method return values was 16817broken. This includes the check for a return value when the 16818method is invoked as a TermArg (a return value is expected.) 16819 16820Fixed a reported problem where EOF conditions during a quoted 16821string or comment caused a fault. 16822 16823 16824---------------------------------------- 1682515 August 2002. Summary of changes for this release. 16826 168271) ACPI CA Core Subsystem Version 20020815: 16828 16829Fixed a reported problem where a Store to a method argument that 16830contains a reference did not perform the indirect store correctly. 16831This problem was created during the conversion to the new 16832reference object model - the indirect store to a method argument 16833code was not updated to reflect the new model. 16834 16835Reworked the ACPI mode change code to better conform to ACPI 2.0, 16836handle corner cases, and improve code legibility (Kochi Takayoshi) 16837 16838Fixed a problem with the pathname parsing for the carat (^) 16839prefix. The heavy use of the carat operator by the new namepath 16840optimization in the iASL compiler uncovered a problem with the AML 16841interpreter handling of this prefix. In the case where one or 16842more carats precede a single nameseg, the nameseg was treated as 16843standalone and the search rule (to root) was inadvertently 16844applied. This could cause both the iASL compiler and the 16845interpreter to find the wrong object or to miss the error that 16846should occur if the object does not exist at that exact pathname. 16847 16848Found and fixed the problem where the HP Pavilion DSDT would not 16849load. This was a relatively minor tweak to the table loading code 16850(a problem caused by the unexpected encounter with a method 16851invocation not within a control method), but it does not solve the 16852overall issue of the execution of AML code at the table level. 16853This investigation is still ongoing. 16854 16855Code and Data Size: Current core subsystem library sizes are shown 16856below. These are the code and data sizes for the acpica.lib 16857produced by the Microsoft Visual C++ 6.0 compiler, and these 16858values do not include any ACPI driver or OSPM code. The debug 16859version of the code includes the debug output trace mechanism and 16860has a larger code and data size. Note that these values will vary 16861depending on the efficiency of the compiler and the compiler 16862options used during generation. 16863 16864 Previous Release 16865 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16866 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16867 Current Release: 16868 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16869 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16870 16871 168722) Linux 16873 16874Remove redundant slab.h include (Brad Hards) 16875 16876Fix several bugs in thermal.c (Herbert Nachtnebel) 16877 16878Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16879 16880Change acpi_system_suspend to use updated irq functions (Pavel 16881Machek) 16882 16883Export acpi_get_firmware_table (Matthew Wilcox) 16884 16885Use proper root proc entry for ACPI (Kochi Takayoshi) 16886 16887Fix early-boot table parsing (Bjorn Helgaas) 16888 16889 168903) iASL Compiler/Disassembler 16891 16892Reworked the compiler options to make them more consistent and to 16893use two-letter options where appropriate. We were running out of 16894sensible letters. This may break some makefiles, so check the 16895current options list by invoking the compiler with no parameters. 16896 16897Completed the design and implementation of the ASL namepath 16898optimization option for the compiler. This option optimizes all 16899references to named objects to the shortest possible path. The 16900first attempt tries to utilize a single nameseg (4 characters) and 16901the "search-to-root" algorithm used by the interpreter. If that 16902cannot be used (because either the name is not in the search path 16903or there is a conflict with another object with the same name), 16904the pathname is optimized using the carat prefix (usually a 16905shorter string than specifying the entire path from the root.) 16906 16907Implemented support to obtain the DSDT from the Windows registry 16908(when the disassembly option is specified with no input file). 16909Added this code as the implementation for AcpiOsTableOverride in 16910the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16911utility) to scan memory for the DSDT to the AcpiOsTableOverride 16912function in the DOS OSL to make the disassembler truly OS 16913independent. 16914 16915Implemented a new option to disassemble and compile in one step. 16916When used without an input filename, this option will grab the 16917DSDT from the local machine, disassemble it, and compile it in one 16918step. 16919 16920Added a warning message for invalid escapes (a backslash followed 16921by any character other than the allowable escapes). This catches 16922the quoted string error "\_SB_" (which should be "\\_SB_" ). 16923 16924Also, there are numerous instances in the ACPI specification where 16925this error occurs. 16926 16927Added a compiler option to disable all optimizations. This is 16928basically the "compatibility mode" because by using this option, 16929the AML code will come out exactly the same as other ASL 16930compilers. 16931 16932Added error messages for incorrectly ordered dependent resource 16933functions. This includes: missing EndDependentFn macro at end of 16934dependent resource list, nested dependent function macros (both 16935start and end), and missing StartDependentFn macro. These are 16936common errors that should be caught at compile time. 16937 16938Implemented _OSI support for the disassembler and compiler. _OSI 16939must be included in the namespace for proper disassembly (because 16940the disassembler must know the number of arguments.) 16941 16942Added an "optimization" message type that is optional (off by 16943default). This message is used for all optimizations - including 16944constant folding, integer optimization, and namepath optimization. 16945 16946---------------------------------------- 1694725 July 2002. Summary of changes for this release. 16948 16949 169501) ACPI CA Core Subsystem Version 20020725: 16951 16952The AML Disassembler has been enhanced to produce compilable ASL 16953code and has been integrated into the iASL compiler (see below) as 16954well as the single-step disassembly for the AML debugger and the 16955disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16956resource templates and macros are fully supported. The 16957disassembler has been tested on over 30 different AML files, 16958producing identical AML when the resulting disassembled ASL file 16959is recompiled with the same ASL compiler. 16960 16961Modified the Resource Manager to allow zero interrupts and zero 16962dma channels during the GetCurrentResources call. This was 16963causing problems on some platforms. 16964 16965Added the AcpiOsRedirectOutput interface to the OSL to simplify 16966output redirection for the AcpiOsPrintf and AcpiOsVprintf 16967interfaces. 16968 16969Code and Data Size: Current core subsystem library sizes are shown 16970below. These are the code and data sizes for the acpica.lib 16971produced by the Microsoft Visual C++ 6.0 compiler, and these 16972values do not include any ACPI driver or OSPM code. The debug 16973version of the code includes the debug output trace mechanism and 16974has a larger code and data size. Note that these values will vary 16975depending on the efficiency of the compiler and the compiler 16976options used during generation. 16977 16978 Previous Release 16979 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16980 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16981 Current Release: 16982 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16983 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16984 16985 169862) Linux 16987 16988Fixed a panic in the EC driver (Dominik Brodowski) 16989 16990Implemented checksum of the R/XSDT itself during Linux table scan 16991(Richard Schaal) 16992 16993 169943) iASL compiler 16995 16996The AML disassembler is integrated into the compiler. The "-d" 16997option invokes the disassembler to completely disassemble an 16998input AML file, producing as output a text ASL file with the 16999extension ".dsl" (to avoid name collisions with existing .asl 17000source files.) A future enhancement will allow the disassembler 17001to obtain the BIOS DSDT from the registry under Windows. 17002 17003Fixed a problem with the VendorShort and VendorLong resource 17004descriptors where an invalid AML sequence was created. 17005 17006Implemented a fix for BufferData term in the ASL parser. It was 17007inadvertently defined twice, allowing invalid syntax to pass and 17008causing reduction conflicts. 17009 17010Fixed a problem where the Ones opcode could get converted to a 17011value of zero if "Ones" was used where a byte, word or dword value 17012was expected. The 64-bit value is now truncated to the correct 17013size with the correct value. 17014 17015 17016 17017---------------------------------------- 1701802 July 2002. Summary of changes for this release. 17019 17020 170211) ACPI CA Core Subsystem Version 20020702: 17022 17023The Table Manager code has been restructured to add several new 17024features. Tables that are not required by the core subsystem 17025(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 17026validated in any way and are returned from AcpiGetFirmwareTable if 17027requested. The AcpiOsTableOverride interface is now called for 17028each table that is loaded by the subsystem in order to allow the 17029host to override any table it chooses. Previously, only the DSDT 17030could be overridden. Added one new files, tbrsdt.c and 17031tbgetall.c. 17032 17033Fixed a problem with the conversion of internal package objects to 17034external objects (when a package is returned from a control 17035method.) The return buffer length was set to zero instead of the 17036proper length of the package object. 17037 17038Fixed a reported problem with the use of the RefOf and DeRefOf 17039operators when passing reference arguments to control methods. A 17040new type of Reference object is used internally for references 17041produced by the RefOf operator. 17042 17043Added additional error messages in the Resource Manager to explain 17044AE_BAD_DATA errors when they occur during resource parsing. 17045 17046Split the AcpiEnableSubsystem into two primitives to enable a 17047finer granularity initialization sequence. These two calls should 17048be called in this order: AcpiEnableSubsystem (flags), 17049AcpiInitializeObjects (flags). The flags parameter remains the 17050same. 17051 17052 170532) Linux 17054 17055Updated the ACPI utilities module to understand the new style of 17056fully resolved package objects that are now returned from the core 17057subsystem. This eliminates errors of the form: 17058 17059 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 17060 acpi_utils-0430 [145] acpi_evaluate_reference: 17061 Invalid element in package (not a device reference) 17062 17063The method evaluation utility uses the new buffer allocation 17064scheme instead of calling AcpiEvaluate Object twice. 17065 17066Added support for ECDT. This allows the use of the Embedded 17067 17068Controller before the namespace has been fully initialized, which 17069is necessary for ACPI 2.0 support, and for some laptops to 17070initialize properly. (Laptops using ECDT are still rare, so only 17071limited testing was performed of the added functionality.) 17072 17073Fixed memory leaks in the EC driver. 17074 17075Eliminated a brittle code structure in acpi_bus_init(). 17076 17077Eliminated the acpi_evaluate() helper function in utils.c. It is 17078no longer needed since acpi_evaluate_object can optionally 17079allocate memory for the return object. 17080 17081Implemented fix for keyboard hang when getting battery readings on 17082some systems (Stephen White) 17083 17084PCI IRQ routing update (Dominik Brodowski) 17085 17086Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17087support 17088 17089---------------------------------------- 1709011 June 2002. Summary of changes for this release. 17091 17092 170931) ACPI CA Core Subsystem Version 20020611: 17094 17095Fixed a reported problem where constants such as Zero and One 17096appearing within _PRT packages were not handled correctly within 17097the resource manager code. Originally reported against the ASL 17098compiler because the code generator now optimizes integers to 17099their minimal AML representation (i.e. AML constants if possible.) 17100The _PRT code now handles all AML constant opcodes correctly 17101(Zero, One, Ones, Revision). 17102 17103Fixed a problem with the Concatenate operator in the AML 17104interpreter where a buffer result object was incorrectly marked as 17105not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17106 17107All package sub-objects are now fully resolved before they are 17108returned from the external ACPI interfaces. This means that name 17109strings are resolved to object handles, and constant operators 17110(Zero, One, Ones, Revision) are resolved to Integers. 17111 17112Implemented immediate resolution of the AML Constant opcodes 17113(Zero, One, Ones, Revision) to Integer objects upon detection 17114within the AML stream. This has simplified and reduced the 17115generated code size of the subsystem by eliminating about 10 17116switch statements for these constants (which previously were 17117contained in Reference objects.) The complicating issues are that 17118the Zero opcode is used as a "placeholder" for unspecified 17119optional target operands and stores to constants are defined to be 17120no-ops. 17121 17122Code and Data Size: Current core subsystem library sizes are shown 17123below. These are the code and data sizes for the acpica.lib 17124produced by the Microsoft Visual C++ 6.0 compiler, and these 17125values do not include any ACPI driver or OSPM code. The debug 17126version of the code includes the debug output trace mechanism and 17127has a larger code and data size. Note that these values will vary 17128depending on the efficiency of the compiler and the compiler 17129options used during generation. 17130 17131 Previous Release 17132 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17133 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17134 Current Release: 17135 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17136 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17137 17138 171392) Linux 17140 17141 17142Added preliminary support for obtaining _TRA data for PCI root 17143bridges (Bjorn Helgaas). 17144 17145 171463) iASL Compiler Version X2046: 17147 17148Fixed a problem where the "_DDN" reserved name was defined to be a 17149control method with one argument. There are no arguments, and 17150_DDN does not have to be a control method. 17151 17152Fixed a problem with the Linux version of the compiler where the 17153source lines printed with error messages were the wrong lines. 17154This turned out to be the "LF versus CR/LF" difference between 17155Windows and Unix. This appears to be the longstanding issue 17156concerning listing output and error messages. 17157 17158Fixed a problem with the Linux version of compiler where opcode 17159names within error messages were wrong. This was caused by a 17160slight difference in the output of the Flex tool on Linux versus 17161Windows. 17162 17163Fixed a problem with the Linux compiler where the hex output files 17164contained some garbage data caused by an internal buffer overrun. 17165 17166 17167---------------------------------------- 1716817 May 2002. Summary of changes for this release. 17169 17170 171711) ACPI CA Core Subsystem Version 20020517: 17172 17173Implemented a workaround to an BIOS bug discovered on the HP 17174OmniBook where the FADT revision number and the table size are 17175inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17176behavior is to fallback to using only the ACPI 1.0 fields of the 17177FADT if the table is too small to be a ACPI 2.0 table as claimed 17178by the revision number. Although this is a BIOS bug, this is a 17179case where the workaround is simple enough and with no side 17180effects, so it seemed prudent to add it. A warning message is 17181issued, however. 17182 17183Implemented minimum size checks for the fixed-length ACPI tables - 17184- the FADT and FACS, as well as consistency checks between the 17185revision number and the table size. 17186 17187Fixed a reported problem in the table override support where the 17188new table pointer was incorrectly treated as a physical address 17189instead of a logical address. 17190 17191Eliminated the use of the AE_AML_ERROR exception and replaced it 17192with more descriptive codes. 17193 17194Fixed a problem where an exception would occur if an ASL Field was 17195defined with no named Field Units underneath it (used by some 17196index fields). 17197 17198Code and Data Size: Current core subsystem library sizes are shown 17199below. These are the code and data sizes for the acpica.lib 17200produced by the Microsoft Visual C++ 6.0 compiler, and these 17201values do not include any ACPI driver or OSPM code. The debug 17202version of the code includes the debug output trace mechanism and 17203has a larger code and data size. Note that these values will vary 17204depending on the efficiency of the compiler and the compiler 17205options used during generation. 17206 17207 Previous Release 17208 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17209 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17210 Current Release: 17211 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17212 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17213 17214 17215 172162) Linux 17217 17218Much work done on ACPI init (MADT and PCI IRQ routing support). 17219(Paul D. and Dominik Brodowski) 17220 17221Fix PCI IRQ-related panic on boot (Sam Revitch) 17222 17223Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17224 17225Fix "MHz" typo (Dominik Brodowski) 17226 17227Fix RTC year 2000 issue (Dominik Brodowski) 17228 17229Preclude multiple button proc entries (Eric Brunet) 17230 17231Moved arch-specific code out of include/platform/aclinux.h 17232 172333) iASL Compiler Version X2044: 17234 17235Implemented error checking for the string used in the EISAID macro 17236(Usually used in the definition of the _HID object.) The code now 17237strictly enforces the PnP format - exactly 7 characters, 3 17238uppercase letters and 4 hex digits. 17239 17240If a raw string is used in the definition of the _HID object 17241(instead of the EISAID macro), the string must contain all 17242alphanumeric characters (e.g., "*PNP0011" is not allowed because 17243of the asterisk.) 17244 17245Implemented checking for invalid use of ACPI reserved names for 17246most of the name creation operators (Name, Device, Event, Mutex, 17247OperationRegion, PowerResource, Processor, and ThermalZone.) 17248Previously, this check was only performed for control methods. 17249 17250Implemented an additional check on the Name operator to emit an 17251error if a reserved name that must be implemented in ASL as a 17252control method is used. We know that a reserved name must be a 17253method if it is defined with input arguments. 17254 17255The warning emitted when a namespace object reference is not found 17256during the cross reference phase has been changed into an error. 17257The "External" directive should be used for names defined in other 17258modules. 17259 17260 172614) Tools and Utilities 17262 17263The 16-bit tools (adump16 and aexec16) have been regenerated and 17264tested. 17265 17266Fixed a problem with the output of both acpidump and adump16 where 17267the indentation of closing parentheses and brackets was not 17268 17269aligned properly with the parent block. 17270 17271 17272---------------------------------------- 1727303 May 2002. Summary of changes for this release. 17274 17275 172761) ACPI CA Core Subsystem Version 20020503: 17277 17278Added support a new OSL interface that allows the host operating 17279 17280system software to override the DSDT found in the firmware - 17281AcpiOsTableOverride. With this interface, the OSL can examine the 17282version of the firmware DSDT and replace it with a different one 17283if desired. 17284 17285Added new external interfaces for accessing ACPI registers from 17286device drivers and other system software - AcpiGetRegister and 17287AcpiSetRegister. This was simply an externalization of the 17288existing AcpiHwBitRegister interfaces. 17289 17290Fixed a regression introduced in the previous build where the 17291ASL/AML CreateField operator always returned an error, 17292"destination must be a NS Node". 17293 17294Extended the maximum time (before failure) to successfully enable 17295ACPI mode to 3 seconds. 17296 17297Code and Data Size: Current core subsystem library sizes are shown 17298below. These are the code and data sizes for the acpica.lib 17299produced by the Microsoft Visual C++ 6.0 compiler, and these 17300values do not include any ACPI driver or OSPM code. The debug 17301version of the code includes the debug output trace mechanism and 17302has a larger code and data size. Note that these values will vary 17303depending on the efficiency of the compiler and the compiler 17304options used during generation. 17305 17306 Previous Release 17307 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17308 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17309 Current Release: 17310 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17311 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17312 17313 173142) Linux 17315 17316Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17317free. While 3 out of 4 of our in-house systems work fine, the last 17318one still hangs when testing the LAPIC timer. 17319 17320Renamed many files in 2.5 kernel release to omit "acpi_" from the 17321name. 17322 17323Added warning on boot for Presario 711FR. 17324 17325Sleep improvements (Pavel Machek) 17326 17327ACPI can now be built without CONFIG_PCI enabled. 17328 17329IA64: Fixed memory map functions (JI Lee) 17330 17331 173323) iASL Compiler Version X2043: 17333 17334Added support to allow the compiler to be integrated into the MS 17335VC++ development environment for one-button compilation of single 17336files or entire projects -- with error-to-source-line mapping. 17337 17338Implemented support for compile-time constant folding for the 17339Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17340specification. This allows the ASL writer to use expressions 17341instead of Integer/Buffer/String constants in terms that must 17342evaluate to constants at compile time and will also simplify the 17343emitted AML in any such sub-expressions that can be folded 17344(evaluated at compile-time.) This increases the size of the 17345compiler significantly because a portion of the ACPI CA AML 17346interpreter is included within the compiler in order to pre- 17347evaluate constant expressions. 17348 17349 17350Fixed a problem with the "Unicode" ASL macro that caused the 17351compiler to fault. (This macro is used in conjunction with the 17352_STR reserved name.) 17353 17354Implemented an AML opcode optimization to use the Zero, One, and 17355Ones opcodes where possible to further reduce the size of integer 17356constants and thus reduce the overall size of the generated AML 17357code. 17358 17359Implemented error checking for new reserved terms for ACPI version 173602.0A. 17361 17362Implemented the -qr option to display the current list of ACPI 17363reserved names known to the compiler. 17364 17365Implemented the -qc option to display the current list of ASL 17366operators that are allowed within constant expressions and can 17367therefore be folded at compile time if the operands are constants. 17368 17369 173704) Documentation 17371 17372Updated the Programmer's Reference for new interfaces, data types, 17373and memory allocation model options. 17374 17375Updated the iASL Compiler User Reference to apply new format and 17376add information about new features and options. 17377 17378---------------------------------------- 1737919 April 2002. Summary of changes for this release. 17380 173811) ACPI CA Core Subsystem Version 20020419: 17382 17383The source code base for the Core Subsystem has been completely 17384cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17385versions. The Lint option files used are included in the 17386/acpi/generate/lint directory. 17387 17388Implemented enhanced status/error checking across the entire 17389Hardware manager subsystem. Any hardware errors (reported from 17390the OSL) are now bubbled up and will abort a running control 17391method. 17392 17393 17394Fixed a problem where the per-ACPI-table integer width (32 or 64) 17395was stored only with control method nodes, causing a fault when 17396non-control method code was executed during table loading. The 17397solution implemented uses a global variable to indicate table 17398width across the entire ACPI subsystem. Therefore, ACPI CA does 17399not support mixed integer widths across different ACPI tables 17400(DSDT, SSDT). 17401 17402Fixed a problem where NULL extended fields (X fields) in an ACPI 174032.0 ACPI FADT caused the table load to fail. Although the 17404existing ACPI specification is a bit fuzzy on this topic, the new 17405behavior is to fall back on a ACPI 1.0 field if the corresponding 17406ACPI 2.0 X field is zero (even though the table revision indicates 17407a full ACPI 2.0 table.) The ACPI specification will be updated to 17408clarify this issue. 17409 17410Fixed a problem with the SystemMemory operation region handler 17411where memory was always accessed byte-wise even if the AML- 17412specified access width was larger than a byte. This caused 17413problems on systems with memory-mapped I/O. Memory is now 17414accessed with the width specified. On systems that do not support 17415non-aligned transfers, a check is made to guarantee proper address 17416alignment before proceeding in order to avoid an AML-caused 17417alignment fault within the kernel. 17418 17419 17420Fixed a problem with the ExtendedIrq resource where only one byte 17421of the 4-byte Irq field was extracted. 17422 17423Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17424function was out of date and required a rewrite. 17425 17426Code and Data Size: Current core subsystem library sizes are shown 17427below. These are the code and data sizes for the acpica.lib 17428produced by the Microsoft Visual C++ 6.0 compiler, and these 17429values do not include any ACPI driver or OSPM code. The debug 17430version of the code includes the debug output trace mechanism and 17431has a larger code and data size. Note that these values will vary 17432depending on the efficiency of the compiler and the compiler 17433options used during generation. 17434 17435 Previous Release 17436 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17437 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17438 Current Release: 17439 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17440 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17441 17442 174432) Linux 17444 17445PCI IRQ routing fixes (Dominik Brodowski) 17446 17447 174483) iASL Compiler Version X2042: 17449 17450Implemented an additional compile-time error check for a field 17451unit whose size + minimum access width would cause a run-time 17452access beyond the end-of-region. Previously, only the field size 17453itself was checked. 17454 17455The Core subsystem and iASL compiler now share a common parse 17456object in preparation for compile-time evaluation of the type 174573/4/5 ASL operators. 17458 17459 17460---------------------------------------- 17461Summary of changes for this release: 03_29_02 17462 174631) ACPI CA Core Subsystem Version 20020329: 17464 17465Implemented support for late evaluation of TermArg operands to 17466Buffer and Package objects. This allows complex expressions to be 17467used in the declarations of these object types. 17468 17469Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 174701.0, if the field was larger than 32 bits, it was returned as a 17471buffer - otherwise it was returned as an integer. In ACPI 2.0, 17472the field is returned as a buffer only if the field is larger than 1747364 bits. The TableRevision is now considered when making this 17474conversion to avoid incompatibility with existing ASL code. 17475 17476Implemented logical addressing for AcpiOsGetRootPointer. This 17477allows an RSDP with either a logical or physical address. With 17478this support, the host OS can now override all ACPI tables with 17479one logical RSDP. Includes implementation of "typed" pointer 17480support to allow a common data type for both physical and logical 17481pointers internally. This required a change to the 17482AcpiOsGetRootPointer interface. 17483 17484Implemented the use of ACPI 2.0 Generic Address Structures for all 17485GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17486mapped I/O for these ACPI features. 17487 17488Initialization now ignores not only non-required tables (All 17489tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17490not validate the table headers of unrecognized tables. 17491 17492Fixed a problem where a notify handler could only be 17493installed/removed on an object of type Device. All "notify" 17494 17495objects are now supported -- Devices, Processor, Power, and 17496Thermal. 17497 17498Removed most verbosity from the ACPI_DB_INFO debug level. Only 17499critical information is returned when this debug level is enabled. 17500 17501Code and Data Size: Current core subsystem library sizes are shown 17502below. These are the code and data sizes for the acpica.lib 17503produced by the Microsoft Visual C++ 6.0 compiler, and these 17504values do not include any ACPI driver or OSPM code. The debug 17505version of the code includes the debug output trace mechanism and 17506has a larger code and data size. Note that these values will vary 17507depending on the efficiency of the compiler and the compiler 17508options used during generation. 17509 17510 Previous Release 17511 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17512 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17513 Current Release: 17514 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17515 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17516 17517 175182) Linux: 17519 17520The processor driver (acpi_processor.c) now fully supports ACPI 175212.0-based processor performance control (e.g. Intel(R) 17522SpeedStep(TM) technology) Note that older laptops that only have 17523the Intel "applet" interface are not supported through this. The 17524'limit' and 'performance' interface (/proc) are fully functional. 17525[Note that basic policy for controlling performance state 17526transitions will be included in the next version of ospmd.] The 17527idle handler was modified to more aggressively use C2, and PIIX4 17528errata handling underwent a complete overhaul (big thanks to 17529Dominik Brodowski). 17530 17531Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17532based devices in the ACPI namespace are now dynamically bound 17533(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17534This allows, among other things, ACPI to resolve bus numbers for 17535subordinate PCI bridges. 17536 17537Enhanced PCI IRQ routing to get the proper bus number for _PRT 17538entries defined underneath PCI bridges. 17539 17540Added IBM 600E to bad bios list due to invalid _ADR value for 17541PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17542 17543In the process of adding full MADT support (e.g. IOAPIC) for IA32 17544(acpi.c, mpparse.c) -- stay tuned. 17545 17546Added back visual differentiation between fixed-feature and 17547control-method buttons in dmesg. Buttons are also subtyped (e.g. 17548button/power/PWRF) to simplify button identification. 17549 17550We no longer use -Wno-unused when compiling debug. Please ignore 17551any "_THIS_MODULE defined but not used" messages. 17552 17553Can now shut down the system using "magic sysrq" key. 17554 17555 175563) iASL Compiler version 2041: 17557 17558Fixed a problem where conversion errors for hex/octal/decimal 17559constants were not reported. 17560 17561Implemented a fix for the General Register template Address field. 17562This field was 8 bits when it should be 64. 17563 17564Fixed a problem where errors/warnings were no longer being emitted 17565within the listing output file. 17566 17567Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17568exactly 4 characters, alphanumeric only. 17569 17570 17571 17572 17573---------------------------------------- 17574Summary of changes for this release: 03_08_02 17575 17576 175771) ACPI CA Core Subsystem Version 20020308: 17578 17579Fixed a problem with AML Fields where the use of the "AccessAny" 17580keyword could cause an interpreter error due to attempting to read 17581or write beyond the end of the parent Operation Region. 17582 17583Fixed a problem in the SystemMemory Operation Region handler where 17584an attempt was made to map memory beyond the end of the region. 17585This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17586errors on some Linux systems. 17587 17588Fixed a problem where the interpreter/namespace "search to root" 17589algorithm was not functioning for some object types. Relaxed the 17590internal restriction on the search to allow upsearches for all 17591external object types as well as most internal types. 17592 17593 175942) Linux: 17595 17596We now use safe_halt() macro versus individual calls to sti | hlt. 17597 17598Writing to the processor limit interface should now work. "echo 1" 17599will increase the limit, 2 will decrease, and 0 will reset to the 17600 17601default. 17602 17603 176043) ASL compiler: 17605 17606Fixed segfault on Linux version. 17607 17608 17609---------------------------------------- 17610Summary of changes for this release: 02_25_02 17611 176121) ACPI CA Core Subsystem: 17613 17614 17615Fixed a problem where the GPE bit masks were not initialized 17616properly, causing erratic GPE behavior. 17617 17618Implemented limited support for multiple calling conventions. The 17619code can be generated with either the VPL (variable parameter 17620list, or "C") convention, or the FPL (fixed parameter list, or 17621"Pascal") convention. The core subsystem is about 3.4% smaller 17622when generated with FPL. 17623 17624 176252) Linux 17626 17627Re-add some /proc/acpi/event functionality that was lost during 17628the rewrite 17629 17630Resolved issue with /proc events for fixed-feature buttons showing 17631up as the system device. 17632 17633Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17634 17635Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17636 17637Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17638 17639Fixed limit interface & usage to fix bugs with passive cooling 17640hysterisis. 17641 17642Restructured PRT support. 17643 17644 17645---------------------------------------- 17646Summary of changes for this label: 02_14_02 17647 17648 176491) ACPI CA Core Subsystem: 17650 17651Implemented support in AcpiLoadTable to allow loading of FACS and 17652FADT tables. 17653 17654Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17655been removed. All 64-bit platforms should be migrated to the ACPI 176562.0 tables. The actbl71.h header has been removed from the source 17657tree. 17658 17659All C macros defined within the subsystem have been prefixed with 17660"ACPI_" to avoid collision with other system include files. 17661 17662Removed the return value for the two AcpiOsPrint interfaces, since 17663it is never used and causes lint warnings for ignoring the return 17664value. 17665 17666Added error checking to all internal mutex acquire and release 17667calls. Although a failure from one of these interfaces is 17668probably a fatal system error, these checks will cause the 17669immediate abort of the currently executing method or interface. 17670 17671Fixed a problem where the AcpiSetCurrentResources interface could 17672fault. This was a side effect of the deployment of the new memory 17673allocation model. 17674 17675Fixed a couple of problems with the Global Lock support introduced 17676in the last major build. The "common" (1.0/2.0) internal FACS was 17677being overwritten with the FACS signature and clobbering the 17678Global Lock pointer. Also, the actual firmware FACS was being 17679unmapped after construction of the "common" FACS, preventing 17680access to the actual Global Lock field within it. The "common" 17681internal FACS is no longer installed as an actual ACPI table; it 17682is used simply as a global. 17683 17684Code and Data Size: Current core subsystem library sizes are shown 17685below. These are the code and data sizes for the acpica.lib 17686produced by the Microsoft Visual C++ 6.0 compiler, and these 17687values do not include any ACPI driver or OSPM code. The debug 17688version of the code includes the debug output trace mechanism and 17689has a larger code and data size. Note that these values will vary 17690depending on the efficiency of the compiler and the compiler 17691options used during generation. 17692 17693 Previous Release (02_07_01) 17694 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17695 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17696 Current Release: 17697 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17698 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17699 17700 177012) Linux 17702 17703Updated Linux-specific code for core macro and OSL interface 17704changes described above. 17705 17706Improved /proc/acpi/event. It now can be opened only once and has 17707proper poll functionality. 17708 17709Fixed and restructured power management (acpi_bus). 17710 17711Only create /proc "view by type" when devices of that class exist. 17712 17713Fixed "charging/discharging" bug (and others) in acpi_battery. 17714 17715Improved thermal zone code. 17716 17717 177183) ASL Compiler, version X2039: 17719 17720 17721Implemented the new compiler restriction on ASL String hex/octal 17722escapes to non-null, ASCII values. An error results if an invalid 17723value is used. (This will require an ACPI 2.0 specification 17724change.) 17725 17726AML object labels that are output to the optional C and ASM source 17727are now prefixed with both the ACPI table signature and table ID 17728to help guarantee uniqueness within a large BIOS project. 17729 17730 17731---------------------------------------- 17732Summary of changes for this label: 02_01_02 17733 177341) ACPI CA Core Subsystem: 17735 17736ACPI 2.0 support is complete in the entire Core Subsystem and the 17737ASL compiler. All new ACPI 2.0 operators are implemented and all 17738other changes for ACPI 2.0 support are complete. With 17739simultaneous code and data optimizations throughout the subsystem, 17740ACPI 2.0 support has been implemented with almost no additional 17741cost in terms of code and data size. 17742 17743Implemented a new mechanism for allocation of return buffers. If 17744the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17745be allocated on behalf of the caller. Consolidated all return 17746buffer validation and allocation to a common procedure. Return 17747buffers will be allocated via the primary OSL allocation interface 17748since it appears that a separate pool is not needed by most users. 17749If a separate pool is required for these buffers, the caller can 17750still use the original mechanism and pre-allocate the buffer(s). 17751 17752Implemented support for string operands within the DerefOf 17753operator. 17754 17755Restructured the Hardware and Event managers to be table driven, 17756simplifying the source code and reducing the amount of generated 17757code. 17758 17759Split the common read/write low-level ACPI register bitfield 17760procedure into a separate read and write, simplifying the code 17761considerably. 17762 17763Obsoleted the AcpiOsCallocate OSL interface. This interface was 17764used only a handful of times and didn't have enough critical mass 17765for a separate interface. Replaced with a common calloc procedure 17766in the core. 17767 17768Fixed a reported problem with the GPE number mapping mechanism 17769that allows GPE1 numbers to be non-contiguous with GPE0. 17770Reorganized the GPE information and shrunk a large array that was 17771originally large enough to hold info for all possible GPEs (256) 17772to simply large enough to hold all GPEs up to the largest GPE 17773number on the machine. 17774 17775Fixed a reported problem with resource structure alignment on 64- 17776bit platforms. 17777 17778Changed the AcpiEnableEvent and AcpiDisableEvent external 17779interfaces to not require any flags for the common case of 17780enabling/disabling a GPE. 17781 17782Implemented support to allow a "Notify" on a Processor object. 17783 17784Most TBDs in comments within the source code have been resolved 17785and eliminated. 17786 17787 17788Fixed a problem in the interpreter where a standalone parent 17789prefix (^) was not handled correctly in the interpreter and 17790debugger. 17791 17792Removed obsolete and unnecessary GPE save/restore code. 17793 17794Implemented Field support in the ASL Load operator. This allows a 17795table to be loaded from a named field, in addition to loading a 17796table directly from an Operation Region. 17797 17798Implemented timeout and handle support in the external Global Lock 17799interfaces. 17800 17801Fixed a problem in the AcpiDump utility where pathnames were no 17802longer being generated correctly during the dump of named objects. 17803 17804Modified the AML debugger to give a full display of if/while 17805predicates instead of just one AML opcode at a time. (The 17806predicate can have several nested ASL statements.) The old method 17807was confusing during single stepping. 17808 17809Code and Data Size: Current core subsystem library sizes are shown 17810below. These are the code and data sizes for the acpica.lib 17811produced by the Microsoft Visual C++ 6.0 compiler, and these 17812values do not include any ACPI driver or OSPM code. The debug 17813version of the code includes the debug output trace mechanism and 17814has a larger code and data size. Note that these values will vary 17815depending on the efficiency of the compiler and the compiler 17816options used during generation. 17817 17818 Previous Release (12_18_01) 17819 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17820 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17821 Current Release: 17822 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17823 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17824 178252) Linux 17826 17827 Implemented fix for PIIX reverse throttling errata (Processor 17828driver) 17829 17830Added new Limit interface (Processor and Thermal drivers) 17831 17832New thermal policy (Thermal driver) 17833 17834Many updates to /proc 17835 17836Battery "low" event support (Battery driver) 17837 17838Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17839 17840IA32 - IA64 initialization unification, no longer experimental 17841 17842Menuconfig options redesigned 17843 178443) ASL Compiler, version X2037: 17845 17846Implemented several new output features to simplify integration of 17847AML code into firmware: 1) Output the AML in C source code with 17848labels for each named ASL object. The original ASL source code 17849is interleaved as C comments. 2) Output the AML in ASM source code 17850with labels and interleaved ASL source. 3) Output the AML in 17851raw hex table form, in either C or ASM. 17852 17853Implemented support for optional string parameters to the 17854LoadTable operator. 17855 17856Completed support for embedded escape sequences within string 17857literals. The compiler now supports all single character escapes 17858as well as the Octal and Hex escapes. Note: the insertion of a 17859null byte into a string literal (via the hex/octal escape) causes 17860the string to be immediately terminated. A warning is issued. 17861 17862Fixed a problem where incorrect AML was generated for the case 17863where an ASL namepath consists of a single parent prefix ( 17864 17865) with no trailing name segments. 17866 17867The compiler has been successfully generated with a 64-bit C 17868compiler. 17869 17870 17871 17872 17873---------------------------------------- 17874Summary of changes for this label: 12_18_01 17875 178761) Linux 17877 17878Enhanced blacklist with reason and severity fields. Any table's 17879signature may now be used to identify a blacklisted system. 17880 17881Call _PIC control method to inform the firmware which interrupt 17882model the OS is using. Turn on any disabled link devices. 17883 17884Cleaned up busmgr /proc error handling (Andreas Dilger) 17885 17886 2) ACPI CA Core Subsystem: 17887 17888Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17889while loop) 17890 17891Completed implementation of the ACPI 2.0 "Continue", 17892"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17893operators. All new ACPI 2.0 operators are now implemented in both 17894the ASL compiler and the AML interpreter. The only remaining ACPI 178952.0 task is support for the String data type in the DerefOf 17896operator. Fixed a problem with AcquireMutex where the status code 17897was lost if the caller had to actually wait for the mutex. 17898 17899Increased the maximum ASL Field size from 64K bits to 4G bits. 17900 17901Completed implementation of the external Global Lock interfaces -- 17902AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17903Handler parameters were added. 17904 17905Completed another pass at removing warnings and issues when 17906compiling with 64-bit compilers. The code now compiles cleanly 17907with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17908add and subtract (diff) macros have changed considerably. 17909 17910 17911Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1791264-bit platforms, 32-bits on all others. This type is used 17913wherever memory allocation and/or the C sizeof() operator is used, 17914and affects the OSL memory allocation interfaces AcpiOsAllocate 17915and AcpiOsCallocate. 17916 17917Implemented sticky user breakpoints in the AML debugger. 17918 17919Code and Data Size: Current core subsystem library sizes are shown 17920below. These are the code and data sizes for the acpica.lib 17921produced by the Microsoft Visual C++ 6.0 compiler, and these 17922values do not include any ACPI driver or OSPM code. The debug 17923version of the code includes the debug output trace mechanism and 17924has a larger code and data size. Note that these values will vary 17925depending on the efficiency of the compiler and the compiler 17926options used during generation. 17927 17928 Previous Release (12_05_01) 17929 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17930 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17931 Current Release: 17932 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17933 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17934 17935 3) ASL Compiler, version X2034: 17936 17937Now checks for (and generates an error if detected) the use of a 17938Break or Continue statement without an enclosing While statement. 17939 17940 17941Successfully generated the compiler with the Intel 64-bit C 17942compiler. 17943 17944 ---------------------------------------- 17945Summary of changes for this label: 12_05_01 17946 17947 1) ACPI CA Core Subsystem: 17948 17949The ACPI 2.0 CopyObject operator is fully implemented. This 17950operator creates a new copy of an object (and is also used to 17951bypass the "implicit conversion" mechanism of the Store operator.) 17952 17953The ACPI 2.0 semantics for the SizeOf operator are fully 17954implemented. The change is that performing a SizeOf on a 17955reference object causes an automatic dereference of the object to 17956the actual value before the size is evaluated. This behavior was 17957undefined in ACPI 1.0. 17958 17959The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17960have been implemented. The interrupt polarity and mode are now 17961independently set. 17962 17963Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17964appearing in Package objects were not properly converted to 17965integers when the internal Package was converted to an external 17966object (via the AcpiEvaluateObject interface.) 17967 17968Fixed a problem with the namespace object deletion mechanism for 17969objects created by control methods. There were two parts to this 17970problem: 1) Objects created during the initialization phase method 17971parse were not being deleted, and 2) The object owner ID mechanism 17972to track objects was broken. 17973 17974Fixed a problem where the use of the ASL Scope operator within a 17975control method would result in an invalid opcode exception. 17976 17977Fixed a problem introduced in the previous label where the buffer 17978length required for the _PRT structure was not being returned 17979correctly. 17980 17981Code and Data Size: Current core subsystem library sizes are shown 17982below. These are the code and data sizes for the acpica.lib 17983produced by the Microsoft Visual C++ 6.0 compiler, and these 17984values do not include any ACPI driver or OSPM code. The debug 17985version of the code includes the debug output trace mechanism and 17986has a larger code and data size. Note that these values will vary 17987depending on the efficiency of the compiler and the compiler 17988options used during generation. 17989 17990 Previous Release (11_20_01) 17991 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17992 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17993 17994 Current Release: 17995 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17996 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17997 17998 2) Linux: 17999 18000Updated all files to apply cleanly against 2.4.16. 18001 18002Added basic PCI Interrupt Routing Table (PRT) support for IA32 18003(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 18004version supports both static and dynamic PRT entries, but dynamic 18005entries are treated as if they were static (not yet 18006reconfigurable). Architecture- specific code to use this data is 18007absent on IA32 but should be available shortly. 18008 18009Changed the initialization sequence to start the ACPI interpreter 18010(acpi_init) prior to initialization of the PCI driver (pci_init) 18011in init/main.c. This ordering is required to support PRT and 18012facilitate other (future) enhancement. A side effect is that the 18013ACPI bus driver and certain device drivers can no longer be loaded 18014as modules. 18015 18016Modified the 'make menuconfig' options to allow PCI Interrupt 18017Routing support to be included without the ACPI Bus and other 18018device drivers. 18019 18020 3) ASL Compiler, version X2033: 18021 18022Fixed some issues with the use of the new CopyObject and 18023DataTableRegion operators. Both are fully functional. 18024 18025 ---------------------------------------- 18026Summary of changes for this label: 11_20_01 18027 18028 20 November 2001. Summary of changes for this release. 18029 18030 1) ACPI CA Core Subsystem: 18031 18032Updated Index support to match ACPI 2.0 semantics. Storing a 18033Integer, String, or Buffer to an Index of a Buffer will store only 18034the least-significant byte of the source to the Indexed buffer 18035byte. Multiple writes are not performed. 18036 18037Fixed a problem where the access type used in an AccessAs ASL 18038operator was not recorded correctly into the field object. 18039 18040Fixed a problem where ASL Event objects were created in a 18041signalled state. Events are now created in an unsignalled state. 18042 18043The internal object cache is now purged after table loading and 18044initialization to reduce the use of dynamic kernel memory -- on 18045the assumption that object use is greatest during the parse phase 18046of the entire table (versus the run-time use of individual control 18047methods.) 18048 18049ACPI 2.0 variable-length packages are now fully operational. 18050 18051Code and Data Size: Code and Data optimizations have permitted new 18052feature development with an actual reduction in the library size. 18053Current core subsystem library sizes are shown below. These are 18054the code and data sizes for the acpica.lib produced by the 18055Microsoft Visual C++ 6.0 compiler, and these values do not include 18056any ACPI driver or OSPM code. The debug version of the code 18057includes the debug output trace mechanism and has a larger code 18058and data size. Note that these values will vary depending on the 18059efficiency of the compiler and the compiler options used during 18060generation. 18061 18062 Previous Release (11_09_01): 18063 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18064 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18065 18066 Current Release: 18067 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18068 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18069 18070 2) Linux: 18071 18072Enhanced the ACPI boot-time initialization code to allow the use 18073of Local APIC tables for processor enumeration on IA-32, and to 18074pave the way for a fully MPS-free boot (on SMP systems) in the 18075near future. This functionality replaces 18076arch/i386/kernel/acpitables.c, which was introduced in an earlier 180772.4.15-preX release. To enable this feature you must add 18078"acpi_boot=on" to the kernel command line -- see the help entry 18079for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 18080the works... 18081 18082Restructured the configuration options to allow boot-time table 18083parsing support without inclusion of the ACPI Interpreter (and 18084other) code. 18085 18086NOTE: This release does not include fixes for the reported events, 18087power-down, and thermal passive cooling issues (coming soon). 18088 18089 3) ASL Compiler: 18090 18091Added additional typechecking for Fields within restricted access 18092Operation Regions. All fields within EC and CMOS regions must be 18093declared with ByteAcc. All fields within SMBus regions must be 18094declared with the BufferAcc access type. 18095 18096Fixed a problem where the listing file output of control methods 18097no longer interleaved the actual AML code with the ASL source 18098code. 18099 18100 18101 18102 18103---------------------------------------- 18104Summary of changes for this label: 11_09_01 18105 181061) ACPI CA Core Subsystem: 18107 18108Implemented ACPI 2.0-defined support for writes to fields with a 18109Buffer, String, or Integer source operand that is smaller than the 18110target field. In these cases, the source operand is zero-extended 18111to fill the target field. 18112 18113Fixed a problem where a Field starting bit offset (within the 18114parent operation region) was calculated incorrectly if the 18115 18116alignment of the field differed from the access width. This 18117affected CreateWordField, CreateDwordField, CreateQwordField, and 18118possibly other fields that use the "AccessAny" keyword. 18119 18120Fixed a problem introduced in the 11_02_01 release where indirect 18121stores through method arguments did not operate correctly. 18122 181232) Linux: 18124 18125Implemented boot-time ACPI table parsing support 18126(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18127facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18128legacy BIOS interfaces (e.g. MPS) for the configuration of system 18129processors, memory, and interrupts during setup_arch(). Note that 18130this patch does not include the required architecture-specific 18131changes required to apply this information -- subsequent patches 18132will be posted for both IA32 and IA64 to achieve this. 18133 18134Added low-level sleep support for IA32 platforms, courtesy of Pat 18135Mochel. This allows IA32 systems to transition to/from various 18136sleeping states (e.g. S1, S3), although the lack of a centralized 18137driver model and power-manageable drivers will prevent its 18138(successful) use on most systems. 18139 18140Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18141submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18142tables" option, etc. 18143 18144Increased the default timeout for the EC driver from 1ms to 10ms 18145(1000 cycles of 10us) to try to address AE_TIME errors during EC 18146transactions. 18147 18148 ---------------------------------------- 18149Summary of changes for this label: 11_02_01 18150 181511) ACPI CA Core Subsystem: 18152 18153ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18154(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18155implemented. 18156 18157OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18158changes to support ACPI 2.0 Qword field access. Read/Write 18159PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18160accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18161the value parameter for the address space handler interface is now 18162an ACPI_INTEGER. OSL implementations of these interfaces must now 18163handle the case where the Width parameter is 64. 18164 18165Index Fields: Fixed a problem where unaligned bit assembly and 18166disassembly for IndexFields was not supported correctly. 18167 18168Index and Bank Fields: Nested Index and Bank Fields are now 18169supported. During field access, a check is performed to ensure 18170that the value written to an Index or Bank register is not out of 18171the range of the register. The Index (or Bank) register is 18172written before each access to the field data. Future support will 18173include allowing individual IndexFields to be wider than the 18174DataRegister width. 18175 18176Fields: Fixed a problem where the AML interpreter was incorrectly 18177attempting to write beyond the end of a Field/OpRegion. This was 18178a boundary case that occurred when a DWORD field was written to a 18179BYTE access OpRegion, forcing multiple writes and causing the 18180interpreter to write one datum too many. 18181 18182Fields: Fixed a problem with Field/OpRegion access where the 18183starting bit address of a field was incorrectly calculated if the 18184current access type was wider than a byte (WordAcc, DwordAcc, or 18185QwordAcc). 18186 18187Fields: Fixed a problem where forward references to individual 18188FieldUnits (individual Field names within a Field definition) were 18189not resolved during the AML table load. 18190 18191Fields: Fixed a problem where forward references from a Field 18192definition to the parent Operation Region definition were not 18193resolved during the AML table load. 18194 18195Fields: Duplicate FieldUnit names within a scope are now detected 18196during AML table load. 18197 18198Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18199returned an incorrect name for the root node. 18200 18201Code and Data Size: Code and Data optimizations have permitted new 18202feature development with an actual reduction in the library size. 18203Current core subsystem library sizes are shown below. These are 18204the code and data sizes for the acpica.lib produced by the 18205Microsoft Visual C++ 6.0 compiler, and these values do not include 18206any ACPI driver or OSPM code. The debug version of the code 18207includes the debug output trace mechanism and has a larger code 18208and data size. Note that these values will vary depending on the 18209efficiency of the compiler and the compiler options used during 18210generation. 18211 18212 Previous Release (10_18_01): 18213 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18214 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18215 18216 Current Release: 18217 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18218 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18219 18220 2) Linux: 18221 18222Improved /proc processor output (Pavel Machek) Re-added 18223MODULE_LICENSE("GPL") to all modules. 18224 18225 3) ASL Compiler version X2030: 18226 18227Duplicate FieldUnit names within a scope are now detected and 18228flagged as errors. 18229 18230 4) Documentation: 18231 18232Programmer Reference updated to reflect OSL and address space 18233handler interface changes described above. 18234 18235---------------------------------------- 18236Summary of changes for this label: 10_18_01 18237 18238ACPI CA Core Subsystem: 18239 18240Fixed a problem with the internal object reference count mechanism 18241that occasionally caused premature object deletion. This resolves 18242all of the outstanding problem reports where an object is deleted 18243in the middle of an interpreter evaluation. Although this problem 18244only showed up in rather obscure cases, the solution to the 18245problem involved an adjustment of all reference counts involving 18246objects attached to namespace nodes. 18247 18248Fixed a problem with Field support in the interpreter where 18249writing to an aligned field whose length is an exact multiple (2 18250or greater) of the field access granularity would cause an attempt 18251to write beyond the end of the field. 18252 18253The top level AML opcode execution functions within the 18254interpreter have been renamed with a more meaningful and 18255consistent naming convention. The modules exmonad.c and 18256exdyadic.c were eliminated. New modules are exoparg1.c, 18257exoparg2.c, exoparg3.c, and exoparg6.c. 18258 18259Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18260 18261Fixed a problem where the AML debugger was causing some internal 18262objects to not be deleted during subsystem termination. 18263 18264Fixed a problem with the external AcpiEvaluateObject interface 18265where the subsystem would fault if the named object to be 18266evaluated referred to a constant such as Zero, Ones, etc. 18267 18268Fixed a problem with IndexFields and BankFields where the 18269subsystem would fault if the index, data, or bank registers were 18270not defined in the same scope as the field itself. 18271 18272Added printf format string checking for compilers that support 18273this feature. Corrected more than 50 instances of issues with 18274format specifiers within invocations of ACPI_DEBUG_PRINT 18275throughout the core subsystem code. 18276 18277The ASL "Revision" operator now returns the ACPI support level 18278implemented in the core - the value "2" since the ACPI 2.0 support 18279is more than 50% implemented. 18280 18281Enhanced the output of the AML debugger "dump namespace" command 18282to output in a more human-readable form. 18283 18284Current core subsystem library code sizes are shown below. These 18285 18286are the code and data sizes for the acpica.lib produced by the 18287Microsoft Visual C++ 6.0 compiler, and these values do not include 18288any ACPI driver or OSPM code. The debug version of the code 18289includes the full debug trace mechanism -- leading to a much 18290 18291larger code and data size. Note that these values will vary 18292depending on the efficiency of the compiler and the compiler 18293options used during generation. 18294 18295 Previous Label (09_20_01): 18296 Non-Debug Version: 65K Code, 5K Data, 70K Total 18297 Debug Version: 138K Code, 58K Data, 196K Total 18298 18299 This Label: 18300 18301 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18302 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18303 18304Linux: 18305 18306Implemented a "Bad BIOS Blacklist" to track machines that have 18307known ASL/AML problems. 18308 18309Enhanced the /proc interface for the thermal zone driver and added 18310support for _HOT (the critical suspend trip point). The 'info' 18311file now includes threshold/policy information, and allows setting 18312of _SCP (cooling preference) and _TZP (polling frequency) values 18313to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18314frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18315preference to the passive/quiet mode (if supported by the ASL). 18316 18317Implemented a workaround for a gcc bug that resuted in an OOPs 18318when loading the control method battery driver. 18319 18320 ---------------------------------------- 18321Summary of changes for this label: 09_20_01 18322 18323 ACPI CA Core Subsystem: 18324 18325The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18326modified to allow individual GPE levels to be flagged as wake- 18327enabled (i.e., these GPEs are to remain enabled when the platform 18328sleeps.) 18329 18330The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18331support wake-enabled GPEs. This means that upon entering the 18332sleep state, all GPEs that are not wake-enabled are disabled. 18333When leaving the sleep state, these GPEs are re-enabled. 18334 18335A local double-precision divide/modulo module has been added to 18336enhance portability to OS kernels where a 64-bit math library is 18337not available. The new module is "utmath.c". 18338 18339Several optimizations have been made to reduce the use of CPU 18340stack. Originally over 2K, the maximum stack usage is now below 183412K at 1860 bytes (1.82k) 18342 18343Fixed a problem with the AcpiGetFirmwareTable interface where the 18344root table pointer was not mapped into a logical address properly. 18345 18346Fixed a problem where a NULL pointer was being dereferenced in the 18347interpreter code for the ASL Notify operator. 18348 18349Fixed a problem where the use of the ASL Revision operator 18350returned an error. This operator now returns the current version 18351of the ACPI CA core subsystem. 18352 18353Fixed a problem where objects passed as control method parameters 18354to AcpiEvaluateObject were always deleted at method termination. 18355However, these objects may end up being stored into the namespace 18356by the called method. The object reference count mechanism was 18357applied to these objects instead of a force delete. 18358 18359Fixed a problem where static strings or buffers (contained in the 18360AML code) that are declared as package elements within the ASL 18361code could cause a fault because the interpreter would attempt to 18362delete them. These objects are now marked with the "static 18363object" flag to prevent any attempt to delete them. 18364 18365Implemented an interpreter optimization to use operands directly 18366from the state object instead of extracting the operands to local 18367variables. This reduces stack use and code size, and improves 18368performance. 18369 18370The module exxface.c was eliminated as it was an unnecessary extra 18371layer of code. 18372 18373Current core subsystem library code sizes are shown below. These 18374are the code and data sizes for the acpica.lib produced by the 18375Microsoft Visual C++ 6.0 compiler, and these values do not include 18376any ACPI driver or OSPM code. The debug version of the code 18377includes the full debug trace mechanism -- leading to a much 18378larger code and data size. Note that these values will vary 18379depending on the efficiency of the compiler and the compiler 18380options used during generation. 18381 18382 Non-Debug Version: 65K Code, 5K Data, 70K Total 18383(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18384Total (Previously 195K) 18385 18386Linux: 18387 18388Support for ACPI 2.0 64-bit integers has been added. All ACPI 18389Integer objects are now 64 bits wide 18390 18391All Acpi data types and structures are now in lower case. Only 18392Acpi macros are upper case for differentiation. 18393 18394 Documentation: 18395 18396Changes to the external interfaces as described above. 18397 18398 ---------------------------------------- 18399Summary of changes for this label: 08_31_01 18400 18401 ACPI CA Core Subsystem: 18402 18403A bug with interpreter implementation of the ASL Divide operator 18404was found and fixed. The implicit function return value (not the 18405explicit store operands) was returning the remainder instead of 18406the quotient. This was a longstanding bug and it fixes several 18407known outstanding issues on various platforms. 18408 18409The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18410been further optimized for size. There are 700 invocations of the 18411DEBUG_PRINT macro alone, so each optimization reduces the size of 18412the debug version of the subsystem significantly. 18413 18414A stack trace mechanism has been implemented. The maximum stack 18415usage is about 2K on 32-bit platforms. The debugger command "stat 18416stack" will display the current maximum stack usage. 18417 18418All public symbols and global variables within the subsystem are 18419now prefixed with the string "Acpi". This keeps all of the 18420symbols grouped together in a kernel map, and avoids conflicts 18421with other kernel subsystems. 18422 18423Most of the internal fixed lookup tables have been moved into the 18424code segment via the const operator. 18425 18426Several enhancements have been made to the interpreter to both 18427reduce the code size and improve performance. 18428 18429Current core subsystem library code sizes are shown below. These 18430are the code and data sizes for the acpica.lib produced by the 18431Microsoft Visual C++ 6.0 compiler, and these values do not include 18432any ACPI driver or OSPM code. The debug version of the code 18433includes the full debug trace mechanism which contains over 700 18434invocations of the DEBUG_PRINT macro, 500 function entry macro 18435invocations, and over 900 function exit macro invocations -- 18436leading to a much larger code and data size. Note that these 18437values will vary depending on the efficiency of the compiler and 18438the compiler options used during generation. 18439 18440 Non-Debug Version: 64K Code, 5K Data, 69K Total 18441Debug Version: 137K Code, 58K Data, 195K Total 18442 18443 Linux: 18444 18445Implemented wbinvd() macro, pending a kernel-wide definition. 18446 18447Fixed /proc/acpi/event to handle poll() and short reads. 18448 18449 ASL Compiler, version X2026: 18450 18451Fixed a problem introduced in the previous label where the AML 18452 18453code emitted for package objects produced packages with zero 18454length. 18455 18456 ---------------------------------------- 18457Summary of changes for this label: 08_16_01 18458 18459ACPI CA Core Subsystem: 18460 18461The following ACPI 2.0 ASL operators have been implemented in the 18462AML interpreter (These are already supported by the Intel ASL 18463compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18464ToBuffer. Support for 64-bit AML constants is implemented in the 18465AML parser, debugger, and disassembler. 18466 18467The internal memory tracking mechanism (leak detection code) has 18468been upgraded to reduce the memory overhead (a separate tracking 18469block is no longer allocated for each memory allocation), and now 18470supports all of the internal object caches. 18471 18472The data structures and code for the internal object caches have 18473been coelesced and optimized so that there is a single cache and 18474memory list data structure and a single group of functions that 18475implement generic cache management. This has reduced the code 18476size in both the debug and release versions of the subsystem. 18477 18478The DEBUG_PRINT macro(s) have been optimized for size and replaced 18479by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18480different, because it generates a single call to an internal 18481function. This results in a savings of about 90 bytes per 18482invocation, resulting in an overall code and data savings of about 1848316% in the debug version of the subsystem. 18484 18485 Linux: 18486 18487Fixed C3 disk corruption problems and re-enabled C3 on supporting 18488machines. 18489 18490Integrated low-level sleep code by Patrick Mochel. 18491 18492Further tweaked source code Linuxization. 18493 18494Other minor fixes. 18495 18496 ASL Compiler: 18497 18498Support for ACPI 2.0 variable length packages is fixed/completed. 18499 18500Fixed a problem where the optional length parameter for the ACPI 185012.0 ToString operator. 18502 18503Fixed multiple extraneous error messages when a syntax error is 18504detected within the declaration line of a control method. 18505 18506 ---------------------------------------- 18507Summary of changes for this label: 07_17_01 18508 18509ACPI CA Core Subsystem: 18510 18511Added a new interface named AcpiGetFirmwareTable to obtain any 18512ACPI table via the ACPI signature. The interface can be called at 18513any time during kernel initialization, even before the kernel 18514virtual memory manager is initialized and paging is enabled. This 18515allows kernel subsystems to obtain ACPI tables very early, even 18516before the ACPI CA subsystem is initialized. 18517 18518Fixed a problem where Fields defined with the AnyAcc attribute 18519could be resolved to the incorrect address under the following 18520conditions: 1) the field width is larger than 8 bits and 2) the 18521parent operation region is not defined on a DWORD boundary. 18522 18523Fixed a problem where the interpreter is not being locked during 18524namespace initialization (during execution of the _INI control 18525methods), causing an error when an attempt is made to release it 18526later. 18527 18528ACPI 2.0 support in the AML Interpreter has begun and will be 18529ongoing throughout the rest of this year. In this label, The Mod 18530operator is implemented. 18531 18532Added a new data type to contain full PCI addresses named 18533ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18534and Function values. 18535 18536 Linux: 18537 18538Enhanced the Linux version of the source code to change most 18539capitalized ACPI type names to lowercase. For example, all 18540instances of ACPI_STATUS are changed to acpi_status. This will 18541result in a large diff, but the change is strictly cosmetic and 18542aligns the CA code closer to the Linux coding standard. 18543 18544OSL Interfaces: 18545 18546The interfaces to the PCI configuration space have been changed to 18547add the PCI Segment number and to split the single 32-bit combined 18548DeviceFunction field into two 16-bit fields. This was 18549accomplished by moving the four values that define an address in 18550PCI configuration space (segment, bus, device, and function) to 18551the new ACPI_PCI_ID structure. 18552 18553The changes to the PCI configuration space interfaces led to a 18554reexamination of the complete set of address space access 18555interfaces for PCI, I/O, and Memory. The previously existing 18 18556interfaces have proven difficult to maintain (any small change 18557must be propagated across at least 6 interfaces) and do not easily 18558allow for future expansion to 64 bits if necessary. Also, on some 18559systems, it would not be appropriate to demultiplex the access 18560width (8, 16, 32,or 64) before calling the OSL if the 18561corresponding native OS interfaces contain a similar access width 18562parameter. For these reasons, the 18 address space interfaces 18563have been replaced by these 6 new ones: 18564 18565AcpiOsReadPciConfiguration 18566AcpiOsWritePciConfiguration 18567AcpiOsReadMemory 18568AcpiOsWriteMemory 18569AcpiOsReadPort 18570AcpiOsWritePort 18571 18572Added a new interface named AcpiOsGetRootPointer to allow the OSL 18573to perform the platform and/or OS-specific actions necessary to 18574obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18575interface will simply call down to the CA core to perform the low- 18576memory search for the table. On IA-64, the RSDP is obtained from 18577EFI. Migrating this interface to the OSL allows the CA core to 18578 18579remain OS and platform independent. 18580 18581Added a new interface named AcpiOsSignal to provide a generic 18582"function code and pointer" interface for various miscellaneous 18583signals and notifications that must be made to the host OS. The 18584first such signals are intended to support the ASL Fatal and 18585Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18586interface has been obsoleted. 18587 18588The definition of the AcpiFormatException interface has been 18589changed to simplify its use. The caller no longer must supply a 18590buffer to the call; A pointer to a const string is now returned 18591directly. This allows the call to be easily used in printf 18592statements, etc. since the caller does not have to manage a local 18593buffer. 18594 18595 18596 ASL Compiler, Version X2025: 18597 18598The ACPI 2.0 Switch/Case/Default operators have been implemented 18599and are fully functional. They will work with all ACPI 1.0 18600interpreters, since the operators are simply translated to If/Else 18601pairs. 18602 18603The ACPI 2.0 ElseIf operator is implemented and will also work 18604with 1.0 interpreters, for the same reason. 18605 18606Implemented support for ACPI 2.0 variable-length packages. These 18607packages have a separate opcode, and their size is determined by 18608the interpreter at run-time. 18609 18610Documentation The ACPI CA Programmer Reference has been updated to 18611reflect the new interfaces and changes to existing interfaces. 18612 18613 ------------------------------------------ 18614Summary of changes for this label: 06_15_01 18615 18616 ACPI CA Core Subsystem: 18617 18618Fixed a problem where a DWORD-accessed field within a Buffer 18619object would get its byte address inadvertently rounded down to 18620the nearest DWORD. Buffers are always Byte-accessible. 18621 18622 ASL Compiler, version X2024: 18623 18624Fixed a problem where the Switch() operator would either fault or 18625hang the compiler. Note however, that the AML code for this ACPI 186262.0 operator is not yet implemented. 18627 18628Compiler uses the new AcpiOsGetTimer interface to obtain compile 18629timings. 18630 18631Implementation of the CreateField operator automatically converts 18632a reference to a named field within a resource descriptor from a 18633byte offset to a bit offset if required. 18634 18635Added some missing named fields from the resource descriptor 18636support. These are the names that are automatically created by the 18637compiler to reference fields within a descriptor. They are only 18638valid at compile time and are not passed through to the AML 18639interpreter. 18640 18641Resource descriptor named fields are now typed as Integers and 18642subject to compile-time typechecking when used in expressions. 18643 18644 ------------------------------------------ 18645Summary of changes for this label: 05_18_01 18646 18647 ACPI CA Core Subsystem: 18648 18649Fixed a couple of problems in the Field support code where bits 18650from adjacent fields could be returned along with the proper field 18651bits. Restructured the field support code to improve performance, 18652readability and maintainability. 18653 18654New DEBUG_PRINTP macro automatically inserts the procedure name 18655into the output, saving hundreds of copies of procedure name 18656strings within the source, shrinking the memory footprint of the 18657debug version of the core subsystem. 18658 18659 Source Code Structure: 18660 18661The source code directory tree was restructured to reflect the 18662current organization of the component architecture. Some files 18663and directories have been moved and/or renamed. 18664 18665 Linux: 18666 18667Fixed leaking kacpidpc processes. 18668 18669Fixed queueing event data even when /proc/acpi/event is not 18670opened. 18671 18672 ASL Compiler, version X2020: 18673 18674Memory allocation performance enhancement - over 24X compile time 18675improvement on large ASL files. Parse nodes and namestring 18676buffers are now allocated from a large internal compiler buffer. 18677 18678The temporary .SRC file is deleted unless the "-s" option is 18679specified 18680 18681The "-d" debug output option now sends all output to the .DBG file 18682instead of the console. 18683 18684"External" second parameter is now optional 18685 18686"ElseIf" syntax now properly allows the predicate 18687 18688Last operand to "Load" now recognized as a Target operand 18689 18690Debug object can now be used anywhere as a normal object. 18691 18692ResourceTemplate now returns an object of type BUFFER 18693 18694EISAID now returns an object of type INTEGER 18695 18696"Index" now works with a STRING operand 18697 18698"LoadTable" now accepts optional parameters 18699 18700"ToString" length parameter is now optional 18701 18702"Interrupt (ResourceType," parse error fixed. 18703 18704"Register" with a user-defined region space parse error fixed 18705 18706Escaped backslash at the end of a string ("\\") scan/parse error 18707fixed 18708 18709"Revision" is now an object of type INTEGER. 18710 18711 18712 18713------------------------------------------ 18714Summary of changes for this label: 05_02_01 18715 18716Linux: 18717 18718/proc/acpi/event now blocks properly. 18719 18720Removed /proc/sys/acpi. You can still dump your DSDT from 18721/proc/acpi/dsdt. 18722 18723 ACPI CA Core Subsystem: 18724 18725Fixed a problem introduced in the previous label where some of the 18726"small" resource descriptor types were not recognized. 18727 18728Improved error messages for the case where an ASL Field is outside 18729the range of the parent operation region. 18730 18731 ASL Compiler, version X2018: 18732 18733 18734Added error detection for ASL Fields that extend beyond the length 18735of the parent operation region (only if the length of the region 18736is known at compile time.) This includes fields that have a 18737minimum access width that is smaller than the parent region, and 18738individual field units that are partially or entirely beyond the 18739extent of the parent. 18740 18741 18742 18743------------------------------------------ 18744Summary of changes for this label: 04_27_01 18745 18746 ACPI CA Core Subsystem: 18747 18748Fixed a problem where the namespace mutex could be released at the 18749wrong time during execution of AcpiRemoveAddressSpaceHandler. 18750 18751Added optional thread ID output for debug traces, to simplify 18752debugging of multiple threads. Added context switch notification 18753when the debug code realizes that a different thread is now 18754executing ACPI code. 18755 18756Some additional external data types have been prefixed with the 18757string "ACPI_" for consistency. This may effect existing code. 18758The data types affected are the external callback typedefs - e.g., 18759 18760WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18761 18762 Linux: 18763 18764Fixed an issue with the OSL semaphore implementation where a 18765thread was waking up with an error from receiving a SIGCHLD 18766signal. 18767 18768Linux version of ACPI CA now uses the system C library for string 18769manipulation routines instead of a local implementation. 18770 18771Cleaned up comments and removed TBDs. 18772 18773 ASL Compiler, version X2017: 18774 18775Enhanced error detection and reporting for all file I/O 18776operations. 18777 18778 Documentation: 18779 18780Programmer Reference updated to version 1.06. 18781 18782 18783 18784------------------------------------------ 18785Summary of changes for this label: 04_13_01 18786 18787 ACPI CA Core Subsystem: 18788 18789Restructured support for BufferFields and RegionFields. 18790BankFields support is now fully operational. All known 32-bit 18791limitations on field sizes have been removed. Both BufferFields 18792and (Operation) RegionFields are now supported by the same field 18793management code. 18794 18795Resource support now supports QWORD address and IO resources. The 1879616/32/64 bit address structures and the Extended IRQ structure 18797have been changed to properly handle Source Resource strings. 18798 18799A ThreadId of -1 is now used to indicate a "mutex not acquired" 18800condition internally and must never be returned by AcpiOsThreadId. 18801This reserved value was changed from 0 since Unix systems allow a 18802thread ID of 0. 18803 18804Linux: 18805 18806Driver code reorganized to enhance portability 18807 18808Added a kernel configuration option to control ACPI_DEBUG 18809 18810Fixed the EC driver to honor _GLK. 18811 18812ASL Compiler, version X2016: 18813 18814Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18815address space was set to 0, not 0x7f as it should be. 18816 18817 ------------------------------------------ 18818Summary of changes for this label: 03_13_01 18819 18820 ACPI CA Core Subsystem: 18821 18822During ACPI initialization, the _SB_._INI method is now run if 18823present. 18824 18825Notify handler fix - notifies are deferred until the parent method 18826completes execution. This fixes the "mutex already acquired" 18827issue seen occasionally. 18828 18829Part of the "implicit conversion" rules in ACPI 2.0 have been 18830found to cause compatibility problems with existing ASL/AML. The 18831convert "result-to-target-type" implementation has been removed 18832for stores to method Args and Locals. Source operand conversion 18833is still fully implemented. Possible changes to ACPI 2.0 18834specification pending. 18835 18836Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18837length. 18838 18839Fix for compiler warnings for 64-bit compiles. 18840 18841 Linux: 18842 18843/proc output aligned for easier parsing. 18844 18845Release-version compile problem fixed. 18846 18847New kernel configuration options documented in Configure.help. 18848 18849IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18850context" message. 18851 18852 OSPM: 18853 18854Power resource driver integrated with bus manager. 18855 18856Fixed kernel fault during active cooling for thermal zones. 18857 18858Source Code: 18859 18860The source code tree has been restructured. 18861 18862 18863 18864------------------------------------------ 18865Summary of changes for this label: 03_02_01 18866 18867 Linux OS Services Layer (OSL): 18868 18869Major revision of all Linux-specific code. 18870 18871Modularized all ACPI-specific drivers. 18872 18873Added new thermal zone and power resource drivers. 18874 18875Revamped /proc interface (new functionality is under /proc/acpi). 18876 18877New kernel configuration options. 18878 18879 Linux known issues: 18880 18881New kernel configuration options not documented in Configure.help 18882yet. 18883 18884 18885Module dependencies not currently implemented. If used, they 18886should be loaded in this order: busmgr, power, ec, system, 18887processor, battery, ac_adapter, button, thermal. 18888 18889Modules will not load if CONFIG_MODVERSION is set. 18890 18891IBM 600E - entering S5 may reboot instead of shutting down. 18892 18893IBM 600E - Sleep button may generate "Invalid <NULL> context" 18894message. 18895 18896Some systems may fail with "execution mutex already acquired" 18897message. 18898 18899 ACPI CA Core Subsystem: 18900 18901Added a new OSL Interface, AcpiOsGetThreadId. This was required 18902for the deadlock detection code. Defined to return a non-zero, 32- 18903bit thread ID for the currently executing thread. May be a non- 18904zero constant integer on single-thread systems. 18905 18906Implemented deadlock detection for internal subsystem mutexes. We 18907may add conditional compilation for this code (debug only) later. 18908 18909ASL/AML Mutex object semantics are now fully supported. This 18910includes multiple acquires/releases by owner and support for the 18911 18912Mutex SyncLevel parameter. 18913 18914A new "Force Release" mechanism automatically frees all ASL 18915Mutexes that have been acquired but not released when a thread 18916exits the interpreter. This forces conformance to the ACPI spec 18917("All mutexes must be released when an invocation exits") and 18918prevents deadlocked ASL threads. This mechanism can be expanded 18919(later) to monitor other resource acquisitions if OEM ASL code 18920continues to misbehave (which it will). 18921 18922Several new ACPI exception codes have been added for the Mutex 18923support. 18924 18925Recursive method calls are now allowed and supported (the ACPI 18926spec does in fact allow recursive method calls.) The number of 18927recursive calls is subject to the restrictions imposed by the 18928SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18929parameter. 18930 18931Implemented support for the SyncLevel parameter for control 18932methods (ACPI 2.0 feature) 18933 18934Fixed a deadlock problem when multiple threads attempted to use 18935the interpreter. 18936 18937Fixed a problem where the string length of a String package 18938element was not always set in a package returned from 18939AcpiEvaluateObject. 18940 18941Fixed a problem where the length of a String package element was 18942not always included in the length of the overall package returned 18943from AcpiEvaluateObject. 18944 18945Added external interfaces (Acpi*) to the ACPI debug memory 18946manager. This manager keeps a list of all outstanding 18947allocations, and can therefore detect memory leaks and attempts to 18948free memory blocks more than once. Useful for code such as the 18949power manager, etc. May not be appropriate for device drivers. 18950Performance with the debug code enabled is slow. 18951 18952The ACPI Global Lock is now an optional hardware element. 18953 18954 ASL Compiler Version X2015: 18955 18956Integrated changes to allow the compiler to be generated on 18957multiple platforms. 18958 18959Linux makefile added to generate the compiler on Linux 18960 18961 Source Code: 18962 18963All platform-specific headers have been moved to their own 18964subdirectory, Include/Platform. 18965 18966New source file added, Interpreter/ammutex.c 18967 18968New header file, Include/acstruct.h 18969 18970 Documentation: 18971 18972The programmer reference has been updated for the following new 18973interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18974 18975 ------------------------------------------ 18976Summary of changes for this label: 02_08_01 18977 18978Core ACPI CA Subsystem: Fixed a problem where an error was 18979incorrectly returned if the return resource buffer was larger than 18980the actual data (in the resource interfaces). 18981 18982References to named objects within packages are resolved to the 18983 18984full pathname string before packages are returned directly (via 18985the AcpiEvaluateObject interface) or indirectly via the resource 18986interfaces. 18987 18988Linux OS Services Layer (OSL): 18989 18990Improved /proc battery interface. 18991 18992 18993Added C-state debugging output and other miscellaneous fixes. 18994 18995ASL Compiler Version X2014: 18996 18997All defined method arguments can now be used as local variables, 18998including the ones that are not actually passed in as parameters. 18999The compiler tracks initialization of the arguments and issues an 19000exception if they are used without prior assignment (just like 19001locals). 19002 19003The -o option now specifies a filename prefix that is used for all 19004output files, including the AML output file. Otherwise, the 19005default behavior is as follows: 1) the AML goes to the file 19006specified in the DSDT. 2) all other output files use the input 19007source filename as the base. 19008 19009 ------------------------------------------ 19010Summary of changes for this label: 01_25_01 19011 19012Core ACPI CA Subsystem: Restructured the implementation of object 19013store support within the interpreter. This includes support for 19014the Store operator as well as any ASL operators that include a 19015target operand. 19016 19017Partially implemented support for Implicit Result-to-Target 19018conversion. This is when a result object is converted on the fly 19019to the type of an existing target object. Completion of this 19020support is pending further analysis of the ACPI specification 19021concerning this matter. 19022 19023CPU-specific code has been removed from the subsystem (hardware 19024directory). 19025 19026New Power Management Timer functions added 19027 19028Linux OS Services Layer (OSL): Moved system state transition code 19029to the core, fixed it, and modified Linux OSL accordingly. 19030 19031Fixed C2 and C3 latency calculations. 19032 19033 19034We no longer use the compilation date for the version message on 19035initialization, but retrieve the version from AcpiGetSystemInfo(). 19036 19037Incorporated for fix Sony VAIO machines. 19038 19039Documentation: The Programmer Reference has been updated and 19040reformatted. 19041 19042 19043ASL Compiler: Version X2013: Fixed a problem where the line 19044numbering and error reporting could get out of sync in the 19045presence of multiple include files. 19046 19047 ------------------------------------------ 19048Summary of changes for this label: 01_15_01 19049 19050Core ACPI CA Subsystem: 19051 19052Implemented support for type conversions in the execution of the 19053ASL Concatenate operator (The second operand is converted to 19054match the type of the first operand before concatenation.) 19055 19056Support for implicit source operand conversion is partially 19057implemented. The ASL source operand types Integer, Buffer, and 19058String are freely interchangeable for most ASL operators and are 19059converted by the interpreter on the fly as required. Implicit 19060Target operand conversion (where the result is converted to the 19061target type before storing) is not yet implemented. 19062 19063Support for 32-bit and 64-bit BCD integers is implemented. 19064 19065Problem fixed where a field read on an aligned field could cause a 19066read past the end of the field. 19067 19068New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 19069does not return a value, but the caller expects one. (The ASL 19070compiler flags this as a warning.) 19071 19072ASL Compiler: 19073 19074Version X2011: 190751. Static typechecking of all operands is implemented. This 19076prevents the use of invalid objects (such as using a Package where 19077an Integer is required) at compile time instead of at interpreter 19078run-time. 190792. The ASL source line is printed with ALL errors and warnings. 190803. Bug fix for source EOF without final linefeed. 190814. Debug option is split into a parse trace and a namespace trace. 190825. Namespace output option (-n) includes initial values for 19083integers and strings. 190846. Parse-only option added for quick syntax checking. 190857. Compiler checks for duplicate ACPI name declarations 19086 19087Version X2012: 190881. Relaxed typechecking to allow interchangeability between 19089strings, integers, and buffers. These types are now converted by 19090the interpreter at runtime. 190912. Compiler reports time taken by each internal subsystem in the 19092debug output file. 19093 19094 19095 ------------------------------------------ 19096Summary of changes for this label: 12_14_00 19097 19098ASL Compiler: 19099 19100This is the first official release of the compiler. Since the 19101compiler requires elements of the Core Subsystem, this label 19102synchronizes everything. 19103 19104------------------------------------------ 19105Summary of changes for this label: 12_08_00 19106 19107 19108Fixed a problem where named references within the ASL definition 19109of both OperationRegions and CreateXXXFields did not work 19110properly. The symptom was an AE_AML_OPERAND_TYPE during 19111initialization of the region/field. This is similar (but not 19112related internally) to the problem that was fixed in the last 19113label. 19114 19115Implemented both 32-bit and 64-bit support for the BCD ASL 19116functions ToBCD and FromBCD. 19117 19118Updated all legal headers to include "2000" in the copyright 19119years. 19120 19121 ------------------------------------------ 19122Summary of changes for this label: 12_01_00 19123 19124Fixed a problem where method invocations within the ASL definition 19125of both OperationRegions and CreateXXXFields did not work 19126properly. The symptom was an AE_AML_OPERAND_TYPE during 19127initialization of the region/field: 19128 19129 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19130[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19131(0x3005) 19132 19133Fixed a problem where operators with more than one nested 19134subexpression would fail. The symptoms were varied, by mostly 19135AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19136problem that has gone unnoticed until now. 19137 19138 Subtract (Add (1,2), Multiply (3,4)) 19139 19140Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19141previous build (The prefix part of a relative path was handled 19142incorrectly). 19143 19144Fixed a problem where Operation Region initialization failed if 19145the operation region name was a "namepath" instead of a simple 19146"nameseg". Symptom was an AE_NO_OPERAND error. 19147 19148Fixed a problem where an assignment to a local variable via the 19149indirect RefOf mechanism only worked for the first such 19150assignment. Subsequent assignments were ignored. 19151 19152 ------------------------------------------ 19153Summary of changes for this label: 11_15_00 19154 19155ACPI 2.0 table support with backwards support for ACPI 1.0 and the 191560.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19157the AML interpreter does NOT have support for the new 2.0 ASL 19158grammar terms at this time. 19159 19160All ACPI hardware access is via the GAS structures in the ACPI 2.0 19161FADT. 19162 19163All physical memory addresses across all platforms are now 64 bits 19164wide. Logical address width remains dependent on the platform 19165(i.e., "void *"). 19166 19167AcpiOsMapMemory interface changed to a 64-bit physical address. 19168 19169The AML interpreter integer size is now 64 bits, as per the ACPI 191702.0 specification. 19171 19172For backwards compatibility with ACPI 1.0, ACPI tables with a 19173revision number less than 2 use 32-bit integers only. 19174 19175Fixed a problem where the evaluation of OpRegion operands did not 19176always resolve them to numbers properly. 19177 19178------------------------------------------ 19179Summary of changes for this label: 10_20_00 19180 19181Fix for CBN_._STA issue. This fix will allow correct access to 19182CBN_ OpRegions when the _STA returns 0x8. 19183 19184Support to convert ACPI constants (Ones, Zeros, One) to actual 19185values before a package object is returned 19186 19187Fix for method call as predicate to if/while construct causing 19188incorrect if/while behavior 19189 19190Fix for Else block package lengths sometimes calculated wrong (if 19191block > 63 bytes) 19192 19193Fix for Processor object length field, was always zero 19194 19195Table load abort if FACP sanity check fails 19196 19197Fix for problem with Scope(name) if name already exists 19198 19199Warning emitted if a named object referenced cannot be found 19200(resolved) during method execution. 19201 19202 19203 19204 19205 19206------------------------------------------ 19207Summary of changes for this label: 9_29_00 19208 19209New table initialization interfaces: AcpiInitializeSubsystem no 19210longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19211necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19212>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19213AcpiLoadTables 19214 19215Note: These interface changes require changes to all existing OSDs 19216 19217The PCI_Config default address space handler is always installed 19218at the root namespace object. 19219 19220------------------------------------------- 19221Summary of changes for this label: 09_15_00 19222 19223The new initialization architecture is implemented. New 19224interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19225AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19226 19227(Namespace is automatically loaded when a table is loaded) 19228 19229The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1923052 bytes to 32 bytes. There is usually one of these for every 19231namespace object, so the memory savings is significant. 19232 19233Implemented just-in-time evaluation of the CreateField operators. 19234 19235Bug fixes for IA-64 support have been integrated. 19236 19237Additional code review comments have been implemented 19238 19239The so-called "third pass parse" has been replaced by a final walk 19240through the namespace to initialize all operation regions (address 19241spaces) and fields that have not yet been initialized during the 19242execution of the various _INI and REG methods. 19243 19244New file - namespace/nsinit.c 19245 19246------------------------------------------- 19247Summary of changes for this label: 09_01_00 19248 19249Namespace manager data structures have been reworked to change the 19250primary object from a table to a single object. This has 19251resulted in dynamic memory savings of 3X within the namespace and 192522X overall in the ACPI CA subsystem. 19253 19254Fixed problem where the call to AcpiEvFindPciRootBuses was 19255inadvertently left commented out. 19256 19257Reduced the warning count when generating the source with the GCC 19258compiler. 19259 19260Revision numbers added to each module header showing the 19261SourceSafe version of the file. Please refer to this version 19262number when giving us feedback or comments on individual modules. 19263 19264The main object types within the subsystem have been renamed to 19265clarify their purpose: 19266 19267ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19268ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19269ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19270 19271NOTE: no changes to the initialization sequence are included in 19272this label. 19273 19274------------------------------------------- 19275Summary of changes for this label: 08_23_00 19276 19277Fixed problem where TerminateControlMethod was being called 19278multiple times per method 19279 19280Fixed debugger problem where single stepping caused a semaphore to 19281be oversignalled 19282 19283Improved performance through additional parse object caching - 19284added ACPI_EXTENDED_OP type 19285 19286------------------------------------------- 19287Summary of changes for this label: 08_10_00 19288 19289Parser/Interpreter integration: Eliminated the creation of 19290complete parse trees for ACPI tables and control methods. 19291Instead, parse subtrees are created and then deleted as soon as 19292they are processed (Either entered into the namespace or executed 19293by the interpreter). This reduces the use of dynamic kernel 19294memory significantly. (about 10X) 19295 19296Exception codes broken into classes and renumbered. Be sure to 19297recompile all code that includes acexcep.h. Hopefully we won't 19298have to renumber the codes again now that they are split into 19299classes (environment, programmer, AML code, ACPI table, and 19300internal). 19301 19302Fixed some additional alignment issues in the Resource Manager 19303subcomponent 19304 19305Implemented semaphore tracking in the AcpiExec utility, and fixed 19306several places where mutexes/semaphores were being unlocked 19307without a corresponding lock operation. There are no known 19308semaphore or mutex "leaks" at this time. 19309 19310Fixed the case where an ASL Return operator is used to return an 19311unnamed package. 19312 19313------------------------------------------- 19314Summary of changes for this label: 07_28_00 19315 19316Fixed a problem with the way addresses were calculated in 19317AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19318manifested itself when a Field was created with WordAccess or 19319DwordAccess, but the field unit defined within the Field was less 19320 19321than a Word or Dword. 19322 19323Fixed a problem in AmlDumpOperands() module's loop to pull 19324operands off of the operand stack to display information. The 19325problem manifested itself as a TLB error on 64-bit systems when 19326accessing an operand stack with two or more operands. 19327 19328Fixed a problem with the PCI configuration space handlers where 19329context was getting confused between accesses. This required a 19330change to the generic address space handler and address space 19331setup definitions. Handlers now get both a global handler context 19332(this is the one passed in by the user when executing 19333AcpiInstallAddressSpaceHandler() and a specific region context 19334that is unique to each region (For example, the _ADR, _SEG and 19335_BBN values associated with a specific region). The generic 19336function definitions have changed to the following: 19337 19338typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19339UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19340*HandlerContext, // This used to be void *Context void 19341*RegionContext); // This is an additional parameter 19342 19343typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19344RegionHandle, UINT32 Function, void *HandlerContext, void 19345**RegionContext); // This used to be **ReturnContext 19346 19347------------------------------------------- 19348Summary of changes for this label: 07_21_00 19349 19350Major file consolidation and rename. All files within the 19351interpreter have been renamed as well as most header files. This 19352was done to prevent collisions with existing files in the host 19353OSs -- filenames such as "config.h" and "global.h" seem to be 19354quite common. The VC project files have been updated. All 19355makefiles will require modification. 19356 19357The parser/interpreter integration continues in Phase 5 with the 19358implementation of a complete 2-pass parse (the AML is parsed 19359twice) for each table; This avoids the construction of a huge 19360parse tree and therefore reduces the amount of dynamic memory 19361required by the subsystem. Greater use of the parse object cache 19362means that performance is unaffected. 19363 19364Many comments from the two code reviews have been rolled in. 19365 19366The 64-bit alignment support is complete. 19367 19368------------------------------------------- 19369Summary of changes for this label: 06_30_00 19370 19371With a nod and a tip of the hat to the technology of yesteryear, 19372we've added support in the source code for 80 column output 19373devices. The code is now mostly constrained to 80 columns or 19374less to support environments and editors that 1) cannot display 19375or print more than 80 characters on a single line, and 2) cannot 19376disable line wrapping. 19377 19378A major restructuring of the namespace data structure has been 19379completed. The result is 1) cleaner and more 19380understandable/maintainable code, and 2) a significant reduction 19381in the dynamic memory requirement for each named ACPI object 19382(almost half). 19383 19384------------------------------------------- 19385Summary of changes for this label: 06_23_00 19386 19387Linux support has been added. In order to obtain approval to get 19388the ACPI CA subsystem into the Linux kernel, we've had to make 19389quite a few changes to the base subsystem that will affect all 19390users (all the changes are generic and OS- independent). The 19391effects of these global changes have been somewhat far reaching. 19392Files have been merged and/or renamed and interfaces have been 19393renamed. The major changes are described below. 19394 19395Osd* interfaces renamed to AcpiOs* to eliminate namespace 19396pollution/confusion within our target kernels. All OSD 19397interfaces must be modified to match the new naming convention. 19398 19399Files merged across the subsystem. A number of the smaller source 19400and header files have been merged to reduce the file count and 19401increase the density of the existing files. There are too many 19402to list here. In general, makefiles that call out individual 19403files will require rebuilding. 19404 19405Interpreter files renamed. All interpreter files now have the 19406prefix am* instead of ie* and is*. 19407 19408Header files renamed: The acapi.h file is now acpixf.h. The 19409acpiosd.h file is now acpiosxf.h. We are removing references to 19410the acronym "API" since it is somewhat windowsy. The new name is 19411"external interface" or xface or xf in the filenames.j 19412 19413 19414All manifest constants have been forced to upper case (some were 19415mixed case.) Also, the string "ACPI_" has been prepended to many 19416(not all) of the constants, typedefs, and structs. 19417 19418The globals "DebugLevel" and "DebugLayer" have been renamed 19419"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19420 19421All other globals within the subsystem are now prefixed with 19422"AcpiGbl_" Internal procedures within the subsystem are now 19423prefixed with "Acpi" (with only a few exceptions). The original 19424two-letter abbreviation for the subcomponent remains after "Acpi" 19425- for example, CmCallocate became AcpiCmCallocate. 19426 19427Added a source code translation/conversion utility. Used to 19428generate the Linux source code, it can be modified to generate 19429other types of source as well. Can also be used to cleanup 19430existing source by removing extraneous spaces and blank lines. 19431Found in tools/acpisrc/* 19432 19433OsdUnMapMemory was renamed to OsdUnmapMemory and then 19434AcpiOsUnmapMemory. (UnMap became Unmap). 19435 19436A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19437When set to one, this indicates that the caller wants to use the 19438 19439semaphore as a mutex, not a counting semaphore. ACPI CA uses 19440both types. However, implementers of this call may want to use 19441different OS primitives depending on the type of semaphore 19442requested. For example, some operating systems provide separate 19443 19444"mutex" and "semaphore" interfaces - where the mutex interface is 19445much faster because it doesn't have all the overhead of a full 19446semaphore implementation. 19447 19448Fixed a deadlock problem where a method that accesses the PCI 19449address space can block forever if it is the first access to the 19450space. 19451 19452------------------------------------------- 19453Summary of changes for this label: 06_02_00 19454 19455Support for environments that cannot handle unaligned data 19456accesses (e.g. firmware and OS environments devoid of alignment 19457handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19458been added (via configurable macros) in these three areas: - 19459Transfer of data from the raw AML byte stream is done via byte 19460moves instead of word/dword/qword moves. - External objects are 19461aligned within the user buffer, including package elements (sub- 19462objects). - Conversion of name strings to UINT32 Acpi Names is now 19463done byte-wise. 19464 19465The Store operator was modified to mimic Microsoft's 19466implementation when storing to a Buffer Field. 19467 19468Added a check of the BM_STS bit before entering C3. 19469 19470The methods subdirectory has been obsoleted and removed. A new 19471file, cmeval.c subsumes the functionality. 19472 19473A 16-bit (DOS) version of AcpiExec has been developed. The 19474makefile is under the acpiexec directory. 19475