1---------------------------------------- 28 April 2026. Summary of changes for version 20260804: 3 4Major changes: 5 6� ACPI Table Enhancements: 7Updated IORT and MADT template compilations to add new IWB and GICv5 translator/router/ITS entries. Introduced full support for the new DTPR table, including compiler and disassembler handling, template fixes, and register structure refinements. � Jose Marinho and Michal Camacho Romero 8 9� Expanded IDs, GUIDs, and Methods: 10Added Framework Computer Hardware IDs, modern standby _DSM GUIDs, and TPM2 start methods. Updated _DSM Arg3 formatting and _CPC handling to align with newer ACPI specifications and avoid Linux compatibility warnings. � Daniel Schaefer and Saket Dumbre 11 12� Compiler, Disassembler, and Tooling Improvements: 13Enhanced the ASL compiler and disassembler with External() deduplication, alias node support, improved validation of malformed inputs, and comma-separated Package output. Updated acpisrc to recognize missing structures and improved parse tree walk termination logic. � ikaros and Pawel Chmielewski 14 15� Security and Stability Fixes: 16Fixed multiple critical issues, including heap-buffer-overflows, use-after-free, NULL pointer dereferences, integer overflows, and out-of-bounds accesses across AML parsing, interpretation, and table handling code paths. � ikaros and Weiming Shi 17 18� Resource and Register Refactoring: 19Corrected I2C LVR resource descriptor handling and refactored TPR Base/Limit registers to use compatible bitmask representations, with additional validation and cleanup across DTPR-related code. � Akhil R and Michal Camacho Romero 20 21� General Cleanup and Build Fixes: 22Fixed a syntax error caused by a stray character, corrected spelling issues, improved comment alignment and formatting, updated dummy compiler metadata, and disabled excessive MSVC bitfield warnings (C4214) to improve build clarity. � Colin Ian King and Saket Dumbre 23 24 25---------------------------------------- 2612 December 2025. Summary of changes for version 20251212: 27 28Major changes: 29 30Update many existing ACPI tables to follow the ACPI 6.6 Specification 31changes and/or newly approved ASWG ECRs - multiple contributors 32 33Add a few new ACPI tables: IOVT, SWFT, KEYP - multiple contributors 34 35Add many new UUIDs, Hardware/PnP/ACPI IDs - Armin Wolf and Pawel 36Chmielewski 37 38Support a few new special methods (_xxx format) and modify few existing 39ones to stay compliant with the latest ACPI Specification changes 40 41Improve existing tools/utilities and fix/clean up some problematic usages 42along with patching certain vulnerabilities 43 44 45---------------------------------------- 467 August 2025. Summary of changes for version 20250807: 47 48Major changes: 49 50Added option to skip the global lock for SMM - Huacai Chen 51 52Fixed non-NUL terminated string implementations - Ahmed Salem 53 54Fixed CCEL and CDAT templates - Ahmed Salem 55 56Fixed a major Linux kernel bug (UAF) that was triggered by unequal number 57of method parameters (definition) vs arguments (invocation) in different 58places - Peter Williams, Hans de Goede, Rafael Wysocki 59 60Define distinct D3 states (D3Hot and D3Cold) that help clarify the device 61behavior support - Aymeric Wibo 62 63A few cleanups, improvements to existing table supports, small fixes, 64spelling corrections etc. 65 66 67---------------------------------------- 684 April 2025. Summary of changes for version 20250404: 69 70Major changes: 71 72Update all the copyright continuation year to 2025 in the license header 73of all files 74 75Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony 76Luck & V L Sunil) 77 78Add a license file to the project which is a great improvement (Dionna 79Glaze) 80 81Update DMAR and TPM2 tables to support their latest versions (Alexey 82Neyman and Stuart Yoder) 83 84A few fixes including local cache allocation, FFixedHW Region, attribute 85packing, string vs. non-string char array, vsnprintf()etc. along with 86some comments, spelling errors and code alignment (multiple awesome 87contributors) 88 89 90---------------------------------------- 9112 December 2024. Summary of changes for version 20241212: 92 93Major changes: 94 95Fix 2 critical CVE addressing memory leaks - Seunghun Han 96 97EINJ V2 updates - Zaid Alali (Ampere Computing) 98 99CDAT updates - Ira Weiny (Intel Corporation) 100 101Fix mutex handling, do not release ones that were never acquired - Daniil 102Tatianin 103 104Experiment with new tag name format Ryyyy_mm_dd to solve chronological 105sorting problems 106 107 108---------------------------------------- 10927 September 2024. Summary of changes for version 20240927: 110 111Major changes: 112 113Fix the acpixf.h file which caused issues for the last release (before 114this) 20240827 115 116Fix the pointer offset for the SLIC table 117 118Verify the local environment and GitHub commits are all in sync which was 119a problem with the second from last release (before this)20240322 (aka 12020240323 - date issue) 121 122 123 124---------------------------------------- 12527 August 2024. Summary of changes for version 20240827: 126 127Major changes: 128 129Fix the PHAT table working: ensure that the PHAT firmware health record 130offset works correctly, fix various sub-table offsets, prevent 131segmentation faults when encountering invalid device paths. Contributed 132by: Armin Wolf <W_Armin@gmx.de> 133 134Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin 135<99danilt@gmail.com> 136 137Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone 138(Fedora) <ahs3@ahs3.net> 139 140Add support for QWordPCC and DWordPCC by Jose Marinho (ARM) 141 142Fix the integer to hex string conversions by Armin Wolf 143 144Detecting FACS in reduced HW mode and allowing setting waking vector 145thereby waking up from S3 state 146 147Fixing issues with crossing page boundaries when mapping operation 148regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD) 149 150Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables 151 152Fix multiple issues with table parsing, compilation and disassembly by 153Myra DeMere (Google) 154 155Allow for more flexibility in _DSM usage. 156 157 158---------------------------------------- 15922 March 2024. Summary of changes for version 20240322: 160 161Major changes: 162 163Update all the license header year from 2023 to 2024. 164 165Fix table argument ordering to work properly with iasl. 166 167Get rid of the annoying repeated warning types in MSVC and Windows. 168 169Fix a test in ASLTS with edge case failure. 170 171Fix a couple of issues with how GPEs are counted and enabled. 172 173Add new tables for various architectures/OS, mainly RISC-V and also 174update many more. 175 176Add an option to either make the output deterministic or non- 177deterministic. 178 179Remove redundant checks, duplicated code and fix spellings in various 180files. 181 182Fix flex arrays for C++ compilers and also make ACPICA overall more 183compatible with different compilers which throw warnings related to 184memory sanitization etc. 185 186 187---------------------------------------- 18828 June 2023. Summary of changes for version 20230628: 189 1900) Global changes: 191 192Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: 193?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of 194range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag 195to Timer (since there are no runtime arguments). Reported by: Abhishek 196Mainkar abmainkar@nvidia.com. 197 198Added a define for size of acpi_srat_generic_affinity DeviceHandle. 199Replaced a magic number with a define. The Linux kernel code will utilize 200this. Reported by Dave Jiang dave.jiang@intel.com. 201 202Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5. 203 2041) ACPICA kernel-resident subsystem: 205 206Added port definitions for CDAT SSLBIS. Add upstream port and any port 207definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com. 208 209Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> 210ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang 211dave.jiang@intel.com. 212 2131) ACPICA kernel-resident subsystem: 214 215Fix GCC 12 dangling-pointer warning. We're storing a persistent pointer 216to an ephemeral local variable which technically is a dangling pointer 217and the compiler is correct. However, since we never indirect the 218pointer, this is a safe operation and we can suppress the warning. 219 220Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly 221so we must include it explicitly or we won't have the type definition for 222uintptr_t. 223 2242) iASL Compiler/Disassembler and ACPICA tools:. 225 226IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table 227is updated with new nodes. Add compile and dump functionality for these 228new structures. 229 230AcpiExec: Added a new command, ?interrupt?. The Interrupt command 231simulates an interrupt with a IntID (GSIV) equal to the first argument of 232the call/invocation. The acpiexec code simulates the behavior by OSPM: 233execute the _EVT method of the GED device associated with that IntID. 234Submitted by: Jose Marinho jose.marinho@arm.com. 235 236AcpiExec: Detect GED device and keep track of _EVT. The GED device is 237described by a _HID of ACPI0013. This code traverses the namespace 238identifying all GED devices. For each GED device in the namespace we 239record the Interrupt object and the _EVT method. This information is used 240when an interrupt is simulated via the ?interrupt? command. Submitted by: 241Jose Marinho jose.marinho@arm.com. 242---------------------------------------- 24331 March 2023. Summary of changes for version 20230331: 244 245This release is available at https://acpica.org/downloads 246 2470) Global changes: 248 249 250Update all copyright notices to the year 2023. This effects all source 251modules, as well as utility signons. 252Add OS-specific support for Zephyr RTOS. 253Fix miscellaneous code that accesses various objects. 254Remove some dead code. 255Add C ?Flexible Array? support. 256Add support for 64 bit LoongArch compilation. 257Add first batch of RISC-V related definitions. 258Performed a global automated update to remove tabs, fix indentation 259issues, etc. 260 2611) ACPICA kernel-resident subsystem: 262 263hwvalid: Drop port I/O validation. 264 2652) ACPICA tools and utilities: 266 267iASL: Added full macro support in the preprocessor. Example: 268#define ABCD(a,b,c,d) a+b+c-d 269 270Known macro support limitations (at this time): 271 No support for multi-line #define macros (backslash continuation 272lines) 273 No support for the C-style ternary operator 274 No support for the stringizing operator (#) 275 No support for the concatenation (token pasting) operator (##) 276 No support for variable number of macro arguments 277 278Add support for AMD Secure Processor Table (ASPT) version 1. 279Add support for Arm's MPAM ACPI table version 2. 280ACPI 6.5: MADT: add support for trace buffer extension in GICC. 281Headers: Delete bogus NodeArray array of pointers from AEST table. 282PHAT table support is still ongoing. 283 284 285---------------------------------------- 28620 October 2022. Summary of changes for version 20221020: 287 288This release is available at https://acpica.org/downloads 289 2900) Global changes: 291 292Allow disabling of -Werror. For distro maintainers having `-Werror` can 293delay update of GCC. Since every GCC release might add new warnings that 294were not yet captured, it might break the build of packages. With this 295change, distros can now build with `NOWERROR=TRUE` instead of patching 296either the errors or the makefiles. The default behavior keeps on using 297`-Werror`. 298 2991) ACPICA kernel-resident subsystem: 300 301Added support for FFH Operation Region special context data. FFH(Fixed 302Function Hardware) Opregion is approved to be added in ACPI 6.5 via code 303first approach[1]. It requires special context data similar to GPIO and 304Generic Serial Bus as it needs to know platform specific offset and 305length. 306 307Reverted this commit "executer/exsystem: Warn about sleeps greater than 30810 ms." Due to user complaints about valid sleeps greater than 10ms seen 309in some existing machines -- generating lots of warnings. 310 311Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that 312EBDA region must be at least 1KiB in size. Because this is not 313guaranteed, it might happen that while scanning the memory for RSDP 314pointer, the kernel touches memory above 640KiB. This is unwanted as the 315VGA memory range may not be decoded or even present when running under 316virtualization. 317 318Check that EBDA pointer is in valid memory. If the memory at 0x40e is 319uninitialized, the retrieved physical memory address of EBDA may be 320beyond the low memory (i.e. above 640K). If so, the kernel may 321unintentionally access the VGA memory, that might not be decoded or even 322present in case of virtualization. 323 3242) iASL Compiler/Disassembler and ACPICA tools: 325 326Completed the existing partial support for the CDAT "table". Although 327this isn't technically an ACPI table (It doesn't go into the XSDT), it is 328possible to support this table in the Data Table compiler. Created one 329new file, "utilities/utcksum.c", used to centralize checksum 330generation/validation into one location. Includes changes to makefiles 331and MSVC project files. 332 333Updated support for the IORT table - update to version E.e 334 335Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table 336 337iASL: Added CCEL table to both compiler/disassembler. 338 339iASL: NHLT table: Fixed compilation of optional undocumented fields 340 341iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 342("iASL: Add CCEL table to both compiler/disassembler") introduced the 343iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL 344table member reference. To fix it, change ACPI_TDEL_OFFSET with 345ACPI_CCEL_OFFSET. 346 347---------------------------------------- 34831 March 2022. Summary of changes for version 20220331: 349 3500) Global changes: 351 352Update all copyright notices to the year 2022. This effects all source 353modules, as well as utility signons. 354 355 3561) ACPICA kernel-resident subsystem: 357 358For the ASL Sleep() operator, issue a warning if the sleep value is 359greater than 10 Milliseconds. Quick boottime is important, so warn about 360sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 361ms, so excessive delays should be called out. 10 ms is chosen randomly, 362but three of such delays would already make up ten percent of the 363boottime. 364 365Namespace: Avoid attempting to walk the Namespace if the Namespace does 366not exist. 367 368AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the 369LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a 370pass/fail integer. Now load returns a pass/fail integer, as well as 371storing the return value in an optional 2nd argument. 372 373Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid 374"performing pointer subtraction with a null pointer has undefined 375behavior" compiler warnings, use uintptr_t and offsetof() that are always 376available during Linux kernel builds to define ACPI_UINTPTR_T and the 377ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code 378in the Linux kernel. 379 380Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted 381by superm1. 382 383executer/exsystem: Inform users about ACPI spec violation for the Stall() 384operator. Values greater than 100 microseconds violate the ACPI 385specification, so warn users about it. From the ACPI Specification 386version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: 387> The implementation of Stall is OS-specific, but must not relinquish 388> control of the processor. Because of this, delays longer than 100 389> microseconds must use Sleep instead of Stall. 390 391 3922) iASL Compiler/Disassembler and ACPICA tools: 393 394Data Table Compiler/Disassembler: Add support for the APMT table - ARM 395Performance Monitoring Unit table. Submitted by @bwicaksononv. 396 397Data Table Compiler/Disassembler: For MADT, add support for the OEM- 398defined subtables (Types 0x80-0x7F). 399 400Data Table Compiler: Fixed a problem with support for the SDEV table, 401where a subtable Length was not computed correctly. 402 403Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT 404Acpi table support. 405 406Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and 407add template. Submitted by MasterDrogo. 408 409Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: 410iASL/NHLT: Rename linux specific structures to DeviceInfo to improve 411readability of the code. 412iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. 413Undocumented bytes at the end of Endpoint Descriptor can be present 414independently of Linux-specific structures. Their size can also vary. 415iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 416bytes of size and then an amount of bytes specified by size. All of the 417terminators that I've seen had a size equal to 4, but theoretically it 418can vary. 419 420iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C). 421 422iASL: Remove a remark due to excessive output. Removed a remark for 423duplicate Offset() operators, due to a user complaint. 424 425---------------------------------------- 42617 December 2021. Summary of changes for version 20211217: 427 4281) ACPICA kernel-resident subsystem: 429 430Hardware: Do not flush CPU cache when entering S4 and S5. According to 431ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to 432S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of 433the sleep state. Blind cache flush on entering S5 causes problems for 434TDX. 435 436Avoid subobject buffer overflow when validating RSDP signature. Since the 437Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to 438it is only to a 4-char array, and so trying to read past the 4th 439character, as will be done when it is an RSDP, reads beyond the bounds of 440the accessed member. Contributed by jrtc27. 441 442Add support for PCC Opregion special context data. PCC Opregion added in 443ACPIC 6.3 requires special context data similar to GPIO and Generic 444Serial Bus as it needs to know the internal PCC buffer and its length as 445well as the PCC channel index when the opregion handler is being executed 446by the OSPM. Adds support for the special context data needed by PCC 447Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com> 448 4492) iASL Compiler/Disassembler and ACPICA tools: 450 451iASL: Completed compiler support for the NHLT ACPI table. 452 453iASL/NHLT table: Fixed a reported problem where a fault would occur 454during disassembly of a "Linux-Specific" section if the "Specific Data" 455part was not present. 456 457iASL: Added full support (compiler and disassembler) for the AGDI ACPI 458table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>. 459 460iASL: Added full support for the TDEL ACPI table. 461 462iASL table compiler: FADT support updates: 4631) Allow the 32-bit DSDT address to be zero. 4642) Issue error if both the 32-bit and 64-bit DSDT addresses are zero. 465 466iASL: Fix unaligned accesses to local cache allocations. Contributed by 467jrtc27. 468 469iASL: Open binary input files in binary mode, not text mode Affects 470binary input AML files, as well as binary data table files, for 471disassembly. 472 473---------------------------------------- 47430 September 2021. Summary of changes for version 20210930: 475 476This release is available at https://acpica.org/downloads 477 4781) ACPICA kernel-resident subsystem: 479 480Hardware: Avoid evaluating methods too early during system resume. During 481wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called 482and it tries to get memory from the OS in order to evaluate a control 483method, but if KFENCE is enabled in the Linux kernel, the memory 484allocation attempt causes an IRQ work to be queued and a self-IPI to be 485sent to the CPU running the code which requires the memory controller to 486be ready, so if that happens too early in the wakeup path, it doesn't 487work. 488 489Prevent that from taking place by calling AcpiGetSleepTypeData() for S0 490upfront, when preparing to enter a given sleep state, and saving the data 491obtained by it for later use during system wakeup. 492 493Added a new _OSI string, "Windows 2020". Posted by superm1. 494 4952) iASL Compiler/Disassembler and ACPICA tools: 496 497iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS 498objects: 499New/latest rules: Under a Device Object: 500 1) If _PRS is present, must have _CRS and _SRS 501 2) If _SRS is present, must have _PRS (_PRS requires _CRS and 502_SRS) 503 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS 504requires _CRS and _SRS) 505 4) If _SRS is present, probably should have a _DIS (Remark only) 506 507iASL table disassembler: Added disassembly support for the NHLT ACPI 508table. Note: support for Vendor-defined microphone arrays and SNR 509extensions are not supported at this time -- mostly due to a lack of 510example tables. Actual compiler support for NHLT is forthcoming. 511 512Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It 513uses the same subtable structure as the existing Generic Initiator 514Affinity type. 515 516Added the flag for online capable in the MADT, introduced in ACPI 6.3. 517Posted by superm1. 518 5193) ACPICA documentation: Updated the legal info (that appears at the 520start of the Documents) to clarify distribution rights that are granted. 521 522 523---------------------------------------- 52430 July 2021. Summary of changes for version 20210730: 525 526This release is available at https://acpica.org/downloads 527 5281) ACPICA kernel-resident subsystem: 529 5302) iASL Compiler/Disassembler and ACPICA tools: 531 532iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). 533 Under the Device Object: 534 1) If _DIS is present, must have a _CRS and _SRS 535 2) If _PRS is present, must have a _CRS, _DIS, and _SRS 536 3) If _SRS is present, must have a _CRS and _DIS 537A warning will be issued for each of these cases. 538Note: For existing ASL/projects, these warnings may be disabled by 539specifying this on the command line: 540"-vw 3141" 541 542iASL Table Disassembler/Table compiler: Fix for WPBT table with no 543command-line arguments. Handle the case where the Command-line 544Arguments table field does not exist (zero). 545 546Headers: Add new DBG2 Serial Port Subtypes 547The Microsoft Debug Port Table 2 (DBG2) specification revision 548September 21, 2020 comprises additional Serial Port Subtypes [1]. 549Reflect that in the actbl1.h header file. Submitted by: 550semihalf-wojtas-marcin 551 552iASL: Add full support for the AEST table (data compiler) 553Includes support in the table compiler and the disassembler. 554 555Add PRMT module header to facilitate parsing. 556This structure is used in to parse PRMT in other Operating Systems 557that relies on using subtable headers in order to parse ACPI tables. 558Although the PRMT doesn't have "subtables" it has a list of module 559information structures that act as subtables. 560 561iASL: Table disassembler: Add missing strings to decode subtable types. 562Includes the MADT and CEDT tables. 563 564 565---------------------------------------- 56604 June 2021. Summary of changes for version 20210604: 567 5681) ACPICA kernel-resident subsystem: 569 570Cleaned up (delete) the context mutex during local address handler object 571deletion. 572 573Fixed a memory leak caused by the _CID repair function. 574 575Added support for PlatformRtMechanism OperationRegion handler. Adds a new 576utility function, AcpiUtConvertUuidToString. Writing a buffer to a 577PlatformRtMechanism fieldunit invokes a bidirectional transaction. The 578input buffer contains 26 bytes containing 9 bytes of status, a command 579byte and a 16-byte UUID. This change will simply pass this incoming 580buffer to a handler registered by the OS. 581 5822) iASL Compiler/Disassembler and ACPICA tools: 583 584Added full support for the PRMT ACPI table (Platform Runtime Mechanism 585Table). Includes support in the iASL compiler, the disassembler, and the 586template generator. 587 588Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. 589 590Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI 591table. 592 593Added full support for the SVKL (Storage Volume Key Location Table) ACPI 594table. Header file support from Kuppuswamy Sathyanarayanan 595<sathyanarayanan.kuppuswamy@linux.intel.com>. 596 597Completed full support for the IVRS (I/O Virtualization Reporting 598Structure) ACPI table. Added compiler support for IVRS, updated 599disassembler support. Adds a new utility, UtIsIdInteger, to determine if 600a HID/CID is an integer or a string. 601 602Headers: Added more structs to the CEDT table: CXL fixed memory window 603structure. 604 605ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. 606 607---------------------------------------- 60831 March 2021. Summary of changes for version 20210331: 609 610This release is available at https://acpica.org/downloads, and includes 611all ACPI 6.4 support 612 6131) ACPICA kernel-resident subsystem: 614ACPI 6.4: iASL: deprecate DDBHandleObj keyword 615Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 616allocating an object using kmalloc(), but then frees it 617using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 618Fixed a race condition in generic serial bus operation region handler. 619Fixed by Hans de Goede. 620 6212) iASL Compiler/Disassembler and ACPICA tools: 622 623ACPI 6.4: NFIT: add Location Cookie field 624ACPI 6.4: HMAT: add new fields/flags 625ACPI 6.4: Add new flags in SRAT 626ACPI 6.4: add SDEV secure access components 627ACPI 6.4: add Csi2Bus resource template 628ACPI 6.4: add support for PHAT table 629ACPI 6.4: add support for PMTT table 630Add disassembly support for the IVRS table. Compilation of the table is 631not yet complete. 632Fixed a potential infinite loop due to type mismatch. The for-loop is 633using a UINT8 counter and comparing the upper 634limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 635the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 636will wrap around to zero and the loop will never exit. I suspect 637the AslGbl_ExpectedMessagesIndex is never that high, but fixing 638this does future proof the code and cleans up static analysis 639warnings.Colin King. 640iASL/TableCompiler: update it with IORT table E.b revision changes. From 641shamiali2008. 642iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 643off-by: Jean-Philippe Brucker. 644iASL/TableCompiler: Add compilation support for CEDT table. Also, update 645the CEDT template. 646 647---------------------------------------- 64805 January 2021. Summary of changes for version 20210105: 649 650This release is available at https://acpica.org/downloads 651 652 6531) ACPICA kernel-resident subsystem: 654 655Updated all copyrights to 2021. This affects all ACPICA source code 656modules. 657 6582) iASL Compiler/Disassembler and ACPICA tools: 659 660ASL test suite (ASLTS): Updated all copyrights to 2021. 661 662Tools and utilities: Updated all signon copyrights to 2021. 663 664iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 665MTMR. Al Stone. 666 667 668---------------------------------------- 66917 December 2020. Summary of changes for version 20201217: 670 671This release is available at https://acpica.org/downloads 672 673 6741) ACPICA kernel-resident subsystem: 675 676Note: The implementation of ACPI 6.4 is underway, and is expected to be 677mostly finished next month, when ACPI 6.4 is released. 678 679From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 680several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 681enable this. 682 683AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 684These included a few casts, as well as a null pointer check. 685 686Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 687implicit fallthrough, as well as __attribute__((__fallthrough__)) and 688comments to explicitly denote that cases of fallthrough were intentional. 689Clang also supports this warning and statement attribute, but not the 690comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 691of GCC. With assistance from @nickdesaulniers. 692 6932) iASL Compiler/Disassembler and ACPICA tools: 694 695Added improvement to method call analysis by saving the return type and 696relaxing certain cases of type checking. 697 698iASL Table Compiler: Improved info messages. Added a message to the -T 699option for when the default template (DSDT) is used. 700Also added a note for when multiple SSDTs are created with a DSDT that 701the SSDTs are created in the same file as the DSDT. 702 703 704---------------------------------------- 705 70613 November 2020. Summary of changes for version 20201113: 707 708This release is available at https://acpica.org/downloads 709 710 7111) ACPICA kernel-resident subsystem: 712 713Interpreter: fixed a memory leak by using use existing buffer in _HID 714repair. There was a memory leak that occurred when a _CID object is 715defined as a package containing string objects. When _CID is checked for 716any possible repairs, it calls a helper function to repair _HID (because 717_CID basically contains multiple _HID entries). The _HID repair function 718assumes that string objects are standalone objects that are not contained 719inside of any packages. The _HID repair function replaced the string 720object with a brand new object and attempted to delete the old object by 721decrementing the reference count of the old object. Strings inside of 722packages have a reference count of 2 so the _HID repair function leaves 723this object in a dangling state and causes a memory leak. Instead of 724allocating a brand new object and removing the old object, use the 725existing object when repairing the _HID object. 726 727Added function trace macros to improve namespace debugging. The namespace 728repair mechanism does not have function tracing macros. Add several trace 729macros to improve debuggability. 730 731Handle "orphan" _REG methods for GPIO OpRegions. Before this change 732AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 733matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 734Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 735The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 736UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 737to potential issues with checks for OpRegion availability, or in other 738words checks if _REG has been called for the OpRegion which the ACPI code 739wants to use. Except for the "orphan" EC handling, ACPICA core does not 740call _REG on an ACPI node which does not define an OpRegion matching the 741type being registered; and the reference design DSDT, from which most 742Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 743UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 744were assigned ACPI controlled functions in the reference design. Together 745this leads to the perfect storm, at least on the Cherry Trail based 746Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 747and has added the Cherry Trail specific UserDefined(0x93) opregion to its 748GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 749availability check for the standard GeneralPurposeIo OpRegion. This 750clearly is a bug in the DSDT, but this does work under Windows. This 751issue leads to the intel vbtn driver reporting the device always being in 752tablet-mode at boot, even if it is in laptop mode. Which in turn causes 753userspace to ignore touchpad events. So in other words, this issue causes 754the touchpad to not work at boot. This change fixes this by extending the 755"orphan" _REG method handling to also apply to GPIO address-space 756handlers. 757 758 7592) iASL Compiler/Disassembler and ACPICA tools: 760 761iASL: Added more info to namespace dump file (-ln option). In a separate 762section of the dump file (after the main namespace dump), emit the full 763pathname for each namespace node, its type, and the ASL filename and line 764number where it is declared. 765 766AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 767x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 768is omitted, all iASL exceptions are displayed. 769 770iASL: Use StringLiteral instead of StringData for some ASL macros. The 771use of the stringData rule allows for some "string" oriented opcodes 772(Such as ToString, ToHexString, etc.) None of which make sense with the 773macros in question. This change modifies the StringData part of the rule 774for these macros to a simple string literal - thus disallowing the use 775of ToString, ToHexString, etc. 776The following ASL operators (macros) are affected: 777EisaId 778Fprintf 779Printf 780ToUuid 781Unicode 782Note: The MS compiler requires the use of string literals for these 783operators also. 784 785iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 786the list of "known" UUIDs for the input to the ToUUID macro. 787 788Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 789NFIT table. 790 791 792---------------------------------------- 793 79425 September 2020. Summary of changes for version 20200925: 795 796This release is available at https://acpica.org/downloads 797 798 7991) ACPICA kernel-resident subsystem: 800 801Preserve memory opregion mappings. The ACPICA's strategy with respect to 802the handling of memory mappings associated with memory operation regions 803is to avoid mapping the entire region at once which may be problematic at 804least in principle (for example, it may lead to conflicts with 805overlapping mappings having different attributes created by drivers). It 806may also be wasteful, because memory opregions on some systems take up 807vastchunks of address space while the fields in those regions actually 808accessed by AML are sparsely distributed. 809 810For this reason, a one-page "window" is mapped for a given opregion on 811the first memory access through it and if that "window" does not cover an 812address range accessed through that opregion subsequently, it is unmapped 813and a new "window" is mapped to replace it. Next, if the new "window" is 814not sufficient to access memory through the opregion in question in the 815future, it will be replaced with yet another "window" and so on. That 816may lead to a suboptimal sequence of memory mapping and unmapping 817operations, for example if two fields in one opregion separated from each 818other by a sufficiently wide chunk of unused address space are accessed 819in an alternating pattern. 820 821Added support for 64 bit risc-v compilation. Useful for acpica tools and 822incorporating ACPICA into the Firmware Test Suite. Colin Ian King 823<colin.king@canonical.com>. 824 825Added support for SMBus predefined names (from SMBus Control Method 826Interface Specification, Version 1.0, December 10, 1999. New predefined 827names: 828 _SBA 829 _SBI 830 _SBR 831 _SBT 832 _SBW 833 834AML Disassembler: Added a new command, "All <NameSeg>". This command will 835evaluate all objects in the current namespace whose NameString contains 836the input NameSeg as the last element of the NameString. Useful for 837debugging. 838 839 8402) iASL Compiler/Disassembler and ACPICA tools: 841 842iASL: fixed a crash that occurred when predefined objects return packages 843with lengths that exceed the initializer list. 844 845iASL: added more detail to external resolution error message when 846compiling multiple definition blocks. 847 848iASL: added a remark for an attempt to create a nameseg or namestring 849containing lower-case letters. This should prevent declaring multiple 850namesegs or namestrings in an attempt to refer to different objects (with 851different cases), but actually refer to the same object(s). 852 853iASL: improve alias analysis by saving object type. If the alias is a 854method type, the parameter count is also recorded. 855 856AcpiExec: Increase the default loop timeout value. Was 1 second, is now 85710 seconds. Prevents unnecessary timeouts when executing control methods 858from the command line. 859 860AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 861list. Includes: 862 Memory Device 863 Generic Buttons Device 864 NVDIMM Root Device 865 Control Method Battery 866 Device Graphs for _DSD method 867 Hierarchical Data Extension 868....ARM CoreSight Graph 869 870---------------------------------------- 871 872 87317 July 2020. Summary of changes for version 20200717: 874 875This release is available at https://acpica.org/downloads 876 877 8781) ACPICA kernel-resident subsystem: 879 880Do not increment OperationRegion reference counts for field units. Recent 881server firmware has revealed that this reference count can overflow on 882large servers that declare many field units (thousands) under the same 883OperationRegion. This occurs because each field unit declaration will add 884a reference count to the source OperationRegion. This release solves the 885reference count overflow for OperationRegion objects by preventing 886fieldUnits from incrementing their parent OperationRegion's reference 887count. 888 889Replaced one-element arrays with flexible-arrays, which were introduced 890in C99. 891 892Restored the readme file containing the directions for generation of 893ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 894located at: generate/msvc2017/readme.txt 895 8962) iASL Compiler/Disassembler and ACPICA tools: 897 898iASL: Fixed a regression found in version 20200214. Prevent iASL from 899emitting an extra byte of garbage data when control methods declared a 900single parameter type without using braces. This extra byte is known to 901cause a blue screen on the Windows AML interpreter. 902 903iASL: Made a change to allow external declarations to specify the type of 904a named object even when some name segments are not defined. 905This change allows the following ASL code to compile (When DEV0 is not 906defined or not defined yet): 907 908 External (\_SB.DEV0.OBJ1, IntObj) 909 External (\_SB.DEV0, DeviceObj) 910 911iASL: Fixed a problem where method names in "Alias ()" statement could be 912misinterpreted. They are now interpreted correctly as method invocations. 913 914iASL: capture a method parameter count (Within the Method info segment, 915as well as the argument node) when using parameter type lists. 916 917---------------------------------------- 918 919 92028 May 2020. Summary of changes for version 20200528: 921 922 9231) ACPICA kernel-resident subsystem: 924 925Removed old/obsolete Visual Studio files which were used to build the 926Windows versions of the ACPICA tools. Since we have moved to Visual 927Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 928project files. The new subdirectory and solution file are located at: 929 930 acpica/generate/msvc2017/AcpiComponents.sln 931 932 9332) iASL Compiler/Disassembler and ACPICA tools: 934 935iASL: added support for a new OperationRegion Address Space (subtype): 936PlatformRtMechanism. Support for this new keyword is being released for 937early prototyping. It will appear in the next release of the ACPI 938specification. 939 940iASL: do not optimize the NameString parameter of the CondRefOf operator. 941In the previous iASL compiler release, the NameString parameter of the 942CondRefOf was optimized. There is evidence that some implementations of 943the AML interpreter do not perform the recursive search-to-parent search 944during the execution of the CondRefOf operator. Therefore, the CondRefOf 945operator behaves differently when the NameString parameter is a single 946name segment (a NameSeg) as opposed to a full NamePath (starting at the 947root scope) or a NameString containing parent prefixes. 948 949iASL: Prevent an inadvertent remark message. This change prevents a 950remark if within a control method the following exist: 9511) An Operation Region is defined, and 9522) A Field operator is defined that refers to the region. 953This happens because at the top level, the Field operator does not 954actually create a new named object, it simply references the operation 955region. 956 957Removed support for the acpinames utility. The acpinames was a simple 958utility used to populate and display the ACPI namespace without executing 959any AML code. However, ACPICA now supports executable opcodes outside of 960control methods. This means that executable AML opcodes such as If and 961Store opcodes need to be executed during table load. Therefore, acpinames 962would need to be updated to match the same behavior as the acpiexec 963utility and since acpiexec can already dump the entire namespace (via the 964'namespace' command), we no longer have the need to maintain acpinames. 965 966 In order to dump the contents of the ACPI namespace using acpiexec, 967execute the following command from the command line: 968 969 acpiexec -b "n" [aml files] 970 971---------------------------------------- 972 973 97430 April 2020. Summary of changes for version 20200430: 975 9761) ACPICA kernel-resident subsystem: 977 978Cleaned up the coding style of a couple of global variables 979(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 980AcpiProtocolLengths was made static, and the definition of 981AcpiGbl_NextCmdNum was moved to acglobal.h. 982 983 9842) iASL Compiler/Disassembler and ACPICA tools: 985 986iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 987associated with a field. 988 989Disassembler: has been made more resilient so that it will continue to 990parse AML even if the AML generates ACPI namespace errors. This enables 991iASL to disassemble some AML that may have been compiled using older 992versions of iASL that no longer compile with newer versions of iASL. 993 994iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 995was a mixup where _NIG required one parameter and _NIH required zero 996parameters. This change swaps these parameter requirements. Now it is 997required that _NIH must be called with one parameter and _NIG requires 998zero parameters. 999 1000iASL: Allow use of undefined externals as long as they are protected by 1001an if (CondRefOf (...)) block when compiling multiple definition blocks. 1002 1003iASL: Fixed the type override behavior of named objects that are declared 1004as External. External declarations will no longer override the type of 1005the actual definition if it already exists. 1006 1007AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 1008command line wildcard support on Windows. Note: the AcpiNames utility is 1009essentially redundant with the AcpiExec utility (using the "namespace" 1010command) and is therefore deprecated. It will be removed in future 1011releases of ACPICA. 1012 1013Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 1014operators. The disassembler is intended to emit existing ASL code as-is. 1015Therefore, error messages emitted during disassembly should be ignored or 1016handled in a way such that the disassembler can continue to parse the 1017AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 1018parsing for create operators in order to complete parsing ASL termlists. 1019 1020iASL DataTable Compiler: IVRS table: fix potentially uninitialized 1021variable warning. Some compilers catch potential uninitialized variables. 1022This is done by examining branches of if/else statements. This change 1023replaces an "else if" with an "else" to fix the uninitialized variable 1024warning. 1025 1026 1027---------------------------------------- 102826 March 2020. Summary of changes for version 20200326: 1029 1030 10311) ACPICA kernel-resident subsystem: 1032 1033Performed a code clean-up to prevent build errors on early versions of 1034GCC-10. 1035 1036Added the NHLT table signature. iASL data table compiler/disassembler 1037support for this table is coming soon. 1038 1039 10402) iASL Compiler/Disassembler and ACPICA tools: 1041 1042AcpiExec: Fixed several problems with the namespace initialization file 1043(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 1044errors, several seg faults, and enhancements to line parsing within the 1045init file. In addition, each object found in the init file and it's new 1046value is displayed, as well as any such entries that do not have a 1047corresponding name in the namespace. For reference, the syntax for the 1048various supported data types are presented below: 1049 PCHG 0x777788889999BBBB // Integer 1050 \DEV1.STR1 "XYZ" // String 1051 BUF1 (88 99 AA) // Buffer 1052 PKG1 [0x1111 0x2222] // Package 1053 \BF1 0x7980 // BufferField 1054 RCRV 0x0123456789ABCDEF // Field Unit 1055 1056iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 1057can be used anywhere in a given ASL file to configure iASL to expect an 1058iASL compiler error code on the line where this macro was placed. If the 1059error code does not exist, an error is generated. This is intended to be 1060used for ACPICA's ASL test suite, but can be used by ASL developers as 1061well. 1062 1063iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 1064IVRS table parsing supported only IVHD type 10h structures. Parsing an 1065IVHD type 11h caused the iasl to report unknown subtable type. Add 1066necessary structure definition for IVHD type 11h and apply correct 1067parsing method based on subtable type. Micha? ?ygowski. 1068 1069iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 1070According to AMD IOMMU Specification Revision 3.05 the reserved field 1071should be IOMMU Feature Reporting. Change the name of the field to the 1072correct one. Micha? ?ygowski. 1073 1074acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 1075based on suggestions by David Seifert and Benjamin Berg. 1076 1077iASL: table compiler: removed an unused variable (DtCompilerParserResult) 1078causing linking errors. Patch based on suggestions by David Seifert and 1079Benjamin Berg. 1080 1081iASL: table compiler: make LexBuffer static to avoid linking errors in 1082newer compilers. Patch based on suggestions by David Seifert and Benjamin 1083Berg. 1084 1085iASL: fixed type matching between External and Named objects. External 1086object types can only be expressed with ACPI object type values that are 1087defined in the ACPI spec. However, iASL uses ACPI object type values that 1088are local to ACPICA in addition to the values defined in the ACPI spec. 1089This change implements type matching to map some object type values 1090specific to ACPICA to ones that are defined in the ACPI spec. 1091 1092iASL: Dropped the type mismatch compiler error that can arise from 1093External declarations to a warning. This warning can occur when there is 1094a type difference between the external declaration and the actual object 1095declaration (when compiling multiple files/modules simultaneously). 1096 1097iASL: removed an incorrect error message regarding externals. This change 1098removes an incorrect error that is emitted when a duplicate external 1099declaration does not contain a type that opens a scope. This is incorrect 1100because the duplicate external with conflicting types are already caught 1101by iASL and it doesn't make any sense to enforce what this conflicting 1102type should be. 1103 1104AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 1105surrounded by parens. Otherwise, a logical statement that applies a 1106logical not operator to this macro could result in a computation that 1107applies the operator to the left side of the logical and but not the 1108right. Reported-by: John Levon <john.levon@joyent.com> 1109 1110Fixed a problem with the local version of sprint(): On 32-bit, the 1111provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 1112String + Size will wrap, meaning End < Start, and 1113AcpiUtBoundStringOutput() will never output anything as a result. The 1114symptom seen of this was acpixtract failing to output anything -- with a 1115custom build that included utprint.c. Signed-off-by: John Levon 1116<john.levon@joyent.com> 1117 1118iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 1119ACPI specification. 1120 1121 1122---------------------------------------- 112314 February 2020. Summary of changes for version 20200214: 1124 1125 11261) ACPICA kernel-resident subsystem: 1127 1128Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 1129in a guest when it receives a sleep trigger from the hypervisor. When the 1130guest resumes from this power state, it does not see the SleepEnabled 1131bit. In other words, the sleepHibernation (S4) is triggered in a guest 1132when it receives a sleep trigger from the hypervisor. When the guest 1133resumes from this power state, it does not see the SleepEnabled bit. In 1134other words, the sleep button is not enabled on waking from an S4 state. 1135This causes subsequent invocation of sleep state to fail since the 1136guest.button is not enabled on waking from an S4 state. This causes 1137subsequent invocation of sleep state to fail in the guest. Fix this 1138problem by enabling the sleep button in ACPI legacy wake. From Anchal 1139Agarwal <anchalag@amazon.com>. 1140 1141Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 1142for checking the status bits of all enabled GPEs in one go. It is needed 1143to distinguish spurious SCIs from genuine ones when deciding whether or 1144not to wake up the system from suspend-to-idle. 1145 1146Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 1147using HOST in their environment to represent the host name for their 1148machines. Avoid this problem by renaming this variable from HOST to 1149ACPI_HOST. 1150 1151MSVC 2017 project files: Enable multiprocessor generation to improve 1152build performance. 1153 1154Added a macro to get the byte width of a Generic Address structure. New 1155ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 1156ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 1157 1158 11592) iASL Compiler/Disassembler and ACPICA tools: 1160 1161iASL: Implemented full support for the (optional, rarely used) ReturnType 1162and ParameterTypesList for the Method, Function, and External operators. 1163For Method declarations, the number of individual ParameterTypes must 1164match the declaration of the number of arguments (NumArgs). This also 1165Fixes a problem with the External operator where extra/extraneous bytes 1166were emitted in the AML code if the optional ReturnType/ParameterTypes 1167were specified for a MethodObj declaration. 1168New error message: 11691) Method NumArgs count does not match length of ParameterTypes list 1170 1171iASL: Implemented detection of type mismatches between External 1172declarations and named object declarations. Also, detect type mismatches 1173between multiple External declarations of the same Name. 1174New error messages: 11751) Type mismatch between external declaration and actual object 1176declaration detected 11772) Type mismatch between multiple external declarations detected 1178 1179iASL: Implemented new error messages for External operators that specify 1180a ReturnType and/or ParameterTypesList for any object type other than 1181control methods (MethodObj). 1182New error messages: 11831) Return type is only allowed for Externals declared as MethodObj 11842) Parameter type is only allowed for Externals declared as MethodObj 1185 1186iASL: Implemented two new remark/warning messages for ASL code that 1187creates named objects from within a control method. This is very 1188inefficient since the named object must be created and deleted each time 1189the method is executed. 1190New messages: 11911) Creation of named objects within a method is highly inefficient, use 1192globals or method local variables instead (remark) 11932) Static OperationRegion should be declared outside control method 1194(warning) 1195 1196iASL: Improved illegal forward reference detection by adding support to 1197detect forward-reference method invocations. 1198 1199iASL: Detect and issue an error message for NameStrings that contain too 1200many individual NameSegs (>255). This is an AML limitation that is 1201defined in the ACPI specification. 1202New message: 12031) NameString contains too many NameSegs (>255) 1204 1205acpidump: windows: use GetSystemFirmwareTable API for all tables except 1206SSDT. By using this API, acpidump is able to get all tables in the XSDT 1207 1208iASL: Removed unused parser file and updated msvc2017 project files. 1209Removed the obsolete AslCompiler.y from the repository. 1210 1211iASL: msvc2017: Fixed macros in the file dependency list to prevent 1212unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 1213 1214Disassembler: Prevent spilling error messages to the output file. All 1215errors are directed to the console instead. These error messages 1216prevented re-compilation of the resulting disassembled ASL output file 1217(.DSL). 1218 1219 1220---------------------------------------- 122110 January 2020. Summary of changes for version 20200110: 1222 1223 12241) ACPICA kernel-resident subsystem: 1225 1226Updated all copyrights to 2020. This affects all ACPICA source code 1227modules. 1228 1229 12302) iASL Compiler/Disassembler and ACPICA tools: 1231 1232ASL test suite (ASLTS): Updated all copyrights to 2020. 1233 1234Tools and utilities: Updated all signon copyrights to 2020. 1235 1236iASL: fix forward reference analysis for field declarations. Fixes 1237forward reference analysis for field declarations by searching the 1238parent scope for the named object when the object is not present in 1239the current scope. 1240 1241iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 1242full pathname of the name that already exists is printed. 1243 1244iASL: Enhance duplicate Case() detection for buffers. Add check for 1245buffers with no initializer list (these buffers will be filled with 1246zeros at runtime.) 1247 1248 1249---------------------------------------- 125013 December 2019. Summary of changes for version 20191213: 1251 1252 12531) ACPICA kernel-resident subsystem: 1254 1255Return a Buffer object for all fields created via the CreateField 1256operator. Previously, an Integer would be returned if the size of 1257the field was less than or equal to the current size of an Integer. 1258Although this goes against the ACPI specification, it provides 1259compatibility with other ACPI implementations. Also updated the 1260ASLTS test suite to reflect this new behavior. 1261 12622) iASL Compiler/Disassembler and ACPICA tools: 1263 1264iASL: Implemented detection of (and throw an error for) duplicate 1265values for Case statements within a single Switch statement. Duplicate 1266Integers, Strings, and Buffers are supported. 1267 1268iASL: Fix error logging issue during multiple file compilation -- 1269Switch to the correct input file during error node creation. 1270 1271iASL: For duplicate named object creation, now emit an error instead 1272of a warning - since this will cause a runtime error. 1273 1274AcpiSrc: Add unix line-ending support for non-Windows builds. 1275 1276iASL: Add an error condition for an attempt to create a NameString 1277with > 255 NameSegs (the max allowable via the AML definition). 1278 1279 1280---------------------------------------- 128118 October 2019. Summary of changes for version 20191018: 1282 1283 12841) ACPICA kernel-resident subsystem: 1285 1286Debugger: added a new command: ?Fields [address space ID]?. This command 1287dumps the contents of all field units that are defined within the 1288namespace with a particular address space ID. 1289 1290Modified the external interface AcpiLoadTable() to return a table index. 1291This table index can be used for unloading a table for debugging. 1292 ACPI_STATUS 1293 AcpiLoadTable ( 1294 ACPI_TABLE_HEADER *Table, 1295 UINT32 *TableIndex)) 1296 1297Implemented a new external interface: AcpiUnloadTable() This new function 1298takes a table index as an argument and unloads the table. Useful for 1299debugging only. 1300 ACPI_STATUS 1301 AcpiUnloadTable ( 1302 UINT32 TableIndex)) 1303 1304Ported the AcpiNames utility to use the new table initialization 1305sequence. The utility was broken before this change. Also, it was 1306required to include most of the AML interpreter into the utility in order 1307to process table initialization (module-level code execution.) 1308 1309Update for results from running Clang V8.0.1. This fixes all "dead 1310assignment" warnings. There are still several "Dereference of NULL 1311pointer" warnings, but these have been found to be false positive 1312warnings. 1313 1314 13152) iASL Compiler/Disassembler and ACPICA tools: 1316 1317iASL: numerous table compiler changes to ensure that the usage of 1318yacc/bison syntax is POSIX-compliant. 1319 1320iASL/disassembler: several simple bug fixes in the data table 1321disassembler. 1322 1323Acpiexec: expanded the initialization file (the -fi option) to initialize 1324strings, buffers, packages, and field units. 1325 1326 1327---------------------------------------- 132816 August 2019. Summary of changes for version 20190816: 1329 1330This release is available at https://acpica.org/downloads 1331 1332 13331) ACPICA kernel-resident subsystem: 1334 1335Modified the OwnerId mechanism to allow for more Owner Ids. The previous 1336limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 1337exceptions on machines with a large number of initialization threads, 1338many CPU cores and nested initialization control methods. 1339 1340Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 1341checking if the given GPE (as represented by a GPE device handle and a 1342GPE number) is currently active and dispatching it (if that's the case) 1343outside of interrupt context. 1344 1345Table load: exit the interpreter before initializing objects within the 1346new table This prevents re-acquiring the interpreter lock when loading 1347tables 1348 1349Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 1350uk Kim 1351 1352Macros: removed pointer math on a null pointer. Causes warnings on some 1353compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 1354instead of using arithmetic. 1355 1356Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 1357across all "printf-like" internal functions. Also, cleanup all calls to 1358such functions (both in 32-bit mode and 64-bit mode) now that they are 1359analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 1360 1361 13622) iASL Compiler/Disassembler and ACPICA tools: 1363 1364iASL: implemented a new data table compiler flex/bison front-end. This 1365change is internal and is not intended to result in changes to the 1366compiled code. This new compiler front-end can be invoked using the -tp 1367option for now, until the old mechanism is removed. 1368 1369ASLTS: Implemented a new data table compiler test suite. This test suite 1370generates all table templates and compile/disassemble/re-compile/binary- 1371compare each file. 1372 1373iASL: return -1 if AML files were not generated due to compiler errors 1374 1375iASL: added a warning on use of the now-legacy ASL Processor () keyword. 1376 1377iASL: added an error on _UID object declaration that returns a String 1378within a Processor () declaration. A _UID for a processor must be an 1379Integer. 1380 1381iASL: added a null terminator to name strings that consist only of 1382multiple parent prefixes (^) 1383 1384iASL: added support to compile both ASL and data table files in a single 1385command. 1386 1387Updated the tool generation project files that were recently migrated to 1388MSVC 2017 to eliminate all new warnings. The new project files appear in 1389the directory \acpica\generate\msvc2017. This change effectively 1390deprecates the older project files in \acpica\generate\msvc9. 1391 1392 1393---------------------------------------- 139403 July 2019. Summary of changes for version 20190703: 1395 1396 13971) ACPICA kernel-resident subsystem: 1398 1399Remove legacy module-level support code. There were still some remnants 1400of the legacy module-level code executions. Since we no longer support 1401this option, this is essentially dead code and has been removed from the 1402ACPICA source. 1403 1404iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1405scope. If these named objects are declared outside the root scope, they 1406will not be invoked by any host Operating System. 1407 1408Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 1409one) can be enabled in two situations. First, the GPEs with existing _Lxx 1410and _Exx methods are enabled implicitly by ACPICA during system 1411initialization. Second, the GPEs without these methods (like GPEs listed 1412by _PRW objects for wakeup devices) need to be enabled directly by the 1413code that is going to use them (e.g. ACPI power management or device 1414drivers). 1415 1416In the former case, if the status of a given GPE is set to start with, 1417its handler method (either _Lxx or _Exx) needs to be invoked to take care 1418of the events (possibly) signaled before the GPE was enabled. In the 1419latter case, however, the first caller of AcpiEnableGpe() for a given GPE 1420should not be expected to care about any events that might be signaled 1421through it earlier. In that case, it is better to clear the status of 1422the GPE before enabling it, to prevent stale events from triggering 1423unwanted actions (like spurious system resume, for example). 1424 1425For this reason, modify AcpiEvAddGpeReference() to take an additional 1426boolean argument indicating whether or not the GPE status needs to be 1427cleared when its reference counter changes from zero to one and make 1428AcpiEnableGpe() pass TRUE to it through that new argument. 1429 1430 14312) iASL Compiler/Disassembler and ACPICA tools: 1432 1433The tool generation process has been migrated to MSVC 2017, and all 1434project files have been upgraded. The new project files appear in the 1435directory \acpica\generate\msvc2017. This change effectively deprecates 1436the older project files in \acpica\generate\msvc9. 1437 1438iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1439scope. If these named objects are declared outside the root scope, they 1440will not be invoked by any host Operating System 1441 1442---------------------------------------- 144309 May 2019. Summary of changes for version 20190509: 1444 1445 14461) ACPICA kernel-resident subsystem: 1447 1448Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 1449them") that causes problems with Thunderbolt controllers to occur if a 1450dock device is connected at init time (the xhci_hcd and thunderbolt 1451modules crash which prevents peripherals connected through them from 1452working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 1453Dispatch active GPEs at init time") to get undone, so the problem 1454addressed by commit ecc1165b8b74 appears again as a result of it. 1455 1456 14572) iASL Compiler/Disassembler and ACPICA tools: 1458 1459Reverted iASL: Additional forward reference detection. This change 1460reverts forward reference detection for field declarations. The feature 1461unintentionally emitted AML bytecode with incorrect package lengths for 1462some ASL code related to Fields and OperationRegions. This malformed AML 1463can cause systems to crash 1464during boot. The malformed AML bytecode is emitted in iASL version 146520190329 and 20190405. 1466 1467iASL: improve forward reference detection. This change improves forward 1468reference detection for named objects inside of scopes. If a parse object 1469has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 1470a named object that is declared later in the AML bytecode. This is 1471allowed if the reference is inside of a method and the declaration is 1472outside of a method like so: 1473 1474DefinitionBlock(...) 1475{ 1476 Method (TEST) 1477 { 1478 Return (NUM0) 1479 } 1480 Name (NUM0,0) 1481} 1482 1483However, if the declaration and reference are both in the same method or 1484outside any methods, this is a forward reference and should be marked as 1485an error because it would result in runtime errors. 1486 1487DefinitionBlock(...) 1488{ 1489 Name (BUFF, Buffer (NUM0) {}) // Forward reference 1490 Name (NUM0, 0x0) 1491 1492 Method (TEST) 1493 { 1494 Local0 = NUM1 1495 Name (NUM1, 0x1) // Forward reference 1496 return (Local0) 1497 } 1498} 1499 1500iASL: Implemented additional buffer overflow analysis for BufferField 1501declarations. Check if a buffer index argument to a create buffer field 1502operation is beyond the end of the target buffer. 1503 1504This affects these AML operators: 1505 1506 AML_CREATE_FIELD_OP 1507 AML_CREATE_BIT_FIELD_OP 1508 AML_CREATE_BYTE_FIELD_OP 1509 AML_CREATE_WORD_FIELD_OP 1510 AML_CREATE_DWORD_FIELD_OP 1511 AML_CREATE_QWORD_FIELD_OP 1512 1513 There are three conditions that must be satisfied in order to allow this 1514validation at compile time: 1515 1516 1) The length of the target buffer must be an integer constant 1517 2) The index specified in the create* must be an integer constant 1518 3) For CreateField, the bit length argument must be non-zero. 1519 1520Example: 1521 Name (BUF1, Buffer() {1,2}) 1522 CreateField (BUF1, 7, 9, CF03) // 3: ERR 1523 1524dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 1525Error 6165 - ^ Buffer index beyond end of 1526target buffer 1527 1528 1529---------------------------------------- 153005 April 2019. Summary of changes for version 20190405: 1531 1532 15331) ACPICA kernel-resident subsystem: 1534 1535Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 1536unconditionally clearing ACPI IRQs during suspend/resume") was added 1537earlier to stop clearing of event status bits unconditionally on suspend 1538and resume paths. Though this change fixed an issue on suspend path, it 1539introduced regressions on several resume paths. In the case of S0ix, 1540events are enabled as part of device suspend path. If status bits for the 1541events are set when they are enabled, it could result in premature wake 1542from S0ix. If status is cleared for any event that is being enabled so 1543that any stale events are cleared out. In case of S0ix, events are 1544enabled as part of device suspend path. If status bits for the events are 1545set when they are enabled, it could result in premature wake from S0ix. 1546 1547This change ensures that status is cleared for any event that is being 1548enabled so that any stale events are cleared out. 1549 1550 15512) iASL Compiler/Disassembler and ACPICA tools: 1552 1553iASL: Implemented an enhanced multiple file compilation that combines 1554named objects from all input files to a single namespace. With this 1555feature, any unresolved external declarations as well as duplicate named 1556object declarations can be detected during compilation rather than 1557generating errors much later at runtime. The following commands are 1558examples that utilize this feature: 1559 iasl dsdt.asl ssdt.asl 1560 iasl dsdt.asl ssdt1.asl ssdt2.asl 1561 iasl dsdt.asl ssdt*.asl 1562 1563---------------------------------------- 156429 March 2019. Summary of changes for version 20190329: 1565 1566 15671) ACPICA kernel-resident subsystem: 1568 1569Namespace support: Remove the address nodes from global list after method 1570termination. The global address list contains pointers to namespace nodes 1571that represent Operation Regions. This change properly removes Operation 1572Region namespace nodes that are declared dynamically during method 1573execution. 1574 1575Linux: Use a different debug default than ACPICA. There was a divergence 1576between Linux and the ACPICA codebases. In order to resolve this 1577divergence, Linux now declares its own debug default in aclinux.h 1578 1579Renamed some internal macros to improve code understanding and 1580maintenance. The macros below all operate on single 4-character ACPI 1581NameSegs, not generic strings (old -> new): 1582 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 1583 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 1584 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 1585 1586Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 1587table. 1588 1589Test suite: Update makefiles, add PCC operation region support 1590 1591 15922) iASL Compiler/Disassembler and Tools: 1593 1594iASL: Implemented additional illegal forward reference detection. Now 1595detect and emit an error upon detection of a forward reference from a 1596Field to an Operation Region. This will fail at runtime if allowed to 1597pass the compiler. 1598 1599AcpiExec: Add an address list check for dynamic Operation Regions. This 1600feature performs a sanity test for each node the global address list. 1601This is done in order to ensure that all dynamic operation regions are 1602properly removed from the global address list and no dangling pointers 1603are left behind. 1604 1605Disassembler: Improved generation of resource pathnames. This change 1606improves the code that generates resource descriptor and resource tag 1607pathnames. The original code used a bunch of str* C library functions 1608that caused warnings on some compilers. 1609 1610iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1611function can overwrite buffers if the calling code is not very careful. 1612In the case of generating a module/table header, use of memmove is a 1613better implementation. 1614 1615 16163) Status of new features that have not been completed at this time: 1617 1618iASL: Implementing an enhanced multiple file compilation into a single 1619namespace feature (Status): This feature will be released soon, and 1620allows multiple ASL files to be compiled into the same single namespace. 1621By doing so, any unresolved external declarations as well as duplicate 1622named object declarations can be detected during compilation (rather than 1623later during runtime). The following commands are examples that utilize 1624this feature: 1625 iasl dsdt.asl ssdt.asl 1626 iasl dsdt.asl ssdt1.asl ssdt2.asl 1627 iasl dsdt.asl ssdt*.asl 1628 1629ASL tutorial status: Feedback is being gathered internally and the 1630current plan is to publish this tutorial on the ACPICA website after a 1631final review by a tech writer. 1632 1633---------------------------------------- 163415 February 2019. Summary of changes for version 20190215: 1635 1636 16370) Support for ACPI specification version 6.3: 1638 1639Add PCC operation region support for the AML interpreter. This adds PCC 1640operation region support in the AML interpreter and a default handler for 1641acpiexec. The change also renames the PCC region address space keyword to 1642PlatformCommChannel. 1643 1644Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1645These methods provide OSPM with health information and device boot 1646status. 1647 1648PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1649defines if the trigger needs to be invoked by OSPM before or at the end 1650of kernel crash dump processing/handling operation. 1651 1652SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1653is used for describing devices such as heterogeneous processors, 1654accelerators, GPUs, and IO devices with integrated compute or DMA 1655engines. 1656 1657MADT: Add support for statistical profiling in GICC. Statistical 1658profiling extension (SPE) is an architecture-specific feature for ARM. 1659 1660MADT: Add online capable flag. If this bit is set, system hardware 1661supports enabling this processor during OS runtime. 1662 1663New Error Disconnect Recover Notification value. There are a number of 1664scenarios where system Firmware in collaboration with hardware may 1665disconnect one or more devices from the rest of the system for purposes 1666of error containment. Firmware can use this new notification value to 1667alert OSPM of such a removal. 1668 1669PPTT: New additional fields in Processor Structure Flags. These flags 1670provide more information about processor topology. 1671 1672NFIT/Disassembler: Change a field name from "Address Range" to "Region 1673Type". 1674 1675HMAT updates: make several existing fields to be reserved as well as 1676rename subtable 0 to "memory proximity domain attributes". 1677 1678GTDT: Add support for new GTDT Revision 3. This revision adds information 1679for the EL2 timer. 1680 1681iASL: Update the HMAT example template for new fields. 1682 1683iASL: Add support for the new revision of the GTDT (Rev 3). 1684 1685 16861) ACPICA kernel-resident subsystem: 1687 1688AML Parser: fix the main AML parse loop to correctly skip erroneous 1689extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1690byte extended opcodes. If an error occurs during an AML table load, the 1691AML parser will continue loading the table by skipping the offending 1692opcode. This implements a "load table at any cost" philosophy. 1693 1694 16952) iASL Compiler/Disassembler and Tools: 1696 1697iASL: Add checks for illegal object references, such as a reference 1698outside of method to an object within a method. Such an object is only 1699temporary. 1700 1701iASL: Emit error for creation of a zero-length operation region. Such a 1702region is rather pointless. If encountered, a runtime error is also 1703implemented in the interpreter. 1704 1705Debugger: Fix a possible fault with the "test objects" command. 1706 1707iASL: Makefile: support parent directory filenames containing embedded 1708spaces. 1709 1710iASL: Update the TPM2 template to revision 4. 1711 1712iASL: Add the ability to report specific warnings or remarks as errors. 1713 1714Disassembler: Disassemble OEMx tables as actual AML byte code. 1715Previously, these tables were treated as "unknown table". 1716 1717iASL: Add definition and disassembly for TPM2 revision 3. 1718 1719iASL: Add support for TPM2 rev 3 compilation. 1720 1721 1722---------------------------------------- 172308 January 2019. Summary of changes for version 20190108: 1724 1725 17261) ACPICA kernel-resident subsystem: 1727 1728Updated all copyrights to 2019. This affects all source code modules. 1729 1730 17312) iASL Compiler/Disassembler and Tools: 1732 1733ASL test suite (ASLTS): Updated all copyrights to 2019. 1734 1735Tools: Updated all signon copyrights to 2019. 1736 1737AcpiExec: Added a new option to dump extra information concerning any 1738memory leaks detected by the internal object/cache tracking mechanism. - 1739va 1740 1741iASL: Updated the table template for the TPM2 table to the newest version 1742of the table (Revision 4) 1743 1744 1745---------------------------------------- 174613 December 2018. Summary of changes for version 20181213: 1747 1748 17491) ACPICA Kernel-resident Subsystem: 1750 1751Fixed some buffer length issues with the GenericSerialBus, related to two 1752of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1753which are rarely seen in the field. For these, the LEN field of the ASL 1754buffer is now ignored. Hans de Goede 1755 1756Implemented a new object evaluation trace mechanism for control methods 1757and data objects. This includes nested control methods. It is 1758particularly useful for examining the ACPI execution during system 1759initialization since the output is relatively terse. The flag below 1760enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1761 #define ACPI_LV_EVALUATION 0x00080000 1762 1763Examples: 1764 Enter evaluation : _SB.PCI0._INI (Method) 1765 Exit evaluation : _SB.PCI0._INI 1766 Enter evaluation : _OSI (Method) 1767 Exit evaluation : _OSI 1768 Enter evaluation : _SB.PCI0.TEST (Method) 1769 Nested method call : _SB.PCI0.NST1 1770 Exit nested method : _SB.PCI0.NST1 1771 Exit evaluation : _SB.PCI0.TEST 1772 1773Added two recently-defined _OSI strings. See 1774https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1775osi. 1776 "Windows 2018" 1777 "Windows 2018.2" 1778 1779Update for buffer-to-string conversions via the ToHexString ASL operator. 1780A "0x" is now prepended to each of the hex values in the output string. 1781This provides compatibility with other ACPI implementations. The ACPI 1782specification is somewhat vague on this issue. 1783 Example output string after conversion: 1784"0x01,0x02,0x03,0x04,0x05,0x06" 1785 1786Return a run-time error for TermArg expressions within individual package 1787elements. Although this is technically supported by the ASL grammar, 1788other ACPI implementations do not support this either. Also, this fixes a 1789fault if this type of construct is ever encountered (it never has been). 1790 1791 17922) iASL Compiler/Disassembler and Tools: 1793 1794iASL: Implemented a new compile option (-ww) that will promote individual 1795warnings and remarks to errors. This is intended to enhance the firmware 1796build process. 1797 1798AcpiExec: Implemented a new command-line option (-eo) to support the new 1799object evaluation trace mechanism described above. 1800 1801Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1802instead of a "unknown table" message. 1803 1804AcpiHelp: Improved support for the "special" predefined names such as 1805_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1806used for "xx" and "x". 1807 1808---------------------------------------- 180931 October 2018. Summary of changes for version 20181031: 1810 1811 1812An Operation Region regression was fixed by properly adding address 1813ranges to a global list during initialization. This allows OS to 1814accurately check for overlapping regions between native devices (such as 1815PCI) and Operation regions as well as checking for region conflicts 1816between two Operation Regions. 1817 1818Added support for the 2-byte extended opcodes in the code/feature that 1819attempts to continue parsing during the table load phase. Skip parsing 1820Device declarations (and other extended opcodes) when an error occurs 1821during parsing. Previously, only single-byte opcodes were supported. 1822 1823Cleanup: Simplified the module-level code support by eliminating a 1824useless global variable (AcpiGbl_GroupModuleLeveCode). 1825 1826 18272) iASL Compiler/Disassembler and Tools: 1828 1829iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1830could cause a fault in the preprocessor. This was an inadvertent side- 1831effect from moving more allocations/frees to the local cache/memory 1832mechanism. 1833 1834iASL: Enhanced error detection by validating that all NameSeg elements 1835within a NamePatch actually exist. The previous behavior was spotty at 1836best, and such errors could be improperly ignored at compiler time (never 1837at runtime, however. There are two new error messages, as shown in the 1838examples below: 1839 1840dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1841Error 6161 - ^ One or more objects within 1842the Pathname do not exist (TTTT.BXXX) 1843 1844dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1845Error 6160 - One or more prefix Scopes do not exist ^ 1846(BBBB.CBF1) 1847 1848iASL: Disassembler/table-compiler: Added support for the static data 1849table TPM2 revision 3 (an older version of TPM2). The support has been 1850added for the compiler and the disassembler. 1851 1852Fixed compilation of DOS format data table file on Unix/Linux systems. 1853iASL now properly detects line continuations (\) for DOS format data 1854table definition language files on when executing on Unix/Linux. 1855 1856---------------------------------------- 185703 October 2018. Summary of changes for version 20181003: 1858 1859 18602) iASL Compiler/Disassembler and Tools: 1861 1862Fixed a regression introduced in version 20180927 that could cause the 1863compiler to fault, especially with NamePaths containing one or more 1864carats (^). Such as: ^^_SB_PCI0 1865 1866Added a new remark for the Sleep() operator when the sleep time operand 1867is larger than one second. This is a very long time for the ASL/BIOS code 1868and may not be what was intended by the ASL writer. 1869 1870---------------------------------------- 187127 September 2018. Summary of changes for version 20180927: 1872 1873 18741) ACPICA kernel-resident subsystem: 1875 1876Updated the GPE support to clear the status of all ACPI events when 1877entering any/all sleep states in order to avoid premature wakeups. In 1878theory, this may cause some wakeup events to be missed, but the 1879likelihood of this is small. This change restores the original behavior 1880of the ACPICA code in order to fix a regression seen from the previous 1881"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1882This regression could cause some systems to incorrectly wake immediately. 1883 1884Updated the execution of the _REG methods during initialization and 1885namespace loading to bring the behavior into closer conformance to the 1886ACPI specification and other ACPI implementations: 1887 1888From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1889 "Control methods must assume all operation regions are inaccessible 1890until the _REG(RegionSpace, 1) method is executed" 1891 1892 "The exceptions to this rule are: 18931. OSPM must guarantee that the following operation regions are always 1894accessible: 1895 SystemIO operation regions. 1896 SystemMemory operation regions when accessing memory returned by the 1897System Address Map reporting interfaces." 1898 1899Since the state of both the SystemIO and SystemMemory address spaces are 1900defined by the specification to never change, this ACPICA change ensures 1901that now _REG is never called on them. This solves some problems seen in 1902the field and provides compatibility with other ACPI implementations. An 1903update to the upcoming new version of the ACPI specification will help 1904clarify this behavior. 1905 1906Updated the implementation of support for the Generic Serial Bus. For the 1907"bidirectional" protocols, the internal implementation now automatically 1908creates a return data buffer of the maximum size (255). This handles the 1909worst-case for data that is returned from the serial bus handler, and 1910fixes some problems seen in the field. This new buffer is directly 1911returned to the ASL. As such, there is no true "bidirectional" buffer, 1912which matches the ACPI specification. This is the reason for the "double 1913store" seen in the example ASL code in the specification, shown below: 1914 1915Word Process Call (AttribProcessCall): 1916 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1917 Field(TOP1, BufferAcc, NoLock, Preserve) 1918 { 1919 FLD1, 8, // Virtual register at command value 1. 1920 } 1921 1922 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1923 // as BUFF 1924 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1925 1926 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1927 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1928transaction 1929 // This is the "double store". The write to 1930 // FLD1 returns a new buffer, which is stored 1931 // back into BUFF with the second Store. 1932 1933 19342) iASL Compiler/Disassembler and Tools: 1935 1936iASL: Implemented detection of extraneous/redundant uses of the Offset() 1937operator within a Field Unit list. A remark is now issued for these. For 1938example, the first two of the Offset() operators below are extraneous. 1939Because both the compiler and the interpreter track the offsets 1940automatically, these Offsets simply refer to the current offset and are 1941unnecessary. Note, when optimization is enabled, the iASL compiler will 1942in fact remove the redundant Offset operators and will not emit any AML 1943code for them. 1944 1945 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1946 Field (OPR1) 1947 { 1948 Offset (0), // Never needed 1949 FLD1, 32, 1950 Offset (4), // Redundant, offset is already 4 (bytes) 1951 FLD2, 8, 1952 Offset (64), // OK use of Offset. 1953 FLD3, 16, 1954 } 1955dsdt.asl 14: Offset (0), 1956Remark 2158 - ^ Unnecessary/redundant use of Offset 1957operator 1958 1959dsdt.asl 16: Offset (4), 1960Remark 2158 - ^ Unnecessary/redundant use of Offset 1961operator 1962 1963---------------------------------------- 196410 August 2018. Summary of changes for version 20180810: 1965 1966 19671) ACPICA kernel-resident subsystem: 1968 1969Initial ACPI table loading: Attempt to continue loading ACPI tables 1970regardless of malformed AML. Since migrating table initialization to the 1971new module-level code support, the AML interpreter rejected tables upon 1972any ACPI error encountered during table load. This is a problem because 1973non-serious ACPI errors during table load do not necessarily mean that 1974the entire definition block (DSDT or SSDT) is invalid. This change 1975improves the table loading by ignoring some types of errors that can be 1976generated by incorrect AML. This can range from object type errors, scope 1977errors, and index errors. 1978 1979Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1980during suspend/resume. The status of ACPI events is no longer cleared 1981when entering the ACPI S5 system state (power off) which caused some 1982systems to power up immediately after turning off power in certain 1983situations. This was a functional regression. It was fixed by clearing 1984the status of all ACPI events again when entering S5 (for system-wide 1985suspend or hibernation the clearing of the status of all events is not 1986desirable, as it might cause the kernel to miss wakeup events sometimes). 1987Rafael Wysocki. 1988 1989 19902) iASL Compiler/Disassembler and Tools: 1991 1992AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1993elements listed in the initialization file were previously initialized 1994after the table load and before executing module-level code blocks. 1995Recent changes in the module-level code support means that the table load 1996becomes a large control method execution. If fields are used within 1997module-level code and we are executing with the -fi option, the 1998initialization values were used to initialize the namespace object(s) 1999only after the table was finished loading. This change Provides an early 2000initialization of objects specified in the initialization file so that 2001field unit values are populated during the table load (not after the 2002load). 2003 2004AcpiExec: Fixed a small memory leak regression that could result in 2005warnings during exit of the utility. These warnings were similar to 2006these: 2007 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 2008 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 2009 2010---------------------------------------- 201129 June 2018. Summary of changes for version 20180629: 2012 2013 20141) iASL Compiler/Disassembler and Tools: 2015 2016iASL: Fixed a regression related to the use of the ASL External 2017statement. Error checking for the use of the External() statement has 2018been relaxed. Previously, a restriction on the use of External meant that 2019the referenced named object was required to be defined in a different 2020table (an SSDT). Thus it would be an error to declare an object as an 2021external and then define the same named object in the same table. For 2022example: 2023 DefinitionBlock (...) 2024 { 2025 External (DEV1) 2026 Device (DEV1){...} // This was an error 2027 } 2028However, this behavior has caused regressions in some existing ASL code, 2029because there is code that depends on named objects and externals (with 2030the same name) being declared in the same table. This change will allow 2031the ASL code above to compile without errors or warnings. 2032 2033iASL: Implemented ASL language extensions for four operators to make some 2034of their arguments optional instead of required: 2035 1) Field (RegionName, AccessType, LockRule, UpdateRule) 2036 2) BankField (RegionName, BankName, BankValue, 2037 AccessType, LockRule, UpdateRule) 2038 3) IndexField (IndexName, DataName, 2039 AccessType, LockRule, UpdateRule) 2040For the Field operators above, the AccessType, LockRule, and UpdateRule 2041are now optional arguments. The default values are: 2042 AccessType: AnyAcc 2043 LockRule: NoLock 2044 UpdateRule: Preserve 2045 4) Mutex (MutexName, SyncLevel) 2046For this operator, the SyncLevel argument is now optional. This argument 2047is rarely used in any meaningful way by ASL code, and thus it makes sense 2048to make it optional. The default value is: 2049 SyncLevel: 0 2050 2051iASL: Attempted use of the ASL Unload() operator now results in the 2052following warning: 2053 "Unload is not supported by all operating systems" 2054This is in fact very true, and the Unload operator may be completely 2055deprecated in the near future. 2056 2057AcpiExec: Fixed a regression for the -fi option (Namespace initialization 2058file. Recent changes in the ACPICA module-level code support altered the 2059table load/initialization sequence . This means that the table load has 2060become a large method execution of the table itself. If Operation Region 2061Fields are used within any module-level code and the -fi option was 2062specified, the initialization values were populated only after the table 2063had completely finished loading (and thus the module-level code had 2064already been executed). This change moves the initialization of objects 2065listed in the initialization file to before the table is executed as a 2066method. Field unit values are now initialized before the table execution 2067is performed. 2068 2069---------------------------------------- 207031 May 2018. Summary of changes for version 20180531: 2071 2072 20731) ACPICA kernel-resident Subsystem: 2074 2075Implemented additional support to help ensure that a DSDT or SSDT is 2076fully loaded even if errors are incurred during the load. The majority of 2077the problems that are seen is the failure of individual AML operators 2078that occur during execution of any module-level code (MLC) existing in 2079the table. This support adds a mechanism to abort the current ASL 2080statement (AML opcode), emit an error message, and to simply move on to 2081the next opcode -- instead of aborting the entire table load. This is 2082different than the execution of a control method where the entire method 2083is aborted upon any error. The goal is to perform a very "best effort" to 2084load the ACPI tables. The most common MLC errors that have been seen in 2085the field are direct references to unresolved ASL/AML symbols (referenced 2086directly without the use of the CondRefOf operator to validate the 2087symbol). This new ACPICA behavior is now compatible with other ACPI 2088implementations. 2089 2090Interpreter: The Unload AML operator is no longer supported for the 2091reasons below. An AE_NOT_IMPLEMENTED exception is returned. 20921) A correct implementation on at least some hosts may not be possible. 20932) Other ACPI implementations do not correctly/fully support it. 20943) It requires host device driver support which is not known to exist. 2095 (To properly support namespace unload out from underneath.) 20964) This AML operator has never been seen in the field. 2097 2098Parser: Added a debug option to dump AML parse sub-trees as they are 2099being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 2100ACPI_DB_PARSE_TREES. 2101 2102Debugger: Reduced the verbosity for errors incurred during table load and 2103module-level code execution. 2104 2105Completed an investigation into adding a namespace node "owner list" 2106instead of the current "owner ID" associated with namespace nodes. This 2107list would link together all nodes that are owned by an individual 2108control method. The purpose would be to enhance control method execution 2109by speeding up cleanup during method exit (all namespace nodes created by 2110a method are deleted upon method termination.) Currently, the entire 2111namespace must be searched for matching owner IDs if (and only if) the 2112method creates named objects outside of the local scope. However, by far 2113the most common case is that methods create objects locally, not outside 2114the method scope. There is already an ACPICA optimization in place that 2115only searches the entire namespace in the rare case of a method creating 2116objects elsewhere in the namespace. Therefore, it is felt that the 2117overhead of adding an additional pointer to each namespace node to 2118implement the owner list makes this feature unnecessary. 2119 2120 21212) iASL Compiler/Disassembler and Tools: 2122 2123iASL, Disassembler, and Template generator: Implemented support for 2124Revision D of the IORT table. Adds a new subtable that is used to specify 2125SMMUv3 PMCGs. rmurphy-arm. 2126 2127Disassembler: Restored correct table header validation for the "special" 2128ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 2129table header and must be special-cased. This was a regression that has 2130been present for apparently a long time. 2131 2132AcpiExec: Reduced verbosity of the local exception handler implemented 2133within acpiexec. This handler is invoked by ACPICA upon any exceptions 2134generated during control method execution. A new option was added: -vh 2135restores the original verbosity level if desired. 2136 2137AcpiExec: Changed the default base from decimal to hex for the -x option 2138(set debug level). This simplifies the use of this option and matches the 2139behavior of the corresponding iASL -x option. 2140 2141AcpiExec: Restored a force-exit on multiple control-c (sigint) 2142interrupts. This allows program termination even if other issues cause 2143the control-c to fail. 2144 2145ASL test suite (ASLTS): Added tests for the recently implemented package 2146element resolution mechanism that allows forward references to named 2147objects from individual package elements (this mechanism provides 2148compatibility with other ACPI implementations.) 2149 2150 2151---------------------------------------- 21528 May 2018. Summary of changes for version 20180508: 2153 2154 21551) ACPICA kernel-resident subsystem: 2156 2157Completed the new (recently deployed) package resolution mechanism for 2158the Load and LoadTable ASL/AML operators. This fixes a regression that 2159was introduced in version 20180209 that could result in an 2160AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 2161(SSDT) that contains package objects. 2162 2163 21642) iASL Compiler/Disassembler and Tools: 2165 2166AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 21671 MB. This change allows for table offsets within the acpidump file to be 2168up to 8 characters. These changes are backwards compatible with existing 2169acpidump files. 2170 2171 2172---------------------------------------- 217327 April 2018. Summary of changes for version 20180427: 2174 2175 21761) ACPICA kernel-resident subsystem: 2177 2178Debugger: Added support for Package objects in the "Test Objects" 2179command. This command walks the entire namespace and evaluates all named 2180data objects (Integers, Strings, Buffers, and now Packages). 2181 2182Improved error messages for the namespace root node. Originally, the root 2183was referred to by the confusing string "\___". This has been replaced by 2184"Namespace Root" for clarification. 2185 2186Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 2187Ian King <colin.king@canonical.com>. 2188 2189 21902) iASL Compiler/Disassembler and Tools: 2191 2192iASL: Implemented support to detect and flag illegal forward references. 2193For compatibility with other ACPI implementations, these references are 2194now illegal at the root level of the DSDT or SSDTs. Forward references 2195have always been illegal within control methods. This change should not 2196affect existing ASL/AML code because of the fact that these references 2197have always been illegal in the other ACPI implementation. 2198 2199iASL: Added error messages for the case where a table OEM ID and OEM 2200TABLE ID strings are longer than the ACPI-defined length. Previously, 2201these strings were simply silently truncated. 2202 2203iASL: Enhanced the -tc option (which creates an AML hex file in C, 2204suitable for import into a firmware project): 2205 1) Create a unique name for the table, to simplify use of multiple 2206SSDTs. 2207 2) Add a protection #ifdef in the file, similar to a .h header file. 2208With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 2209evan.lloyd@arm.com 2210 2211AcpiExec: Added a new option, -df, to disable the local fault handler. 2212This is useful during debugging, where it may be desired to drop into a 2213debugger on a fault. 2214 2215---------------------------------------- 221613 March 2018. Summary of changes for version 20180313: 2217 2218 22191) ACPICA kernel-resident subsystem: 2220 2221Implemented various improvements to the GPE support: 2222 22231) Dispatch all active GPEs at initialization time so that no GPEs are 2224lost. 22252) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 2226before devices are enumerated. 22273) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 2228IRQs are not lost. 22294) Add parallel GPE handling to eliminate the possibility of dispatching 2230the same GPE twice. 22315) Dispatch any pending GPEs after enabling for the first time. 2232 2233AcpiGetObjectInfo - removed support for the _STA method. This was causing 2234problems on some platforms. 2235 2236Added a new _OSI string, "Windows 2017.2". 2237 2238Cleaned up and simplified the module-level code support. These changes 2239are in preparation for the eventual removal of the legacy MLC support 2240(deferred execution), replaced by the new MLC architecture which executes 2241the MLC as a table is loaded (DSDT/SSDTs). 2242 2243Changed a compile-time option to a runtime option. Changes the option to 2244ignore ACPI table load-time package resolution errors into a runtime 2245option. Used only for platforms that generate many AE_NOT_FOUND errors 2246during boot. AcpiGbl_IgnorePackageResolutionErrors. 2247 2248Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 2249ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 2250compilation errors from unused variables (seen with some compilers). 2251 2252 22532) iASL Compiler/Disassembler and Tools: 2254 2255ASLTS: parallelized execution in order to achieve an (approximately) 2X 2256performance increase. 2257 2258ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 2259error reporting. 2260 2261---------------------------------------- 226209 February 2018. Summary of changes for version 20180209: 2263 2264 22651) ACPICA kernel-resident subsystem: 2266 2267Completed the final integration of the recent changes to Package Object 2268handling and the module-level AML code support. This allows forward 2269references from individual package elements when the package object is 2270declared from within module-level code blocks. Provides compatibility 2271with other ACPI implementations. 2272 2273The new architecture for the AML module-level code has been completed and 2274is now the default for the ACPICA code. This new architecture executes 2275the module-level code in-line as the ACPI table is loaded/parsed instead 2276of the previous architecture which deferred this code until after the 2277table was fully loaded. This solves some ASL code ordering issues and 2278provides compatibility with other ACPI implementations. At this time, 2279there is an option to fallback to the earlier architecture, but this 2280support is deprecated and is planned to be completely removed later this 2281year. 2282 2283Added a compile-time option to ignore AE_NOT_FOUND exceptions during 2284resolution of named reference elements within Package objects. Although 2285this is potentially a serious problem, it can generate a lot of 2286noise/errors on platforms whose firmware carries around a bunch of unused 2287Package objects. To disable these errors, define 2288ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 2289errors are always reported for ACPICA applications such as AcpiExec. 2290 2291Fixed a regression related to the explicit type-conversion AML operators 2292(ToXXXX). The regression was introduced early in 2017 but was not seen 2293until recently because these operators are not fully supported by other 2294ACPI implementations and are thus rarely used by firmware developers. The 2295operators are defined by the ACPI specification to not implement the 2296"implicit result object conversion". The regression incorrectly 2297introduced this object conversion for the following explicit conversion 2298operators: 2299 ToInteger 2300 ToString 2301 ToBuffer 2302 ToDecimalString 2303 ToHexString 2304 ToBCD 2305 FromBCD 2306 2307 23082) iASL Compiler/Disassembler and Tools: 2309 2310iASL: Fixed a problem with the compiler constant folding feature as 2311related to the ToXXXX explicit conversion operators. These operators do 2312not support the "implicit result object conversion" by definition. Thus, 2313ASL expressions that use these operators cannot be folded to a simple 2314Store operator because Store implements the implicit conversion. This 2315change uses the CopyObject operator for the ToXXXX operator folding 2316instead. CopyObject is defined to not implement implicit result 2317conversions and is thus appropriate for folding the ToXXXX operators. 2318 2319iASL: Changed the severity of an error condition to a simple warning for 2320the case where a symbol is declared both locally and as an external 2321symbol. This accommodates existing ASL code. 2322 2323AcpiExec: The -ep option to enable the new architecture for module-level 2324code has been removed. It is replaced by the -dp option which instead has 2325the opposite effect: it disables the new architecture (the default) and 2326enables the legacy architecture. When the legacy code is removed in the 2327future, the -dp option will be removed also. 2328 2329---------------------------------------- 233005 January 2018. Summary of changes for version 20180105: 2331 2332 23331) ACPICA kernel-resident subsystem: 2334 2335Updated all copyrights to 2018. This affects all source code modules. 2336 2337Fixed a possible build error caused by an unresolved reference to the 2338AcpiUtSafeStrncpy function. 2339 2340Removed NULL pointer arithmetic in the various pointer manipulation 2341macros. All "(void *) NULL" constructs are converted to "(void *) 0". 2342This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 2343 2344Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 2345Mittal. 2346 2347 23482) iASL Compiler/Disassembler and Tools: 2349 2350ASLTS: Updated all copyrights to 2018. 2351 2352Tools: Updated all signon copyrights to 2018. 2353 2354AcpiXtract: Fixed a regression related to ACPI table signatures where the 2355signature was truncated to 3 characters (instead of 4). 2356 2357AcpiExec: Restore the original terminal mode after the use of the -v and 2358-vd options. 2359 2360ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 2361 2362---------------------------------------- 236314 December 2017. Summary of changes for version 20171214: 2364 2365 23661) ACPICA kernel-resident subsystem: 2367 2368Fixed a regression in the external (public) AcpiEvaluateObjectTyped 2369interface where the optional "pathname" argument had inadvertently become 2370a required argument returning an error if omitted (NULL pointer 2371argument). 2372 2373Fixed two possible memory leaks related to the recently developed "late 2374resolution" of reference objects within ASL Package Object definitions. 2375 2376Added two recently defined _OSI strings: "Windows 2016" and "Windows 23772017". Mario Limonciello. 2378 2379Implemented and deployed a safer version of the C library function 2380strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 2381creation of unterminated strings as a possible result of a standard 2382strncpy. 2383 2384Cleaned up and restructured the global variable file (acglobal.h). There 2385are many changes, but no functional changes. 2386 2387 23882) iASL Compiler/Disassembler and Tools: 2389 2390iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 2391optional OemData field at the end of the table was incorrectly required 2392for proper compilation. It is now correctly an optional field. 2393 2394ASLTS: The entire suite was converted from standard ASL to the ASL+ 2395language, using the ASL-to-ASL+ converter which is integrated into the 2396iASL compiler. A binary compare of all output files has verified the 2397correctness of the conversion. 2398 2399iASL: Fixed the source code build for platforms where "char" is unsigned. 2400This affected the iASL lexer only. Jung-uk Kim. 2401 2402---------------------------------------- 240310 November 2017. Summary of changes for version 20171110: 2404 2405 24061) ACPICA kernel-resident subsystem: 2407 2408This release implements full support for ACPI 6.2A: 2409 NFIT - Added a new subtable, "Platform Capabilities Structure" 2410No other changes to ACPICA were required, since ACPI 6.2A is primarily an 2411errata release of the specification. 2412 2413Other ACPI table changes: 2414 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 2415 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 2416Linton 2417 2418Utilities: Modified the string/integer conversion functions to use 2419internal 64-bit divide support instead of a native divide. On 32-bit 2420platforms, a 64-bit divide typically requires a library function which 2421may not be present in the build (kernel or otherwise). 2422 2423Implemented a targeted error message for timeouts returned from the 2424Embedded Controller device driver. This is seen frequently enough to 2425special-case an AE_TIME returned from an EC operation region access: 2426 "Timeout from EC hardware or EC device driver" 2427 2428Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 2429runtime error messages have the identical prefix. 2430 2431 24322) iASL Compiler/Disassembler and Tools: 2433 2434AcpiXtract: Fixed a problem with table header detection within the 2435acpidump file. Processing a table could be ended early if a 0x40 (@) 2436appears in the original binary table, resulting in the @ symbol appearing 2437in the decoded ASCII field at the end of the acpidump text line. The 2438symbol caused acpixtract to incorrectly think it had reached the end of 2439the current table and the beginning of a new table. 2440 2441AcpiXtract: Added an option (-f) to ignore some errors during table 2442extraction. This initial implementation ignores non-ASCII and non- 2443printable characters found in the acpidump text file. 2444 2445TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 2446for ASLTS. This feature is used to track memory allocations from 2447different memory caches within the ACPICA code. At the end of an ASLTS 2448run, these memory statistics are recorded and stored in a log file. 2449 2450Debugger (user-space version): Implemented a simple "Background" command. 2451Creates a new thread to execute a control method in the background, while 2452control returns to the debugger prompt to allow additional commands. 2453 Syntax: Background <Namepath> [Arguments] 2454 2455---------------------------------------- 245629 September 2017. Summary of changes for version 20170929: 2457 2458 24591) ACPICA kernel-resident subsystem: 2460 2461Redesigned and implemented an improved ASL While() loop timeout 2462mechanism. This mechanism is used to prevent infinite loops in the kernel 2463AML interpreter caused by either non-responsive hardware or incorrect AML 2464code. The new implementation uses AcpiOsGetTimer instead of a simple 2465maximum loop count, and is thus more accurate and constant across 2466different machines. The default timeout is currently 30 seconds, but this 2467may be adjusted later. 2468 2469Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 2470better reflect the new implementation of the loop timeout mechanism. 2471 2472Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 2473and to fix an off-by-one error. Jung-uk Kim. 2474 2475Fixed an EFI build problem by updating the makefiles to for a new file 2476that was added, utstrsuppt.c 2477 2478 24792) iASL Compiler/Disassembler and Tools: 2480 2481Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 2482includes support in the table disassembler, compiler, and template 2483generator. 2484 2485iASL: Added an exception for an illegal type of recursive method 2486invocation. If a method creates named objects, the first recursive call 2487will fail at runtime. This change adds an error detection at compile time 2488to catch the problem up front. Note: Marking such a method as 2489"serialized" will not help with this problem, because the same thread can 2490acquire the method mutex more than once. Example compiler and runtime 2491output: 2492 2493 Method (MTH1) 2494 { 2495 Name (INT1, 1) 2496 MTH1 () 2497 } 2498 2499 dsdt.asl 22: MTH1 () 2500 Error 6152 - ^ Illegal recursive call to method 2501 that creates named objects (MTH1) 2502 2503Previous runtime exception: 2504 ACPI Error: [INT1] Namespace lookup failure, 2505 AE_ALREADY_EXISTS (20170831/dswload2-465) 2506 2507iASL: Updated support for External() opcodes to improve namespace 2508management and error detection. These changes are related to issues seen 2509with multiple-segment namespace pathnames within External declarations, 2510such as below: 2511 2512 External(\_SB.PCI0.GFX0, DeviceObj) 2513 External(\_SB.PCI0.GFX0.ALSI) 2514 2515iASL: Implemented support for multi-line error/warning messages. This 2516enables more detailed and helpful error messages as below, from the 2517initial deployment for the duplicate names error: 2518 2519 DSDT.iiii 1692: Device(PEG2) { 2520 Error 6074 - ^ Name already exists in scope 2521(PEG2) 2522 2523 Original name creation/declaration below: 2524 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 2525 2526AcpiXtract: Added additional flexibility to support differing input hex 2527dump formats. Specifically, hex dumps that contain partial disassembly 2528and/or comments within the ACPI table data definition. There exist some 2529dump utilities seen in the field that create this type of hex dump (such 2530as Simics). For example: 2531 2532 DSDT @ 0xdfffd0c0 (10999 bytes) 2533 Signature DSDT 2534 Length 10999 2535 Revision 1 2536 Checksum 0xf3 (Ok) 2537 OEM_ID BXPC 2538 OEM_table_id BXDSDT 2539 OEM_revision 1 2540 Creator_id 1280593481 2541 Creator_revision 537399345 2542 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 2543 ... 2544 2af0: 5f 4c 30 46 00 a4 01 2545 2546Test suite: Miscellaneous changes/fixes: 2547 More cleanup and simplification of makefiles 2548 Continue compilation of test cases after a compile failure 2549 Do not perform binary compare unless both files actually exist 2550 2551iASL: Performed some code/module restructuring. Moved all memory 2552allocation functions to new modules. Two new files, aslallocate.c and 2553aslcache.c 2554 2555---------------------------------------- 255631 August 2017. Summary of changes for version 20170831: 2557 2558 25591) ACPICA kernel-resident subsystem: 2560 2561Implemented internal support for full 64-bit addresses that appear in all 2562Generic Address Structure (GAS) structures. Previously, only the lower 32 2563bits were used. Affects the use of GAS structures in the FADT and other 2564tables, as well as the GAS structures passed to the AcpiRead and 2565AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 2566 2567Added header support for the PDTT ACPI table (Processor Debug Trigger 2568Table). Full support in the iASL Data Table Compiler and disassembler is 2569forthcoming. 2570 2571 25722) iASL Compiler/Disassembler and Tools: 2573 2574iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 2575Properties Topology Table) where a flag bit was specified in the wrong 2576bit position ("Line Size Valid", bit 6). 2577 2578iASL: Implemented support for Octal integer constants as defined by the 2579ASL language grammar, per the ACPI specification. Any integer constant 2580that starts with a zero is an octal constant. For example, 2581 Store (037777, Local0) /* Octal constant */ 2582 Store (0x3FFF, Local0) /* Hex equivalent */ 2583 Store (16383, Local0) /* Decimal equivalent */ 2584 2585iASL: Improved overflow detection for 64-bit string conversions during 2586compilation of integer constants. "Overflow" in this case means a string 2587that represents an integer that is too large to fit into a 64-bit value. 2588Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 2589the low-order 32 bits with a warning, as previously implemented. Several 2590new exceptions are defined that indicate a 64-bit overflow, as well as 2591the base (radix) that was used during the attempted conversion. Examples: 2592 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 2593 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 2594 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 2595 2596iASL: Added a warning for the case where a ResourceTemplate is declared 2597with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 2598this case, the resulting template is created with a single END_TAG 2599descriptor, which is essentially useless. 2600 2601iASL: Expanded the -vw option (ignore specific warnings/remarks) to 2602include compilation error codes as well. 2603 2604---------------------------------------- 260528 July 2017. Summary of changes for version 20170728: 2606 2607 26081) ACPICA kernel-resident subsystem: 2609 2610Fixed a regression seen with small resource descriptors that could cause 2611an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2612 2613AML interpreter: Implemented a new feature that allows forward references 2614from individual named references within package objects that are 2615contained within blocks of "module-level code". This provides 2616compatibility with other ACPI implementations and supports existing 2617firmware that depends on this feature. Example: 2618 2619 Name (ABCD, 1) 2620 If (ABCD) /* An If() at module-level */ 2621 { 2622 Name (PKG1, Package() 2623 { 2624 INT1 /* Forward reference to object INT1 2625*/ 2626 }) 2627 Name (INT1, 0x1234) 2628 } 2629 2630AML Interpreter: Fixed a problem with the Alias() operator where aliases 2631to some ASL objects were not handled properly. Objects affected are: 2632Mutex, Event, and OperationRegion. 2633 2634AML Debugger: Enhanced to properly handle AML Alias objects. These 2635objects have one level of indirection which was not fully supported by 2636the debugger. 2637 2638Table Manager: Added support to detect and ignore duplicate SSDTs within 2639the XSDT/RSDT. This error in the XSDT has been seen in the field. 2640 2641EFI and EDK2 support: 2642 Enabled /WX flag for MSVC builds 2643 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2644 Added local support for 64-bit multiply and shift operations 2645 Added support to compile acpidump.efi on Windows 2646 Added OSL function stubs for interfaces not used under EFI 2647 2648Added additional support for the _DMA predefined name. _DMA returns a 2649buffer containing a resource template. This change add support within the 2650resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2651resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2652 2653 26542) iASL Compiler/Disassembler and Tools: 2655 2656iASL: Fixed a problem where the internal input line buffer(s) could 2657overflow if there are very long lines in the input ASL source code file. 2658Implemented buffer management that automatically increases the size of 2659the buffers as necessary. 2660 2661iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2662errors. If the specified exception is not raised during compilation, the 2663compiler emits an error. This is intended to support the ASL test suite, 2664but may be useful in other contexts. 2665 2666iASL: Implemented a new predefined macro, __METHOD__, which returns a 2667string containing the name of the current control method that is being 2668compiled. 2669 2670iASL: Implemented debugger and table compiler support for the SDEI ACPI 2671table (Software Delegated Exception Interface). James Morse 2672<james.morse@arm.com> 2673 2674Unix/Linux makefiles: Added an option to disable compile optimizations. 2675The disable occurs when the NOOPT flag is set to TRUE. 2676theracermaster@gmail.com 2677 2678Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2679when there are different tables for 32-bit versus 64-bit. 2680 2681Enhanced error reporting for the ASL test suite (ASLTS) by removing 2682unnecessary/verbose text, and emit the actual line number where an error 2683has occurred. These changes are intended to improve the usefulness of the 2684test suite. 2685 2686---------------------------------------- 268729 June 2017. Summary of changes for version 20170629: 2688 2689 26901) ACPICA kernel-resident subsystem: 2691 2692Tables: Implemented a deferred ACPI table verification. This is useful 2693for operating systems where the tables cannot be verified in the early 2694initialization stage due to early memory mapping limitations on some 2695architectures. Lv Zheng. 2696 2697Tables: Removed the signature validation for dynamically loaded tables. 2698Provides compatibility with other ACPI implementations. Previously, only 2699SSDT tables were allowed, as per the ACPI specification. Now, any table 2700signature can be used via the Load() operator. Lv Zheng. 2701 2702Tables: Fixed several mutex issues that could cause errors during table 2703acquisition. Lv Zheng. 2704 2705Tables: Fixed a problem where an ACPI warning could be generated if a 2706null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2707 2708Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2709AcpiPutTable interfaces. This applies to the "late stage" table loading 2710when the use of AcpiPutTable is no longer required (since the system 2711memory manager is fully running and available). Lv Zheng. 2712 2713Fixed/Reverted a regression during processing of resource descriptors 2714that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2715exception in this case. 2716 2717Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2718I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2719 2720Interpreter: Fixed a possible fault if an Alias operator with an invalid 2721or duplicate target is encountered during Alias creation in 2722AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2723 2724Added an option to use designated initializers for function pointers. 2725Kees Cook <keescook@google.com> 2726 2727 27282) iASL Compiler/Disassembler and Tools: 2729 2730iASL: Allow compilation of External declarations with target pathnames 2731that refer to existing named objects within the table. Erik Schmauss. 2732 2733iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2734FieldUnit name also is declared via External in the same table. Erik 2735Schmauss. 2736 2737iASL: Allow existing scope names within pathnames used in External 2738statements. For example: 2739 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2740 Device (ABCD) 2741 2742iASL: IORT ACPI table: Implemented changes required to decode the new 2743Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2744compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2745 2746Disassembler: Don't abort disassembly on errors from External() 2747statements. Erik Schmauss. 2748 2749Disassembler: fixed a possible fault when one of the Create*Field 2750operators references a Resource Template. ACPICA Bugzilla 1396. 2751 2752iASL: In the source code, resolved some naming inconsistences across the 2753parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2754Adds a new file, aslparseop.c 2755 2756---------------------------------------- 275731 May 2017. Summary of changes for version 20170531: 2758 2759 27600) ACPI 6.2 support: 2761 2762The ACPI specification version 6.2 has been released and is available at 2763http://uefi.org/specifications 2764 2765This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2766are summarized below. 2767 2768New ACPI tables (Table Compiler/Disassembler/Templates): 2769 HMAT (Heterogeneous Memory Attributes Table) 2770 WSMT (Windows SMM Security Mitigation Table) 2771 PPTT (Processor Properties Topology Table) 2772 2773New subtables for existing ACPI tables: 2774 HEST (New subtable, Arch-deferred machine check) 2775 SRAT (New subtable, Arch-specific affinity structure) 2776 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2777 2778Simple updates for existing ACPI tables: 2779 BGRT (two new flag bits) 2780 HEST (New bit defined for several subtables, GHES_ASSIST) 2781 2782New Resource Descriptors and Resource macros (Compiler/Disassembler): 2783 PinConfig() 2784 PinFunction() 2785 PinGroup() 2786 PinGroupConfig() 2787 PinGroupFunction() 2788 New type for hardware error notification (section 18.3.2.9) 2789 2790New predefined names/methods (Compiler/Interpreter): 2791 _HMA (Heterogeneous Memory Attributes) 2792 _LSI (Label Storage Information) 2793 _LSR (Label Storage Read) 2794 _LSW (Label Storage Write) 2795 2796ASL grammar/macro changes (Compiler): 2797 For() ASL macro, implemented with the AML while operator 2798 Extensions to Concatenate operator 2799 Support for multiple definition blocks in same ASL file 2800 Clarification for Buffer operator 2801 Allow executable AML code underneath all scopes (Devices, etc.) 2802 Clarification/change for the _OSI return value 2803 ASL grammar update for reference operators 2804 Allow a zero-length string for AML filename in DefinitionBlock 2805 2806Miscellaneous: 2807 New device object notification value 2808 Remove a notify value (0x0C) for graceful shutdown 2809 New UUIDs for processor/cache properties and 2810 physical package property 2811 New _HID, ACPI0014 (Wireless Power Calibration Device) 2812 2813 28141) ACPICA kernel-resident subsystem: 2815 2816Added support to disable ACPI events on hardware-reduced platforms. 2817Eliminates error messages of the form "Could not enable fixed event". Lv 2818Zheng 2819 2820Fixed a problem using Device/Thermal objects with the ObjectType and 2821DerefOf ASL operators. This support had not been fully/properly 2822implemented. 2823 2824Fixed a problem where if a Buffer object containing a resource template 2825was longer than the actual resource template, an error was generated -- 2826even though the AML is legal. This case has been seen in the field. 2827 2828Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2829The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2830 2831Added header file changes for the TPM2 ACPI table. Update to new version 2832of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2833 2834Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2835These interfaces are intended to be used only in conjunction with the 2836predefined _DLM method (Device Lock Method). "This object appears in a 2837device scope when AML access to the device must be synchronized with the 2838OS environment". 2839 2840Example Code and Data Size: These are the sizes for the OS-independent 2841acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2842debug version of the code includes the debug output trace mechanism and 2843has a much larger code and data size. 2844 2845 Current Release: 2846 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2847 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2848 Previous Release: 2849 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2850 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2851 2852 28532) iASL Compiler/Disassembler and Tools: 2854 2855iASL: Fixed a problem where an External() declaration could not refer to 2856a Field Unit. Erik Schmauss. 2857 2858Disassembler: Improved support for the Switch/Case operators. This 2859feature will disassemble AML code back to the original Switch operators 2860when possible, instead of an If..Else sequence. David Box 2861 2862iASL and disassembler: Improved the handling of multiple extraneous 2863parentheses for both ASL input and disassembled ASL output. 2864 2865Improved the behavior of the iASL compiler and disassembler to detect 2866improper use of external declarations 2867 2868Disassembler: Now aborts immediately upon detection of an unknown AML 2869opcode. The AML parser has no real way to recover from this, and can 2870result in the creation of an ill-formed parse tree that causes errors 2871later during the disassembly. 2872 2873All tools: Fixed a problem where the Unix application OSL did not handle 2874control-c correctly. For example, a control-c could incorrectly wake the 2875debugger. 2876 2877AcpiExec: Improved the Control-C handling and added a handler for 2878segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2879environments. 2880 2881Reduced the verbosity of the generic unix makefiles. Previously, each 2882compilation displayed the full set of compiler options. This has been 2883eliminated as the options are easily inspected within the makefiles. Each 2884compilation now results in a single line of output. 2885 2886---------------------------------------- 288703 March 2017. Summary of changes for version 20170303: 2888 2889 28900) ACPICA licensing: 2891 2892The licensing information at the start of each source code module has 2893been updated. In addition to the Intel license, the dual GPLv2/BSD 2894license has been added for completeness. Now, a single version of the 2895source code should be suitable for all ACPICA customers. This is the 2896major change for this release since it affects all source code modules. 2897 2898 28991) ACPICA kernel-resident subsystem: 2900 2901Fixed two issues with the common asltypes.h header that could cause 2902problems in some environments: (Kim Jung-uk) 2903 Removed typedef for YY_BUFFER_STATE ? 2904 Fixes an error with earlier versions of Flex. 2905 Removed use of FILE typedef (which is only defined in stdio.h) 2906 2907 29082) iASL Compiler/Disassembler and Tools: 2909 2910Disassembler: fixed a regression introduced in 20170224. A fix for a 2911memory leak related to resource descriptor tags (names) could fault when 2912the disassembler was generated with 64-bit compilers. 2913 2914The ASLTS test suite has been updated to implement a new testing 2915architecture. During generation of the suite from ASL source, both the 2916ASL and ASL+ compilers are now validated, as well as the disassembler 2917itself (Erik Schmauss). The architecture executes as follows: 2918 2919 For every ASL source module: 2920 Compile (legacy ASL compilation) 2921 Disassemble the resulting AML to ASL+ source code 2922 Compile the new ASL+ module 2923 Perform a binary compare on the legacy AML and the new ASL+ AML 2924 The ASLTS suite then executes normally using the AML binaries. 2925 2926---------------------------------------- 292724 February 2017. Summary of changes for version 20170224: 2928 2929 29301) ACPICA kernel-resident subsystem: 2931 2932Interpreter: Fixed two issues with the control method return value auto- 2933repair feature, where an attempt to double-delete an internal object 2934could result in an ACPICA warning (for _CID repair and others). No fault 2935occurs, however, because the attempted deletion (actually a release to an 2936internal cache) is detected and ignored via object poisoning. 2937 2938Debugger: Fixed an AML interpreter mutex issue during the single stepping 2939of control methods. If certain debugger commands are executed during 2940stepping, a mutex acquire/release error could occur. Lv Zheng. 2941 2942Fixed some issues generating ACPICA with the Intel C compiler by 2943restoring the original behavior and compiler-specific include file in 2944acenv.h. Lv Zheng. 2945 2946Example Code and Data Size: These are the sizes for the OS-independent 2947acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2948debug version of the code includes the debug output trace mechanism and 2949has a much larger code and data size. 2950 2951 Current Release: 2952 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2953 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2954 Previous Release: 2955 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2956 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2957 2958 29592) iASL Compiler/Disassembler and Tools: 2960 2961iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2962tool has been designed, implemented, and included in this release. The 2963key feature of this utility is that the original comments within the 2964input ASL file are preserved during the conversion process, and included 2965within the converted ASL+ file -- thus creating a transparent conversion 2966of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2967 2968 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2969converted code 2970 2971iASL/Disassembler: Improved the detection and correct disassembly of 2972Switch/Case operators. This feature detects sequences of if/elseif/else 2973operators that originated from ASL Switch/Case/Default operators and 2974emits the original operators. David Box. 2975 2976iASL: Improved the IORT ACPI table support in the following areas. Lv 2977Zheng: 2978 Clear MappingOffset if the MappingCount is zero. 2979 Fix the disassembly of the SMMU GSU interrupt offset. 2980 Update the template file for the IORT table. 2981 2982Disassembler: Enhanced the detection and disassembly of resource 2983template/descriptor within a Buffer object. An EndTag descriptor is now 2984required to have a zero second byte, since all known ASL compilers emit 2985this. This helps eliminate incorrect decisions when a buffer is 2986disassembled (false positives on resource templates). 2987 2988---------------------------------------- 298919 January 2017. Summary of changes for version 20170119: 2990 2991 29921) General ACPICA software: 2993 2994Entire source code base: Added the 2017 copyright to all source code 2995legal/licensing module headers and utility/tool signons. This includes 2996the standard Linux dual-license header. This affects virtually every file 2997in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2998the ACPICA test suite. 2999 3000 30012) iASL Compiler/Disassembler and Tools: 3002 3003iASL: Removed/fixed an inadvertent remark when a method argument 3004containing a reference is used as a target operand within the method (and 3005never used as a simple argument), as in the example below. Jeffrey Hugo. 3006 3007 dsdt.asl 1507: Store(0x1, Arg0) 3008 Remark 2146 - ^ Method Argument is never used (Arg0) 3009 3010All tools: Removed the bit width of the compiler that generated the tool 3011from the common signon for all user space tools. This proved to be 3012confusing and unnecessary. This includes similar removal of HARDWARE_NAME 3013from the generic makefiles (Thomas Petazzoni). Example below. 3014 3015 Old: 3016 ASL+ Optimizing Compiler version 20170119-32 3017 ASL+ Optimizing Compiler version 20170119-64 3018 3019 New: 3020 ASL+ Optimizing Compiler version 20170119 3021 3022---------------------------------------- 302322 December 2016. Summary of changes for version 20161222: 3024 3025 30261) ACPICA kernel-resident subsystem: 3027 3028AML Debugger: Implemented a new mechanism to simplify and enhance 3029debugger integration into all environments, including kernel debuggers 3030and user-space utilities, as well as remote debug services. This 3031mechanism essentially consists of new OSL interfaces to support debugger 3032initialization/termination, as well as wait/notify interfaces to perform 3033the debugger handshake with the host. Lv Zheng. 3034 3035 New OSL interfaces: 3036 AcpiOsInitializeDebugger (void) 3037 AcpiOsTerminateDebugger (void) 3038 AcpiOsWaitCommandReady (void) 3039 AcpiOsNotifyCommandComplete (void) 3040 3041 New OS services layer: 3042 osgendbg.c -- Example implementation, and used for AcpiExec 3043 3044Update for Generic Address Space (GAS) support: Although the AccessWidth 3045and/or BitOffset fields of the GAS are not often used, this change now 3046fully supports these fields. This affects the internal support for FADT 3047registers, registers in other ACPI data tables, and the AcpiRead and 3048AcpiWrite public interfaces. Lv Zheng. 3049 3050Sleep support: In order to simplify integration of ACPI sleep for the 3051various host operating systems, a new OSL interface has been introduced. 3052AcpiOsEnterSleep allows the host to perform any required operations 3053before the final write to the sleep control register(s) is performed by 3054ACPICA. Lv Zheng. 3055 3056 New OSL interface: 3057 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 3058 3059 Called from these internal interfaces: 3060 AcpiHwLegacySleep 3061 AcpiHwExtendedSleep 3062 3063EFI support: Added a very small EFI/ACPICA example application. Provides 3064a simple demo for EFI integration, as well as assisting with resolution 3065of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 3066 3067 source/tools/efihello/efihello.c 3068 3069Local C library: Implemented several new functions to enhance ACPICA 3070portability, for environments where these clib functions are not 3071available (such as EFI). Lv Zheng: 3072 putchar 3073 getchar 3074 strpbrk 3075 strtok 3076 memmove 3077 3078Fixed a regression where occasionally a valid resource descriptor was 3079incorrectly detected as invalid at runtime, and a 3080AE_AML_NO_RESOURCE_END_TAG was returned. 3081 3082Fixed a problem with the recently implemented support that enables 3083control method invocations as Target operands to many ASL operators. 3084Warnings of this form: "Needed type [Reference], found [Processor]" were 3085seen at runtime for some method invocations. 3086 3087Example Code and Data Size: These are the sizes for the OS-independent 3088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3089debug version of the code includes the debug output trace mechanism and 3090has a much larger code and data size. 3091 3092 Current Release: 3093 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 3094 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 3095 Previous Release: 3096 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 3097 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3098 3099 31002) iASL Compiler/Disassembler and Tools: 3101 3102Disassembler: Enhanced output by adding the capability to detect and 3103disassemble ASL Switch/Case statements back to the original ASL source 3104code instead of if/else blocks. David Box. 3105 3106AcpiHelp: Split a large file into separate files based upon 3107functionality/purpose. New files are: 3108 ahaml.c 3109 ahasl.c 3110 3111---------------------------------------- 311217 November 2016. Summary of changes for version 20161117: 3113 3114 31151) ACPICA kernel-resident subsystem: 3116 3117Table Manager: Fixed a regression introduced in 20160729, "FADT support 3118cleanup". This was an attempt to remove all references in the source to 3119the FADT version 2, which never was a legal version number. It was 3120skipped because it was an early version of 64-bit support that was 3121eventually abandoned for the current 64-bit support. 3122 3123Interpreter: Fixed a problem where runtime implicit conversion was 3124incorrectly disabled for the ASL operators below. This brings the 3125behavior into compliance with the ACPI specification: 3126 FromBCD 3127 ToBCD 3128 ToDecimalString 3129 ToHexString 3130 ToInteger 3131 ToBuffer 3132 3133Table Manager: Added a new public interface, AcpiPutTable, used to 3134release and free an ACPI table returned by AcpiGetTable and related 3135interfaces. Lv Zheng. 3136 3137Example Code and Data Size: These are the sizes for the OS-independent 3138acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3139debug version of the code includes the debug output trace mechanism and 3140has a much larger code and data size. 3141 3142 Current Release: 3143 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 3144 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3145 Previous Release: 3146 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3147 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3148 3149 31502) iASL Compiler/Disassembler and Tools: 3151 3152Disassembler: Fixed a regression for disassembly of Resource Template. 3153Detection of templates in the AML stream missed some types of templates. 3154 3155iASL: Fixed a problem where an Access Size error was returned for the PCC 3156address space when the AccessSize of the GAS register is greater than a 3157DWORD. Hoan Tran. 3158 3159iASL: Implemented several grammar changes for the operators below. These 3160changes are slated for the next version of the ACPI specification: 3161 RefOf - Disallow method invocation as an operand 3162 CondRefOf - Disallow method invocation as an operand 3163 DerefOf - Disallow operands that use the result from operators 3164that 3165 do not return a reference (Changed TermArg to 3166SuperName). 3167 3168iASL: Control method invocations are now allowed for Target operands, as 3169per the ACPI specification. Removed error for using a control method 3170invocation as a Target operand. 3171 3172Disassembler: Improved detection of Resource Templates, Unicode, and 3173Strings within Buffer objects. These subtypes do not contain a specific 3174opcode to indicate the originating ASL code, and they must be detected by 3175other means within the disassembler. 3176 3177iASL: Implemented an optimization improvement for 32-bit ACPI tables 3178(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 3179only after 64-bit to 32-bit truncation. A truncation warning message is 3180still emitted, however. 3181 3182AcpiXtract: Implemented handling for both types of line terminators (LF 3183or CR/LF) so that it can accept AcpiDump output files from any system. 3184Peter Wu. 3185 3186AcpiBin: Added two new options for comparing AML files: 3187 -a: compare and display ALL mismatches 3188 -o: start compare at this offset into the second file 3189 3190---------------------------------------- 319130 September 2016. Summary of changes for version 20160930: 3192 3193 31941) ACPICA kernel-resident subsystem: 3195 3196Fixed a regression in the internal AcpiTbFindTable function where a non 3197AE_OK exception could inadvertently be returned even if the function did 3198not fail. This problem affects the following operators: 3199 DataTableRegion 3200 LoadTable 3201 3202Fixed a regression in the LoadTable operator where a load to any 3203namespace location other than the root no longer worked properly. 3204 3205Increased the maximum loop count value that will result in the 3206AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 3207prevent infinite loops within the AML interpreter and thus the host OS 3208kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 32091,048,575). 3210 3211Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 3212acpixf.h file. This allows hosts to easily configure the maximum loop 3213count at runtime. 3214 3215Removed an illegal character in the strtoul64.c file. This character 3216caused errors with some C compilers. 3217 3218Example Code and Data Size: These are the sizes for the OS-independent 3219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3220debug version of the code includes the debug output trace mechanism and 3221has a much larger code and data size. 3222 3223 Current Release: 3224 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3225 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3226 Previous Release: 3227 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 3228 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3229 3230 32312) iASL Compiler/Disassembler and Tools: 3232 3233Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 3234the simpler ASL ElseIf keyword. During the conversion, a trailing If 3235block could be lost and missing from the disassembled output. 3236 3237iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 3238the missing rule caused a parse error when using the Index operator as an 3239operand to ObjectType. This construct now compiles properly. Example: 3240 ObjectType(PKG1[4]). 3241 3242iASL: Correctly handle unresolved symbols in the hardware map file (-lm 3243option). Previously, unresolved symbols could cause a protection fault. 3244Such symbols are now marked as unresolved in the map file. 3245 3246iASL: Implemented support to allow control method invocations as an 3247operand to the ASL DeRefOf operator. Example: 3248 DeRefOf(MTH1(Local0)) 3249 3250Disassembler: Improved support for the ToPLD ASL macro. Detection of a 3251possible _PLD buffer now includes examination of both the normal buffer 3252length (16 or 20) as well as the surrounding AML package length. 3253 3254Disassembler: Fixed a problem with the decoding of complex expressions 3255within the Divide operator for ASL+. For the case where both the quotient 3256and remainder targets are specified, the entire statement cannot be 3257disassembled. Previously, the output incorrectly contained a mix of ASL- 3258and ASL+ operators. This mixed statement causes a syntax error when 3259compiled. Example: 3260 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 3261disassembled to: 3262 Divide (INT1 + 6, 128, RSLT, QUOT) 3263 3264iASL/Tools: Added support to process AML and non-AML ACPI tables 3265consistently. For the disassembler and AcpiExec, allow all types of ACPI 3266tables (AML and data tables). For the iASL -e option, allow only AML 3267tables (DSDT/SSDT). 3268 3269---------------------------------------- 327031 August 2016. Summary of changes for version 20160831: 3271 3272 32731) ACPICA kernel-resident subsystem: 3274 3275Improve support for the so-called "module-level code", which is defined 3276to be math, logical and control AML opcodes that appear outside of any 3277control method. This change improves the support by adding more opcodes 3278that can be executed in the manner. Some other issues have been solved, 3279and the ASL grammar changes to support such code under all scope 3280operators (Device, etc.) are complete. Lv Zheng. 3281 3282UEFI support: these OSL functions have been implemented. This is an 3283additional step toward supporting the AcpiExec utility natively (with 3284full hardware access) under UEFI. Marcelo Ferreira. 3285 AcpiOsReadPciConfiguration 3286 AcpiOsWritePciConfiguration 3287 3288Fixed a possible mutex error during control method auto-serialization. Lv 3289Zheng. 3290 3291Updated support for the Generic Address Structure by fully implementing 3292all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 3293Zheng. 3294 3295Updated the return value for the internal _OSI method. Instead of 32960xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 3297for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 3298implementations, and will be reflected and clarified in the next version 3299of the ACPI specification. 3300 3301Implemented two new table events that can be passed to an ACPICA table 3302handler. These events are used to indicate a table installation or 3303uninstallation. These events are used in addition to existed table load 3304and unload events. Lv Zheng. 3305 3306Implemented a cleanup for all internal string-to-integer conversions. 3307Consolidate multiple versions of this functionality and limit possible 3308bases to either 10 or 16 to simplify the code. Adds a new file, 3309utstrtoul64. 3310 3311Cleanup the inclusion order of the various compiler-specific headers. 3312This simplifies build configuration management. The compiler-specific 3313headers are now split out from the host-specific headers. Lv Zheng. 3314 3315Example Code and Data Size: These are the sizes for the OS-independent 3316acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3317debug version of the code includes the debug output trace mechanism and 3318has a much larger code and data size. 3319 3320 Current Release: 3321 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 3322 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3323 3324 33252) iASL Compiler/Disassembler and Tools: 3326 3327iASL/AcpiExec: Added a command line option to display the build date/time 3328of the tool (-vd). This can be useful to verify that the correct version 3329of the tools are being used. 3330 3331AML Debugger: Implemented a new subcommand ("execute predef") to execute 3332all predefined control methods and names within the current namespace. 3333This can be useful for debugging problems with ACPI tables and the ACPI 3334namespace. 3335 3336---------------------------------------- 333729 July 2016. Summary of changes for version 20160729: 3338 3339 33401) ACPICA kernel-resident subsystem: 3341 3342Implemented basic UEFI support for the various ACPICA tools. This 3343includes: 33441) An OSL to implement the various AcpiOs* interfaces on UEFI. 33452) Support to obtain the ACPI tables on UEFI. 33463) Local implementation of required C library functions not available on 3347UEFI. 33484) A front-end (main) function for the tools for UEFI-related 3349initialization. 3350 3351The initial deployment of this support is the AcpiDump utility executing 3352as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 3353Current environments supported are Linux/Unix. MSVC generation is not 3354supported at this time. See the generate/efi/README file for build 3355instructions. Lv Zheng. 3356 3357Future plans include porting the AcpiExec utility to execute natively on 3358the platform with I/O and memory access. This will allow viewing/dump of 3359the platform namespace and native execution of ACPI control methods that 3360access the actual hardware. To fully implement this support, the OSL 3361functions below must be implemented with UEFI interfaces. Any community 3362help in the implementation of these functions would be appreciated: 3363 AcpiOsReadPort 3364 AcpiOsWritePort 3365 AcpiOsReadMemory 3366 AcpiOsWriteMemory 3367 AcpiOsReadPciConfiguration 3368 AcpiOsWritePciConfiguration 3369 3370Restructured and standardized the C library configuration for ACPICA, 3371resulting in the various configuration options below. This includes a 3372global restructuring of the compiler-dependent and platform-dependent 3373include files. These changes may affect the existing platform-dependent 3374configuration files on some hosts. Lv Zheng. 3375 3376The current C library configuration options appear below. For any issues, 3377it may be helpful to examine the existing compiler-dependent and 3378platform-dependent files as examples. Lv Zheng. 3379 33801) Linux kernel: 3381 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3382library. 3383 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 33842) Unix/Windows/BSD applications: 3385 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 3386library. 3387 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 33883) UEFI applications: 3389 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3390library. 3391 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 33924) UEFI applications (EDK2/StdLib): 3393 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 3394 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 3395 3396 3397AML interpreter: "module-level code" support. Allows for execution of so- 3398called "executable" AML code (math/logical operations, etc.) outside of 3399control methods not just at the module level (top level) but also within 3400any scope declared outside of a control method - Scope{}, Device{}, 3401Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 3402 3403Simplified the configuration of the "maximum AML loops" global option by 3404adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 3405modified at runtime. 3406 3407 3408Example Code and Data Size: These are the sizes for the OS-independent 3409acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3410debug version of the code includes the debug output trace mechanism and 3411has a much larger code and data size. 3412 3413 Current Release: 3414 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 3415 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 3416 3417 34182) iASL Compiler/Disassembler and Tools: 3419 3420iASL: Add full support for the RASF ACPI table (RAS Features Table). 3421Includes disassembler, data table compiler, and header support. 3422 3423iASL Expand "module-level code" support. Allows for 3424compilation/disassembly of so-called "executable" AML code (math/logical 3425operations, etc.) outside of control methods not just at the module level 3426(top level) but also within any scope declared outside of a control 3427method - Scope{}, Device{}, Processor{}, PowerResource{}, and 3428ThermalZone{}. 3429 3430AcpiDump: Added support for dumping all SSDTs on newer versions of 3431Windows. These tables are now easily available -- SSDTs are not available 3432through the registry on older versions. 3433 3434---------------------------------------- 343527 May 2016. Summary of changes for version 20160527: 3436 3437 34381) ACPICA kernel-resident subsystem: 3439 3440Temporarily reverted the new arbitrary bit length/alignment support in 3441AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 3442a number of regressions with the new code that need to be fully resolved 3443and tested before this support can be finally integrated into ACPICA. 3444Apologies for any inconveniences these issues may have caused. 3445 3446The ACPI message macros are not configurable (ACPI_MSG_ERROR, 3447ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 3448and ACPI_MSG_BIOS_WARNING). Lv Zheng. 3449 3450Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 3451option. Adds a new return macro, return_STR. Junk-uk Kim. 3452 3453Example Code and Data Size: These are the sizes for the OS-independent 3454acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3455debug version of the code includes the debug output trace mechanism and 3456has a much larger code and data size. 3457 3458 Current Release: 3459 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 3460 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3461 Previous Release: 3462 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3463 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 3464 3465---------------------------------------- 346622 April 2016. Summary of changes for version 20160422: 3467 34681) ACPICA kernel-resident subsystem: 3469 3470Fixed a regression in the GAS (generic address structure) arbitrary bit 3471support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 3472and incorrect return values. Lv Zheng. ACPICA BZ 1270. 3473 3474ACPI 6.0: Added support for new/renamed resource macros. One new argument 3475was added to each of these macros, and the original name has been 3476deprecated. The AML disassembler will always disassemble to the new 3477names. Support for the new macros was added to iASL, disassembler, 3478resource manager, and the acpihelp utility. ACPICA BZ 1274. 3479 3480 I2cSerialBus -> I2cSerialBusV2 3481 SpiSerialBus -> SpiSerialBusV2 3482 UartSerialBus -> UartSerialBusV2 3483 3484ACPI 6.0: Added support for a new integer field that was appended to the 3485package object returned by the _BIX method. This adds iASL compile-time 3486and AML runtime error checking. ACPICA BZ 1273. 3487 3488ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 3489Subspace Type2" (Headers, Disassembler, and data table compiler). 3490 3491Example Code and Data Size: These are the sizes for the OS-independent 3492acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3493debug version of the code includes the debug output trace mechanism and 3494has a much larger code and data size. 3495 3496 Current Release: 3497 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3498 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3499 Previous Release: 3500 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3501 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3502 3503 35042) iASL Compiler/Disassembler and Tools: 3505 3506iASL: Implemented an ASL grammar extension to allow/enable executable 3507"module-level code" to be created and executed under the various 3508operators that create new scopes. This type of AML code is already 3509supported in all known AML interpreters, and the grammar change will 3510appear in the next version of the ACPI specification. Simplifies the 3511conditional runtime creation of named objects under these object types: 3512 3513 Device 3514 PowerResource 3515 Processor 3516 Scope 3517 ThermalZone 3518 3519iASL: Implemented a new ASL extension, a "For" loop macro to add greater 3520ease-of-use to the ASL language. The syntax is similar to the 3521corresponding C operator, and is implemented with the existing AML While 3522opcode -- thus requiring no changes to existing AML interpreters. 3523 3524 For (Initialize, Predicate, Update) {TermList} 3525 3526Grammar: 3527 ForTerm := 3528 For ( 3529 Initializer // Nothing | TermArg => ComputationalData 3530 Predicate // Nothing | TermArg => ComputationalData 3531 Update // Nothing | TermArg => ComputationalData 3532 ) {TermList} 3533 3534 3535iASL: The _HID/_ADR detection and validation has been enhanced to search 3536under conditionals in order to allow these objects to be conditionally 3537created at runtime. 3538 3539iASL: Fixed several issues with the constant folding feature. The 3540improvement allows better detection and resolution of statements that can 3541be folded at compile time. ACPICA BZ 1266. 3542 3543iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 3544conversion to the ASL ElseIf operator where incorrect ASL code could be 3545generated. 3546 3547iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 3548sometimes an extra (and extraneous) set of parentheses were emitted for 3549some combinations of operators. Although this did not cause any problems 3550with recompilation of the disassembled code, it made the code more 3551difficult to read. David Box. ACPICA BZ 1231. 3552 3553iASL: Changed to ignore the unreferenced detection for predefined names 3554of resource descriptor elements, when the resource descriptor is 3555created/defined within a control method. 3556 3557iASL: Disassembler: Fix a possible fault with externally declared Buffer 3558objects. 3559 3560---------------------------------------- 356118 March 2016. Summary of changes for version 20160318: 3562 35631) ACPICA kernel-resident subsystem: 3564 3565Added support for arbitrary bit lengths and bit offsets for registers 3566defined by the Generic Address Structure. Previously, only aligned bit 3567lengths of 8/16/32/64 were supported. This was sufficient for many years, 3568but recently some machines have been seen that require arbitrary bit- 3569level support. ACPICA BZ 1240. Lv Zheng. 3570 3571Fixed an issue where the \_SB._INI method sometimes must be evaluated 3572before any _REG methods are evaluated. Lv Zheng. 3573 3574Implemented several changes related to ACPI table support 3575(Headers/Disassembler/TableCompiler): 3576NFIT: For ACPI 6.1, updated to add some additional new fields and 3577constants. 3578FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 35796). 3580DMAR: Added new constants per the 10/2014 DMAR spec. 3581IORT: Added new subtable per the 10/2015 IORT spec. 3582HEST: For ACPI 6.1, added new constants and new subtable. 3583DBG2: Added new constants per the 12/2015 DBG2 spec. 3584FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 3585ACPICA BZ 1249. 3586ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 3587 3588Updated header support for the DMAR table to match the current version of 3589the related spec. 3590 3591Added extensions to the ASL Concatenate operator to allow any ACPI object 3592to be passed as an operand. Any object other than Integer/String/Buffer 3593simply returns a string containing the object type. This extends the 3594usefulness of the Printf macros. Previously, Concatenate would abort the 3595control method if a non-data object was encountered. 3596 3597ACPICA source code: Deployed the C "const" keyword across the source code 3598where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 3599 3600Example Code and Data Size: These are the sizes for the OS-independent 3601acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3602debug version of the code includes the debug output trace mechanism and 3603has a much larger code and data size. 3604 3605 Current Release: 3606 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3607 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3608 Previous Release: 3609 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3610 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3611 3612 36132) iASL Compiler/Disassembler and Tools: 3614 3615iASL/Disassembler: Improved the heuristic used to determine the number of 3616arguments for an externally defined control method (a method in another 3617table). Although this is an improvement, there is no deterministic way to 3618"guess" the number of method arguments. Only the ACPI 6.0 External opcode 3619will completely solve this problem as it is deployed (automatically) in 3620newer BIOS code. 3621 3622iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3623statements that could cause errors when the disassembled file is 3624compiled. ACPICA BZ 1243. David Box. 3625 3626iASL: Fixed a regression caused by the merger of the two versions of the 3627local strtoul64. Because of a dependency on a global variable, strtoul64 3628could return an error for integers greater than a 32-bit value. ACPICA BZ 36291260. 3630 3631iASL: Fixed a regression where a fault could occur for an ASL Return 3632statement if it invokes a control method that is not resolved. ACPICA BZ 36331264. 3634 3635AcpiXtract: Improved input file validation: detection of binary files and 3636non-acpidump text files. 3637 3638---------------------------------------- 363912 February 2016. Summary of changes for version 20160212: 3640 36411) ACPICA kernel-resident subsystem: 3642 3643Implemented full support for the ACPI 6.1 specification (released in 3644January). This version of the specification is available at: 3645http://www.uefi.org/specifications 3646 3647Only a relatively small number of changes were required in ACPICA to 3648support ACPI 6.1, in these areas: 3649- New predefined names 3650- New _HID values 3651- A new subtable for HEST 3652- A few other header changes for new values 3653 3654Ensure \_SB_._INI is executed before any _REG methods are executed. There 3655appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3656 3657Reverted a change made in version 20151218 which enabled method 3658invocations to be targets of various ASL operators (SuperName and Target 3659grammar elements). While the new behavior is supported by the ACPI 3660specification, other AML interpreters do not support this behavior and 3661never will. The ACPI specification will be updated for ACPI 6.2 to remove 3662this support. Therefore, the change was reverted to the original ACPICA 3663behavior. 3664 3665ACPICA now supports the GCC 6 compiler. 3666 3667Current Release: (Note: build changes increased sizes) 3668 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3669 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3670Previous Release: 3671 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3672 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3673 3674 36752) iASL Compiler/Disassembler and Tools: 3676 3677Completed full support for the ACPI 6.0 External() AML opcode. The 3678compiler emits an external AML opcode for each ASL External statement. 3679This opcode is used by the disassembler to assist with the disassembly of 3680external control methods by specifying the required number of arguments 3681for the method. AML interpreters do not use this opcode. To ensure that 3682interpreters do not even see the opcode, a block of one or more external 3683opcodes is surrounded by an "If(0)" construct. As this feature becomes 3684commonly deployed in BIOS code, the ability of disassemblers to correctly 3685disassemble AML code will be greatly improved. David Box. 3686 3687iASL: Implemented support for an optional cross-reference output file. 3688The -lx option will create a the cross-reference file with the suffix 3689"xrf". Three different types of cross-reference are created in this file: 3690- List of object references made from within each control method 3691- Invocation (caller) list for each user-defined control method 3692- List of references to each non-method object in the namespace 3693 3694iASL: Method invocations as ASL Target operands are now disallowed and 3695flagged as errors in preparation for ACPI 6.2 (see the description of the 3696problem above). 3697 3698---------------------------------------- 36998 January 2016. Summary of changes for version 20160108: 3700 37011) ACPICA kernel-resident subsystem: 3702 3703Updated all ACPICA copyrights and signons to 2016: Added the 2016 3704copyright to all source code module headers and utility/tool signons. 3705This includes the standard Linux dual-license header. This affects 3706virtually every file in the ACPICA core subsystem, iASL compiler, all 3707ACPICA utilities, and the ACPICA test suite. 3708 3709Fixed a regression introduced in version 20151218 concerning the 3710execution of so-called module-level ASL/AML code. Namespace objects 3711created under a module-level If() construct were not properly/fully 3712entered into the namespace and could cause an interpreter fault when 3713accessed. 3714 3715Example Code and Data Size: These are the sizes for the OS-independent 3716acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3717debug version of the code includes the debug output trace mechanism and 3718has a much larger code and data size. 3719 3720Current Release: 3721 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3722 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3723 Previous Release: 3724 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3725 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3726 3727 37282) iASL Compiler/Disassembler and Tools: 3729 3730Fixed a problem with the compilation of the GpioIo and GpioInt resource 3731descriptors. The _PIN field name was incorrectly defined to be an array 3732of 32-bit values, but the _PIN values are in fact 16 bits each. This 3733would cause incorrect bit width warnings when using Word (16-bit) fields 3734to access the descriptors. 3735 3736 3737---------------------------------------- 373818 December 2015. Summary of changes for version 20151218: 3739 37401) ACPICA kernel-resident subsystem: 3741 3742Implemented per-AML-table execution of "module-level code" as individual 3743ACPI tables are loaded into the namespace during ACPICA initialization. 3744In other words, any module-level code within an AML table is executed 3745immediately after the table is loaded, instead of batched and executed 3746after all of the tables have been loaded. This provides compatibility 3747with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3748David Box. 3749 3750To fully support the feature above, the default operation region handlers 3751for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3752installed before any ACPI tables are loaded. This enables module-level 3753code to access these address spaces during the table load and module- 3754level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3755Box. 3756 3757Implemented several changes to the internal _REG support in conjunction 3758with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3759utilities for the changes above. Although these tools were changed, host 3760operating systems that simply use the default handlers for SystemMemory, 3761SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3762 3763For example, in the code below, DEV1 is conditionally added to the 3764namespace by the DSDT via module-level code that accesses an operation 3765region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3766created immediately after the DSDT is loaded in order for the SSDT to 3767successfully reference DEV1. Previously, this code would cause an 3768AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3769fully supported by ACPICA. 3770 3771 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3772 { 3773 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3774 Field (OPR1, AnyAcc, NoLock, Preserve) 3775 { 3776 FLD1, 1 3777 } 3778 If (FLD1) 3779 { 3780 Device (\DEV1) 3781 { 3782 } 3783 } 3784 } 3785 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3786 { 3787 External (\DEV1, DeviceObj) 3788 Scope (\DEV1) 3789 { 3790 } 3791 } 3792 3793Fixed an AML interpreter problem where control method invocations were 3794not handled correctly when the invocation was itself a SuperName argument 3795to another ASL operator. In these cases, the method was not invoked. 3796ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3797argument: 3798 Store 3799 Acquire, Wait 3800 CondRefOf, RefOf 3801 Decrement, Increment 3802 Load, Unload 3803 Notify 3804 Signal, Release, Reset 3805 SizeOf 3806 3807Implemented automatic String-to-ObjectReference conversion support for 3808packages returned by predefined names (such as _DEP). A common BIOS error 3809is to add double quotes around an ObjectReference namepath, which turns 3810the reference into an unexpected string object. This support detects the 3811problem and corrects it before the package is returned to the caller that 3812invoked the method. Lv Zheng. 3813 3814Implemented extensions to the Concatenate operator. Concatenate now 3815accepts any type of object, it is not restricted to simply 3816Integer/String/Buffer. For objects other than these 3 basic data types, 3817the argument is treated as a string containing the name of the object 3818type. This expands the utility of Concatenate and the Printf/Fprintf 3819macros. ACPICA BZ 1222. 3820 3821Cleaned up the output of the ASL Debug object. The timer() value is now 3822optional and no longer emitted by default. Also, the basic data types of 3823Integer/String/Buffer are simply emitted as their values, without a data 3824type string -- since the data type is obvious from the output. ACPICA BZ 38251221. 3826 3827Example Code and Data Size: These are the sizes for the OS-independent 3828acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3829debug version of the code includes the debug output trace mechanism and 3830has a much larger code and data size. 3831 3832 Current Release: 3833 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3834 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3835 Previous Release: 3836 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3837 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3838 3839 38402) iASL Compiler/Disassembler and Tools: 3841 3842iASL: Fixed some issues with the ASL Include() operator. This operator 3843was incorrectly defined in the iASL parser rules, causing a new scope to 3844be opened for the code within the include file. This could lead to 3845several issues, including allowing ASL code that is technically illegal 3846and not supported by AML interpreters. Note, this does not affect the 3847related #include preprocessor operator. ACPICA BZ 1212. 3848 3849iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3850operator is essentially an ASL macro since there is no AML opcode 3851associated with it. The code emitted by the iASL compiler for ElseIf is 3852an Else opcode followed immediately by an If opcode. The disassembler 3853will now emit an ElseIf if it finds an Else immediately followed by an 3854If. This simplifies the decoded ASL, especially for deeply nested 3855If..Else and large Switch constructs. Thus, the disassembled code more 3856closely follows the original source ASL. ACPICA BZ 1211. Example: 3857 3858 Old disassembly: 3859 Else 3860 { 3861 If (Arg0 == 0x02) 3862 { 3863 Local0 = 0x05 3864 } 3865 } 3866 3867 New disassembly: 3868 ElseIf (Arg0 == 0x02) 3869 { 3870 Local0 = 0x05 3871 } 3872 3873AcpiExec: Added support for the new module level code behavior and the 3874early region installation. This required a small change to the 3875initialization, since AcpiExec must install its own operation region 3876handlers. 3877 3878AcpiExec: Added support to make the debug object timer optional. Default 3879is timer disabled. This cleans up the debug object output -- the timer 3880data is rarely used. 3881 3882AcpiExec: Multiple ACPI tables are now loaded in the order that they 3883appear on the command line. This can be important when there are 3884interdependencies/references between the tables. 3885 3886iASL/Templates. Add support to generate template files with multiple 3887SSDTs within a single output file. Also added ommand line support to 3888specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 38891223, 1225. 3890 3891 3892---------------------------------------- 389324 November 2015. Summary of changes for version 20151124: 3894 38951) ACPICA kernel-resident subsystem: 3896 3897Fixed a possible regression for a previous update to FADT handling. The 3898FADT no longer has a fixed table ID, causing some issues with code that 3899was hardwired to a specific ID. Lv Zheng. 3900 3901Fixed a problem where the method auto-serialization could interfere with 3902the current SyncLevel. This change makes the auto-serialization support 3903transparent to the SyncLevel support and management. 3904 3905Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3906interface is intended for early access to the namespace during the 3907initial namespace device discovery walk. The _SUB method has been seen to 3908access operation regions in some cases, causing errors because the 3909operation regions are not fully initialized. 3910 3911AML Debugger: Fixed some issues with the terminate/quit/exit commands 3912that can cause faults. Lv Zheng. 3913 3914AML Debugger: Add thread ID support so that single-step mode only applies 3915to the AML Debugger thread. This prevents runtime errors within some 3916kernels. Lv Zheng. 3917 3918Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3919methods that are invoked by this interface are optional, removed warnings 3920emitted for the case where one or more of these methods do not exist. 3921ACPICA BZ 1208, original change by Prarit Bhargava. 3922 3923Made a major pass through the entire ACPICA source code base to 3924standardize formatting that has diverged a bit over time. There are no 3925functional changes, but this will of course cause quite a few code 3926differences from the previous ACPICA release. 3927 3928Example Code and Data Size: These are the sizes for the OS-independent 3929acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3930debug version of the code includes the debug output trace mechanism and 3931has a much larger code and data size. 3932 3933 Current Release: 3934 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3935 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3936 Previous Release: 3937 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3938 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3939 3940 39412) iASL Compiler/Disassembler and Tools: 3942 3943iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3944definition blocks within a single ASL file and the resulting AML file. 3945Support for this type of file was also added to the various tools that 3946use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3947example code below shows two definition blocks within the same file: 3948 3949 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 39500x12345678) 3951 { 3952 } 3953 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3954 { 3955 } 3956 3957iASL: Enhanced typechecking for the Name() operator. All expressions for 3958the value of the named object must be reduced/folded to a single constant 3959at compile time, as per the ACPI specification (the AML definition of 3960Name()). 3961 3962iASL: Fixed some code indentation issues for the -ic and -ia options (C 3963and assembly headers). Now all emitted code correctly begins in column 1. 3964 3965iASL: Added an error message for an attempt to open a Scope() on an 3966object defined in an SSDT. The DSDT is always loaded into the namespace 3967first, so any attempt to open a Scope on an SSDT object will fail at 3968runtime. 3969 3970 3971---------------------------------------- 397230 September 2015. Summary of changes for version 20150930: 3973 39741) ACPICA kernel-resident subsystem: 3975 3976Debugger: Implemented several changes and bug fixes to assist support for 3977the in-kernel version of the AML debugger. Lv Zheng. 3978- Fix the "predefined" command for in-kernel debugger. 3979- Do not enter debug command loop for the help and version commands. 3980- Disallow "execute" command during execution/single-step of a method. 3981 3982Interpreter: Updated runtime typechecking for all operators that have 3983target operands. The operand is resolved and validated that it is legal. 3984For example, the target cannot be a non-data object such as a Device, 3985Mutex, ThermalZone, etc., as per the ACPI specification. 3986 3987Debugger: Fixed the double-mutex user I/O handshake to work when local 3988deadlock detection is enabled. 3989 3990Debugger: limited display of method locals and arguments (LocalX and 3991ArgX) to only those that have actually been initialized. This prevents 3992lines of extraneous output. 3993 3994Updated the definition of the NFIT table to correct the bit polarity of 3995one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3996 3997Example Code and Data Size: These are the sizes for the OS-independent 3998acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3999debug version of the code includes the debug output trace mechanism and 4000has a much larger code and data size. 4001 4002 Current Release: 4003 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4004 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 4005 Previous Release: 4006 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 4007 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 4008 4009 40102) iASL Compiler/Disassembler and Tools: 4011 4012iASL: Improved the compile-time typechecking for operands of many of the 4013ASL operators: 4014 4015-- Added an option to disable compiler operand/operator typechecking (- 4016ot). 4017 4018-- For the following operators, the TermArg operands are now validated 4019when possible to be Integer data objects: BankField, OperationRegion, 4020DataTableRegion, Buffer, and Package. 4021 4022-- Store (Source, Target): Both the source and target operands are 4023resolved and checked that the operands are both legal. For example, 4024neither operand can be a non-data object such as a Device, Mutex, 4025ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 4026operator can be used to store an object to any type of target object. 4027 4028-- Store (Source, Target): If the source is a Package object, the target 4029must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 4030is a Package, the source must also be a Package. 4031 4032-- Store (Source, Target): A warning is issued if the source and target 4033resolve to the identical named object. 4034 4035-- Store (Source, <method invocation>): An error is generated for the 4036target method invocation, as this construct is not supported by the AML 4037interpreter. 4038 4039-- For all ASL math and logic operators, the target operand must be a 4040data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 4041includes the function return value also. 4042 4043-- External declarations are also included in the typechecking where 4044possible. External objects defined using the UnknownObj keyword cannot be 4045typechecked, however. 4046 4047iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 4048operator: 4049- Legacy code: Index(PKG1, 3) 4050- New ASL+ code: PKG1[3] 4051This completes the ACPI 6.0 ASL+ support as it was the only operator not 4052supported. 4053 4054iASL: Fixed the file suffix for the preprocessor output file (.i). Two 4055spaces were inadvertently appended to the filename, causing file access 4056and deletion problems on some systems. 4057 4058ASL Test Suite (ASLTS): Updated the master makefile to generate all 4059possible compiler output files when building the test suite -- thus 4060exercising these features of the compiler. These files are automatically 4061deleted when the test suite exits. 4062 4063 4064---------------------------------------- 406518 August 2015. Summary of changes for version 20150818: 4066 40671) ACPICA kernel-resident subsystem: 4068 4069Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 4070Zheng. ACPICA BZ 1186. 4071 4072Completed development to ensure that the ACPICA Disassembler and Debugger 4073are fully standalone components of ACPICA. Removed cross-component 4074dependences. Lv Zheng. 4075 4076The max-number-of-AML-loops is now runtime configurable (previously was 4077compile-time only). This is essentially a loop timeout to force-abort 4078infinite AML loops. ACPCIA BZ 1192. 4079 4080Debugger: Cleanup output to dump ACPI names and namepaths without any 4081trailing underscores. Lv Zheng. ACPICA BZ 1135. 4082 4083Removed unnecessary conditional compilations across the Debugger and 4084Disassembler components where entire modules could be left uncompiled. 4085 4086The aapits test is deprecated and has been removed from the ACPICA git 4087tree. The test has never been completed and has not been maintained, thus 4088becoming rather useless. ACPICA BZ 1015, 794. 4089 4090A batch of small changes to close bugzilla and other reports: 4091- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 4092- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 4093- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 4094- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 4095Moore. 4096- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 4097ACPICA BZ 1184. 4098- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 4099operators. 4100- Debugger: Split debugger initialization/termination interfaces. Lv 4101Zheng. 4102- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 4103identification. 4104- AcpiExec: Add debug message during _REG method phase during table 4105load/init. 4106- AcpiNames: Fix a regression where some output was missing and no longer 4107emitted. 4108- Debugger: General cleanup and simplification. Lv Zheng. 4109- Disassembler: Cleanup use of several global option variables. Lv Zheng. 4110 4111Example Code and Data Size: These are the sizes for the OS-independent 4112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4113debug version of the code includes the debug output trace mechanism and 4114has a much larger code and data size. 4115 4116 Current Release: 4117 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 4118 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 4119 Previous Release: 4120 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4121 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4122 4123 41242) iASL Compiler/Disassembler and Tools: 4125 4126AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 4127were not handled properly and caused load errors. Now, properly invoke 4128and use the ACPICA auto-reallocate mechanism for ACPI table data 4129structures. ACPICA BZ 1188 4130 4131AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 4132BZ 1190. 4133 4134AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 4135AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 4136executed during initialization. ACPICA BZ 1187, 1189. 4137 4138iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 4139that corresponds to each disassembled ASL statement, to simplify 4140debugging. ACPICA BZ 1191. 4141 4142Debugger: Add option to the "objects" command to display a summary of the 4143current namespace objects (Object type and count). This is displayed if 4144the command is entered with no arguments. 4145 4146AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 4147 4148 4149---------------------------------------- 415017 July 2015. Summary of changes for version 20150717: 4151 41521) ACPICA kernel-resident subsystem: 4153 4154Improved the partitioning between the Debugger and Disassembler 4155components. This allows the Debugger to be used standalone within kernel 4156code without the Disassembler (which is used for single stepping also). 4157This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 4158 4159Debugger: Implemented a new command to trace the execution of control 4160methods (Trace). This is especially useful for the in-kernel version of 4161the debugger when file I/O may not be available for method trace output. 4162See the ACPICA reference for more information. Lv Zheng. 4163 4164Moved all C library prototypes (used for the local versions of these 4165functions when requested) to a new header, acclib.h 4166Cleaned up the use of non-ANSI C library functions. These functions are 4167implemented locally in ACPICA. Moved all such functions to a common 4168source file, utnonansi.c 4169 4170Debugger: Fixed a problem with the "!!" command (get last command 4171executed) where the debugger could enter an infinite loop and eventually 4172crash. 4173 4174Removed the use of local macros that were used for some of the standard C 4175library functions to automatically cast input parameters. This mostly 4176affected the is* functions where the input parameter is defined to be an 4177int. This required a few modifications to the main ACPICA source code to 4178provide casting for these functions and eliminate possible compiler 4179warnings for these parameters. 4180 4181Across the source code, added additional status/error checking to resolve 4182issues discovered by static source code analysis tools such as Coverity. 4183 4184Example Code and Data Size: These are the sizes for the OS-independent 4185acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4186debug version of the code includes the debug output trace mechanism and 4187has a much larger code and data size. 4188 4189 Current Release: 4190 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4191 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4192 Previous Release: 4193 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4194 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4195 4196 41972) iASL Compiler/Disassembler and Tools: 4198 4199iASL: Fixed a regression where the device map file feature no longer 4200worked properly when used in conjunction with the disassembler. It only 4201worked properly with the compiler itself. 4202 4203iASL: Implemented a new warning for method LocalX variables that are set 4204but never used (similar to a C compiler such as gcc). This also applies 4205to ArgX variables that are not defined by the parent method, and are 4206instead (legally) used as local variables. 4207 4208iASL/Preprocessor: Finished the pass-through of line numbers from the 4209preprocessor to the compiler. This ensures that compiler errors/warnings 4210have the correct original line numbers and filenames, regardless of any 4211#include files. 4212 4213iASL/Preprocessor: Fixed a couple of issues with comment handling and the 4214pass-through of comments to the preprocessor output file (which becomes 4215the compiler input file). Also fixed a problem with // comments that 4216appear after a math expression. 4217 4218iASL: Added support for the TCPA server table to the table compiler and 4219template generator. (The client table was already previously supported) 4220 4221iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 4222identify the iASL compiler. 4223 4224Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 4225multiple times. The new names are ACPI_SIGN_NEGATIVE and 4226ACPI_SIGN_POSITIVE. 4227 4228AcpiHelp: Update to expand help messages for the iASL preprocessor 4229directives. 4230 4231 4232---------------------------------------- 423319 June 2015. Summary of changes for version 20150619: 4234 4235Two regressions in version 20150616 have been addressed: 4236 4237Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 4238etc.) This update changes ACPICA to only use the standard headers for 4239functions, or the prototypes for the local versions of the C library 4240functions. Across the source code, this required some additional casts 4241for some Clib invocations for portability. Moved all local prototypes to 4242a new file, acclib.h 4243 4244Fixes several problems with recent changes to the handling of the FACS 4245table that could cause some systems not to boot. 4246 4247 4248---------------------------------------- 424916 June 2015. Summary of changes for version 20150616: 4250 4251 42521) ACPICA kernel-resident subsystem: 4253 4254Across the entire ACPICA source code base, the various macros for the C 4255library functions (such as ACPI_STRLEN, etc.) have been removed and 4256replaced by the standard C library names (strlen, etc.) The original 4257purpose for these macros is no longer applicable. This simplification 4258reduces the number of macros used in the ACPICA source code 4259significantly, improving readability and maintainability. 4260 4261Implemented support for a new ACPI table, the OSDT. This table, the 4262"override" SDT, can be loaded directly by the host OS at boot time. It 4263enables the replacement of existing namespace objects that were installed 4264via the DSDT and/or SSDTs. The primary purpose for this is to replace 4265buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 4266for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 4267Moore. 4268 4269Added support for systems with (improperly) two FACS tables -- a "32-bit" 4270table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 4271X field). This change will support both automatically. There continues to 4272be systems found with this issue. This support requires a change to the 4273AcpiSetFirmwareWakingVector interface. Also, a public global variable has 4274been added to allow the host to select which FACS is desired 4275(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 4276details Lv Zheng. 4277 4278Added a new feature to allow for systems that do not contain an FACS. 4279Although this is already supported on hardware-reduced platforms, the 4280feature has been extended for all platforms. The reasoning is that we do 4281not want to abort the entire ACPICA initialization just because the 4282system is seriously buggy and has no FACS. 4283 4284Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 4285not correctly transcribed from the ACPI specification in ACPICA version 428620150515. 4287 4288Implemented support for the _CLS object in the AcpiGetObjectInfo external 4289interface. 4290 4291Updated the definitions of the TCPA and TPM2 ACPI tables to the more 4292recent TCG ACPI Specification, December 14, 2014. Table disassembler and 4293compiler also updated. Note: The TCPA "server" table is not supported by 4294the disassembler/table-compiler at this time. 4295 4296ACPI 6.0: Added definitions for the new GIC version field in the MADT. 4297 4298Example Code and Data Size: These are the sizes for the OS-independent 4299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4300debug version of the code includes the debug output trace mechanism and 4301has a much larger code and data size. 4302 4303 Current Release: 4304 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4305 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4306 Previous Release: 4307 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4308 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4309 4310 43112) iASL Compiler/Disassembler and Tools: 4312 4313Disassembler: Fixed a problem with the new symbolic operator disassembler 4314where incorrect ASL code could be emitted in some cases for the "non- 4315commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 4316ShiftRight. The actual problem cases seem to be rather unusual in common 4317ASL code, however. David Box. 4318 4319Modified the linux version of acpidump to obtain ACPI tables from not 4320just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 4321Zheng. 4322 4323iASL: Fixed a problem where the user preprocessor output file (.i) 4324contained extra data that was not expected. The compiler was using this 4325file as a temporary file and passed through #line directives in order to 4326keep compiler error messages in sync with the input file and line number 4327across multiple include files. The (.i) is no longer a temporary file as 4328the compiler uses a new, different file for the original purpose. 4329 4330iASL: Fixed a problem where comments within the original ASL source code 4331file were not passed through to the preprocessor output file, nor any 4332listing files. 4333 4334iASL: Fixed some issues for the handling of the "#include" preprocessor 4335directive and the similar (but not the same) "Include" ASL operator. 4336 4337iASL: Add support for the new OSDT in both the disassembler and compiler. 4338 4339iASL: Fixed a problem with the constant folding support where a Buffer 4340object could be incorrectly generated (incorrectly formed) during a 4341conversion to a Store() operator. 4342 4343AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 4344description text for the _REV predefined name. _REV now permanently 4345returns 2, as per the ACPI 6.0 specification. 4346 4347Debugger: Enhanced the output of the Debug ASL object for references 4348produced by the Index operator. For Buffers and strings, only output the 4349actual byte pointed to by the index. For packages, only print the single 4350package element decoded by the index. Previously, the entire 4351buffer/string/package was emitted. 4352 4353iASL/Table-compiler: Fixed a regression where the "generic" data types 4354were no longer recognized, causing errors. 4355 4356 4357---------------------------------------- 435815 May 2015. Summary of changes for version 20150515: 4359 4360This release implements most of ACPI 6.0 as described below. 4361 43621) ACPICA kernel-resident subsystem: 4363 4364Implemented runtime argument checking and return value checking for all 4365new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 4366_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 4367 4368Example Code and Data Size: These are the sizes for the OS-independent 4369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4370debug version of the code includes the debug output trace mechanism and 4371has a much larger code and data size. 4372 4373 Current Release: 4374 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4375 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4376 Previous Release: 4377 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4378 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4379 4380 43812) iASL Compiler/Disassembler and Tools: 4382 4383iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 4384names (argument count validation and return value typechecking.) 4385 4386iASL disassembler and table compiler: implemented support for all new 4387ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 4388 4389iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 4390tables: FADT, MADT. 4391 4392iASL preprocessor: Added a new directive to enable inclusion of binary 4393blobs into ASL code. The new directive is #includebuffer. It takes a 4394binary file as input and emits a named ascii buffer object into the ASL 4395code. 4396 4397AcpiHelp: Added support for all new ACPI 6.0 predefined names. 4398 4399AcpiHelp: Added a new option, -d, to display all iASL preprocessor 4400directives. 4401 4402AcpiHelp: Added a new option, -t, to display all known/supported ACPI 4403tables. 4404 4405 4406---------------------------------------- 440710 April 2015. Summary of changes for version 20150410: 4408 4409Reverted a change introduced in version 20150408 that caused 4410a regression in the disassembler where incorrect operator 4411symbols could be emitted. 4412 4413 4414---------------------------------------- 441508 April 2015. Summary of changes for version 20150408: 4416 4417 44181) ACPICA kernel-resident subsystem: 4419 4420Permanently set the return value for the _REV predefined name. It now 4421returns 2 (was 5). This matches other ACPI implementations. _REV will be 4422deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 4423for ACPI 2.0 and later. It should never be used to differentiate or 4424identify operating systems. 4425 4426Added the "Windows 2015" string to the _OSI support. ACPICA will now 4427return TRUE to a query with this string. 4428 4429Fixed several issues with the local version of the printf function. 4430 4431Added the C99 compiler option (-std=c99) to the Unix makefiles. 4432 4433 Current Release: 4434 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 4435 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 4436 Previous Release: 4437 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4438 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4439 4440 44412) iASL Compiler/Disassembler and Tools: 4442 4443iASL: Implemented an enhancement to the constant folding feature to 4444transform the parse tree to a simple Store operation whenever possible: 4445 Add (2, 3, X) ==> is converted to: Store (5, X) 4446 X = 2 + 3 ==> is converted to: Store (5, X) 4447 4448Updated support for the SLIC table (Software Licensing Description Table) 4449in both the Data Table compiler and the disassembler. The SLIC table 4450support now conforms to "Microsoft Software Licensing Tables (SLIC and 4451MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 4452following the ACPI header is now defined to be "Proprietary Data", and as 4453such, can only be entered or displayed as a hex data block. 4454 4455Implemented full support for the MSDM table as described in the document 4456above. Note: The format of MSDM is similar to SLIC. Any MSDM data 4457following the ACPI header is defined to be "Proprietary Data", and can 4458only be entered or displayed as a hex data block. 4459 4460Implemented the -Pn option for the iASL Table Compiler (was only 4461implemented for the ASL compiler). This option disables the iASL 4462preprocessor. 4463 4464Disassembler: For disassembly of Data Tables, added a comment field 4465around the Ascii equivalent data that is emitted as part of the "Raw 4466Table Data" block. This prevents the iASL Preprocessor from possible 4467confusion if/when the table is compiled. 4468 4469Disassembler: Added an option (-df) to force the disassembler to assume 4470that the table being disassembled contains valid AML. This feature is 4471useful for disassembling AML files that contain ACPI signatures other 4472than DSDT or SSDT (such as OEMx or other signatures). 4473 4474Changes for the EFI version of the tools: 44751) Fixed a build error/issue 44762) Fixed a cast warning 4477 4478iASL: Fixed a path issue with the __FILE__ operator by making the 4479directory prefix optional within the internal SplitInputFilename 4480function. 4481 4482Debugger: Removed some unused global variables. 4483 4484Tests: Updated the makefile for proper generation of the AAPITS suite. 4485 4486 4487---------------------------------------- 448804 February 2015. Summary of changes for version 20150204: 4489 4490ACPICA kernel-resident subsystem: 4491 4492Updated all ACPICA copyrights and signons to 2014. Added the 2014 4493copyright to all module headers and signons, including the standard Linux 4494header. This affects virtually every file in the ACPICA core subsystem, 4495iASL compiler, all ACPICA utilities, and the test suites. 4496 4497Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 4498A raw gpe handling mechanism was created to allow better handling of GPE 4499storms that aren't easily managed by the normal handler. The raw handler 4500allows disabling/renabling of the GPE so that interrupt storms can be 4501avoided in cases where events cannot be timely serviced. In this 4502scenario, handlers should use the AcpiSetGpe() API to disable/enable the 4503GPE. This API will leave the reference counts undisturbed, thereby 4504preventing unintentional clearing of the GPE when the intent in only to 4505temporarily disable it. Raw handlers allow enabling and disabling of a 4506GPE by removing GPE register locking. As such, raw handlers much provide 4507their own locks while using GPE API's to protect access to GPE data 4508structures. 4509Lv Zheng 4510 4511Events: Always modify GPE registers under the GPE lock. 4512Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 4513values. Reported as bug by joe.liu@apple.com. 4514 4515Unix makefiles: Separate option to disable optimizations and 4516_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 4517NOOPT disable option and creates a separate flag (NOFORTIFY) for this 4518purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 4519errors when building ACPICA. This allows disabling the option without 4520also having to disable optimazations. 4521David Box 4522 4523 Current Release: 4524 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4525 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 4526 4527-- 4528-------------------------------------- 452907 November 2014. Summary of changes for version 20141107: 4530 4531This release is available at https://acpica.org/downloads 4532 4533This release introduces and implements language extensions to ASL that 4534provide support for symbolic ("C-style") operators and expressions. These 4535language extensions are known collectively as ASL+. 4536 4537 45381) iASL Compiler/Disassembler and Tools: 4539 4540Disassembler: Fixed a problem with disassembly of the UartSerialBus 4541macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 4542Box. 4543 4544Disassembler: Fixed the Unicode macro support to add escape sequences. 4545All non-printable ASCII values are emitted as escape sequences, as well 4546as the standard escapes for quote and backslash. Ensures that the 4547disassembled macro can be correctly recompiled. 4548 4549iASL: Added Printf/Fprintf macros for formatted output. These macros are 4550translated to existing AML Concatenate and Store operations. Printf 4551writes to the ASL Debug object. Fprintf allows the specification of an 4552ASL name as the target. Only a single format specifier is required, %o, 4553since the AML interpreter dynamically converts objects to the required 4554type. David E. Box. 4555 4556 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4557 (Concatenate (Concatenate (Concatenate ("", Arg0), 4558 ": Unexpected value for "), Arg1), ", "), Arg2), 4559 " at line "), Arg3), Debug) 4560 4561 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 4562 Arg0, Arg1, Arg2, Arg3) 4563 4564 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4565 ("", Arg1), ": "), Arg0), " Successful"), STR1) 4566 4567 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 4568 4569iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 4570ASL parse tree before the AML code is generated. This allows blocks of 4571ASL code to be removed in order to help locate and identify problem 4572devices and/or code. David E. Box. 4573 4574AcpiExec: Added support (-fi) for an optional namespace object 4575initialization file. This file specifies initial values for namespace 4576objects as necessary for debugging and testing different ASL code paths 4577that may be taken as a result of BIOS options. 4578 4579 45802) Overview of symbolic operator support for ASL (ASL+) 4581------------------------------------------------------- 4582 4583As an extension to the ASL language, iASL implements support for symbolic 4584(C-style) operators for math and logical expressions. This can greatly 4585simplify ASL code as well as improve both readability and 4586maintainability. These language extensions can exist concurrently with 4587all legacy ASL code and expressions. 4588 4589The symbolic extensions are 100% compatible with existing AML 4590interpreters, since no new AML opcodes are created. To implement the 4591extensions, the iASL compiler transforms the symbolic expressions into 4592the legacy ASL/AML equivalents at compile time. 4593 4594Full symbolic expressions are supported, along with the standard C 4595precedence and associativity rules. 4596 4597Full disassembler support for the symbolic expressions is provided, and 4598creates an automatic migration path for existing ASL code to ASL+ code 4599via the disassembly process. By default, the disassembler now emits ASL+ 4600code with symbolic expressions. An option (-dl) is provided to force the 4601disassembler to emit legacy ASL code if desired. 4602 4603Below is the complete list of the currently supported symbolic operators 4604with examples. See the iASL User Guide for additional information. 4605 4606 4607ASL+ Syntax Legacy ASL Equivalent 4608----------- --------------------- 4609 4610 // Math operators 4611 4612Z = X + Y Add (X, Y, Z) 4613Z = X - Y Subtract (X, Y, Z) 4614Z = X * Y Multiply (X, Y, Z) 4615Z = X / Y Divide (X, Y, , Z) 4616Z = X % Y Mod (X, Y, Z) 4617Z = X << Y ShiftLeft (X, Y, Z) 4618Z = X >> Y ShiftRight (X, Y, Z) 4619Z = X & Y And (X, Y, Z) 4620Z = X | Y Or (X, Y, Z) 4621Z = X ^ Y Xor (X, Y, Z) 4622Z = ~X Not (X, Z) 4623X++ Increment (X) 4624X-- Decrement (X) 4625 4626 // Logical operators 4627 4628(X == Y) LEqual (X, Y) 4629(X != Y) LNotEqual (X, Y) 4630(X < Y) LLess (X, Y) 4631(X > Y) LGreater (X, Y) 4632(X <= Y) LLessEqual (X, Y) 4633(X >= Y) LGreaterEqual (X, Y) 4634(X && Y) LAnd (X, Y) 4635(X || Y) LOr (X, Y) 4636(!X) LNot (X) 4637 4638 // Assignment and compound assignment operations 4639 4640X = Y Store (Y, X) 4641X += Y Add (X, Y, X) 4642X -= Y Subtract (X, Y, X) 4643X *= Y Multiply (X, Y, X) 4644X /= Y Divide (X, Y, , X) 4645X %= Y Mod (X, Y, X) 4646X <<= Y ShiftLeft (X, Y, X) 4647X >>= Y ShiftRight (X, Y, X) 4648X &= Y And (X, Y, X) 4649X |= Y Or (X, Y, X) 4650X ^= Y Xor (X, Y, X) 4651 4652 46533) ASL+ Examples: 4654----------------- 4655 4656Legacy ASL: 4657 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4658 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 46590x03FB), 4660 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4661 { 4662 And (MEMB, 0xFFFFFFF0, SRMB) 4663 Store (MEMB, Local2) 4664 Store (PDBM, Local1) 4665 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4666 Store (SRMB, MEMB) 4667 Or (PDBM, 0x02, PDBM) 4668 } 4669 4670ASL+ version: 4671 If (((R510 & 0x03FB) == 0x02E0) || 4672 ((R520 & 0x03FB) == 0x02E0) || 4673 ((R530 & 0x03FB) == 0x02E0) || 4674 ((R540 & 0x03FB) == 0x02E0)) 4675 { 4676 SRMB = (MEMB & 0xFFFFFFF0) 4677 Local2 = MEMB 4678 Local1 = PDBM 4679 PDBM &= 0xFFFFFFFFFFFFFFF9 4680 MEMB = SRMB 4681 PDBM |= 0x02 4682 } 4683 4684Legacy ASL: 4685 Store (0x1234, Local1) 4686 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4687 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4688 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4689 Store (Index (PKG1, 0x03), Local6) 4690 Store (Add (Local3, Local2), Debug) 4691 Add (Local1, 0x0F, Local2) 4692 Add (Local1, Multiply (Local2, Local3), Local2) 4693 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4694 4695ASL+ version: 4696 Local1 = 0x1234 4697 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4698 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4699 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4700 Local6 = Index (PKG1, 0x03) 4701 Debug = (Local3 + Local2) 4702 Local2 = (Local1 + 0x0F) 4703 Local2 = (Local1 + (Local2 * Local3)) 4704 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4705 4706 4707---------------------------------------- 470826 September 2014. Summary of changes for version 20140926: 4709 47101) ACPICA kernel-resident subsystem: 4711 4712Updated the GPIO operation region handler interface (GeneralPurposeIo). 4713In order to support GPIO Connection objects with multiple pins, along 4714with the related Field objects, the following changes to the interface 4715have been made: The Address is now defined to be the offset in bits of 4716the field unit from the previous invocation of a Connection. It can be 4717viewed as a "Pin Number Index" into the connection resource descriptor. 4718The BitWidth is the exact bit width of the field. It is usually one bit, 4719but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4720additional information and examples. 4721 4722GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4723corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4724by the firmware), so that they cannot fire until they are enabled via 4725AcpiUpdateAllGpes. Rafael J. Wysocki. 4726 4727Added a new return flag for the Event/GPE status interfaces -- 4728AcpiGetEventStatus and AcpiGetGpeStatus. The new 4729ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4730GPE currently has a handler associated with it, and can thus actually 4731affect the system. Lv Zheng. 4732 4733Example Code and Data Size: These are the sizes for the OS-independent 4734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4735debug version of the code includes the debug output trace mechanism and 4736has a much larger code and data size. 4737 4738 Current Release: 4739 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4740 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4741 Previous Release: 4742 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4743 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4744 47452) iASL Compiler/Disassembler and Tools: 4746 4747iASL: Fixed a memory allocation/free regression introduced in 20140828 4748that could cause the compiler to crash. This was introduced inadvertently 4749during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 47501113. 4751 4752iASL: Removed two error messages that have been found to create false 4753positives, until they can be fixed and fully validated (ACPICA BZ 1112): 47541) Illegal forward reference within a method 47552) Illegal reference across two methods 4756 4757iASL: Implemented a new option (-lm) to create a hardware mapping file 4758that summarizes all GPIO, I2C, SPI, and UART connections. This option 4759works for both the compiler and disassembler. See the iASL compiler user 4760guide for additional information and examples (section 6.4.6). 4761 4762AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4763version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4764a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4765 4766AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4767unless STDIN is actually a terminal. Assists with batch-mode processing. 4768ACPICA BZ 1114. 4769 4770Disassembler/AcpiHelp: Added another large group of recognized _HID 4771values. 4772 4773 4774---------------------------------------- 477528 August 2014. Summary of changes for version 20140828: 4776 47771) ACPICA kernel-resident subsystem: 4778 4779Fixed a problem related to the internal use of the Timer() operator where 4780a 64-bit divide could cause an attempted link to a double-precision math 4781library. This divide is not actually necessary, so the code was 4782restructured to eliminate it. Lv Zheng. 4783 4784ACPI 5.1: Added support for the runtime validation of the _DSD package 4785(similar to the iASL support). 4786 4787ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4788SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4789 4790Example Code and Data Size: These are the sizes for the OS-independent 4791acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4792debug version of the code includes the debug output trace mechanism and 4793has a much larger code and data size. 4794 4795 Current Release: 4796 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4797 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4798 Previous Release: 4799 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4800 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4801 48022) iASL Compiler/Disassembler and Tools: 4803 4804AcpiExec: Fixed a problem on unix systems where the original terminal 4805state was not always properly restored upon exit. Seen when using the -v 4806option. ACPICA BZ 1104. 4807 4808iASL: Fixed a problem with the validation of the ranges/length within the 4809Memory24 resource descriptor. There was a boundary condition when the 4810range was equal to the (length -1) caused by the fact that these values 4811are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4812 4813Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4814polarity 4815flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4816is 4817now supported properly. 4818 4819ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4820in the disassembler, data table compiler, and table template generator. 4821 4822iASL: Added a requirement for Device() objects that one of either a _HID 4823or _ADR must exist within the scope of a Device, as per the ACPI 4824specification. Remove a similar requirement that was incorrectly in place 4825for the _DSD object. 4826 4827iASL: Added error detection for illegal named references within control 4828methods that would cause runtime failures. Now trapped as errors are: 1) 4829References to objects within a non-parent control method. 2) Forward 4830references (within a method) -- for control methods, AML interpreters use 4831a one-pass parse of control methods. ACPICA BZ 1008. 4832 4833iASL: Added error checking for dependencies related to the _PSx power 4834methods. ACPICA BZ 1029. 48351) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4836_PS3. 48372) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4838scope. 4839 4840iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4841deploying the existing object and string caches and adding new caches for 4842the table compiler. 4843 4844iASL: Split the huge parser source file into multiple subfiles to improve 4845manageability. Generation now requires the M4 macro preprocessor, which 4846is part of the Bison distribution on both unix and windows platforms. 4847 4848AcpiSrc: Fixed and removed all extraneous warnings generated during 4849entire ACPICA source code scan and/or conversion. 4850 4851 4852---------------------------------------- 4853 485424 July 2014. Summary of changes for version 20140724: 4855 4856The ACPI 5.1 specification has been released and is available at: 4857http://uefi.org/specs/access 4858 4859 48600) ACPI 5.1 support in ACPICA: 4861 4862ACPI 5.1 is fully supported in ACPICA as of this release. 4863 4864New predefined names. Support includes iASL and runtime ACPICA 4865validation. 4866 _CCA (Cache Coherency Attribute). 4867 _DSD (Device-Specific Data). David Box. 4868 4869Modifications to existing ACPI tables. Support includes headers, iASL 4870Data Table compiler, disassembler, and the template generator. 4871 FADT - New fields and flags. Graeme Gregory. 4872 GTDT - One new subtable and new fields. Tomasz Nowicki. 4873 MADT - Two new subtables. Tomasz Nowicki. 4874 PCCT - One new subtable. 4875 4876Miscellaneous. 4877 New notification type for System Resource Affinity change events. 4878 4879 48801) ACPICA kernel-resident subsystem: 4881 4882Fixed a regression introduced in 20140627 where a fault can happen during 4883the deletion of Alias AML namespace objects. The problem affected both 4884the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4885 4886Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4887simple mechanism to enable wake GPEs that have no associated handler or 4888control method. Rafael Wysocki. 4889 4890Updated the AcpiEnableGpe interface to disallow the enable if there is no 4891handler or control method associated with the particular GPE. This will 4892help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4893 4894Updated GPE handling and dispatch by disabling the GPE before clearing 4895the status bit for edge-triggered GPEs. Lv Zheng. 4896 4897Added Timer() support to the AML Debug object. The current timer value is 4898now displayed with each invocation of (Store to) the debug object to 4899enable simple generation of execution times for AML code (method 4900execution for example.) ACPICA BZ 1093. 4901 4902Example Code and Data Size: These are the sizes for the OS-independent 4903acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4904debug version of the code includes the debug output trace mechanism and 4905has a much larger code and data size. 4906 4907 Current Release: 4908 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4909 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4910 Previous Release: 4911 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4912 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4913 4914 49152) iASL Compiler/Disassembler and Tools: 4916 4917Fixed an issue with the recently added local printf implementation, 4918concerning width/precision specifiers that could cause incorrect output. 4919Lv Zheng. ACPICA BZ 1094. 4920 4921Disassembler: Added support to detect buffers that contain UUIDs and 4922disassemble them to an invocation of the ToUUID operator. Also emit 4923commented descriptions of known ACPI-related UUIDs. 4924 4925AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4926-u. Adds three new files. 4927 4928iASL: Update table compiler and disassembler for DMAR table changes that 4929were introduced in September 2013. With assistance by David Woodhouse. 4930 4931---------------------------------------- 493227 June 2014. Summary of changes for version 20140627: 4933 49341) ACPICA kernel-resident subsystem: 4935 4936Formatted Output: Implemented local versions of standard formatted output 4937utilities such as printf, etc. Over time, it has been discovered that 4938there are in fact many portability issues with printf, and the addition 4939of this feature will fix/prevent these issues once and for all. Some 4940known issues are summarized below: 4941 49421) Output of 64-bit values is not portable. For example, UINT64 is %ull 4943for the Linux kernel and is %uI64 for some MSVC versions. 49442) Invoking printf consistently in a manner that is portable across both 494532-bit and 64-bit platforms is difficult at best in many situations. 49463) The output format for pointers varies from system to system (leading 4947zeros especially), and leads to inconsistent output from ACPICA across 4948platforms. 49494) Certain platform-specific printf formats may conflict with ACPICA use. 49505) If there is no local C library available, ACPICA now has local support 4951for printf. 4952 4953-- To address these printf issues in a complete manner, ACPICA now 4954directly implements a small subset of printf format specifiers, only 4955those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4956 4957Implemented support for ACPICA generation within the EFI environment. 4958Initially, the AcpiDump utility is supported in the UEFI shell 4959environment. Lv Zheng. 4960 4961Added a new external interface, AcpiLogError, to improve ACPICA 4962portability. This allows the host to redirect error messages from the 4963ACPICA utilities. Lv Zheng. 4964 4965Added and deployed new OSL file I/O interfaces to improve ACPICA 4966portability: 4967 AcpiOsOpenFile 4968 AcpiOsCloseFile 4969 AcpiOsReadFile 4970 AcpiOsWriteFile 4971 AcpiOsGetFileOffset 4972 AcpiOsSetFileOffset 4973There are C library implementations of these functions in the new file 4974service_layers/oslibcfs.c -- however, the functions can be implemented by 4975the local host in any way necessary. Lv Zheng. 4976 4977Implemented a mechanism to disable/enable ACPI table checksum validation 4978at runtime. This can be useful when loading tables very early during OS 4979initialization when it may not be possible to map the entire table in 4980order to compute the checksum. Lv Zheng. 4981 4982Fixed a buffer allocation issue for the Generic Serial Bus support. 4983Originally, a fixed buffer length was used. This change allows for 4984variable-length buffers based upon the protocol indicated by the field 4985access attributes. Reported by Lan Tianyu. Lv Zheng. 4986 4987Fixed a problem where an object detached from a namespace node was not 4988properly terminated/cleared and could cause a circular list problem if 4989reattached. ACPICA BZ 1063. David Box. 4990 4991Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4992 4993Fixed a possible memory leak in an error return path within the function 4994AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4995 4996Example Code and Data Size: These are the sizes for the OS-independent 4997acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4998debug version of the code includes the debug output trace mechanism and 4999has a much larger code and data size. 5000 5001 Current Release: 5002 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 5003 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 5004 Previous Release: 5005 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 5006 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 5007 5008 50092) iASL Compiler/Disassembler and Tools: 5010 5011Disassembler: Add dump of ASCII equivalent text within a comment at the 5012end of each line of the output for the Buffer() ASL operator. 5013 5014AcpiDump: Miscellaneous changes: 5015 Fixed repetitive table dump in -n mode. 5016 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 5017the ACPI 2.0 GUID fails. 5018 5019iASL: Fixed a problem where the compiler could fault if incorrectly given 5020an acpidump output file as input. ACPICA BZ 1088. David Box. 5021 5022AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 5023they are invoked without any arguments. 5024 5025Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 50261086. Colin Ian King. 5027 5028Disassembler: Cleaned up a block of code that extracts a parent Op 5029object. Added a comment that explains that the parent is guaranteed to be 5030valid in this case. ACPICA BZ 1069. 5031 5032 5033---------------------------------------- 503424 April 2014. Summary of changes for version 20140424: 5035 50361) ACPICA kernel-resident subsystem: 5037 5038Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 5039Some of these tables are known to contain a trailing NULL entry. Lv 5040Zheng. 5041 5042Removed an extraneous error message for the case where there are a large 5043number of system GPEs (> 124). This was the "32-bit FADT register is too 5044long to convert to GAS struct" message, which is irrelevant for GPEs 5045since the GPEx_BLK_LEN fields of the FADT are always used instead of the 5046(limited capacity) GAS bit length. Also, several changes to ensure proper 5047support for GPE numbers > 255, where some "GPE number" fields were 8-bits 5048internally. 5049 5050Implemented and deployed additional configuration support for the public 5051ACPICA external interfaces. Entire classes of interfaces can now be 5052easily modified or configured out, replaced by stubbed inline functions 5053by default. Lv Zheng. 5054 5055Moved all public ACPICA runtime configuration globals to the public 5056ACPICA external interface file for convenience. Also, removed some 5057obsolete/unused globals. See the file acpixf.h. Lv Zheng. 5058 5059Documentation: Added a new section to the ACPICA reference describing the 5060maximum number of GPEs that can be supported by the FADT-defined GPEs in 5061block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 5062reference. 5063 5064Example Code and Data Size: These are the sizes for the OS-independent 5065acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5066debug version of the code includes the debug output trace mechanism and 5067has a much larger code and data size. 5068 5069 Current Release: 5070 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 5071 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 5072 Previous Release: 5073 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 5074 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 5075 5076 50772) iASL Compiler/Disassembler and Tools: 5078 5079iASL and disassembler: Add full support for the LPIT table (Low Power 5080Idle Table). Includes support in the disassembler, data table compiler, 5081and template generator. 5082 5083AcpiDump utility: 50841) Add option to force the use of the RSDT (over the XSDT). 50852) Improve validation of the RSDP signature (use 8 chars instead of 4). 5086 5087iASL: Add check for predefined packages that are too large. For 5088predefined names that contain subpackages, check if each subpackage is 5089too large. (Check for too small already exists.) 5090 5091Debugger: Updated the GPE command (which simulates a GPE by executing the 5092GPE code paths in ACPICA). The GPE device is now optional, and defaults 5093to the GPE 0/1 FADT-defined blocks. 5094 5095Unix application OSL: Update line-editing support. Add additional error 5096checking and take care not to reset terminal attributes on exit if they 5097were never set. This should help guarantee that the terminal is always 5098left in the previous state on program exit. 5099 5100 5101---------------------------------------- 510225 March 2014. Summary of changes for version 20140325: 5103 51041) ACPICA kernel-resident subsystem: 5105 5106Updated the auto-serialize feature for control methods. This feature 5107automatically serializes all methods that create named objects in order 5108to prevent runtime errors. The update adds support to ignore the 5109currently executing AML SyncLevel when invoking such a method, in order 5110to prevent disruption of any existing SyncLevel priorities that may exist 5111in the AML code. Although the use of SyncLevels is relatively rare, this 5112change fixes a regression where an AE_AML_MUTEX_ORDER exception can 5113appear on some machines starting with the 20140214 release. 5114 5115Added a new external interface to allow the host to install ACPI tables 5116very early, before the namespace is even created. AcpiInstallTable gives 5117the host additional flexibility for ACPI table management. Tables can be 5118installed directly by the host as if they had originally appeared in the 5119XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 5120(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 5121with additional internal restructuring and cleanup. See the ACPICA 5122Reference for interface details. Lv Zheng. 5123 5124Added validation of the checksum for all incoming dynamically loaded 5125tables (via external interfaces or via AML Load/LoadTable operators). Lv 5126Zheng. 5127 5128Updated the use of the AcpiOsWaitEventsComplete interface during Notify 5129and GPE handler removal. Restructured calls to eliminate possible race 5130conditions. Lv Zheng. 5131 5132Added a warning for the use/execution of the ASL/AML Unload (table) 5133operator. This will help detect and identify machines that use this 5134operator if and when it is ever used. This operator has never been seen 5135in the field and the usage model and possible side-effects of the drastic 5136runtime action of a full table removal are unknown. 5137 5138Reverted the use of #pragma push/pop which was introduced in the 20140214 5139release. It appears that push and pop are not implemented by enough 5140compilers to make the use of this feature feasible for ACPICA at this 5141time. However, these operators may be deployed in a future ACPICA 5142release. 5143 5144Added the missing EXPORT_SYMBOL macros for the install and remove SCI 5145handler interfaces. 5146 5147Source code generation: 51481) Disabled the use of the "strchr" macro for the gcc-specific 5149generation. For some versions of gcc, this macro can periodically expose 5150a compiler bug which in turn causes compile-time error(s). 51512) Added support for PPC64 compilation. Colin Ian King. 5152 5153Example Code and Data Size: These are the sizes for the OS-independent 5154acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5155debug version of the code includes the debug output trace mechanism and 5156has a much larger code and data size. 5157 5158 Current Release: 5159 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 5160 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 5161 Previous Release: 5162 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5163 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5164 5165 51662) iASL Compiler/Disassembler and Tools: 5167 5168Disassembler: Added several new features to improve the readability of 5169the resulting ASL code. Extra information is emitted within comment 5170fields in the ASL code: 51711) Known _HID/_CID values are decoded to descriptive text. 51722) Standard values for the Notify() operator are decoded to descriptive 5173text. 51743) Target operands are expanded to full pathnames (in a comment) when 5175possible. 5176 5177Disassembler: Miscellaneous updates for extern() handling: 51781) Abort compiler if file specified by -fe option does not exist. 51792) Silence unnecessary warnings about argument count mismatches. 51803) Update warning messages concerning unresolved method externals. 51814) Emit "UnknownObj" keyword for externals whose type cannot be 5182determined. 5183 5184AcpiHelp utility: 51851) Added the -a option to display both the ASL syntax and the AML 5186encoding for an input ASL operator. This effectively displays all known 5187information about an ASL operator with one AcpiHelp invocation. 51882) Added substring match support (similar to a wildcard) for the -i 5189(_HID/PNP IDs) option. 5190 5191iASL/Disassembler: Since this tool does not yet support execution on big- 5192endian machines, added detection of endianness and an error message if 5193execution is attempted on big-endian. Support for big-endian within iASL 5194is a feature that is on the ACPICA to-be-done list. 5195 5196AcpiBin utility: 51971) Remove option to extract binary files from an acpidump; this function 5198is made obsolete by the AcpiXtract utility. 51992) General cleanup of open files and allocated buffers. 5200 5201 5202---------------------------------------- 520314 February 2014. Summary of changes for version 20140214: 5204 52051) ACPICA kernel-resident subsystem: 5206 5207Implemented a new mechanism to proactively prevent problems with ill- 5208behaved reentrant control methods that create named ACPI objects. This 5209behavior is illegal as per the ACPI specification, but is nonetheless 5210frequently seen in the field. Previously, this could lead to an 5211AE_ALREADY_EXISTS exception if the method was actually entered by more 5212than one thread. This new mechanism detects such methods at table load 5213time and marks them "serialized" to prevent reentrancy. A new global 5214option, AcpiGbl_AutoSerializeMethods, has been added to disable this 5215feature if desired. This mechanism and global option obsoletes and 5216supersedes the previous AcpiGbl_SerializeAllMethods option. 5217 5218Added the "Windows 2013" string to the _OSI support. ACPICA will now 5219respond TRUE to _OSI queries with this string. It is the stated policy of 5220ACPICA to add new strings to the _OSI support as soon as possible after 5221they are defined. See the full ACPICA _OSI policy which has been added to 5222the utilities/utosi.c file. 5223 5224Hardened/updated the _PRT return value auto-repair code: 52251) Do not abort the repair on a single subpackage failure, continue to 5226check all subpackages. 52272) Add check for the minimum subpackage length (4). 52283) Properly handle extraneous NULL package elements. 5229 5230Added support to avoid the possibility of infinite loops when traversing 5231object linked lists. Never allow an infinite loop, even in the face of 5232corrupted object lists. 5233 5234ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 5235pack(pop) directives to ensure that the ACPICA headers are independent of 5236compiler settings or other host headers. 5237 5238Example Code and Data Size: These are the sizes for the OS-independent 5239acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5240debug version of the code includes the debug output trace mechanism and 5241has a much larger code and data size. 5242 5243 Current Release: 5244 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5245 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5246 Previous Release: 5247 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5248 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5249 5250 52512) iASL Compiler/Disassembler and Tools: 5252 5253iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 5254first reserved field was incorrectly forced to have a value of zero. This 5255change correctly forces the field to have a value of one. ACPICA BZ 1081. 5256 5257Debugger: Added missing support for the "Extra" and "Data" subobjects 5258when displaying object data. 5259 5260Debugger: Added support to display entire object linked lists when 5261displaying object data. 5262 5263iASL: Removed the obsolete -g option to obtain ACPI tables from the 5264Windows registry. This feature has been superseded by the acpidump 5265utility. 5266 5267 5268---------------------------------------- 526914 January 2014. Summary of changes for version 20140114: 5270 52711) ACPICA kernel-resident subsystem: 5272 5273Updated all ACPICA copyrights and signons to 2014. Added the 2014 5274copyright to all module headers and signons, including the standard Linux 5275header. This affects virtually every file in the ACPICA core subsystem, 5276iASL compiler, all ACPICA utilities, and the test suites. 5277 5278Improved parameter validation for AcpiInstallGpeBlock. Added the 5279following checks: 52801) The incoming device handle refers to type ACPI_TYPE_DEVICE. 52812) There is not already a GPE block attached to the device. 5282Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 5283device. 5284 5285Correctly support "references" in the ACPI_OBJECT. This change fixes the 5286support to allow references (namespace nodes) to be passed as arguments 5287to control methods via the evaluate object interface. This is probably 5288most useful for testing purposes, however. 5289 5290Improved support for 32/64 bit physical addresses in printf()-like 5291output. This change improves the support for physical addresses in printf 5292debug statements and other output on both 32-bit and 64-bit hosts. It 5293consistently outputs the appropriate number of bytes for each host. The 5294%p specifier is unsatisfactory since it does not emit uniform output on 5295all hosts/clib implementations (on some, leading zeros are not supported, 5296leading to difficult-to-read output). 5297 5298Example Code and Data Size: These are the sizes for the OS-independent 5299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5300debug version of the code includes the debug output trace mechanism and 5301has a much larger code and data size. 5302 5303 Current Release: 5304 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5305 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5306 Previous Release: 5307 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5308 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5309 5310 53112) iASL Compiler/Disassembler and Tools: 5312 5313iASL: Fix a possible fault when using the Connection() operator. Fixes a 5314problem if the parent Field definition for the Connection operator refers 5315to an operation region that does not exist. ACPICA BZ 1064. 5316 5317AcpiExec: Load of local test tables is now optional. The utility has the 5318capability to load some various tables to test features of ACPICA. 5319However, there are enough of them that the output of the utility became 5320confusing. With this change, only the required local tables are displayed 5321(RSDP, XSDT, etc.) along with the actual tables loaded via the command 5322line specification. This makes the default output simler and easier to 5323understand. The -el command line option restores the original behavior 5324for testing purposes. 5325 5326AcpiExec: Added support for overlapping operation regions. This change 5327expands the simulation of operation regions by supporting regions that 5328overlap within the given address space. Supports SystemMemory and 5329SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 5330 5331AcpiExec: Added region handler support for PCI_Config and EC spaces. This 5332allows AcpiExec to simulate these address spaces, similar to the current 5333support for SystemMemory and SystemIO. 5334 5335Debugger: Added new command to read/write/compare all namespace objects. 5336The command "test objects" will exercise the entire namespace by writing 5337new values to each data object, and ensuring that the write was 5338successful. The original value is then restored and verified. 5339 5340Debugger: Added the "test predefined" command. This change makes this 5341test public and puts it under the new "test" command. The test executes 5342each and every predefined name within the current namespace. 5343 5344 5345---------------------------------------- 534618 December 2013. Summary of changes for version 20131218: 5347 5348Global note: The ACPI 5.0A specification was released this month. There 5349are no changes needed for ACPICA since this release of ACPI is an 5350errata/clarification release. The specification is available at 5351acpi.info. 5352 5353 53541) ACPICA kernel-resident subsystem: 5355 5356Added validation of the XSDT root table if it is present. Some older 5357platforms contain an XSDT that is ill-formed or otherwise invalid (such 5358as containing some or all entries that are NULL pointers). This change 5359adds a new function to validate the XSDT before actually using it. If the 5360XSDT is found to be invalid, ACPICA will now automatically fall back to 5361using the RSDT instead. Original implementation by Zhao Yakui. Ported to 5362ACPICA and enhanced by Lv Zheng and Bob Moore. 5363 5364Added a runtime option to ignore the XSDT and force the use of the RSDT. 5365This change adds a runtime option that will force ACPICA to use the RSDT 5366instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 5367requires that an XSDT be used instead of the RSDT, the XSDT has been 5368found to be corrupt or ill-formed on some machines. Lv Zheng. 5369 5370Added a runtime option to favor 32-bit FADT register addresses over the 537164-bit addresses. This change adds an option to favor 32-bit FADT 5372addresses when there is a conflict between the 32-bit and 64-bit versions 5373of the same register. The default behavior is to use the 64-bit version 5374in accordance with the ACPI specification. This can now be overridden via 5375the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 5376 5377During the change above, the internal "Convert FADT" and "Verify FADT" 5378functions have been merged to simplify the code, making it easier to 5379understand and maintain. ACPICA BZ 933. 5380 5381Improve exception reporting and handling for GPE block installation. 5382Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 5383status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 5384 5385Added helper macros to extract bus/segment numbers from the HEST table. 5386This change adds two macros to extract the encoded bus and segment 5387numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 5388Betty Dall <betty.dall@hp.com> 5389 5390Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 5391by ACPICA. It is not a public macro, so it should have no effect on 5392existing OSV code. Lv Zheng. 5393 5394Example Code and Data Size: These are the sizes for the OS-independent 5395acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5396debug version of the code includes the debug output trace mechanism and 5397has a much larger code and data size. 5398 5399 Current Release: 5400 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5401 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5402 Previous Release: 5403 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5404 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5405 5406 54072) iASL Compiler/Disassembler and Tools: 5408 5409Disassembler: Improved pathname support for emitted External() 5410statements. This change adds full pathname support for external names 5411that have been resolved internally by the inclusion of additional ACPI 5412tables (via the iASL -e option). Without this change, the disassembler 5413can emit multiple externals for the same object, or it become confused 5414when the Scope() operator is used on an external object. Overall, greatly 5415improves the ability to actually recompile the emitted ASL code when 5416objects a referenced across multiple ACPI tables. Reported by Michael 5417Tsirkin (mst@redhat.com). 5418 5419Tests/ASLTS: Updated functional control suite to execute with no errors. 5420David Box. Fixed several errors related to the testing of the interpreter 5421slack mode. Lv Zheng. 5422 5423iASL: Added support to detect names that are declared within a control 5424method, but are unused (these are temporary names that are only valid 5425during the time the method is executing). A remark is issued for these 5426cases. ACPICA BZ 1022. 5427 5428iASL: Added full support for the DBG2 table. Adds full disassembler, 5429table compiler, and template generator support for the DBG2 table (Debug 5430Port 2 table). 5431 5432iASL: Added full support for the PCCT table, update the table definition. 5433Updates the PCCT table definition in the actbl3.h header and adds table 5434compiler and template generator support. 5435 5436iASL: Added an option to emit only error messages (no warnings/remarks). 5437The -ve option will enable only error messages, warnings and remarks are 5438suppressed. This can simplify debugging when only the errors are 5439important, such as when an ACPI table is disassembled and there are many 5440warnings and remarks -- but only the actual errors are of real interest. 5441 5442Example ACPICA code (source/tools/examples): Updated the example code so 5443that it builds to an actual working program, not just example code. Added 5444ACPI tables and execution of an example control method in the DSDT. Added 5445makefile support for Unix generation. 5446 5447 5448---------------------------------------- 544915 November 2013. Summary of changes for version 20131115: 5450 5451This release is available at https://acpica.org/downloads 5452 5453 54541) ACPICA kernel-resident subsystem: 5455 5456Resource Manager: Fixed loop termination for the "get AML length" 5457function. The loop previously had an error termination on a NULL resource 5458pointer, which can never happen since the loop simply increments a valid 5459resource pointer. This fix changes the loop to terminate with an error on 5460an invalid end-of-buffer condition. The problem can be seen as an 5461infinite loop by callers to AcpiSetCurrentResources with an invalid or 5462corrupted resource descriptor, or a resource descriptor that is missing 5463an END_TAG descriptor. Reported by Dan Carpenter 5464<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 5465 5466Table unload and ACPICA termination: Delete all attached data objects 5467during namespace node deletion. This fix updates namespace node deletion 5468to delete the entire list of attached objects (attached via 5469AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 54701024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 5471 5472ACPICA termination: Added support to delete all objects attached to the 5473root namespace node. This fix deletes any and all objects that have been 5474attached to the root node via AcpiAttachData. Previously, none of these 5475objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 5476 5477Debug output: Do not emit the function nesting level for the in-kernel 5478build. The nesting level is really only useful during a single-thread 5479execution. Therefore, only enable this output for the AcpiExec utility. 5480Also, only emit the thread ID when executing under AcpiExec (Context 5481switches are still always detected and a message is emitted). ACPICA BZ 5482972. 5483 5484Example Code and Data Size: These are the sizes for the OS-independent 5485acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5486debug version of the code includes the debug output trace mechanism and 5487has a much larger code and data size. 5488 5489 Current Release: 5490 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5491 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5492 Previous Release: 5493 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5494 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5495 5496 54972) iASL Compiler/Disassembler and Tools: 5498 5499AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 5500correct portable POSIX header for terminal control functions. 5501 5502Disassembler: Fixed control method invocation issues related to the use 5503of the CondRefOf() operator. The problem is seen in the disassembly where 5504control method invocations may not be disassembled properly if the 5505control method name has been used previously as an argument to CondRefOf. 5506The solution is to not attempt to emit an external declaration for the 5507CondRefOf target (it is not necessary in the first place). This prevents 5508disassembler object type confusion. ACPICA BZ 988. 5509 5510Unix Makefiles: Added an option to disable compiler optimizations and the 5511_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 5512with optimizations (reportedly, gcc 4.4 for example). This change adds a 5513command line option for make (NOOPT) that disables all compiler 5514optimizations and the _FORTIFY_SOURCE compiler flag. The default 5515optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 55161034. Lv Zheng, Bob Moore. 5517 5518Tests/ASLTS: Added options to specify individual test cases and modes. 5519This allows testers running aslts.sh to optionally specify individual 5520test modes and test cases. Also added an option to disable the forced 5521generation of the ACPICA tools from source if desired. Lv Zheng. 5522 5523---------------------------------------- 552427 September 2013. Summary of changes for version 20130927: 5525 5526This release is available at https://acpica.org/downloads 5527 5528 55291) ACPICA kernel-resident subsystem: 5530 5531Fixed a problem with store operations to reference objects. This change 5532fixes a problem where a Store operation to an ArgX object that contained 5533a 5534reference to a field object did not complete the automatic dereference 5535and 5536then write to the actual field object. Instead, the object type of the 5537field object was inadvertently changed to match the type of the source 5538operand. The new behavior will actually write to the field object (buffer 5539field or field unit), thus matching the correct ACPI-defined behavior. 5540 5541Implemented support to allow the host to redefine individual OSL 5542prototypes. This change enables the host to redefine OSL prototypes found 5543in the acpiosxf.h file. This allows the host to implement OSL interfaces 5544with a macro or inlined function. Further, it allows the host to add any 5545additional required modifiers such as __iomem, __init, __exit, etc., as 5546necessary on a per-interface basis. Enables maximum flexibility for the 5547OSL interfaces. Lv Zheng. 5548 5549Hardcoded the access width for the FADT-defined reset register. The ACPI 5550specification requires the reset register width to be 8 bits. ACPICA now 5551hardcodes the width to 8 and ignores the FADT width value. This provides 5552compatibility with other ACPI implementations that have allowed BIOS code 5553with bad register width values to go unnoticed. Matthew Garett, Bob 5554Moore, 5555Lv Zheng. 5556 5557Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 5558used 5559in the OSL header (acpiosxf). The change modifies the position of this 5560macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 5561build issues if the OSL defines the implementation of the interface to be 5562an inline stub function. Lv Zheng. 5563 5564Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 5565initialization interfaces. This change adds a new macro for the main init 5566and terminate external interfaces in order to support hosts that require 5567additional or different processing for these functions. Changed from 5568ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 5569Zheng, Bob Moore. 5570 5571Cleaned up the memory allocation macros for configurability. In the 5572common 5573case, the ACPI_ALLOCATE and related macros now resolve directly to their 5574respective AcpiOs* OSL interfaces. Two options: 55751) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 5576default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 55772) For AcpiExec (and for debugging), the macros can optionally be 5578resolved 5579to the local ACPICA interfaces that track each allocation (local tracking 5580is used to immediately detect memory leaks). 5581Lv Zheng. 5582 5583Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 5584to predefine this macro to either TRUE or FALSE during the system build. 5585 5586Replaced __FUNCTION_ with __func__ in the gcc-specific header. 5587 5588Example Code and Data Size: These are the sizes for the OS-independent 5589acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5590debug version of the code includes the debug output trace mechanism and 5591has a much larger code and data size. 5592 5593 Current Release: 5594 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5595 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5596 Previous Release: 5597 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5598 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5599 5600 56012) iASL Compiler/Disassembler and Tools: 5602 5603iASL: Implemented wildcard support for the -e option. This simplifies use 5604when there are many SSDTs that must be included to resolve external 5605method 5606declarations. ACPICA BZ 1041. Example: 5607 iasl -e ssdt*.dat -d dsdt.dat 5608 5609AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5610adds a portable module that implements full history and limited line 5611editing for Unix and Linux systems. It does not use readline() due to 5612portability issues. Instead it uses the POSIX termio interface to put the 5613terminal in raw input mode so that the various special keys can be 5614trapped 5615(such as up/down-arrow for history support and left/right-arrow for line 5616editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5617 5618AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5619one or more spaces. This provides compatible with early or different 5620versions of the AcpiDump utility. ACPICA BZ 1044. 5621 5622AcpiDump: Do not ignore tables that contain only an ACPI table header. 5623Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5624no other data. This change adds support to dump these tables. Any tables 5625shorter than the length of an ACPI table header remain in error (an error 5626message is emitted). Reported by Yi Li. 5627 5628Debugger: Echo actual command along with the "unknown command" message. 5629 5630---------------------------------------- 563123 August 2013. Summary of changes for version 20130823: 5632 56331) ACPICA kernel-resident subsystem: 5634 5635Implemented support for host-installed System Control Interrupt (SCI) 5636handlers. Certain ACPI functionality requires the host to handle raw 5637SCIs. For example, the "SCI Doorbell" that is defined for memory power 5638state support requires the host device driver to handle SCIs to examine 5639if the doorbell has been activated. Multiple SCI handlers can be 5640installed to allow for future expansion. New external interfaces are 5641AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5642details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5643 5644Operation region support: Never locally free the handler "context" 5645pointer. This change removes some dangerous code that attempts to free 5646the handler context pointer in some (rare) circumstances. The owner of 5647the handler owns this pointer and the ACPICA code should never touch it. 5648Although not seen to be an issue in any kernel, it did show up as a 5649problem (fault) under AcpiExec. Also, set the internal storage field for 5650the context pointer to zero when the region is deactivated, simply for 5651sanity. David Box. ACPICA BZ 1039. 5652 5653AcpiRead: On error, do not modify the return value target location. If an 5654error happens in the middle of a split 32/32 64-bit I/O operation, do not 5655modify the target of the return value pointer. Makes the code consistent 5656with the rest of ACPICA. Bjorn Helgaas. 5657 5658Example Code and Data Size: These are the sizes for the OS-independent 5659acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5660debug version of the code includes the debug output trace mechanism and 5661has a much larger code and data size. 5662 5663 Current Release: 5664 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5665 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5666 Previous Release: 5667 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5668 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5669 5670 56712) iASL Compiler/Disassembler and Tools: 5672 5673AcpiDump: Implemented several new features and fixed some problems: 56741) Added support to dump the RSDP, RSDT, and XSDT tables. 56752) Added support for multiple table instances (SSDT, UEFI). 56763) Added option to dump "customized" (overridden) tables (-c). 56774) Fixed a problem where some table filenames were improperly 5678constructed. 56795) Improved some error messages, removed some unnecessary messages. 5680 5681iASL: Implemented additional support for disassembly of ACPI tables that 5682contain invocations of external control methods. The -fe<file> option 5683allows the import of a file that specifies the external methods along 5684with the required number of arguments for each -- allowing for the 5685correct disassembly of the table. This is a workaround for a limitation 5686of AML code where the disassembler often cannot determine the number of 5687arguments required for an external control method and generates incorrect 5688ASL code. See the iASL reference for details. ACPICA BZ 1030. 5689 5690Debugger: Implemented a new command (paths) that displays the full 5691pathnames (namepaths) and object types of all objects in the namespace. 5692This is an alternative to the namespace command. 5693 5694Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5695mechanism and any installed handlers. 5696 5697iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5698This can occur if there are too many parent prefixes in a namepath (for 5699example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5700 5701Application OSLs: Set the return value for the PCI read functions. These 5702functions simply return AE_OK, but should set the return value to zero 5703also. This change implements this. ACPICA BZ 1038. 5704 5705Debugger: Prevent possible command line buffer overflow. Increase the 5706size of a couple of the debugger line buffers, and ensure that overflow 5707cannot happen. ACPICA BZ 1037. 5708 5709iASL: Changed to abort immediately on serious errors during the parsing 5710phase. Due to the nature of ASL, there is no point in attempting to 5711compile these types of errors, and they typically end up causing a 5712cascade of hundreds of errors which obscure the original problem. 5713 5714---------------------------------------- 571525 July 2013. Summary of changes for version 20130725: 5716 57171) ACPICA kernel-resident subsystem: 5718 5719Fixed a problem with the DerefOf operator where references to FieldUnits 5720and BufferFields incorrectly returned the parent object, not the actual 5721value of the object. After this change, a dereference of a FieldUnit 5722reference results in a read operation on the field to get the value, and 5723likewise, the appropriate BufferField value is extracted from the target 5724buffer. 5725 5726Fixed a problem where the _WAK method could cause a fault under these 5727circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5728method returned no value. The problem is rarely seen because most kernels 5729run ACPICA in slack mode. 5730 5731For the DerefOf operator, a fatal error now results if an attempt is made 5732to dereference a reference (created by the Index operator) to a NULL 5733package element. Provides compatibility with other ACPI implementations, 5734and this behavior will be added to a future version of the ACPI 5735specification. 5736 5737The ACPI Power Management Timer (defined in the FADT) is now optional. 5738This provides compatibility with other ACPI implementations and will 5739appear in the next version of the ACPI specification. If there is no PM 5740Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5741zero in the FADT indicates no PM timer. 5742 5743Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5744allows the host to globally enable/disable all vendor strings, all 5745feature strings, or both. Intended to be primarily used for debugging 5746purposes only. Lv Zheng. 5747 5748Expose the collected _OSI data to the host via a global variable. This 5749data tracks the highest level vendor ID that has been invoked by the BIOS 5750so that the host (and potentially ACPICA itself) can change behaviors 5751based upon the age of the BIOS. 5752 5753Example Code and Data Size: These are the sizes for the OS-independent 5754acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5755debug version of the code includes the debug output trace mechanism and 5756has a much larger code and data size. 5757 5758 Current Release: 5759 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5760 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5761 Previous Release: 5762 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5763 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5764 5765 57662) iASL Compiler/Disassembler and Tools: 5767 5768iASL: Created the following enhancements for the -so option (create 5769offset table): 57701)Add offsets for the last nameseg in each namepath for every supported 5771object type 57722)Add support for Processor, Device, Thermal Zone, and Scope objects 57733)Add the actual AML opcode for the parent object of every supported 5774object type 57754)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5776 5777Disassembler: Emit all unresolved external symbols in a single block. 5778These are external references to control methods that could not be 5779resolved, and thus, the disassembler had to make a guess at the number of 5780arguments to parse. 5781 5782iASL: The argument to the -T option (create table template) is now 5783optional. If not specified, the default table is a DSDT, typically the 5784most common case. 5785 5786---------------------------------------- 578726 June 2013. Summary of changes for version 20130626: 5788 57891) ACPICA kernel-resident subsystem: 5790 5791Fixed an issue with runtime repair of the _CST object. Null or invalid 5792elements were not always removed properly. Lv Zheng. 5793 5794Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5795FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5796the maximum number of GPEs is 1016. Use of multiple GPE block devices 5797makes the system-wide number of GPEs essentially unlimited. 5798 5799Example Code and Data Size: These are the sizes for the OS-independent 5800acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5801debug version of the code includes the debug output trace mechanism and 5802has a much larger code and data size. 5803 5804 Current Release: 5805 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5806 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5807 Previous Release: 5808 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5809 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5810 5811 58122) iASL Compiler/Disassembler and Tools: 5813 5814Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5815hosts. Now supports Linux, FreeBSD, and Windows. 5816 5817Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5818Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5819 5820iASL/Preprocessor: Implemented full support for nested 5821#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5822 5823Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5824max. The original purpose of this constraint was to limit the amount of 5825debug output. However, the string function in question (UtPrintString) is 5826now used for the disassembler also, where 256 bytes is insufficient. 5827Reported by RehabMan@GitHub. 5828 5829iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5830tables. ACPICA BZ 999. Lv Zheng. 5831 5832iASL: Fixed a couple of error exit issues that could result in a "Could 5833not delete <file>" message during ASL compilation. 5834 5835AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5836the actual signatures for these tables are "FACP" and "APIC", 5837respectively. 5838 5839AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5840tables are allowed to have multiple instances. 5841 5842---------------------------------------- 584317 May 2013. Summary of changes for version 20130517: 5844 58451) ACPICA kernel-resident subsystem: 5846 5847Fixed a regression introduced in version 20130328 for _INI methods. This 5848change fixes a problem introduced in 20130328 where _INI methods are no 5849longer executed properly because of a memory block that was not 5850initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5851<tomasz.nowicki@linaro.org>. 5852 5853Fixed a possible problem with the new extended sleep registers in the 5854ACPI 58555.0 FADT. Do not use these registers (even if populated) unless the HW- 5856reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 58571020. Lv Zheng. 5858 5859Implemented return value repair code for _CST predefined objects: Sort 5860the 5861list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5862 5863Implemented a debug-only option to disable loading of SSDTs from the 5864RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5865ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5866acglobal.h - ACPICA BZ 1005. Lv Zheng. 5867 5868Fixed some issues in the ACPICA initialization and termination code: 5869Tomasz Nowicki <tomasz.nowicki@linaro.org> 58701) Clear events initialized flag upon event component termination. ACPICA 5871BZ 1013. 58722) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 58733) Delete global lock pending lock during termination. ACPICA BZ 1012. 58744) Clear debug buffer global on termination to prevent possible multiple 5875delete. ACPICA BZ 1010. 5876 5877Standardized all switch() blocks across the entire source base. After 5878many 5879years, different formatting for switch() had crept in. This change makes 5880the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5881 5882Split some files to enhance ACPICA modularity and configurability: 58831) Split buffer dump routines into utilities/utbuffer.c 58842) Split internal error message routines into utilities/uterror.c 58853) Split table print utilities into tables/tbprint.c 58864) Split iASL command-line option processing into asloptions.c 5887 5888Makefile enhancements: 58891) Support for all new files above. 58902) Abort make on errors from any subcomponent. Chao Guan. 58913) Add build support for Apple Mac OS X. Liang Qi. 5892 5893Example Code and Data Size: These are the sizes for the OS-independent 5894acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5895debug version of the code includes the debug output trace mechanism and 5896has a much larger code and data size. 5897 5898 Current Release: 5899 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5900 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5901 Previous Release: 5902 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5903 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5904 5905 59062) iASL Compiler/Disassembler and Tools: 5907 5908New utility: Implemented an easily portable version of the acpidump 5909utility to extract ACPI tables from the system (or a file) in an ASCII 5910hex 5911dump format. The top-level code implements the various command line 5912options, file I/O, and table dump routines. To port to a new host, only 5913three functions need to be implemented to get tables -- since this 5914functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5915the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 59161) The Windows version obtains the ACPI tables from the Registry. 59172) The Linux version is under development. 59183) Other hosts - If an OS-dependent module is submitted, it will be 5919distributed with ACPICA. 5920 5921iASL: Fixed a regression for -D preprocessor option (define symbol). A 5922restructuring/change to the initialization sequence caused this option to 5923no longer work properly. 5924 5925iASL: Implemented a mechanism to disable specific warnings and remarks. 5926Adds a new command line option, "-vw <messageid> as well as "#pragma 5927disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5928 5929iASL: Fix for too-strict package object validation. The package object 5930validation for return values from the predefined names is a bit too 5931strict, it does not allow names references within the package (which will 5932be resolved at runtime.) These types of references cannot be validated at 5933compile time. This change ignores named references within package objects 5934for names that return or define static packages. 5935 5936Debugger: Fixed the 80-character command line limitation for the History 5937command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5938 5939iASL: Added control method and package support for the -so option 5940(generates AML offset table for BIOS support.) 5941 5942iASL: issue a remark if a non-serialized method creates named objects. If 5943a thread blocks within the method for any reason, and another thread 5944enters the method, the method will fail because an attempt will be made 5945to 5946create the same (named) object twice. In this case, issue a remark that 5947the method should be marked serialized. NOTE: may become a warning later. 5948ACPICA BZ 909. 5949 5950---------------------------------------- 595118 April 2013. Summary of changes for version 20130418: 5952 59531) ACPICA kernel-resident subsystem: 5954 5955Fixed a possible buffer overrun during some rare but specific field unit 5956read operations. This overrun can only happen if the DSDT version is 1 -- 5957meaning that all AML integers are 32 bits -- and the field length is 5958between 33 and 55 bits long. During the read, an internal buffer object 5959is 5960created for the field unit because the field is larger than an integer 5961(32 5962bits). However, in this case, the buffer will be incorrectly written 5963beyond the end because the buffer length is less than the internal 5964minimum 5965of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5966long, but a full 8 bytes will be written. 5967 5968Updated the Embedded Controller "orphan" _REG method support. This refers 5969to _REG methods under the EC device that have no corresponding operation 5970region. This is allowed by the ACPI specification. This update removes a 5971dependency on the existence an ECDT table. It will execute an orphan _REG 5972method as long as the operation region handler for the EC is installed at 5973the EC device node and not the namespace root. Rui Zhang (original 5974update), Bob Moore (update/integrate). 5975 5976Implemented run-time argument typechecking for all predefined ACPI names 5977(_STA, _BIF, etc.) This change performs object typechecking on all 5978incoming arguments for all predefined names executed via 5979AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5980passing correct object types as well as the correct number of arguments 5981(therefore identifying any issues immediately). Also, the ASL/namespace 5982definition of the predefined name is checked against the ACPI 5983specification for the proper argument count. Adds one new file, 5984nsarguments.c 5985 5986Changed an exception code for the ASL UnLoad() operator. Changed the 5987exception code for the case where the input DdbHandle is invalid, from 5988AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5989 5990Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5991global makefile. The use of this flag causes compiler errors on earlier 5992versions of GCC, so it has been removed for compatibility. 5993 5994Miscellaneous cleanup: 59951) Removed some unused/obsolete macros 59962) Fixed a possible memory leak in the _OSI support 59973) Removed an unused variable in the predefined name support 59984) Windows OSL: remove obsolete reference to a memory list field 5999 6000Example Code and Data Size: These are the sizes for the OS-independent 6001acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6002debug version of the code includes the debug output trace mechanism and 6003has a much larger code and data size. 6004 6005 Current Release: 6006 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 6007 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 6008 Previous Release: 6009 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 6010 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 6011 6012 60132) iASL Compiler/Disassembler and Tools: 6014 6015AcpiExec: Added installation of a handler for the SystemCMOS address 6016space. This prevents control method abort if a method accesses this 6017space. 6018 6019AcpiExec: Added support for multiple EC devices, and now install EC 6020operation region handler(s) at the actual EC device instead of the 6021namespace root. This reflects the typical behavior of host operating 6022systems. 6023 6024AcpiExec: Updated to ensure that all operation region handlers are 6025installed before the _REG methods are executed. This prevents a _REG 6026method from aborting if it accesses an address space has no handler. 6027AcpiExec installs a handler for every possible address space. 6028 6029Debugger: Enhanced the "handlers" command to display non-root handlers. 6030This change enhances the handlers command to display handlers associated 6031with individual devices throughout the namespace, in addition to the 6032currently supported display of handlers associated with the root 6033namespace 6034node. 6035 6036ASL Test Suite: Several test suite errors have been identified and 6037resolved, reducing the total error count during execution. Chao Guan. 6038 6039---------------------------------------- 604028 March 2013. Summary of changes for version 20130328: 6041 60421) ACPICA kernel-resident subsystem: 6043 6044Fixed several possible race conditions with the internal object reference 6045counting mechanism. Some of the external ACPICA interfaces update object 6046reference counts without holding the interpreter or namespace lock. This 6047change adds a spinlock to protect reference count updates on the internal 6048ACPICA objects. Reported by and with assistance from Andriy Gapon 6049(avg@FreeBSD.org). 6050 6051FADT support: Removed an extraneous warning for very large GPE register 6052sets. This change removes a size mismatch warning if the legacy length 6053field for a GPE register set is larger than the 64-bit GAS structure can 6054accommodate. GPE register sets can be larger than the 255-bit width 6055limitation of the GAS structure. Linn Crosetto (linn@hp.com). 6056 6057_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 6058return from this interface. Handles a possible timeout case if 6059ACPI_WAIT_FOREVER is modified by the host to be a value less than 6060"forever". Jung-uk Kim. 6061 6062Predefined name support: Add allowed/required argument type information 6063to 6064the master predefined info table. This change adds the infrastructure to 6065enable typechecking on incoming arguments for all predefined 6066methods/objects. It does not actually contain the code that will fully 6067utilize this information, this is still under development. Also condenses 6068some duplicate code for the predefined names into a new module, 6069utilities/utpredef.c 6070 6071Example Code and Data Size: These are the sizes for the OS-independent 6072acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6073debug version of the code includes the debug output trace mechanism and 6074has a much larger code and data size. 6075 6076 Previous Release: 6077 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 6078 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 6079 Current Release: 6080 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 6081 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 6082 6083 60842) iASL Compiler/Disassembler and Tools: 6085 6086iASL: Implemented a new option to simplify the development of ACPI- 6087related 6088BIOS code. Adds support for a new "offset table" output file. The -so 6089option will create a C table containing the AML table offsets of various 6090named objects in the namespace so that BIOS code can modify them easily 6091at 6092boot time. This can simplify BIOS runtime code by eliminating expensive 6093searches for "magic values", enhancing boot times and adding greater 6094reliability. With assistance from Lee Hamel. 6095 6096iASL: Allow additional predefined names to return zero-length packages. 6097Now, all predefined names that are defined by the ACPI specification to 6098return a "variable-length package of packages" are allowed to return a 6099zero length top-level package. This allows the BIOS to tell the host that 6100the requested feature is not supported, and supports existing BIOS/ASL 6101code and practices. 6102 6103iASL: Changed the "result not used" warning to an error. This is the case 6104where an ASL operator is effectively a NOOP because the result of the 6105operation is not stored anywhere. For example: 6106 Add (4, Local0) 6107There is no target (missing 3rd argument), nor is the function return 6108value used. This is potentially a very serious problem -- since the code 6109was probably intended to do something, but for whatever reason, the value 6110was not stored. Therefore, this issue has been upgraded from a warning to 6111an error. 6112 6113AcpiHelp: Added allowable/required argument types to the predefined names 6114info display. This feature utilizes the recent update to the predefined 6115names table (above). 6116 6117---------------------------------------- 611814 February 2013. Summary of changes for version 20130214: 6119 61201) ACPICA Kernel-resident Subsystem: 6121 6122Fixed a possible regression on some hosts: Reinstated the safe return 6123macros (return_ACPI_STATUS, etc.) that ensure that the argument is 6124evaluated only once. Although these macros are not needed for the ACPICA 6125code itself, they are often used by ACPI-related host device drivers 6126where 6127the safe feature may be necessary. 6128 6129Fixed several issues related to the ACPI 5.0 reduced hardware support 6130(SOC): Now ensure that if the platform declares itself as hardware- 6131reduced 6132via the FADT, the following functions become NOOPs (and always return 6133AE_OK) because ACPI is always enabled by definition on these machines: 6134 AcpiEnable 6135 AcpiDisable 6136 AcpiHwGetMode 6137 AcpiHwSetMode 6138 6139Dynamic Object Repair: Implemented additional runtime repairs for 6140predefined name return values. Both of these repairs can simplify code in 6141the related device drivers that invoke these methods: 61421) For the _STR and _MLS names, automatically repair/convert an ASCII 6143string to a Unicode buffer. 61442) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 6145a 6146lone end tag descriptor in the following cases: A Return(0) was executed, 6147a null buffer was returned, or no object at all was returned (non-slack 6148mode only). Adds a new file, nsconvert.c 6149ACPICA BZ 998. Bob Moore, Lv Zheng. 6150 6151Resource Manager: Added additional code to prevent possible infinite 6152loops 6153while traversing corrupted or ill-formed resource template buffers. Check 6154for zero-length resource descriptors in all code that loops through 6155resource templates (the length field is used to index through the 6156template). This change also hardens the external AcpiWalkResources and 6157AcpiWalkResourceBuffer interfaces. 6158 6159Local Cache Manager: Enhanced the main data structure to eliminate an 6160unnecessary mechanism to access the next object in the list. Actually 6161provides a small performance enhancement for hosts that use the local 6162ACPICA cache manager. Jung-uk Kim. 6163 6164Example Code and Data Size: These are the sizes for the OS-independent 6165acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6166debug version of the code includes the debug output trace mechanism and 6167has a much larger code and data size. 6168 6169 Previous Release: 6170 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6171 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6172 Current Release: 6173 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 6174 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 6175 6176 61772) iASL Compiler/Disassembler and Tools: 6178 6179iASL/Disassembler: Fixed several issues with the definition of the ACPI 61805.0 RASF table (RAS Feature Table). This change incorporates late changes 6181that were made to the ACPI 5.0 specification. 6182 6183iASL/Disassembler: Added full support for the following new ACPI tables: 6184 1) The MTMR table (MID Timer Table) 6185 2) The VRTC table (Virtual Real Time Clock Table). 6186Includes header file, disassembler, table compiler, and template support 6187for both tables. 6188 6189iASL: Implemented compile-time validation of package objects returned by 6190predefined names. This new feature validates static package objects 6191returned by the various predefined names defined to return packages. Both 6192object types and package lengths are validated, for both parent packages 6193and sub-packages, if any. The code is similar in structure and behavior 6194to 6195the runtime repair mechanism within the AML interpreter and uses the 6196existing predefined name information table. Adds a new file, aslprepkg.c. 6197ACPICA BZ 938. 6198 6199iASL: Implemented auto-detection of binary ACPI tables for disassembly. 6200This feature detects a binary file with a valid ACPI table header and 6201invokes the disassembler automatically. Eliminates the need to 6202specifically invoke the disassembler with the -d option. ACPICA BZ 862. 6203 6204iASL/Disassembler: Added several warnings for the case where there are 6205unresolved control methods during the disassembly. This can potentially 6206cause errors when the output file is compiled, because the disassembler 6207assumes zero method arguments in these cases (it cannot determine the 6208actual number of arguments without resolution/definition of the method). 6209 6210Debugger: Added support to display all resources with a single command. 6211Invocation of the resources command with no arguments will now display 6212all 6213resources within the current namespace. 6214 6215AcpiHelp: Added descriptive text for each ACPICA exception code displayed 6216via the -e option. 6217 6218---------------------------------------- 621917 January 2013. Summary of changes for version 20130117: 6220 62211) ACPICA Kernel-resident Subsystem: 6222 6223Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 6224return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 6225objects to return a package containing one integer, most BIOS code 6226returns 6227two integers and the previous code reflects that. However, we also need 6228to 6229support BIOS code that actually implements to the ACPI spec, and this 6230change reflects this. 6231 6232Fixed two issues with the ACPI_DEBUG_PRINT macros: 62331) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 6234C compilers that require this support. 62352) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 6236ACPI_DEBUG is already used by many of the various hosts. 6237 6238Updated all ACPICA copyrights and signons to 2013. Added the 2013 6239copyright to all module headers and signons, including the standard Linux 6240header. This affects virtually every file in the ACPICA core subsystem, 6241iASL compiler, all ACPICA utilities, and the test suites. 6242 6243Example Code and Data Size: These are the sizes for the OS-independent 6244acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6245debug version of the code includes the debug output trace mechanism and 6246has a much larger code and data size. 6247 6248 Previous Release: 6249 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6250 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6251 Current Release: 6252 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6253 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6254 6255 62562) iASL Compiler/Disassembler and Tools: 6257 6258Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 6259prevent a possible fault on some hosts. Some C libraries modify the arg 6260pointer parameter to vfprintf making it difficult to call it twice in the 6261AcpiOsVprintf function. Use a local buffer to workaround this issue. This 6262does not affect the Windows OSL since the Win C library does not modify 6263the arg pointer. Chao Guan, Bob Moore. 6264 6265iASL: Fixed a possible infinite loop when the maximum error count is 6266reached. If an output file other than the .AML file is specified (such as 6267a listing file), and the maximum number of errors is reached, do not 6268attempt to flush data to the output file(s) as the compiler is aborting. 6269This can cause an infinite loop as the max error count code essentially 6270keeps calling itself. 6271 6272iASL/Disassembler: Added an option (-in) to ignore NOOP 6273opcodes/operators. 6274Implemented for both the compiler and the disassembler. Often, the NOOP 6275opcode is used as padding for packages that are changed dynamically by 6276the 6277BIOS. When disassembled and recompiled, these NOOPs will cause syntax 6278errors. This option causes the disassembler to ignore all NOOP opcodes 6279(0xA3), and it also causes the compiler to ignore all ASL source code 6280NOOP 6281statements as well. 6282 6283Debugger: Enhanced the Sleep command to execute all sleep states. This 6284change allows Sleep to be invoked with no arguments and causes the 6285debugger to execute all of the sleep states, 0-5, automatically. 6286 6287---------------------------------------- 628820 December 2012. Summary of changes for version 20121220: 6289 62901) ACPICA Kernel-resident Subsystem: 6291 6292Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 6293alternate entry point for AcpiWalkResources and improves the usability of 6294the resource manager by accepting as input a buffer containing the output 6295of either a _CRS, _PRS, or _AEI method. The key functionality is that the 6296input buffer is not deleted by this interface so that it can be used by 6297the host later. See the ACPICA reference for details. 6298 6299Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 6300(DSDT version < 2). The constant will be truncated and this warning 6301reflects that behavior. 6302 6303Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 6304ExtendedInterrupt, and GpioInt descriptors. This change adds support to 6305both get and set the new wake bit in these descriptors, separately from 6306the existing share bit. Reported by Aaron Lu. 6307 6308Interpreter: Fix Store() when an implicit conversion is not possible. For 6309example, in the cases such as a store of a string to an existing package 6310object, implement the store as a CopyObject(). This is a small departure 6311from the ACPI specification which states that the control method should 6312be 6313aborted in this case. However, the ASLTS suite depends on this behavior. 6314 6315Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 6316macros: check if debug output is currently enabled as soon as possible to 6317minimize performance impact if debug is in fact not enabled. 6318 6319Source code restructuring: Cleanup to improve modularity. The following 6320new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 6321psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 6322Associated makefiles and project files have been updated. 6323 6324Changed an exception code for LoadTable operator. For the case where one 6325of the input strings is too long, change the returned exception code from 6326AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 6327 6328Fixed a possible memory leak in dispatcher error path. On error, delete 6329the mutex object created during method mutex creation. Reported by 6330tim.gardner@canonical.com. 6331 6332Example Code and Data Size: These are the sizes for the OS-independent 6333acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6334debug version of the code includes the debug output trace mechanism and 6335has a much larger code and data size. 6336 6337 Previous Release: 6338 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6339 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6340 Current Release: 6341 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6342 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6343 6344 63452) iASL Compiler/Disassembler and Tools: 6346 6347iASL: Disallow a method call as argument to the ObjectType ASL operator. 6348This change tracks an errata to the ACPI 5.0 document. The AML grammar 6349will not allow the interpreter to differentiate between a method and a 6350method invocation when these are used as an argument to the ObjectType 6351operator. The ACPI specification change is to disallow a method 6352invocation 6353(UserTerm) for the ObjectType operator. 6354 6355Finish support for the TPM2 and CSRT tables in the headers, table 6356compiler, and disassembler. 6357 6358Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 6359always expires immediately if the semaphore is not available. The 6360original 6361code was using a relative-time timeout, but sem_timedwait requires the 6362use 6363of an absolute time. 6364 6365iASL: Added a remark if the Timer() operator is used within a 32-bit 6366table. This operator returns a 64-bit time value that will be truncated 6367within a 32-bit table. 6368 6369iASL Source code restructuring: Cleanup to improve modularity. The 6370following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 6371aslmethod.c, and aslfileio.c. Associated makefiles and project files have 6372been updated. 6373 6374 6375---------------------------------------- 637614 November 2012. Summary of changes for version 20121114: 6377 63781) ACPICA Kernel-resident Subsystem: 6379 6380Implemented a performance enhancement for ACPI/AML Package objects. This 6381change greatly increases the performance of Package objects within the 6382interpreter. It changes the processing of reference counts for packages 6383by 6384optimizing for the most common case where the package sub-objects are 6385either Integers, Strings, or Buffers. Increases the overall performance 6386of 6387the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 63882X.) 6389Chao Guan. ACPICA BZ 943. 6390 6391Implemented and deployed common macros to extract flag bits from resource 6392descriptors. Improves readability and maintainability of the code. Fixes 6393a 6394problem with the UART serial bus descriptor for the number of data bits 6395flags (was incorrectly 2 bits, should be 3). 6396 6397Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 6398of the macros and changed the SETx macros to the style of (destination, 6399source). Also added ACPI_CASTx companion macros. Lv Zheng. 6400 6401Example Code and Data Size: These are the sizes for the OS-independent 6402acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6403debug version of the code includes the debug output trace mechanism and 6404has a much larger code and data size. 6405 6406 Previous Release: 6407 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6408 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6409 Current Release: 6410 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6411 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6412 6413 64142) iASL Compiler/Disassembler and Tools: 6415 6416Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 6417adds the ShareAndWake and ExclusiveAndWake flags which were added to the 6418Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 6419 6420Disassembler: Fixed a problem with external declaration generation. Fixes 6421a problem where an incorrect pathname could be generated for an external 6422declaration if the original reference to the object includes leading 6423carats (^). ACPICA BZ 984. 6424 6425Debugger: Completed a major update for the Disassemble<method> command. 6426This command was out-of-date and did not properly disassemble control 6427methods that had any reasonable complexity. This fix brings the command 6428up 6429to the same level as the rest of the disassembler. Adds one new file, 6430dmdeferred.c, which is existing code that is now common with the main 6431disassembler and the debugger disassemble command. ACPICA MZ 978. 6432 6433iASL: Moved the parser entry prototype to avoid a duplicate declaration. 6434Newer versions of Bison emit this prototype, so moved the prototype out 6435of 6436the iASL header to where it is actually used in order to avoid a 6437duplicate 6438declaration. 6439 6440iASL/Tools: Standardized use of the stream I/O functions: 6441 1) Ensure check for I/O error after every fopen/fread/fwrite 6442 2) Ensure proper order of size/count arguments for fread/fwrite 6443 3) Use test of (Actual != Requested) after all fwrite, and most fread 6444 4) Standardize I/O error messages 6445Improves reliability and maintainability of the code. Bob Moore, Lv 6446Zheng. 6447ACPICA BZ 981. 6448 6449Disassembler: Prevent duplicate External() statements. During generation 6450of external statements, detect similar pathnames that are actually 6451duplicates such as these: 6452 External (\ABCD) 6453 External (ABCD) 6454Remove all leading '\' characters from pathnames during the external 6455statement generation so that duplicates will be detected and tossed. 6456ACPICA BZ 985. 6457 6458Tools: Replace low-level I/O with stream I/O functions. Replace 6459open/read/write/close with the stream I/O equivalents 6460fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 6461Moore. 6462 6463AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 6464name header so that AcpiXtract recognizes the output file/table. 6465 6466iASL: Remove obsolete -2 option flag. Originally intended to force the 6467compiler/disassembler into an ACPI 2.0 mode, this was never implemented 6468and the entire concept is now obsolete. 6469 6470---------------------------------------- 647118 October 2012. Summary of changes for version 20121018: 6472 6473 64741) ACPICA Kernel-resident Subsystem: 6475 6476Updated support for the ACPI 5.0 MPST table. Fixes some problems 6477introduced by late changes to the table as it was added to the ACPI 5.0 6478specification. Includes header, disassembler, and data table compiler 6479support as well as a new version of the MPST template. 6480 6481AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 64825.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 6483methods: _HID, _CID, and _UID. 6484 6485Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 6486ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 6487name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 6488names for their various drivers. Affects the AcpiGetObjectInfo external 6489interface, and other internal interfaces as well. 6490 6491Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 6492This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 6493on machines that support non-aligned transfers. Optimizes for this case 6494rather than using a strncpy. With assistance from Zheng Lv. 6495 6496Resource Manager: Small fix for buffer size calculation. Fixed a one byte 6497error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 6498 6499Added a new debug print message for AML mutex objects that are force- 6500released. At control method termination, any currently acquired mutex 6501objects are force-released. Adds a new debug-only message for each one 6502that is released. 6503 6504Audited/updated all ACPICA return macros and the function debug depth 6505counter: 1) Ensure that all functions that use the various TRACE macros 6506also use the appropriate ACPICA return macros. 2) Ensure that all normal 6507return statements surround the return expression (value) with parens to 6508ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 6509Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 6510 6511Global source code changes/maintenance: All extra lines at the start and 6512end of each source file have been removed for consistency. Also, within 6513comments, all new sentences start with a single space instead of a double 6514space, again for consistency across the code base. 6515 6516Example Code and Data Size: These are the sizes for the OS-independent 6517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6518debug version of the code includes the debug output trace mechanism and 6519has a much larger code and data size. 6520 6521 Previous Release: 6522 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6523 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6524 Current Release: 6525 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6526 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6527 6528 65292) iASL Compiler/Disassembler and Tools: 6530 6531AcpiExec: Improved the algorithm used for memory leak/corruption 6532detection. Added some intelligence to the code that maintains the global 6533list of allocated memory. The list is now ordered by allocated memory 6534address, significantly improving performance. When running AcpiExec on 6535the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 6536on the platform and/or the environment. Note, this performance 6537enhancement affects the AcpiExec utility only, not the kernel-resident 6538ACPICA code. 6539 6540Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 6541the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 6542incorrect table offset reported for invalid opcodes. Report the original 654332-bit value for bad ACPI_NAMEs (as well as the repaired name.) 6544 6545Disassembler: Enhanced the -vt option to emit the binary table data in 6546hex format to assist with debugging. 6547 6548Fixed a potential filename buffer overflow in osunixdir.c. Increased the 6549size of file structure. Colin Ian King. 6550 6551---------------------------------------- 655213 September 2012. Summary of changes for version 20120913: 6553 6554 65551) ACPICA Kernel-resident Subsystem: 6556 6557ACPI 5.0: Added two new notify types for the Hardware Error Notification 6558Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 6559and 6560MCE(6). 6561 6562Table Manager: Merged/removed duplicate code in the root table resize 6563functions. One function is external, the other is internal. Lv Zheng, 6564ACPICA 6565BZ 846. 6566 6567Makefiles: Completely removed the obsolete "Linux" makefiles under 6568acpica/generate/linux. These makefiles are obsolete and have been 6569replaced 6570by 6571the generic unix makefiles under acpica/generate/unix. 6572 6573Makefiles: Ensure that binary files always copied properly. Minor rule 6574change 6575to ensure that the final binary output files are always copied up to the 6576appropriate binary directory (bin32 or bin64.) 6577 6578Example Code and Data Size: These are the sizes for the OS-independent 6579acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6580debug 6581version of the code includes the debug output trace mechanism and has a 6582much 6583larger code and data size. 6584 6585 Previous Release: 6586 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6587 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6588 Current Release: 6589 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6590 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6591 6592 65932) iASL Compiler/Disassembler and Tools: 6594 6595Disassembler: Fixed a possible fault during the disassembly of resource 6596descriptors when a second parse is required because of the invocation of 6597external control methods within the table. With assistance from 6598adq@lidskialf.net. ACPICA BZ 976. 6599 6600iASL: Fixed a namepath optimization problem. An error can occur if the 6601parse 6602node that contains the namepath to be optimized does not have a parent 6603node 6604that is a named object. This change fixes the problem. 6605 6606iASL: Fixed a regression where the AML file is not deleted on errors. The 6607AML 6608output file should be deleted if there are any errors during the 6609compiler. 6610The 6611only exception is if the -f (force output) option is used. ACPICA BZ 974. 6612 6613iASL: Added a feature to automatically increase internal line buffer 6614sizes. 6615Via realloc(), automatically increase the internal line buffer sizes as 6616necessary to support very long source code lines. The current version of 6617the 6618preprocessor requires a buffer long enough to contain full source code 6619lines. 6620This change increases the line buffer(s) if the input lines go beyond the 6621current buffer size. This eliminates errors that occurred when a source 6622code 6623line was longer than the buffer. 6624 6625iASL: Fixed a problem with constant folding in method declarations. The 6626SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6627if a 6628Type3 opcode was used. 6629 6630Debugger: Improved command help support. For incorrect argument count, 6631display 6632full help for the command. For help command itself, allow an argument to 6633specify a command. 6634 6635Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6636errors during execution of the suite. Guan Chao. 6637 6638---------------------------------------- 663916 August 2012. Summary of changes for version 20120816: 6640 6641 66421) ACPICA Kernel-resident Subsystem: 6643 6644Removed all use of the deprecated _GTS and _BFS predefined methods. The 6645_GTS 6646(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6647deprecated and will probably be removed from the ACPI specification. 6648Windows 6649does not invoke them, and reportedly never will. The final nail in the 6650coffin 6651is that the ACPI specification states that these methods must be run with 6652interrupts off, which is not going to happen in a kernel interpreter. 6653Note: 6654Linux has removed all use of the methods also. It was discovered that 6655invoking these functions caused failures on some machines, probably 6656because 6657they were never tested since Windows does not call them. Affects two 6658external 6659interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6660ACPICA BZ 969. 6661 6662Implemented support for complex bit-packed buffers returned from the _PLD 6663(Physical Location of Device) predefined method. Adds a new external 6664interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6665C 6666structure. Note: C Bitfields cannot be used for this type of predefined 6667structure since the memory layout of individual bitfields is not defined 6668by 6669the C language. In addition, there are endian concerns where a compiler 6670will 6671change the bitfield ordering based on the machine type. The new ACPICA 6672interface eliminates these issues, and should be called after _PLD is 6673executed. ACPICA BZ 954. 6674 6675Implemented a change to allow a scope change to root (via "Scope (\)") 6676during 6677execution of module-level ASL code (code that is executed at table load 6678time.) Lin Ming. 6679 6680Added the Windows8/Server2012 string for the _OSI method. This change 6681adds 6682a 6683new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 66842012. 6685 6686Added header support for the new ACPI tables DBG2 (Debug Port Table Type 66872) 6688and CSRT (Core System Resource Table). 6689 6690Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6691names. This simplifies access to the buffers returned by these predefined 6692names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6693 6694GPE support: Removed an extraneous parameter from the various low-level 6695internal GPE functions. Tang Feng. 6696 6697Removed the linux makefiles from the unix packages. The generate/linux 6698makefiles are obsolete and have been removed from the unix tarball 6699release 6700packages. The replacement makefiles are under generate/unix, and there is 6701a 6702top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6703 6704Updates for Unix makefiles: 67051) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 67062) Update linker flags (move to end of command line) for AcpiExec 6707utility. 6708Guan Chao. 6709 6710Split ACPICA initialization functions to new file, utxfinit.c. Split from 6711utxface.c to improve modularity and reduce file size. 6712 6713Example Code and Data Size: These are the sizes for the OS-independent 6714acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6715debug version of the code includes the debug output trace mechanism and 6716has a 6717much larger code and data size. 6718 6719 Previous Release: 6720 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6721 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6722 Current Release: 6723 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6724 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6725 6726 67272) iASL Compiler/Disassembler and Tools: 6728 6729iASL: Fixed a problem with constant folding for fixed-length constant 6730expressions. The constant-folding code was not being invoked for constant 6731expressions that allow the use of type 3/4/5 opcodes to generate 6732constants 6733for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6734result 6735in the generation of invalid AML bytecode. ACPICA BZ 970. 6736 6737iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6738apparently automatically emit some of the necessary externals. This 6739change 6740handles these versions in order to eliminate generation warnings. 6741 6742Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6743 6744Disassembler: Add support to decode _PLD buffers. The decoded buffer 6745appears 6746within comments in the output file. 6747 6748Debugger: Fixed a regression with the "Threads" command where 6749AE_BAD_PARAMETER was always returned. 6750 6751---------------------------------------- 675211 July 2012. Summary of changes for version 20120711: 6753 67541) ACPICA Kernel-resident Subsystem: 6755 6756Fixed a possible fault in the return package object repair code. Fixes a 6757problem that can occur when a lone package object is wrapped with an 6758outer 6759package object in order to force conformance to the ACPI specification. 6760Can 6761affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6762_DLM, 6763_CSD, _PSD, _TSD. 6764 6765Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6766PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6767ARB_DIS bit must be implemented in the host-dependent C3 processor power 6768state 6769support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6770both 6771Intel and other vendors. (for Intel: ICH4-M and earlier) 6772 6773This change removes the code to disable/enable bus master arbitration 6774during 6775suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6776causes 6777resume problems on some machines. The change has been in use for over 6778seven 6779years within Linux. 6780 6781Implemented two new external interfaces to support host-directed dynamic 6782ACPI 6783table load and unload. They are intended to simplify the host 6784implementation 6785of hot-plug support: 6786 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6787 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6788table. 6789See the ACPICA reference for additional details. Adds one new file, 6790components/tables/tbxfload.c 6791 6792Implemented and deployed two new interfaces for errors and warnings that 6793are 6794known to be caused by BIOS/firmware issues: 6795 AcpiBiosError: Prints "ACPI Firmware Error" message. 6796 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6797Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6798table 6799and FADT errors. Additional deployment to be completed as appropriate in 6800the 6801future. The associated conditional macros are ACPI_BIOS_ERROR and 6802ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6803ACPICA 6804BZ 6805843. 6806 6807Implicit notify support: ensure that no memory allocation occurs within a 6808critical region. This fix moves a memory allocation outside of the time 6809that a 6810spinlock is held. Fixes issues on systems that do not allow this 6811behavior. 6812Jung-uk Kim. 6813 6814Split exception code utilities and tables into a new file, 6815utilities/utexcep.c 6816 6817Example Code and Data Size: These are the sizes for the OS-independent 6818acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6819debug 6820version of the code includes the debug output trace mechanism and has a 6821much 6822larger code and data size. 6823 6824 Previous Release: 6825 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6826 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6827 Current Release: 6828 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6829 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6830 6831 68322) iASL Compiler/Disassembler and Tools: 6833 6834iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6835of 68360. Jung-uk Kim. 6837 6838Debugger: Enhanced the "tables" command to emit additional information 6839about 6840the current set of ACPI tables, including the owner ID and flags decode. 6841 6842Debugger: Reimplemented the "unload" command to use the new 6843AcpiUnloadParentTable external interface. This command was disable 6844previously 6845due to need for an unload interface. 6846 6847AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6848option 6849will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6850 6851---------------------------------------- 685220 June 2012. Summary of changes for version 20120620: 6853 6854 68551) ACPICA Kernel-resident Subsystem: 6856 6857Implemented support to expand the "implicit notify" feature to allow 6858multiple 6859devices to be notified by a single GPE. This feature automatically 6860generates a 6861runtime device notification in the absence of a BIOS-provided GPE control 6862method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6863notify is 6864provided by ACPICA for Windows compatibility, and is a workaround for 6865BIOS 6866AML 6867code errors. See the description of the AcpiSetupGpeForWake interface in 6868the 6869APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6870 6871Changed some comments and internal function names to simplify and ensure 6872correctness of the Linux code translation. No functional changes. 6873 6874Example Code and Data Size: These are the sizes for the OS-independent 6875acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6876debug 6877version of the code includes the debug output trace mechanism and has a 6878much 6879larger code and data size. 6880 6881 Previous Release: 6882 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6883 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6884 Current Release: 6885 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6886 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6887 6888 68892) iASL Compiler/Disassembler and Tools: 6890 6891Disassembler: Added support to emit short, commented descriptions for the 6892ACPI 6893predefined names in order to improve the readability of the disassembled 6894output. ACPICA BZ 959. Changes include: 6895 1) Emit descriptions for all standard predefined names (_INI, _STA, 6896_PRW, 6897etc.) 6898 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6899 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6900etc.) 6901 6902AcpiSrc: Fixed several long-standing Linux code translation issues. 6903Argument 6904descriptions in function headers are now translated properly to lower 6905case 6906and 6907underscores. ACPICA BZ 961. Also fixes translation problems such as 6908these: 6909(old -> new) 6910 i_aSL -> iASL 6911 00-7_f -> 00-7F 6912 16_k -> 16K 6913 local_fADT -> local_FADT 6914 execute_oSI -> execute_OSI 6915 6916iASL: Fixed a problem where null bytes were inadvertently emitted into 6917some 6918listing files. 6919 6920iASL: Added the existing debug options to the standard help screen. There 6921are 6922no longer two different help screens. ACPICA BZ 957. 6923 6924AcpiHelp: Fixed some typos in the various predefined name descriptions. 6925Also 6926expand some of the descriptions where appropriate. 6927 6928iASL: Fixed the -ot option (display compile times/statistics). Was not 6929working 6930properly for standard output; only worked for the debug file case. 6931 6932---------------------------------------- 693318 May 2012. Summary of changes for version 20120518: 6934 6935 69361) ACPICA Core Subsystem: 6937 6938Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6939defined 6940to block until asynchronous events such as notifies and GPEs have 6941completed. 6942Within ACPICA, it is only called before a notify or GPE handler is 6943removed/uninstalled. It also may be useful for the host OS within related 6944drivers such as the Embedded Controller driver. See the ACPICA reference 6945for 6946additional information. ACPICA BZ 868. 6947 6948ACPI Tables: Added a new error message for a possible overflow failure 6949during 6950the conversion of FADT 32-bit legacy register addresses to internal 6951common 695264- 6953bit GAS structure representation. The GAS has a one-byte "bit length" 6954field, 6955thus limiting the register length to 255 bits. ACPICA BZ 953. 6956 6957Example Code and Data Size: These are the sizes for the OS-independent 6958acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6959debug 6960version of the code includes the debug output trace mechanism and has a 6961much 6962larger code and data size. 6963 6964 Previous Release: 6965 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6966 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6967 Current Release: 6968 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6969 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6970 6971 69722) iASL Compiler/Disassembler and Tools: 6973 6974iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6975macro. 6976This keyword was added late in the ACPI 5.0 release cycle and was not 6977implemented until now. 6978 6979Disassembler: Added support for Operation Region externals. Adds missing 6980support for operation regions that are defined in another table, and 6981referenced locally via a Field or BankField ASL operator. Now generates 6982the 6983correct External statement. 6984 6985Disassembler: Several additional fixes for the External() statement 6986generation 6987related to some ASL operators. Also, order the External() statements 6988alphabetically in the disassembler output. Fixes the External() 6989generation 6990for 6991the Create* field, Alias, and Scope operators: 6992 1) Create* buffer field operators - fix type mismatch warning on 6993disassembly 6994 2) Alias - implement missing External support 6995 3) Scope - fix to make sure all necessary externals are emitted. 6996 6997iASL: Improved pathname support. For include files, merge the prefix 6998pathname 6999with the file pathname and eliminate unnecessary components. Convert 7000backslashes in all pathnames to forward slashes, for readability. Include 7001file 7002pathname changes affect both #include and Include() type operators. 7003 7004iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 7005end 7006of a valid line by inserting a newline and then returning the EOF during 7007the 7008next call to GetNextLine. Prevents the line from being ignored due to EOF 7009condition. 7010 7011iASL: Implemented some changes to enhance the IDE support (-vi option.) 7012Error 7013and Warning messages are now correctly recognized for both the source 7014code 7015browser and the global error and warning counts. 7016 7017---------------------------------------- 701820 April 2012. Summary of changes for version 20120420: 7019 7020 70211) ACPICA Core Subsystem: 7022 7023Implemented support for multiple notify handlers. This change adds 7024support 7025to 7026allow multiple system and device notify handlers on Device, Thermal Zone, 7027and 7028Processor objects. This can simplify the host OS notification 7029implementation. 7030Also re-worked and restructured the entire notify support code to 7031simplify 7032handler installation, handler removal, notify event queuing, and notify 7033dispatch to handler(s). Note: there can still only be two global notify 7034handlers - one for system notifies and one for device notifies. There are 7035no 7036changes to the existing handler install/remove interfaces. Lin Ming, Bob 7037Moore, Rafael Wysocki. 7038 7039Fixed a regression in the package repair code where the object reference 7040count was calculated incorrectly. Regression was introduced in the commit 7041"Support to add Package wrappers". 7042 7043Fixed a couple possible memory leaks in the AML parser, in the error 7044recovery 7045path. Jesper Juhl, Lin Ming. 7046 7047Example Code and Data Size: These are the sizes for the OS-independent 7048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7049debug version of the code includes the debug output trace mechanism and 7050has a 7051much larger code and data size. 7052 7053 Previous Release: 7054 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7055 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7056 Current Release: 7057 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7058 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 7059 7060 70612) iASL Compiler/Disassembler and Tools: 7062 7063iASL: Fixed a problem with the resource descriptor support where the 7064length 7065of the StartDependentFn and StartDependentFnNoPrio descriptors were not 7066included in cumulative descriptor offset, resulting in incorrect values 7067for 7068resource tags within resource descriptors appearing after a 7069StartDependent* 7070descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 7071 7072iASL and Preprocessor: Implemented full support for the #line directive 7073to 7074correctly track original source file line numbers through the .i 7075preprocessor 7076output file - for error and warning messages. 7077 7078iASL: Expand the allowable byte constants for address space IDs. 7079Previously, 7080the allowable range was 0x80-0xFF (user-defined spaces), now the range is 70810x0A-0xFF to allow for custom and new IDs without changing the compiler. 7082 7083iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 7084 7085iASL: Add option to completely disable the preprocessor (-Pn). 7086 7087iASL: Now emit all error/warning messages to standard error (stderr) by 7088default (instead of the previous stdout). 7089 7090ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 7091Update 7092for resource descriptor offset fix above. Update/cleanup error output 7093routines. Enable and send iASL errors/warnings to an error logfile 7094(error.txt). Send all other iASL output to a logfile (compiler.txt). 7095Fixed 7096several extraneous "unrecognized operator" messages. 7097 7098---------------------------------------- 709920 March 2012. Summary of changes for version 20120320: 7100 7101 71021) ACPICA Core Subsystem: 7103 7104Enhanced the sleep/wake interfaces to optionally execute the _GTS method 7105(Going To Sleep) and the _BFS method (Back From Sleep). Windows 7106apparently 7107does not execute these methods, and therefore these methods are often 7108untested. It has been seen on some systems where the execution of these 7109methods causes errors and also prevents the machine from entering S5. It 7110is 7111therefore suggested that host operating systems do not execute these 7112methods 7113by default. In the future, perhaps these methods can be optionally 7114executed 7115based on the age of the system and/or what is the newest version of 7116Windows 7117that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 7118and 7119AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 7120Ming. 7121 7122Fixed a problem where the length of the local/common FADT was set too 7123early. 7124The local FADT table length cannot be set to the common length until the 7125original length has been examined. There is code that checks the table 7126length 7127and sets various fields appropriately. This can affect older machines 7128with 7129early FADT versions. For example, this can cause inadvertent writes to 7130the 7131CST_CNT register. Julian Anastasov. 7132 7133Fixed a mapping issue related to a physical table override. Use the 7134deferred 7135mapping mechanism for tables loaded via the physical override OSL 7136interface. 7137This allows for early mapping before the virtual memory manager is 7138available. 7139Thomas Renninger, Bob Moore. 7140 7141Enhanced the automatic return-object repair code: Repair a common problem 7142with 7143predefined methods that are defined to return a variable-length Package 7144of 7145sub-objects. If there is only one sub-object, some BIOS ASL code 7146mistakenly 7147simply returns the single object instead of a Package with one sub- 7148object. 7149This new support will repair this error by wrapping a Package object 7150around 7151the original object, creating the correct and expected Package with one 7152sub- 7153object. Names that can be repaired in this manner include: _ALR, _CSD, 7154_HPX, 7155_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 7156939. 7157 7158Changed the exception code returned for invalid ACPI paths passed as 7159parameters to external interfaces such as AcpiEvaluateObject. Was 7160AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 7161 7162Example Code and Data Size: These are the sizes for the OS-independent 7163acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7164debug 7165version of the code includes the debug output trace mechanism and has a 7166much 7167larger code and data size. 7168 7169 Previous Release: 7170 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7171 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7172 Current Release: 7173 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7174 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7175 7176 71772) iASL Compiler/Disassembler and Tools: 7178 7179iASL: Added the infrastructure and initial implementation of a integrated 7180C- 7181like preprocessor. This will simplify BIOS development process by 7182eliminating 7183the need for a separate preprocessing step during builds. On Windows, it 7184also 7185eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 7186features including full #define() macro support are still under 7187development. 7188These preprocessor directives are supported: 7189 #define 7190 #elif 7191 #else 7192 #endif 7193 #error 7194 #if 7195 #ifdef 7196 #ifndef 7197 #include 7198 #pragma message 7199 #undef 7200 #warning 7201In addition, these new command line options are supported: 7202 -D <symbol> Define symbol for preprocessor use 7203 -li Create preprocessed output file (*.i) 7204 -P Preprocess only and create preprocessor output file (*.i) 7205 7206Table Compiler: Fixed a problem where the equals operator within an 7207expression 7208did not work properly. 7209 7210Updated iASL to use the current versions of Bison/Flex. Updated the 7211Windows 7212project file to invoke these tools from the standard location. ACPICA BZ 7213904. 7214Versions supported: 7215 Flex for Windows: V2.5.4 7216 Bison for Windows: V2.4.1 7217 7218---------------------------------------- 721915 February 2012. Summary of changes for version 20120215: 7220 7221 72221) ACPICA Core Subsystem: 7223 7224There have been some major changes to the sleep/wake support code, as 7225described below (a - e). 7226 7227a) The AcpiLeaveSleepState has been split into two interfaces, similar to 7228AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 7229AcpiLeaveSleepStatePrep. This allows the host to perform actions between 7230the 7231time the _BFS method is called and the _WAK method is called. NOTE: all 7232hosts 7233must update their wake/resume code or else sleep/wake will not work 7234properly. 7235Rafael Wysocki. 7236 7237b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 7238_WAK 7239method. Some machines require that the GPEs are enabled before the _WAK 7240method 7241is executed. Thomas Renninger. 7242 7243c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 7244bit. 7245Some BIOS code assumes that WAK_STS will be cleared on resume and use it 7246to 7247determine whether the system is rebooting or resuming. Matthew Garrett. 7248 7249d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 7250Sleep) to 7251match the ACPI specification requirement. Rafael Wysocki. 7252 7253e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 7254registers within the V5 FADT. This support adds two new files: 7255hardware/hwesleep.c implements the support for the new registers. Moved 7256all 7257sleep/wake external interfaces to hardware/hwxfsleep.c. 7258 7259 7260Added a new OSL interface for ACPI table overrides, 7261AcpiOsPhysicalTableOverride. This interface allows the host to override a 7262table via a physical address, instead of the logical address required by 7263AcpiOsTableOverride. This simplifies the host implementation. Initial 7264implementation by Thomas Renninger. The ACPICA implementation creates a 7265single 7266shared function for table overrides that attempts both a logical and a 7267physical override. 7268 7269Expanded the OSL memory read/write interfaces to 64-bit data 7270(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 7271transfer support for GAS register structures passed to AcpiRead and 7272AcpiWrite. 7273 7274Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 7275custom 7276build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 7277model. 7278See the ACPICA reference for details. ACPICA BZ 942. This option removes 7279about 728010% of the code and 5% of the static data, and the following hardware 7281ACPI 7282features become unavailable: 7283 PM Event and Control registers 7284 SCI interrupt (and handler) 7285 Fixed Events 7286 General Purpose Events (GPEs) 7287 Global Lock 7288 ACPI PM timer 7289 7290Updated the unix tarball directory structure to match the ACPICA git 7291source 7292tree. This ensures that the generic unix makefiles work properly (in 7293generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 7294867. 7295 7296Updated the return value of the _REV predefined method to integer value 5 7297to 7298reflect ACPI 5.0 support. 7299 7300Moved the external ACPI PM timer interface prototypes to the public 7301acpixf.h 7302file where they belong. 7303 7304Example Code and Data Size: These are the sizes for the OS-independent 7305acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7306debug 7307version of the code includes the debug output trace mechanism and has a 7308much 7309larger code and data size. 7310 7311 Previous Release: 7312 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7313 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7314 Current Release: 7315 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7316 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7317 7318 73192) iASL Compiler/Disassembler and Tools: 7320 7321Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 7322descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 7323incorrectly displayed. 7324 7325AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 7326specification. 7327 7328---------------------------------------- 732911 January 2012. Summary of changes for version 20120111: 7330 7331 73321) ACPICA Core Subsystem: 7333 7334Implemented a new mechanism to allow host device drivers to check for 7335address 7336range conflicts with ACPI Operation Regions. Both SystemMemory and 7337SystemIO 7338address spaces are supported. A new external interface, 7339AcpiCheckAddressRange, 7340allows drivers to check an address range against the ACPI namespace. See 7341the 7342ACPICA reference for additional details. Adds one new file, 7343utilities/utaddress.c. Lin Ming, Bob Moore. 7344 7345Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 7346Control 7347and 7348Status registers, update the ACPI 5.0 flags, and update internal data 7349structures to handle an FADT larger than 256 bytes. The size of the ACPI 73505.0 7351FADT is 268 bytes. 7352 7353Updated all ACPICA copyrights and signons to 2012. Added the 2012 7354copyright to 7355all module headers and signons, including the standard Linux header. This 7356affects virtually every file in the ACPICA core subsystem, iASL compiler, 7357and 7358all ACPICA utilities. 7359 7360Example Code and Data Size: These are the sizes for the OS-independent 7361acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7362debug 7363version of the code includes the debug output trace mechanism and has a 7364much 7365larger code and data size. 7366 7367 Previous Release: 7368 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7369 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7370 Current Release: 7371 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7372 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7373 7374 73752) iASL Compiler/Disassembler and Tools: 7376 7377Disassembler: fixed a problem with the automatic resource tag generation 7378support. Fixes a problem where the resource tags are inadvertently not 7379constructed if the table being disassembled contains external references 7380to 7381control methods. Moved the actual construction of the tags to after the 7382final 7383namespace is constructed (after 2nd parse is invoked due to external 7384control 7385method references.) ACPICA BZ 941. 7386 7387Table Compiler: Make all "generic" operators caseless. These are the 7388operators 7389like UINT8, String, etc. Making these caseless improves ease-of-use. 7390ACPICA BZ 7391934. 7392 7393---------------------------------------- 739423 November 2011. Summary of changes for version 20111123: 7395 73960) ACPI 5.0 Support: 7397 7398This release contains full support for the ACPI 5.0 specification, as 7399summarized below. 7400 7401Reduced Hardware Support: 7402------------------------- 7403 7404This support allows for ACPI systems without the usual ACPI hardware. 7405This 7406support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 7407will 7408not attempt to initialize or use any of the usual ACPI hardware. Note, 7409when 7410this flag is set, all of the following ACPI hardware is assumed to be not 7411present and is not initialized or accessed: 7412 7413 General Purpose Events (GPEs) 7414 Fixed Events (PM1a/PM1b and PM Control) 7415 Power Management Timer and Console Buttons (power/sleep) 7416 Real-time Clock Alarm 7417 Global Lock 7418 System Control Interrupt (SCI) 7419 The FACS is assumed to be non-existent 7420 7421ACPI Tables: 7422------------ 7423 7424All new tables and updates to existing tables are fully supported in the 7425ACPICA headers (for use by device drivers), the disassembler, and the 7426iASL 7427Data Table Compiler. ACPI 5.0 defines these new tables: 7428 7429 BGRT /* Boot Graphics Resource Table */ 7430 DRTM /* Dynamic Root of Trust for Measurement table */ 7431 FPDT /* Firmware Performance Data Table */ 7432 GTDT /* Generic Timer Description Table */ 7433 MPST /* Memory Power State Table */ 7434 PCCT /* Platform Communications Channel Table */ 7435 PMTT /* Platform Memory Topology Table */ 7436 RASF /* RAS Feature table */ 7437 7438Operation Regions/SpaceIDs: 7439--------------------------- 7440 7441All new operation regions are fully supported by the iASL compiler, the 7442disassembler, and the ACPICA runtime code (for dispatch to region 7443handlers.) 7444The new operation region Space IDs are: 7445 7446 GeneralPurposeIo 7447 GenericSerialBus 7448 7449Resource Descriptors: 7450--------------------- 7451 7452All new ASL resource descriptors are fully supported by the iASL 7453compiler, 7454the 7455ASL/AML disassembler, and the ACPICA runtime Resource Manager code 7456(including 7457all new predefined resource tags). New descriptors are: 7458 7459 FixedDma 7460 GpioIo 7461 GpioInt 7462 I2cSerialBus 7463 SpiSerialBus 7464 UartSerialBus 7465 7466ASL/AML Operators, New and Modified: 7467------------------------------------ 7468 7469One new operator is added, the Connection operator, which is used to 7470associate 7471a GeneralPurposeIo or GenericSerialBus resource descriptor with 7472individual 7473field objects within an operation region. Several new protocols are 7474associated 7475with the AccessAs operator. All are fully supported by the iASL compiler, 7476disassembler, and runtime ACPICA AML interpreter: 7477 7478 Connection // Declare Field Connection 7479attributes 7480 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 7481 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 7482Protocol 7483 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 7484 RawDataBuffer // Data type for Vendor Data 7485fields 7486 7487Predefined ASL/AML Objects: 7488--------------------------- 7489 7490All new predefined objects/control-methods are supported by the iASL 7491compiler 7492and the ACPICA runtime validation/repair (arguments and return values.) 7493New 7494predefined names include the following: 7495 7496Standard Predefined Names (Objects or Control Methods): 7497 _AEI, _CLS, _CPC, _CWS, _DEP, 7498 _DLM, _EVT, _GCP, _CRT, _GWS, 7499 _HRV, _PRE, _PSE, _SRT, _SUB. 7500 7501Resource Tags (Names used to access individual fields within resource 7502descriptors): 7503 _DBT, _DPL, _DRS, _END, _FLC, 7504 _IOR, _LIN, _MOD, _PAR, _PHA, 7505 _PIN, _PPI, _POL, _RXL, _SLV, 7506 _SPE, _STB, _TXL, _VEN. 7507 7508ACPICA External Interfaces: 7509--------------------------- 7510 7511Several new interfaces have been defined for use by ACPI-related device 7512drivers and other host OS services: 7513 7514AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 7515to 7516acquire and release AML mutexes that are defined in the DSDT/SSDT tables 7517provided by the BIOS. They are intended to be used in conjunction with 7518the 7519ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 7520mutual exclusion with the AML code/interpreter. 7521 7522AcpiGetEventResources: Returns the (formatted) resource descriptors as 7523defined 7524by the ACPI 5.0 _AEI object (ACPI Event Information). This object 7525provides 7526resource descriptors associated with hardware-reduced platform events, 7527similar 7528to the AcpiGetCurrentResources interface. 7529 7530Operation Region Handlers: For General Purpose IO and Generic Serial Bus 7531operation regions, information about the Connection() object and any 7532optional 7533length information is passed to the region handler within the Context 7534parameter. 7535 7536AcpiBufferToResource: This interface converts a raw AML buffer containing 7537a 7538resource template or resource descriptor to the ACPI_RESOURCE internal 7539format 7540suitable for use by device drivers. Can be used by an operation region 7541handler 7542to convert the Connection() buffer object into a ACPI_RESOURCE. 7543 7544Miscellaneous/Tools/TestSuites: 7545------------------------------- 7546 7547Support for extended _HID names (Four alpha characters instead of three). 7548Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 7549Support for ACPI 5.0 features in the ASLTS test suite. 7550Fully updated documentation (ACPICA and iASL reference documents.) 7551 7552ACPI Table Definition Language: 7553------------------------------- 7554 7555Support for this language was implemented and released as a subsystem of 7556the 7557iASL compiler in 2010. (See the iASL compiler User Guide.) 7558 7559 7560Non-ACPI 5.0 changes for this release: 7561-------------------------------------- 7562 75631) ACPICA Core Subsystem: 7564 7565Fix a problem with operation region declarations where a failure can 7566occur 7567if 7568the region name and an argument that evaluates to an object (such as the 7569region address) are in different namespace scopes. Lin Ming, ACPICA BZ 7570937. 7571 7572Do not abort an ACPI table load if an invalid space ID is found within. 7573This 7574will be caught later if the offending method is executed. ACPICA BZ 925. 7575 7576Fixed an issue with the FFixedHW space ID where the ID was not always 7577recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 7578 7579Fixed a problem with the 32-bit generation of the unix-specific OSL 7580(osunixxf.c). Lin Ming, ACPICA BZ 936. 7581 7582Several changes made to enable generation with the GCC 4.6 compiler. 7583ACPICA BZ 7584935. 7585 7586New error messages: Unsupported I/O requests (not 8/16/32 bit), and 7587Index/Bank 7588field registers out-of-range. 7589 75902) iASL Compiler/Disassembler and Tools: 7591 7592iASL: Implemented the __PATH__ operator, which returns the full pathname 7593of 7594the current source file. 7595 7596AcpiHelp: Automatically display expanded keyword information for all ASL 7597operators. 7598 7599Debugger: Add "Template" command to disassemble/dump resource template 7600buffers. 7601 7602Added a new master script to generate and execute the ASLTS test suite. 7603Automatically handles 32- and 64-bit generation. See tests/aslts.sh 7604 7605iASL: Fix problem with listing generation during processing of the 7606Switch() 7607operator where AML listing was disabled until the entire Switch block was 7608completed. 7609 7610iASL: Improve support for semicolon statement terminators. Fix "invalid 7611character" message for some cases when the semicolon is used. Semicolons 7612are 7613now allowed after every <Term> grammar element. ACPICA BZ 927. 7614 7615iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7616923. 7617 7618Disassembler: Fix problem with disassembly of the DataTableRegion 7619operator 7620where an inadvertent "Unhandled deferred opcode" message could be 7621generated. 7622 76233) Example Code and Data Size 7624 7625These are the sizes for the OS-independent acpica.lib produced by the 7626Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7627includes the debug output trace mechanism and has a much larger code and 7628data 7629size. 7630 7631 Previous Release: 7632 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7633 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7634 Current Release: 7635 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7636 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7637 7638---------------------------------------- 763922 September 2011. Summary of changes for version 20110922: 7640 76410) ACPI 5.0 News: 7642 7643Support for ACPI 5.0 in ACPICA has been underway for several months and 7644will 7645be released at the same time that ACPI 5.0 is officially released. 7646 7647The ACPI 5.0 specification is on track for release in the next few 7648months. 7649 76501) ACPICA Core Subsystem: 7651 7652Fixed a problem where the maximum sleep time for the Sleep() operator was 7653intended to be limited to two seconds, but was inadvertently limited to 765420 7655seconds instead. 7656 7657Linux and Unix makefiles: Added header file dependencies to ensure 7658correct 7659generation of ACPICA core code and utilities. Also simplified the 7660makefiles 7661considerably through the use of the vpath variable to specify search 7662paths. 7663ACPICA BZ 924. 7664 76652) iASL Compiler/Disassembler and Tools: 7666 7667iASL: Implemented support to check the access length for all fields 7668created to 7669access named Resource Descriptor fields. For example, if a resource field 7670is 7671defined to be two bits, a warning is issued if a CreateXxxxField() is 7672used 7673with an incorrect bit length. This is implemented for all current 7674resource 7675descriptor names. ACPICA BZ 930. 7676 7677Disassembler: Fixed a byte ordering problem with the output of 24-bit and 767856- 7679bit integers. 7680 7681iASL: Fixed a couple of issues associated with variable-length package 7682objects. 1) properly handle constants like One, Ones, Zero -- do not make 7683a 7684VAR_PACKAGE when these are used as a package length. 2) Allow the 7685VAR_PACKAGE 7686opcode (in addition to PACKAGE) when validating object types for 7687predefined 7688names. 7689 7690iASL: Emit statistics for all output files (instead of just the ASL input 7691and 7692AML output). Includes listings, hex files, etc. 7693 7694iASL: Added -G option to the table compiler to allow the compilation of 7695custom 7696ACPI tables. The only part of a table that is required is the standard 769736- 7698byte 7699ACPI header. 7700 7701AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7702headers), 7703which also adds correct 64-bit support. Also, now all output filenames 7704are 7705completely lower case. 7706 7707AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7708loading table files. A warning is issued for any such tables. The only 7709exception is an FADT. This also fixes a possible fault when attempting to 7710load 7711non-AML tables. ACPICA BZ 932. 7712 7713AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7714a 7715missing table terminator could cause a fault when using the -p option. 7716 7717AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7718statistics. 7719 77203) Example Code and Data Size 7721 7722These are the sizes for the OS-independent acpica.lib produced by the 7723Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7724includes the debug output trace mechanism and has a much larger code and 7725data 7726size. 7727 7728 Previous Release (VC 9.0): 7729 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7730 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7731 Current Release (VC 9.0): 7732 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7733 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7734 7735 7736---------------------------------------- 773723 June 2011. Summary of changes for version 20110623: 7738 77391) ACPI CA Core Subsystem: 7740 7741Updated the predefined name repair mechanism to not attempt repair of a 7742_TSS 7743return object if a _PSS object is present. We can only sort the _TSS 7744return 7745package if there is no _PSS within the same scope. This is because if 7746_PSS 7747is 7748present, the ACPI specification dictates that the _TSS Power Dissipation 7749field 7750is to be ignored, and therefore some BIOSs leave garbage values in the 7751_TSS 7752Power field(s). In this case, it is best to just return the _TSS package 7753as- 7754is. Reported by, and fixed with assistance from Fenghua Yu. 7755 7756Added an option to globally disable the control method return value 7757validation 7758and repair. This runtime option can be used to disable return value 7759repair 7760if 7761this is causing a problem on a particular machine. Also added an option 7762to 7763AcpiExec (-dr) to set this disable flag. 7764 7765All makefiles and project files: Major changes to improve generation of 7766ACPICA 7767tools. ACPICA BZ 912: 7768 Reduce default optimization levels to improve compatibility 7769 For Linux, add strict-aliasing=0 for gcc 4 7770 Cleanup and simplify use of command line defines 7771 Cleanup multithread library support 7772 Improve usage messages 7773 7774Linux-specific header: update handling of THREAD_ID and pthread. For the 777532- 7776bit case, improve casting to eliminate possible warnings, especially with 7777the 7778acpica tools. 7779 7780Example Code and Data Size: These are the sizes for the OS-independent 7781acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7782debug 7783version of the code includes the debug output trace mechanism and has a 7784much 7785larger code and data size. 7786 7787 Previous Release (VC 9.0): 7788 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7789 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7790 Current Release (VC 9.0): 7791 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7792 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7793 77942) iASL Compiler/Disassembler and Tools: 7795 7796With this release, a new utility named "acpihelp" has been added to the 7797ACPICA 7798package. This utility summarizes the ACPI specification chapters for the 7799ASL 7800and AML languages. It generates under Linux/Unix as well as Windows, and 7801provides the following functionality: 7802 Find/display ASL operator(s) -- with description and syntax. 7803 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7804 Find/display ACPI predefined name(s) -- with description, number 7805 of arguments, and the return value data type. 7806 Find/display AML opcode name(s) -- with opcode, arguments, and 7807grammar. 7808 Decode/display AML opcode -- with opcode name, arguments, and 7809grammar. 7810 7811Service Layers: Make multi-thread support configurable. Conditionally 7812compile 7813the multi-thread support so that threading libraries will not be linked 7814if 7815not 7816necessary. The only tool that requires multi-thread support is AcpiExec. 7817 7818iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7819of 7820Bison appear to want the interface to yyerror to be a const char * (or at 7821least this is a problem when generating iASL on some systems.) ACPICA BZ 7822923 7823Pierre Lejeune. 7824 7825Tools: Fix for systems where O_BINARY is not defined. Only used for 7826Windows 7827versions of the tools. 7828 7829---------------------------------------- 783027 May 2011. Summary of changes for version 20110527: 7831 78321) ACPI CA Core Subsystem: 7833 7834ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7835table 7836signature. Now, only allow SSDT, OEMx, and a null signature. History: 7837 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7838 (PSDT is now obsolete.) 7839 2) We added support for OEMx tables, signature "OEM" plus a fourth 7840 "don't care" character. 7841 3) Valid tables were encountered with a null signature, so we just 7842 gave up on validating the signature, (05/2008). 7843 4) We encountered non-AML tables such as the MADT, which caused 7844 interpreter errors and kernel faults. So now, we once again allow 7845 only SSDT, OEMx, and now, also a null signature. (05/2011). 7846 7847Added the missing _TDL predefined name to the global name list in order 7848to 7849enable validation. Affects both the core ACPICA code and the iASL 7850compiler. 7851 7852Example Code and Data Size: These are the sizes for the OS-independent 7853acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7854debug 7855version of the code includes the debug output trace mechanism and has a 7856much 7857larger code and data size. 7858 7859 Previous Release (VC 9.0): 7860 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7861 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7862 Current Release (VC 9.0): 7863 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7864 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7865 78662) iASL Compiler/Disassembler and Tools: 7867 7868Debugger/AcpiExec: Implemented support for "complex" method arguments on 7869the 7870debugger command line. This adds support beyond simple integers -- 7871including 7872Strings, Buffers, and Packages. Includes support for nested packages. 7873Increased the default command line buffer size to accommodate these 7874arguments. 7875See the ACPICA reference for details and syntax. ACPICA BZ 917. 7876 7877Debugger/AcpiExec: Implemented support for "default" method arguments for 7878the 7879Execute/Debug command. Now, the debugger will always invoke a control 7880method 7881with the required number of arguments -- even if the command line 7882specifies 7883none or insufficient arguments. It uses default integer values for any 7884missing 7885arguments. Also fixes a bug where only six method arguments maximum were 7886supported instead of the required seven. 7887 7888Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7889and 7890also return status in order to prevent buffer overruns. See the ACPICA 7891reference for details and syntax. ACPICA BZ 921 7892 7893iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7894makefiles to simplify support for the two different but similar parser 7895generators, bison and yacc. 7896 7897Updated the generic unix makefile for gcc 4. The default gcc version is 7898now 7899expected to be 4 or greater, since options specific to gcc 4 are used. 7900 7901---------------------------------------- 790213 April 2011. Summary of changes for version 20110413: 7903 79041) ACPI CA Core Subsystem: 7905 7906Implemented support to execute a so-called "orphan" _REG method under the 7907EC 7908device. This change will force the execution of a _REG method underneath 7909the 7910EC 7911device even if there is no corresponding operation region of type 7912EmbeddedControl. Fixes a problem seen on some machines and apparently is 7913compatible with Windows behavior. ACPICA BZ 875. 7914 7915Added more predefined methods that are eligible for automatic NULL 7916package 7917element removal. This change adds another group of predefined names to 7918the 7919list 7920of names that can be repaired by having NULL package elements dynamically 7921removed. This group are those methods that return a single variable- 7922length 7923package containing simple data types such as integers, buffers, strings. 7924This 7925includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7926_PSL, 7927_Sx, 7928and _TZD. ACPICA BZ 914. 7929 7930Split and segregated all internal global lock functions to a new file, 7931evglock.c. 7932 7933Updated internal address SpaceID for DataTable regions. Moved this 7934internal 7935space 7936id in preparation for ACPI 5.0 changes that will include some new space 7937IDs. 7938This 7939change should not affect user/host code. 7940 7941Example Code and Data Size: These are the sizes for the OS-independent 7942acpica.lib 7943produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7944version of 7945the code includes the debug output trace mechanism and has a much larger 7946code 7947and 7948data size. 7949 7950 Previous Release (VC 9.0): 7951 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7952 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7953 Current Release (VC 9.0): 7954 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7955 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7956 79572) iASL Compiler/Disassembler and Tools: 7958 7959iASL/DTC: Major update for new grammar features. Allow generic data types 7960in 7961custom ACPI tables. Field names are now optional. Any line can be split 7962to 7963multiple lines using the continuation char (\). Large buffers now use 7964line- 7965continuation character(s) and no colon on the continuation lines. See the 7966grammar 7967update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7968Moore. 7969 7970iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7971statements. 7972Since the parser stuffs a "zero" as the return value for these statements 7973(due 7974to 7975the underlying AML grammar), they were seen as "return with value" by the 7976iASL 7977semantic checking. They are now seen correctly as "null" return 7978statements. 7979 7980iASL: Check if a_REG declaration has a corresponding Operation Region. 7981Adds a 7982check for each _REG to ensure that there is in fact a corresponding 7983operation 7984region declaration in the same scope. If not, the _REG method is not very 7985useful 7986since it probably won't be executed. ACPICA BZ 915. 7987 7988iASL/DTC: Finish support for expression evaluation. Added a new 7989expression 7990parser 7991that implements c-style operator precedence and parenthesization. ACPICA 7992bugzilla 7993908. 7994 7995Disassembler/DTC: Remove support for () and <> style comments in data 7996tables. 7997Now 7998that DTC has full expression support, we don't want to have comment 7999strings 8000that 8001start with a parentheses or a less-than symbol. Now, only the standard /* 8002and 8003// 8004comments are supported, as well as the bracket [] comments. 8005 8006AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 8007"unusual" 8008headers in the acpidump file. Update the header validation to support 8009these 8010tables. Problem introduced in previous AcpiXtract version in the change 8011to 8012support "wrong checksum" error messages emitted by acpidump utility. 8013 8014iASL: Add a * option to generate all template files (as a synonym for 8015ALL) 8016as 8017in 8018"iasl -T *" or "iasl -T ALL". 8019 8020iASL/DTC: Do not abort compiler on fatal errors. We do not want to 8021completely 8022abort the compiler on "fatal" errors, simply should abort the current 8023compile. 8024This allows multiple compiles with a single (possibly wildcard) compiler 8025invocation. 8026 8027---------------------------------------- 802816 March 2011. Summary of changes for version 20110316: 8029 80301) ACPI CA Core Subsystem: 8031 8032Fixed a problem caused by a _PRW method appearing at the namespace root 8033scope 8034during the setup of wake GPEs. A fault could occur if a _PRW directly 8035under 8036the 8037root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 8038 8039Implemented support for "spurious" Global Lock interrupts. On some 8040systems, a 8041global lock interrupt can occur without the pending flag being set. Upon 8042a 8043GL 8044interrupt, we now ensure that a thread is actually waiting for the lock 8045before 8046signaling GL availability. Rafael Wysocki, Bob Moore. 8047 8048Example Code and Data Size: These are the sizes for the OS-independent 8049acpica.lib 8050produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 8051version of 8052the code includes the debug output trace mechanism and has a much larger 8053code 8054and 8055data size. 8056 8057 Previous Release (VC 9.0): 8058 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8059 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8060 Current Release (VC 9.0): 8061 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 8062 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 8063 80642) iASL Compiler/Disassembler and Tools: 8065 8066Implemented full support for the "SLIC" ACPI table. Includes support in 8067the 8068header files, disassembler, table compiler, and template generator. Bob 8069Moore, 8070Lin Ming. 8071 8072AcpiXtract: Correctly handle embedded comments and messages from 8073AcpiDump. 8074Apparently some or all versions of acpidump will occasionally emit a 8075comment 8076like 8077"Wrong checksum", etc., into the dump file. This was causing problems for 8078AcpiXtract. ACPICA BZ 905. 8079 8080iASL: Fix the Linux makefile by removing an inadvertent double file 8081inclusion. 8082ACPICA BZ 913. 8083 8084AcpiExec: Update installation of operation region handlers. Install one 8085handler 8086for a user-defined address space. This is used by the ASL test suite 8087(ASLTS). 8088 8089---------------------------------------- 809011 February 2011. Summary of changes for version 20110211: 8091 80921) ACPI CA Core Subsystem: 8093 8094Added a mechanism to defer _REG methods for some early-installed 8095handlers. 8096Most user handlers should be installed before call to 8097AcpiEnableSubsystem. 8098However, Event handlers and region handlers should be installed after 8099AcpiInitializeObjects. Override handlers for the "default" regions should 8100be 8101installed early, however. This change executes all _REG methods for the 8102default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 8103chicken/egg issues between them. ACPICA BZ 848. 8104 8105Implemented an optimization for GPE detection. This optimization will 8106simply 8107ignore GPE registers that contain no enabled GPEs -- there is no need to 8108read the register since this information is available internally. This 8109becomes more important on machines with a large GPE space. ACPICA 8110bugzilla 8111884. Lin Ming. Suggestion from Joe Liu. 8112 8113Removed all use of the highly unreliable FADT revision field. The 8114revision 8115number in the FADT has been found to be completely unreliable and cannot 8116be 8117trusted. Only the actual table length can be used to infer the version. 8118This 8119change updates the ACPICA core and the disassembler so that both no 8120longer 8121even look at the FADT version and instead depend solely upon the FADT 8122length. 8123 8124Fix an unresolved name issue for the no-debug and no-error-message source 8125generation cases. The _AcpiModuleName was left undefined in these cases, 8126but 8127it is actually needed as a parameter to some interfaces. Define 8128_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 8129 8130Split several large files (makefiles and project files updated) 8131 utglobal.c -> utdecode.c 8132 dbcomds.c -> dbmethod.c dbnames.c 8133 dsopcode.c -> dsargs.c dscontrol.c 8134 dsload.c -> dsload2.c 8135 aslanalyze.c -> aslbtypes.c aslwalks.c 8136 8137Example Code and Data Size: These are the sizes for the OS-independent 8138acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8139debug version of the code includes the debug output trace mechanism and 8140has 8141a much larger code and data size. 8142 8143 Previous Release (VC 9.0): 8144 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8145 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8146 Current Release (VC 9.0): 8147 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8148 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8149 81502) iASL Compiler/Disassembler and Tools: 8151 8152iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 8153These are useful C-style macros with the standard definitions. ACPICA 8154bugzilla 898. 8155 8156iASL/DTC: Added support for integer expressions and labels. Support for 8157full 8158expressions for all integer fields in all ACPI tables. Support for labels 8159in 8160"generic" portions of tables such as UEFI. See the iASL reference manual. 8161 8162Debugger: Added a command to display the status of global handlers. The 8163"handlers" command will display op region, fixed event, and miscellaneous 8164global handlers. installation status -- and for op regions, whether 8165default 8166or user-installed handler will be used. 8167 8168iASL: Warn if reserved method incorrectly returns a value. Many 8169predefined 8170names are defined such that they do not return a value. If implemented as 8171a 8172method, issue a warning if such a name explicitly returns a value. ACPICA 8173Bugzilla 855. 8174 8175iASL: Added detection of GPE method name conflicts. Detects a conflict 8176where 8177there are two GPE methods of the form _Lxy and _Exy in the same scope. 8178(For 8179example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 8180 8181iASL/DTC: Fixed a couple input scanner issues with comments and line 8182numbers. Comment remover could get confused and miss a comment ending. 8183Fixed 8184a problem with line counter maintenance. 8185 8186iASL/DTC: Reduced the severity of some errors from fatal to error. There 8187is 8188no need to abort on simple errors within a field definition. 8189 8190Debugger: Simplified the output of the help command. All help output now 8191in 8192a single screen, instead of help subcommands. ACPICA Bugzilla 897. 8193 8194---------------------------------------- 819512 January 2011. Summary of changes for version 20110112: 8196 81971) ACPI CA Core Subsystem: 8198 8199Fixed a race condition between method execution and namespace walks that 8200can 8201possibly cause a fault. The problem was apparently introduced in version 820220100528 as a result of a performance optimization that reduces the 8203number 8204of 8205namespace walks upon method exit by using the delete_namespace_subtree 8206function instead of the delete_namespace_by_owner function used 8207previously. 8208Bug is a missing namespace lock in the delete_namespace_subtree function. 8209dana.myers@oracle.com 8210 8211Fixed several issues and a possible fault with the automatic "serialized" 8212method support. History: This support changes a method to "serialized" on 8213the 8214fly if the method generates an AE_ALREADY_EXISTS error, indicating the 8215possibility that it cannot handle reentrancy. This fix repairs a couple 8216of 8217issues seen in the field, especially on machines with many cores: 8218 8219 1) Delete method children only upon the exit of the last thread, 8220 so as to not delete objects out from under other running threads 8221 (and possibly causing a fault.) 8222 2) Set the "serialized" bit for the method only upon the exit of the 8223 Last thread, so as to not cause deadlock when running threads 8224 attempt to exit. 8225 3) Cleanup the use of the AML "MethodFlags" and internal method flags 8226 so that there is no longer any confusion between the two. 8227 8228 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 8229 8230Debugger: Now lock the namespace for duration of a namespace dump. 8231Prevents 8232issues if the namespace is changing dynamically underneath the debugger. 8233Especially affects temporary namespace nodes, since the debugger displays 8234these also. 8235 8236Updated the ordering of include files. The ACPICA headers should appear 8237before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 8238set 8239any necessary compiler-specific defines, etc. Affects the ACPI-related 8240tools 8241and utilities. 8242 8243Updated all ACPICA copyrights and signons to 2011. Added the 2011 8244copyright 8245to all module headers and signons, including the Linux header. This 8246affects 8247virtually every file in the ACPICA core subsystem, iASL compiler, and all 8248utilities. 8249 8250Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 8251project files for VC++ 6.0 are now obsolete. New project files can be 8252found 8253under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 8254details. 8255 8256Example Code and Data Size: These are the sizes for the OS-independent 8257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8258debug version of the code includes the debug output trace mechanism and 8259has a 8260much larger code and data size. 8261 8262 Previous Release (VC 6.0): 8263 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8264 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8265 Current Release (VC 9.0): 8266 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8267 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8268 82692) iASL Compiler/Disassembler and Tools: 8270 8271iASL: Added generic data types to the Data Table compiler. Add "generic" 8272data 8273types such as UINT32, String, Unicode, etc., to simplify the generation 8274of 8275platform-defined tables such as UEFI. Lin Ming. 8276 8277iASL: Added listing support for the Data Table Compiler. Adds listing 8278support 8279(-l) to display actual binary output for each line of input code. 8280 8281---------------------------------------- 828209 December 2010. Summary of changes for version 20101209: 8283 82841) ACPI CA Core Subsystem: 8285 8286Completed the major overhaul of the GPE support code that was begun in 8287July 82882010. Major features include: removal of _PRW execution in ACPICA (host 8289executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 8290changes to existing interfaces, simplification of GPE handler operation, 8291and 8292a handful of new interfaces: 8293 8294 AcpiUpdateAllGpes 8295 AcpiFinishGpe 8296 AcpiSetupGpeForWake 8297 AcpiSetGpeWakeMask 8298 One new file, evxfgpe.c to consolidate all external GPE interfaces. 8299 8300See the ACPICA Programmer Reference for full details and programming 8301information. See the new section 4.4 "General Purpose Event (GPE) 8302Support" 8303for a full overview, and section 8.7 "ACPI General Purpose Event 8304Management" 8305for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 8306Ming, 8307Bob Moore, Rafael Wysocki. 8308 8309Implemented a new GPE feature for Windows compatibility, the "Implicit 8310Wake 8311GPE Notify". This feature will automatically issue a Notify(2) on a 8312device 8313when a Wake GPE is received if there is no corresponding GPE method or 8314handler. ACPICA BZ 870. 8315 8316Fixed a problem with the Scope() operator during table parse and load 8317phase. 8318During load phase (table load or method execution), the scope operator 8319should 8320not enter the target into the namespace. Instead, it should open a new 8321scope 8322at the target location. Linux BZ 19462, ACPICA BZ 882. 8323 8324Example Code and Data Size: These are the sizes for the OS-independent 8325acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8326debug version of the code includes the debug output trace mechanism and 8327has a 8328much larger code and data size. 8329 8330 Previous Release: 8331 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8332 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8333 Current Release: 8334 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8335 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8336 83372) iASL Compiler/Disassembler and Tools: 8338 8339iASL: Relax the alphanumeric restriction on _CID strings. These strings 8340are 8341"bus-specific" per the ACPI specification, and therefore any characters 8342are 8343acceptable. The only checks that can be performed are for a null string 8344and 8345perhaps for a leading asterisk. ACPICA BZ 886. 8346 8347iASL: Fixed a problem where a syntax error that caused a premature EOF 8348condition on the source file emitted a very confusing error message. The 8349premature EOF is now detected correctly. ACPICA BZ 891. 8350 8351Disassembler: Decode the AccessSize within a Generic Address Structure 8352(byte 8353access, word access, etc.) Note, this field does not allow arbitrary bit 8354access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 8355 8356New: AcpiNames utility - Example namespace dump utility. Shows an example 8357of 8358ACPICA configuration for a minimal namespace dump utility. Uses table and 8359namespace managers, but no AML interpreter. Does not add any 8360functionality 8361over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 8362partition and configure ACPICA. ACPICA BZ 883. 8363 8364AML Debugger: Increased the debugger buffer size for method return 8365objects. 8366Was 4K, increased to 16K. Also enhanced error messages for debugger 8367method 8368execution, including the buffer overflow case. 8369 8370---------------------------------------- 837113 October 2010. Summary of changes for version 20101013: 8372 83731) ACPI CA Core Subsystem: 8374 8375Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 8376now 8377clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 8378HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 8379 8380Changed the type of the predefined namespace object _TZ from ThermalZone 8381to 8382Device. This was found to be confusing to the host software that 8383processes 8384the various thermal zones, since _TZ is not really a ThermalZone. 8385However, 8386a 8387Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 8388Zhang. 8389 8390Added Windows Vista SP2 to the list of supported _OSI strings. The actual 8391string is "Windows 2006 SP2". 8392 8393Eliminated duplicate code in AcpiUtExecute* functions. Now that the 8394nsrepair 8395code automatically repairs _HID-related strings, this type of code is no 8396longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 8397878. 8398 8399Example Code and Data Size: These are the sizes for the OS-independent 8400acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8401debug version of the code includes the debug output trace mechanism and 8402has a 8403much larger code and data size. 8404 8405 Previous Release: 8406 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8407 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8408 Current Release: 8409 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8410 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8411 84122) iASL Compiler/Disassembler and Tools: 8413 8414iASL: Implemented additional compile-time validation for _HID strings. 8415The 8416non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 8417length 8418of 8419the string must be exactly seven or eight characters. For both _HID and 8420_CID 8421strings, all characters must be alphanumeric. ACPICA BZ 874. 8422 8423iASL: Allow certain "null" resource descriptors. Some BIOS code creates 8424descriptors that are mostly or all zeros, with the expectation that they 8425will 8426be filled in at runtime. iASL now allows this as long as there is a 8427"resource 8428tag" (name) associated with the descriptor, which gives the ASL a handle 8429needed to modify the descriptor. ACPICA BZ 873. 8430 8431Added single-thread support to the generic Unix application OSL. 8432Primarily 8433for iASL support, this change removes the use of semaphores in the 8434single- 8435threaded ACPICA tools/applications - increasing performance. The 8436_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 8437option. ACPICA BZ 879. 8438 8439AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 8440support 8441for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 8442 8443iASL: Moved all compiler messages to a new file, aslmessages.h. 8444 8445---------------------------------------- 844615 September 2010. Summary of changes for version 20100915: 8447 84481) ACPI CA Core Subsystem: 8449 8450Removed the AcpiOsDerivePciId OSL interface. The various host 8451implementations 8452of this function were not OS-dependent and are now obsolete and can be 8453removed from all host OSLs. This function has been replaced by 8454AcpiHwDerivePciId, which is now part of the ACPICA core code. 8455AcpiHwDerivePciId has been implemented without recursion. Adds one new 8456module, hwpci.c. ACPICA BZ 857. 8457 8458Implemented a dynamic repair for _HID and _CID strings. The following 8459problems are now repaired at runtime: 1) Remove a leading asterisk in the 8460string, and 2) the entire string is uppercased. Both repairs are in 8461accordance with the ACPI specification and will simplify host driver 8462code. 8463ACPICA BZ 871. 8464 8465The ACPI_THREAD_ID type is no longer configurable, internally it is now 8466always UINT64. This simplifies the ACPICA code, especially any printf 8467output. 8468UINT64 is the only common data type for all thread_id types across all 8469operating systems. It is now up to the host OSL to cast the native 8470thread_id 8471type to UINT64 before returning the value to ACPICA (via 8472AcpiOsGetThreadId). 8473Lin Ming, Bob Moore. 8474 8475Added the ACPI_INLINE type to enhance the ACPICA configuration. The 8476"inline" 8477keyword is not standard across compilers, and this type allows inline to 8478be 8479configured on a per-compiler basis. Lin Ming. 8480 8481Made the system global AcpiGbl_SystemAwakeAndRunning publicly 8482available. 8483Added an extern for this boolean in acpixf.h. Some hosts utilize this 8484value 8485during suspend/restore operations. ACPICA BZ 869. 8486 8487All code that implements error/warning messages with the "ACPI:" prefix 8488has 8489been moved to a new module, utxferror.c. 8490 8491The UINT64_OVERLAY was moved to utmath.c, which is the only module where 8492it 8493is used. ACPICA BZ 829. Lin Ming, Bob Moore. 8494 8495Example Code and Data Size: These are the sizes for the OS-independent 8496acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8497debug version of the code includes the debug output trace mechanism and 8498has a 8499much larger code and data size. 8500 8501 Previous Release: 8502 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8503 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8504 Current Release: 8505 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8506 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8507 85082) iASL Compiler/Disassembler and Tools: 8509 8510iASL/Disassembler: Write ACPI errors to stderr instead of the output 8511file. 8512This keeps the output files free of random error messages that may 8513originate 8514from within the namespace/interpreter code. Used this opportunity to 8515merge 8516all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 8517866. Lin Ming, Bob Moore. 8518 8519Tools: update some printfs for ansi warnings on size_t. Handle width 8520change 8521of size_t on 32-bit versus 64-bit generations. Lin Ming. 8522 8523---------------------------------------- 852406 August 2010. Summary of changes for version 20100806: 8525 85261) ACPI CA Core Subsystem: 8527 8528Designed and implemented a new host interface to the _OSI support code. 8529This 8530will allow the host to dynamically add or remove multiple _OSI strings, 8531as 8532well as install an optional handler that is called for each _OSI 8533invocation. 8534Also added a new AML debugger command, 'osi' to display and modify the 8535global 8536_OSI string table, and test support in the AcpiExec utility. See the 8537ACPICA 8538reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 8539New Functions: 8540 AcpiInstallInterface - Add an _OSI string. 8541 AcpiRemoveInterface - Delete an _OSI string. 8542 AcpiInstallInterfaceHandler - Install optional _OSI handler. 8543Obsolete Functions: 8544 AcpiOsValidateInterface - no longer used. 8545New Files: 8546 source/components/utilities/utosi.c 8547 8548Re-introduced the support to enable multi-byte transfers for Embedded 8549Controller (EC) operation regions. A reported problem was found to be a 8550bug 8551in the host OS, not in the multi-byte support. Previously, the maximum 8552data 8553size passed to the EC operation region handler was a single byte. There 8554are 8555often EC Fields larger than one byte that need to be transferred, and it 8556is 8557useful for the EC driver to lock these as a single transaction. This 8558change 8559enables single transfers larger than 8 bits. This effectively changes the 8560access to the EC space from ByteAcc to AnyAcc, and will probably require 8561changes to the host OS Embedded Controller driver to enable 16/32/64/256- 8562bit 8563transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 8564 8565Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 8566prototype in acpiosxf.h had the output value pointer as a (void *). 8567It should be a (UINT64 *). This may affect some host OSL code. 8568 8569Fixed a couple problems with the recently modified Linux makefiles for 8570iASL 8571and AcpiExec. These new makefiles place the generated object files in the 8572local directory so that there can be no collisions between the files that 8573are 8574shared between them that are compiled with different options. 8575 8576Example Code and Data Size: These are the sizes for the OS-independent 8577acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8578debug version of the code includes the debug output trace mechanism and 8579has a 8580much larger code and data size. 8581 8582 Previous Release: 8583 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8584 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8585 Current Release: 8586 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8587 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8588 85892) iASL Compiler/Disassembler and Tools: 8590 8591iASL/Disassembler: Added a new option (-da, "disassemble all") to load 8592the 8593namespace from and disassemble an entire group of AML files. Useful for 8594loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 8595and 8596disassembling with one simple command. ACPICA BZ 865. Lin Ming. 8597 8598iASL: Allow multiple invocations of -e option. This change allows 8599multiple 8600uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 8601834. 8602Lin Ming. 8603 8604---------------------------------------- 860502 July 2010. Summary of changes for version 20100702: 8606 86071) ACPI CA Core Subsystem: 8608 8609Implemented several updates to the recently added GPE reference count 8610support. The model for "wake" GPEs is changing to give the host OS 8611complete 8612control of these GPEs. Eventually, the ACPICA core will not execute any 8613_PRW 8614methods, since the host already must execute them. Also, additional 8615changes 8616were made to help ensure that the reference counts are kept in proper 8617synchronization with reality. Rafael J. Wysocki. 8618 86191) Ensure that GPEs are not enabled twice during initialization. 86202) Ensure that GPE enable masks stay in sync with the reference count. 86213) Do not inadvertently enable GPEs when writing GPE registers. 86224) Remove the internal wake reference counter and add new AcpiGpeWakeup 8623interface. This interface will set or clear individual GPEs for wakeup. 86245) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8625interfaces 8626are now used for "runtime" GPEs only. 8627 8628Changed the behavior of the GPE install/remove handler interfaces. The 8629GPE 8630is 8631no longer disabled during this process, as it was found to cause problems 8632on 8633some machines. Rafael J. Wysocki. 8634 8635Reverted a change introduced in version 20100528 to enable Embedded 8636Controller multi-byte transfers. This change was found to cause problems 8637with 8638Index Fields and possibly Bank Fields. It will be reintroduced when these 8639problems have been resolved. 8640 8641Fixed a problem with references to Alias objects within Package Objects. 8642A 8643reference to an Alias within the definition of a Package was not always 8644resolved properly. Aliases to objects like Processors, Thermal zones, 8645etc. 8646were resolved to the actual object instead of a reference to the object 8647as 8648it 8649should be. Package objects are only allowed to contain integer, string, 8650buffer, package, and reference objects. Redhat bugzilla 608648. 8651 8652Example Code and Data Size: These are the sizes for the OS-independent 8653acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8654debug version of the code includes the debug output trace mechanism and 8655has a 8656much larger code and data size. 8657 8658 Previous Release: 8659 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8660 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8661 Current Release: 8662 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8663 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8664 86652) iASL Compiler/Disassembler and Tools: 8666 8667iASL: Implemented a new compiler subsystem to allow definition and 8668compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8669These 8670are called "ACPI Data Tables", and the new compiler is the "Data Table 8671Compiler". This compiler is intended to simplify the existing error-prone 8672process of creating these tables for the BIOS, as well as allowing the 8673disassembly, modification, recompilation, and override of existing ACPI 8674data 8675tables. See the iASL User Guide for detailed information. 8676 8677iASL: Implemented a new Template Generator option in support of the new 8678Data 8679Table Compiler. This option will create examples of all known ACPI tables 8680that can be used as the basis for table development. See the iASL 8681documentation and the -T option. 8682 8683Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8684Descriptor Table). 8685 8686Updated the Linux makefiles for iASL and AcpiExec to place the generated 8687object files in the local directory so that there can be no collisions 8688between the shared files between them that are generated with different 8689options. 8690 8691Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8692Use 8693the #define __APPLE__ to enable this support. 8694 8695---------------------------------------- 869628 May 2010. Summary of changes for version 20100528: 8697 8698Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8699available at www.acpi.info. This is primarily an errata release. 8700 87011) ACPI CA Core Subsystem: 8702 8703Undefined ACPI tables: We are looking for the definitions for the 8704following 8705ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8706 8707Implemented support to enable multi-byte transfers for Embedded 8708Controller 8709(EC) operation regions. Previously, the maximum data size passed to the 8710EC 8711operation region handler was a single byte. There are often EC Fields 8712larger 8713than one byte that need to be transferred, and it is useful for the EC 8714driver 8715to lock these as a single transaction. This change enables single 8716transfers 8717larger than 8 bits. This effectively changes the access to the EC space 8718from 8719ByteAcc to AnyAcc, and will probably require changes to the host OS 8720Embedded 8721Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8722bit 8723transfers. Alexey Starikovskiy, Lin Ming 8724 8725Implemented a performance enhancement for namespace search and access. 8726This 8727change enhances the performance of namespace searches and walks by adding 8728a 8729backpointer to the parent in each namespace node. On large namespaces, 8730this 8731change can improve overall ACPI performance by up to 9X. Adding a pointer 8732to 8733each namespace node increases the overall size of the internal namespace 8734by 8735about 5%, since each namespace entry usually consists of both a namespace 8736node and an ACPI operand object. However, this is the first growth of the 8737namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8738 8739Implemented a performance optimization that reduces the number of 8740namespace 8741walks. On control method exit, only walk the namespace if the method is 8742known 8743to have created namespace objects outside of its local scope. Previously, 8744the 8745entire namespace was traversed on each control method exit. This change 8746can 8747improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8748Moore. 8749 8750Added support to truncate I/O addresses to 16 bits for Windows 8751compatibility. 8752Some ASL code has been seen in the field that inadvertently has bits set 8753above bit 15. This feature is optional and is enabled if the BIOS 8754requests 8755any Windows OSI strings. It can also be enabled by the host OS. Matthew 8756Garrett, Bob Moore. 8757 8758Added support to limit the maximum time for the ASL Sleep() operator. To 8759prevent accidental deep sleeps, limit the maximum time that Sleep() will 8760actually sleep. Configurable, the default maximum is two seconds. ACPICA 8761bugzilla 854. 8762 8763Added run-time validation support for the _WDG and_WED Microsoft 8764predefined 8765methods. These objects are defined by "Windows Instrumentation", and are 8766not 8767part of the ACPI spec. ACPICA BZ 860. 8768 8769Expanded all statistic counters used during namespace and device 8770initialization from 16 to 32 bits in order to support very large 8771namespaces. 8772 8773Replaced all instances of %d in printf format specifiers with %u since 8774nearly 8775all integers in ACPICA are unsigned. 8776 8777Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8778returned 8779as AE_NO_HANDLER. 8780 8781Example Code and Data Size: These are the sizes for the OS-independent 8782acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8783debug version of the code includes the debug output trace mechanism and 8784has a 8785much larger code and data size. 8786 8787 Previous Release: 8788 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8789 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8790 Current Release: 8791 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8792 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8793 87942) iASL Compiler/Disassembler and Tools: 8795 8796iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8797methods. These objects are defined by "Windows Instrumentation", and are 8798not 8799part of the ACPI spec. ACPICA BZ 860. 8800 8801AcpiExec: added option to disable the memory tracking mechanism. The -dt 8802option will disable the tracking mechanism, which improves performance 8803considerably. 8804 8805AcpiExec: Restructured the command line options into -d (disable) and -e 8806(enable) options. 8807 8808---------------------------------------- 880928 April 2010. Summary of changes for version 20100428: 8810 88111) ACPI CA Core Subsystem: 8812 8813Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8814including FADT-based and GPE Block Devices, execute any _PRW methods in 8815the 8816new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8817runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8818immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8819Devices. Provides compatibility with other ACPI implementations. Two new 8820files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8821Moore. 8822 8823Fixed a regression introduced in version 20100331 within the table 8824manager 8825where initial table loading could fail. This was introduced in the fix 8826for 8827AcpiReallocateRootTable. Also, renamed some of fields in the table 8828manager 8829data structures to clarify their meaning and use. 8830 8831Fixed a possible allocation overrun during internal object copy in 8832AcpiUtCopySimpleObject. The original code did not correctly handle the 8833case 8834where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8835847. 8836 8837Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8838possible access beyond end-of-allocation. Also, now fully validate 8839descriptor 8840(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8841 8842Example Code and Data Size: These are the sizes for the OS-independent 8843acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8844debug version of the code includes the debug output trace mechanism and 8845has a 8846much larger code and data size. 8847 8848 Previous Release: 8849 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8850 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8851 Current Release: 8852 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8853 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8854 88552) iASL Compiler/Disassembler and Tools: 8856 8857iASL: Implemented Min/Max/Len/Gran validation for address resource 8858descriptors. This change implements validation for the address fields 8859that 8860are common to all address-type resource descriptors. These checks are 8861implemented: Checks for valid Min/Max, length within the Min/Max window, 8862valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8863per 8864table 6-40 in the ACPI 4.0a specification. Also split the large 8865aslrestype1.c 8866and aslrestype2.c files into five new files. ACPICA BZ 840. 8867 8868iASL: Added support for the _Wxx predefined names. This support was 8869missing 8870and these names were not recognized by the compiler as valid predefined 8871names. ACPICA BZ 851. 8872 8873iASL: Added an error for all predefined names that are defined to return 8874no 8875value and thus must be implemented as Control Methods. These include all 8876of 8877the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8878names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8879 8880iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8881an 8882ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8883be 8884dynamically loaded via the Load() operator. Also cleaned up output for 8885the 8886- 8887ta and -tc options. ACPICA BZ 853. 8888 8889Tests: Added a new file with examples of extended iASL error checking. 8890Demonstrates the advanced error checking ability of the iASL compiler. 8891Available at tests/misc/badcode.asl. 8892 8893---------------------------------------- 889431 March 2010. Summary of changes for version 20100331: 8895 88961) ACPI CA Core Subsystem: 8897 8898Completed a major update for the GPE support in order to improve support 8899for 8900shared GPEs and to simplify both host OS and ACPICA code. Added a 8901reference 8902count mechanism to support shared GPEs that require multiple device 8903drivers. 8904Several external interfaces have changed. One external interface has been 8905removed. One new external interface was added. Most of the GPE external 8906interfaces now use the GPE spinlock instead of the events mutex (and the 8907Flags parameter for many GPE interfaces has been removed.) See the 8908updated 8909ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8910Rafael 8911Wysocki. ACPICA BZ 831. 8912 8913Changed: 8914 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8915Removed: 8916 AcpiSetGpeType 8917New: 8918 AcpiSetGpe 8919 8920Implemented write support for DataTable operation regions. These regions 8921are 8922defined via the DataTableRegion() operator. Previously, only read support 8923was 8924implemented. The ACPI specification allows DataTableRegions to be 8925read/write, 8926however. 8927 8928Implemented a new subsystem option to force a copy of the DSDT to local 8929memory. Optionally copy the entire DSDT to local memory (instead of 8930simply 8931mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8932replace 8933the original DSDT, creating the need for this option. Default is FALSE, 8934do 8935not copy the DSDT. 8936 8937Implemented detection of a corrupted or replaced DSDT. This change adds 8938support to detect a DSDT that has been corrupted and/or replaced from 8939outside 8940the OS (by firmware). This is typically catastrophic for the system, but 8941has 8942been seen on some machines. Once this problem has been detected, the DSDT 8943copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8944 8945Fixed two problems with AcpiReallocateRootTable during the root table 8946copy. 8947When copying the root table to the new allocation, the length used was 8948incorrect. The new size was used instead of the current table size, 8949meaning 8950too much data was copied. Also, the count of available slots for ACPI 8951tables 8952was not set correctly. Alexey Starikovskiy, Bob Moore. 8953 8954Example Code and Data Size: These are the sizes for the OS-independent 8955acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8956debug version of the code includes the debug output trace mechanism and 8957has a 8958much larger code and data size. 8959 8960 Previous Release: 8961 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8962 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8963 Current Release: 8964 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8965 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8966 89672) iASL Compiler/Disassembler and Tools: 8968 8969iASL: Implement limited typechecking for values returned from predefined 8970control methods. The type of any returned static (unnamed) object is now 8971validated. For example, Return(1). ACPICA BZ 786. 8972 8973iASL: Fixed a predefined name object verification regression. Fixes a 8974problem 8975introduced in version 20100304. An error is incorrectly generated if a 8976predefined name is declared as a static named object with a value defined 8977using the keywords "Zero", "One", or "Ones". Lin Ming. 8978 8979iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8980by 8981reducing the requested registry access rights. ACPICA BZ 842. 8982 8983Disassembler: fixed a possible fault when generating External() 8984statements. 8985Introduced in commit ae7d6fd: Properly handle externals with parent- 8986prefix 8987(carat). Fixes a string length allocation calculation. Lin Ming. 8988 8989---------------------------------------- 899004 March 2010. Summary of changes for version 20100304: 8991 89921) ACPI CA Core Subsystem: 8993 8994Fixed a possible problem with the AML Mutex handling function 8995AcpiExReleaseMutex where the function could fault under the very rare 8996condition when the interpreter has blocked, the interpreter lock is 8997released, 8998the interpreter is then reentered via the same thread, and attempts to 8999acquire an AML mutex that was previously acquired. FreeBSD report 140979. 9000Lin 9001Ming. 9002 9003Implemented additional configuration support for the AML "Debug Object". 9004Output from the debug object can now be enabled via a global variable, 9005AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 9006debugging. 9007This debug output is now available in the release version of ACPICA 9008instead 9009of just the debug version. Also, the entire debug output module can now 9010be 9011configured out of the ACPICA build if desired. One new file added, 9012executer/exdebug.c. Lin Ming, Bob Moore. 9013 9014Added header support for the ACPI MCHI table (Management Controller Host 9015Interface Table). This table was added in ACPI 4.0, but the defining 9016document 9017has only recently become available. 9018 9019Standardized output of integer values for ACPICA warnings/errors. Always 9020use 90210x prefix for hex output, always use %u for unsigned integer decimal 9022output. 9023Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 9024400 9025invocations.) These invocations were converted from the original 9026ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 9027 9028Example Code and Data Size: These are the sizes for the OS-independent 9029acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9030debug version of the code includes the debug output trace mechanism and 9031has a 9032much larger code and data size. 9033 9034 Previous Release: 9035 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 9036 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 9037 Current Release: 9038 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 9039 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 9040 90412) iASL Compiler/Disassembler and Tools: 9042 9043iASL: Implemented typechecking support for static (non-control method) 9044predefined named objects that are declared with the Name() operator. For 9045example, the type of this object is now validated to be of type Integer: 9046Name(_BBN, 1). This change migrates the compiler to using the core 9047predefined 9048name table instead of maintaining a local version. Added a new file, 9049aslpredef.c. ACPICA BZ 832. 9050 9051Disassembler: Added support for the ACPI 4.0 MCHI table. 9052 9053---------------------------------------- 905421 January 2010. Summary of changes for version 20100121: 9055 90561) ACPI CA Core Subsystem: 9057 9058Added the 2010 copyright to all module headers and signons. This affects 9059virtually every file in the ACPICA core subsystem, the iASL compiler, the 9060tools/utilities, and the test suites. 9061 9062Implemented a change to the AcpiGetDevices interface to eliminate 9063unnecessary 9064invocations of the _STA method. In the case where a specific _HID is 9065requested, do not run _STA until a _HID match is found. This eliminates 9066potentially dozens of _STA calls during a search for a particular 9067device/HID, 9068which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 9069 9070Implemented an additional repair for predefined method return values. 9071Attempt 9072to repair unexpected NULL elements within returned Package objects. 9073Create 9074an 9075Integer of value zero, a NULL String, or a zero-length Buffer as 9076appropriate. 9077ACPICA BZ 818. Lin Ming, Bob Moore. 9078 9079Removed the obsolete ACPI_INTEGER data type. This type was introduced as 9080the 9081code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 9082(with 908364-bit AML integers). It is now obsolete and this change removes it from 9084the 9085ACPICA code base, replaced by UINT64. The original typedef has been 9086retained 9087for now for compatibility with existing device driver code. ACPICA BZ 9088824. 9089 9090Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 9091in 9092the parse tree object. 9093 9094Added additional warning options for the gcc-4 generation. Updated the 9095source 9096accordingly. This includes some code restructuring to eliminate 9097unreachable 9098code, elimination of some gotos, elimination of unused return values, 9099some 9100additional casting, and removal of redundant declarations. 9101 9102Example Code and Data Size: These are the sizes for the OS-independent 9103acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9104debug version of the code includes the debug output trace mechanism and 9105has a 9106much larger code and data size. 9107 9108 Previous Release: 9109 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9110 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9111 Current Release: 9112 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 9113 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 9114 91152) iASL Compiler/Disassembler and Tools: 9116 9117No functional changes for this release. 9118 9119---------------------------------------- 912014 December 2009. Summary of changes for version 20091214: 9121 91221) ACPI CA Core Subsystem: 9123 9124Enhanced automatic data type conversions for predefined name repairs. 9125This 9126change expands the automatic repairs/conversions for predefined name 9127return 9128values to make Integers, Strings, and Buffers fully interchangeable. 9129Also, 9130a 9131Buffer can be converted to a Package of Integers if necessary. The 9132nsrepair.c 9133module was completely restructured. Lin Ming, Bob Moore. 9134 9135Implemented automatic removal of null package elements during predefined 9136name 9137repairs. This change will automatically remove embedded and trailing NULL 9138package elements from returned package objects that are defined to 9139contain 9140a 9141variable number of sub-packages. The driver is then presented with a 9142package 9143with no null elements to deal with. ACPICA BZ 819. 9144 9145Implemented a repair for the predefined _FDE and _GTM names. The expected 9146return value for both names is a Buffer of 5 DWORDs. This repair fixes 9147two 9148possible problems (both seen in the field), where a package of integers 9149is 9150returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 9151Kim. 9152 9153Implemented additional module-level code support. This change will 9154properly 9155execute module-level code that is not at the root of the namespace (under 9156a 9157Device object, etc.). Now executes the code within the current scope 9158instead 9159of the root. ACPICA BZ 762. Lin Ming. 9160 9161Fixed possible mutex acquisition errors when running _REG methods. Fixes 9162a 9163problem where mutex errors can occur when running a _REG method that is 9164in 9165the same scope as a method-defined operation region or an operation 9166region 9167under a module-level IF block. This type of code is rare, so the problem 9168has 9169not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 9170 9171Fixed a possible memory leak during module-level code execution. An 9172object 9173could be leaked for each block of executed module-level code if the 9174interpreter slack mode is enabled This change deletes any implicitly 9175returned 9176object from the module-level code block. Lin Ming. 9177 9178Removed messages for successful predefined repair(s). The repair 9179mechanism 9180was considered too wordy. Now, messages are only unconditionally emitted 9181if 9182the return object cannot be repaired. Existing messages for successful 9183repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 9184827. 9185 9186Example Code and Data Size: These are the sizes for the OS-independent 9187acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9188debug version of the code includes the debug output trace mechanism and 9189has a 9190much larger code and data size. 9191 9192 Previous Release: 9193 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9194 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9195 Current Release: 9196 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9197 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9198 91992) iASL Compiler/Disassembler and Tools: 9200 9201iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 9202files 9203were no longer automatically removed at the termination of the compile. 9204 9205acpiexec: Implemented the -f option to specify default region fill value. 9206This option specifies the value used to initialize buffers that simulate 9207operation regions. Default value is zero. Useful for debugging problems 9208that 9209depend on a specific initial value for a region or field. 9210 9211---------------------------------------- 921212 November 2009. Summary of changes for version 20091112: 9213 92141) ACPI CA Core Subsystem: 9215 9216Implemented a post-order callback to AcpiWalkNamespace. The existing 9217interface only has a pre-order callback. This change adds an additional 9218parameter for a post-order callback which will be more useful for bus 9219scans. 9220ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 9221 9222Modified the behavior of the operation region memory mapping cache for 9223SystemMemory. Ensure that the memory mappings created for operation 9224regions 9225do not cross 4K page boundaries. Crossing a page boundary while mapping 9226regions can cause kernel warnings on some hosts if the pages have 9227different 9228attributes. Such regions are probably BIOS bugs, and this is the 9229workaround. 9230Linux BZ 14445. Lin Ming. 9231 9232Implemented an automatic repair for predefined methods that must return 9233sorted lists. This change will repair (by sorting) packages returned by 9234_ALR, 9235_PSS, and _TSS. Drivers can now assume that the packages are correctly 9236sorted 9237and do not contain NULL package elements. Adds one new file, 9238namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 9239 9240Fixed a possible fault during predefined name validation if a return 9241Package 9242object contains NULL elements. Also adds a warning if a NULL element is 9243followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 9244may 9245include repair or removal of all such NULL elements where possible. 9246 9247Implemented additional module-level executable AML code support. This 9248change 9249will execute module-level code that is not at the root of the namespace 9250(under a Device object, etc.) at table load time. Module-level executable 9251AML 9252code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 9253 9254Implemented a new internal function to create Integer objects. This 9255function 9256simplifies miscellaneous object creation code. ACPICA BZ 823. 9257 9258Reduced the severity of predefined repair messages, Warning to Info. 9259Since 9260the object was successfully repaired, a warning is too severe. Reduced to 9261an 9262info message for now. These messages may eventually be changed to debug- 9263only. 9264ACPICA BZ 812. 9265 9266Example Code and Data Size: These are the sizes for the OS-independent 9267acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9268debug version of the code includes the debug output trace mechanism and 9269has a 9270much larger code and data size. 9271 9272 Previous Release: 9273 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9274 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9275 Current Release: 9276 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9277 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9278 92792) iASL Compiler/Disassembler and Tools: 9280 9281iASL: Implemented Switch() with While(1) so that Break works correctly. 9282This 9283change correctly implements the Switch operator with a surrounding 9284While(1) 9285so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 9286 9287iASL: Added a message if a package initializer list is shorter than 9288package 9289length. Adds a new remark for a Package() declaration if an initializer 9290list 9291exists, but is shorter than the declared length of the package. Although 9292technically legal, this is probably a coding error and it is seen in the 9293field. ACPICA BZ 815. Lin Ming, Bob Moore. 9294 9295iASL: Fixed a problem where the compiler could fault after the maximum 9296number 9297of errors was reached (200). 9298 9299acpixtract: Fixed a possible warning for pointer cast if the compiler 9300warning 9301level set very high. 9302 9303---------------------------------------- 930413 October 2009. Summary of changes for version 20091013: 9305 93061) ACPI CA Core Subsystem: 9307 9308Fixed a problem where an Operation Region _REG method could be executed 9309more 9310than once. If a custom address space handler is installed by the host 9311before 9312the "initialize operation regions" phase of the ACPICA initialization, 9313any 9314_REG methods for that address space could be executed twice. This change 9315fixes the problem. ACPICA BZ 427. Lin Ming. 9316 9317Fixed a possible memory leak for the Scope() ASL operator. When the exact 9318invocation of "Scope(\)" is executed (change scope to root), one internal 9319operand object was leaked. Lin Ming. 9320 9321Implemented a run-time repair for the _MAT predefined method. If the _MAT 9322return value is defined as a Field object in the AML, and the field 9323size is less than or equal to the default width of an integer (32 or 932464),_MAT 9325can incorrectly return an Integer instead of a Buffer. ACPICA now 9326automatically repairs this problem. ACPICA BZ 810. 9327 9328Implemented a run-time repair for the _BIF and _BIX predefined methods. 9329The 9330"OEM Information" field is often incorrectly returned as an Integer with 9331value zero if the field is not supported by the platform. This is due to 9332an 9333ambiguity in the ACPI specification. The field should always be a string. 9334ACPICA now automatically repairs this problem by returning a NULL string 9335within the returned Package. ACPICA BZ 807. 9336 9337Example Code and Data Size: These are the sizes for the OS-independent 9338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9339debug version of the code includes the debug output trace mechanism and 9340has a 9341much larger code and data size. 9342 9343 Previous Release: 9344 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9345 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9346 Current Release: 9347 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9348 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9349 93502) iASL Compiler/Disassembler and Tools: 9351 9352Disassembler: Fixed a problem where references to external symbols that 9353contained one or more parent-prefixes (carats) were not handled 9354correctly, 9355possibly causing a fault. ACPICA BZ 806. Lin Ming. 9356 9357Disassembler: Restructured the code so that all functions that handle 9358external symbols are in a single module. One new file is added, 9359common/dmextern.c. 9360 9361AML Debugger: Added a max count argument for the Batch command (which 9362executes multiple predefined methods within the namespace.) 9363 9364iASL: Updated the compiler documentation (User Reference.) Available at 9365http://www.acpica.org/documentation/. ACPICA BZ 750. 9366 9367AcpiXtract: Updated for Lint and other formatting changes. Close all open 9368files. 9369 9370---------------------------------------- 937103 September 2009. Summary of changes for version 20090903: 9372 93731) ACPI CA Core Subsystem: 9374 9375For Windows Vista compatibility, added the automatic execution of an _INI 9376method located at the namespace root (\_INI). This method is executed at 9377table load time. This support is in addition to the automatic execution 9378of 9379\_SB._INI. Lin Ming. 9380 9381Fixed a possible memory leak in the interpreter for AML package objects 9382if 9383the package initializer list is longer than the defined size of the 9384package. 9385This apparently can only happen if the BIOS changes the package size on 9386the 9387fly (seen in a _PSS object), as ASL compilers do not allow this. The 9388interpreter will truncate the package to the defined size (and issue an 9389error 9390message), but previously could leave the extra objects undeleted if they 9391were 9392pre-created during the argument processing (such is the case if the 9393package 9394consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 9395 9396Fixed a problem seen when a Buffer or String is stored to itself via ASL. 9397This has been reported in the field. Previously, ACPICA would zero out 9398the 9399buffer/string. Now, the operation is treated as a noop. Provides Windows 9400compatibility. ACPICA BZ 803. Lin Ming. 9401 9402Removed an extraneous error message for ASL constructs of the form 9403Store(LocalX,LocalX) when LocalX is uninitialized. These curious 9404statements 9405are seen in many BIOSs and are once again treated as NOOPs and no error 9406is 9407emitted when they are encountered. ACPICA BZ 785. 9408 9409Fixed an extraneous warning message if a _DSM reserved method returns a 9410Package object. _DSM can return any type of object, so validation on the 9411return type cannot be performed. ACPICA BZ 802. 9412 9413Example Code and Data Size: These are the sizes for the OS-independent 9414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9415debug version of the code includes the debug output trace mechanism and 9416has a 9417much larger code and data size. 9418 9419 Previous Release: 9420 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9421 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9422 Current Release: 9423 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9424 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9425 94262) iASL Compiler/Disassembler and Tools: 9427 9428iASL: Fixed a problem with the use of the Alias operator and Resource 9429Templates. The correct alias is now constructed and no error is emitted. 9430ACPICA BZ 738. 9431 9432iASL: Implemented the -I option to specify additional search directories 9433for 9434include files. Allows multiple additional search paths for include files. 9435Directories are searched in the order specified on the command line 9436(after 9437the local directory is searched.) ACPICA BZ 800. 9438 9439iASL: Fixed a problem where the full pathname for include files was not 9440emitted for warnings/errors. This caused the IDE support to not work 9441properly. ACPICA BZ 765. 9442 9443iASL: Implemented the -@ option to specify a Windows-style response file 9444containing additional command line options. ACPICA BZ 801. 9445 9446AcpiExec: Added support to load multiple AML files simultaneously (such 9447as 9448a 9449DSDT and multiple SSDTs). Also added support for wildcards within the AML 9450pathname. These features allow all machine tables to be easily loaded and 9451debugged together. ACPICA BZ 804. 9452 9453Disassembler: Added missing support for disassembly of HEST table Error 9454Bank 9455subtables. 9456 9457---------------------------------------- 945830 July 2009. Summary of changes for version 20090730: 9459 9460The ACPI 4.0 implementation for ACPICA is complete with this release. 9461 94621) ACPI CA Core Subsystem: 9463 9464ACPI 4.0: Added header file support for all new and changed ACPI tables. 9465Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 9466new 9467for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 9468BERT, 9469EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 9470There 9471have been some ACPI 4.0 changes to other existing tables. Split the large 9472actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 9473 9474ACPI 4.0: Implemented predefined name validation for all new names. There 9475are 947631 new names in ACPI 4.0. The predefined validation module was split into 9477two 9478files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 9479 9480Implemented support for so-called "module-level executable code". This is 9481executable AML code that exists outside of any control method and is 9482intended 9483to be executed at table load time. Although illegal since ACPI 2.0, this 9484type 9485of code still exists and is apparently still being created. Blocks of 9486this 9487code are now detected and executed as intended. Currently, the code 9488blocks 9489must exist under either an If, Else, or While construct; these are the 9490typical cases seen in the field. ACPICA BZ 762. Lin Ming. 9491 9492Implemented an automatic dynamic repair for predefined names that return 9493nested Package objects. This applies to predefined names that are defined 9494to 9495return a variable-length Package of sub-packages. If the number of sub- 9496packages is one, BIOS code is occasionally seen that creates a simple 9497single 9498package with no sub-packages. This code attempts to fix the problem by 9499wrapping a new package object around the existing package. These methods 9500can 9501be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 9502BZ 9503790. 9504 9505Fixed a regression introduced in 20090625 for the AcpiGetDevices 9506interface. 9507The _HID/_CID matching was broken and no longer matched IDs correctly. 9508ACPICA 9509BZ 793. 9510 9511Fixed a problem with AcpiReset where the reset would silently fail if the 9512register was one of the protected I/O ports. AcpiReset now bypasses the 9513port 9514validation mechanism. This may eventually be driven into the 9515AcpiRead/Write 9516interfaces. 9517 9518Fixed a regression related to the recent update of the AcpiRead/Write 9519interfaces. A sleep/suspend could fail if the optional PM2 Control 9520register 9521does not exist during an attempt to write the Bus Master Arbitration bit. 9522(However, some hosts already delete the code that writes this bit, and 9523the 9524code may in fact be obsolete at this date.) ACPICA BZ 799. 9525 9526Fixed a problem where AcpiTerminate could fault if inadvertently called 9527twice 9528in succession. ACPICA BZ 795. 9529 9530Example Code and Data Size: These are the sizes for the OS-independent 9531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9532debug version of the code includes the debug output trace mechanism and 9533has a 9534much larger code and data size. 9535 9536 Previous Release: 9537 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9538 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9539 Current Release: 9540 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9541 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9542 95432) iASL Compiler/Disassembler and Tools: 9544 9545ACPI 4.0: Implemented disassembler support for all new ACPI tables and 9546changes to existing tables. ACPICA BZ 775. 9547 9548---------------------------------------- 954925 June 2009. Summary of changes for version 20090625: 9550 9551The ACPI 4.0 Specification was released on June 16 and is available at 9552www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 9553continue for the next few releases. 9554 95551) ACPI CA Core Subsystem: 9556 9557ACPI 4.0: Implemented interpreter support for the IPMI operation region 9558address space. Includes support for bi-directional data buffers and an 9559IPMI 9560address space handler (to be installed by an IPMI device driver.) ACPICA 9561BZ 9562773. Lin Ming. 9563 9564ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 9565Includes 9566support in both the header files and the disassembler. 9567 9568Completed a major update for the AcpiGetObjectInfo external interface. 9569Changes include: 9570 - Support for variable, unlimited length HID, UID, and CID strings. 9571 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 9572etc.) 9573 - Call the _SxW power methods on behalf of a device object. 9574 - Determine if a device is a PCI root bridge. 9575 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 9576These changes will require an update to all callers of this interface. 9577See 9578the updated ACPICA Programmer Reference for details. One new source file 9579has 9580been added - utilities/utids.c. ACPICA BZ 368, 780. 9581 9582Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 9583transfers. The Value parameter has been extended from 32 bits to 64 bits 9584in 9585order to support new ACPI 4.0 tables. These changes will require an 9586update 9587to 9588all callers of these interfaces. See the ACPICA Programmer Reference for 9589details. ACPICA BZ 768. 9590 9591Fixed several problems with AcpiAttachData. The handler was not invoked 9592when 9593the host node was deleted. The data sub-object was not automatically 9594deleted 9595when the host node was deleted. The interface to the handler had an 9596unused 9597parameter, this was removed. ACPICA BZ 778. 9598 9599Enhanced the function that dumps ACPI table headers. All non-printable 9600characters in the string fields are now replaced with '?' (Signature, 9601OemId, 9602OemTableId, and CompilerId.) ACPI tables with non-printable characters in 9603these fields are occasionally seen in the field. ACPICA BZ 788. 9604 9605Fixed a problem with predefined method repair code where the code that 9606attempts to repair/convert an object of incorrect type is only executed 9607on 9608the first time the predefined method is called. The mechanism that 9609disables 9610warnings on subsequent calls was interfering with the repair mechanism. 9611ACPICA BZ 781. 9612 9613Fixed a possible memory leak in the predefined validation/repair code 9614when 9615a 9616buffer is automatically converted to an expected string object. 9617 9618Removed obsolete 16-bit files from the distribution and from the current 9619git 9620tree head. ACPICA BZ 776. 9621 9622Example Code and Data Size: These are the sizes for the OS-independent 9623acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9624debug version of the code includes the debug output trace mechanism and 9625has a 9626much larger code and data size. 9627 9628 Previous Release: 9629 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9630 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9631 Current Release: 9632 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9633 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9634 96352) iASL Compiler/Disassembler and Tools: 9636 9637ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9638operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9639 9640ACPI 4.0: iASL - implemented compile-time validation support for all new 9641predefined names and control methods (31 total). ACPICA BZ 769. 9642 9643---------------------------------------- 964421 May 2009. Summary of changes for version 20090521: 9645 96461) ACPI CA Core Subsystem: 9647 9648Disabled the preservation of the SCI enable bit in the PM1 control 9649register. 9650The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9651to 9652be 9653a "preserved" bit - "OSPM always preserves this bit position", section 96544.7.3.2.1. However, some machines fail if this bit is in fact preserved 9655because the bit needs to be explicitly set by the OS as a workaround. No 9656machines fail if the bit is not preserved. Therefore, ACPICA no longer 9657attempts to preserve this bit. 9658 9659Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9660incorrectly formed _PRT package could cause a fault. Added validation to 9661ensure that each package element is actually a sub-package. 9662 9663Implemented a new interface to install or override a single control 9664method, 9665AcpiInstallMethod. This interface is useful when debugging in order to 9666repair 9667an existing method or to install a missing method without having to 9668override 9669the entire ACPI table. See the ACPICA Programmer Reference for use and 9670examples. Lin Ming, Bob Moore. 9671 9672Fixed several reference count issues with the DdbHandle object that is 9673created from a Load or LoadTable operator. Prevent premature deletion of 9674the 9675object. Also, mark the object as invalid once the table has been 9676unloaded. 9677This is needed because the handle itself may not be deleted after the 9678table 9679unload, depending on whether it has been stored in a named object by the 9680caller. Lin Ming. 9681 9682Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9683mutexes of the same sync level are acquired but then not released in 9684strict 9685opposite order, the internally maintained Current Sync Level becomes 9686confused 9687and can cause subsequent execution errors. ACPICA BZ 471. 9688 9689Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9690specification has been changed to make the SyncLevel for mutex objects 9691more 9692useful. When releasing a mutex, the SyncLevel of the mutex must now be 9693the 9694same as the current sync level. This makes more sense than the previous 9695rule 9696(SyncLevel less than or equal). This change updates the code to match the 9697specification. 9698 9699Fixed a problem with the local version of the AcpiOsPurgeCache function. 9700The 9701(local) cache must be locked during all cache object deletions. Andrew 9702Baumann. 9703 9704Updated the Load operator to use operation region interfaces. This 9705replaces 9706direct memory mapping with region access calls. Now, all region accesses 9707go 9708through the installed region handler as they should. 9709 9710Simplified and optimized the NsGetNextNode function. Reduced parameter 9711count 9712and reduced code for this frequently used function. 9713 9714Example Code and Data Size: These are the sizes for the OS-independent 9715acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9716debug version of the code includes the debug output trace mechanism and 9717has a 9718much larger code and data size. 9719 9720 Previous Release: 9721 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9722 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9723 Current Release: 9724 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9725 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9726 97272) iASL Compiler/Disassembler and Tools: 9728 9729Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9730problems 9731with sub-table disassembly and handling invalid sub-tables. Attempt 9732recovery 9733after an invalid sub-table ID. 9734 9735---------------------------------------- 973622 April 2009. Summary of changes for version 20090422: 9737 97381) ACPI CA Core Subsystem: 9739 9740Fixed a compatibility issue with the recently released I/O port 9741protection 9742mechanism. For windows compatibility, 1) On a port protection violation, 9743simply ignore the request and do not return an exception (allow the 9744control 9745method to continue execution.) 2) If only part of the request overlaps a 9746protected port, read/write the individual ports that are not protected. 9747Linux 9748BZ 13036. Lin Ming 9749 9750Enhanced the execution of the ASL/AML BreakPoint operator so that it 9751actually 9752breaks into the AML debugger if the debugger is present. This matches the 9753ACPI-defined behavior. 9754 9755Fixed several possible warnings related to the use of the configurable 9756ACPI_THREAD_ID. This type can now be configured as either an integer or a 9757pointer with no warnings. Also fixes several warnings in printf-like 9758statements for the 64-bit build when the type is configured as a pointer. 9759ACPICA BZ 766, 767. 9760 9761Fixed a number of possible warnings when compiling with gcc 4+ (depending 9762on 9763warning options.) Examples include printf formats, aliasing, unused 9764globals, 9765missing prototypes, missing switch default statements, use of non-ANSI 9766library functions, use of non-ANSI constructs. See generate/unix/Makefile 9767for 9768a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9769 9770Example Code and Data Size: These are the sizes for the OS-independent 9771acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9772debug version of the code includes the debug output trace mechanism and 9773has a 9774much larger code and data size. 9775 9776 Previous Release: 9777 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9778 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9779 Current Release: 9780 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9781 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9782 97832) iASL Compiler/Disassembler and Tools: 9784 9785iASL: Fixed a generation warning from Bison 2.3 and fixed several 9786warnings 9787on 9788the 64-bit build. 9789 9790iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9791not 9792correctly digest Windows/DOS formatted files (with CR/LF). 9793 9794iASL: Added a new option for "quiet mode" (-va) that produces only the 9795compilation summary, not individual errors and warnings. Useful for large 9796batch compilations. 9797 9798AcpiExec: Implemented a new option (-z) to enable a forced 9799semaphore/mutex 9800timeout that can be used to detect hang conditions during execution of 9801AML 9802code (includes both internal semaphores and AML-defined mutexes and 9803events.) 9804 9805Added new makefiles for the generation of acpica in a generic unix-like 9806environment. These makefiles are intended to generate the acpica tools 9807and 9808utilities from the original acpica git source tree structure. 9809 9810Test Suites: Updated and cleaned up the documentation files. Updated the 9811copyrights to 2009, affecting all source files. Use the new version of 9812iASL 9813with quiet mode. Increased the number of available semaphores in the 9814Windows 9815OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9816added 9817an alternate implementation of the semaphore timeout to allow aslts to 9818execute fully on Cygwin. 9819 9820---------------------------------------- 982120 March 2009. Summary of changes for version 20090320: 9822 98231) ACPI CA Core Subsystem: 9824 9825Fixed a possible race condition between AcpiWalkNamespace and dynamic 9826table 9827unloads. Added a reader/writer locking mechanism to allow multiple 9828concurrent 9829namespace walks (readers), but block a dynamic table unload until it can 9830gain 9831exclusive write access to the namespace. This fixes a problem where a 9832table 9833unload could (possibly catastrophically) delete the portion of the 9834namespace 9835that is currently being examined by a walk. Adds a new file, utlock.c, 9836that 9837implements the reader/writer lock mechanism. ACPICA BZ 749. 9838 9839Fixed a regression introduced in version 20090220 where a change to the 9840FADT 9841handling could cause the ACPICA subsystem to access non-existent I/O 9842ports. 9843 9844Modified the handling of FADT register and table (FACS/DSDT) addresses. 9845The 9846FADT can contain both 32-bit and 64-bit versions of these addresses. 9847Previously, the 64-bit versions were favored, meaning that if both 32 and 984864 9849versions were valid, but not equal, the 64-bit version was used. This was 9850found to cause some machines to fail. Now, in this case, the 32-bit 9851version 9852is used instead. This now matches the Windows behavior. 9853 9854Implemented a new mechanism to protect certain I/O ports. Provides 9855Microsoft 9856compatibility and protects the standard PC I/O ports from access via AML 9857code. Adds a new file, hwvalid.c 9858 9859Fixed a possible extraneous warning message from the FADT support. The 9860message warns of a 32/64 length mismatch between the legacy and GAS 9861definitions for a register. 9862 9863Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9864is 9865made obsolete by the port protection mechanism above. It was previously 9866used 9867to validate the entire address range of an operation region, which could 9868be 9869incorrect if the range included illegal ports, but fields within the 9870operation region did not actually access those ports. Validation is now 9871performed on a per-field basis instead of the entire region. 9872 9873Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9874Ignored bits must be "preserved" according to the ACPI spec. Usually, 9875this 9876means a read/modify/write when writing to the register. However, for 9877status 9878registers, writing a one means clear the event. Writing a zero means 9879preserve 9880the event (do not clear.) This behavior is clarified in the ACPI 4.0 9881spec, 9882and the ACPICA code now simply always writes a zero to the ignored bit. 9883 9884Modified the handling of ignored bits for the PM1 A/B Control Registers. 9885As 9886per the ACPI specification, for the control registers, preserve 9887(read/modify/write) all bits that are defined as either reserved or 9888ignored. 9889 9890Updated the handling of write-only bits in the PM1 A/B Control Registers. 9891When reading the register, zero the write-only bits as per the ACPI spec. 9892ACPICA BZ 443. Lin Ming. 9893 9894Removed "Linux" from the list of supported _OSI strings. Linux no longer 9895wants to reply true to this request. The Windows strings are the only 9896paths 9897through the AML that are tested and known to work properly. 9898 9899 Previous Release: 9900 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9901 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9902 Current Release: 9903 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9904 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9905 99062) iASL Compiler/Disassembler and Tools: 9907 9908Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9909and 9910aetables.c 9911 9912---------------------------------------- 991320 February 2009. Summary of changes for version 20090220: 9914 99151) ACPI CA Core Subsystem: 9916 9917Optimized the ACPI register locking. Removed locking for reads from the 9918ACPI 9919bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9920is 9921not required when reading the single-bit registers. The 9922AcpiGetRegisterUnlocked function is no longer needed and has been 9923removed. 9924This will improve performance for reads on these registers. ACPICA BZ 9925760. 9926 9927Fixed the parameter validation for AcpiRead/Write. Now return 9928AE_BAD_PARAMETER if the input register pointer is null, and 9929AE_BAD_ADDRESS 9930if 9931the register has an address of zero. Previously, these cases simply 9932returned 9933AE_OK. For optional registers such as PM1B status/enable/control, the 9934caller 9935should check for a valid register address before calling. ACPICA BZ 748. 9936 9937Renamed the external ACPI bit register access functions. Renamed 9938AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9939functions. The new names are AcpiReadBitRegister and 9940AcpiWriteBitRegister. 9941Also, restructured the code for these functions by simplifying the code 9942path 9943and condensing duplicate code to reduce code size. 9944 9945Added new functions to transparently handle the possibly split PM1 A/B 9946registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9947functions 9948now handle the split registers for PM1 Status, Enable, and Control. 9949ACPICA 9950BZ 9951746. 9952 9953Added a function to handle the PM1 control registers, 9954AcpiHwWritePm1Control. 9955This function writes both of the PM1 control registers (A/B). These 9956registers 9957are different than the PM1 A/B status and enable registers in that 9958different 9959values can be written to the A/B registers. Most notably, the SLP_TYP 9960bits 9961can be different, as per the values returned from the _Sx predefined 9962methods. 9963 9964Removed an extra register write within AcpiHwClearAcpiStatus. This 9965function 9966was writing an optional PM1B status register twice. The existing call to 9967the 9968low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9969A/B 9970register. ACPICA BZ 751. 9971 9972Split out the PM1 Status registers from the FADT. Added new globals for 9973these 9974registers (A/B), similar to the way the PM1 Enable registers are handled. 9975Instead of overloading the FADT Event Register blocks. This makes the 9976code 9977clearer and less prone to error. 9978 9979Fixed the warning message for when the platform contains too many ACPI 9980tables 9981for the default size of the global root table data structure. The 9982calculation 9983for the truncation value was incorrect. 9984 9985Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9986obsolete macro, since it is now a simple reference to ->common.type. 9987There 9988were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9989 9990Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9991TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9992simply SLEEP_TYPE. ACPICA BZ 754. 9993 9994Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9995function is only needed on 64-bit host operating systems and is thus not 9996included for 32-bit hosts. 9997 9998Debug output: print the input and result for invocations of the _OSI 9999reserved 10000control method via the ACPI_LV_INFO debug level. Also, reduced some of 10001the 10002verbosity of this debug level. Len Brown. 10003 10004Example Code and Data Size: These are the sizes for the OS-independent 10005acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10006debug version of the code includes the debug output trace mechanism and 10007has a 10008much larger code and data size. 10009 10010 Previous Release: 10011 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 10012 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 10013 Current Release: 10014 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 10015 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 10016 100172) iASL Compiler/Disassembler and Tools: 10018 10019Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 10020various legal performance profiles. 10021 10022---------------------------------------- 1002323 January 2009. Summary of changes for version 20090123: 10024 100251) ACPI CA Core Subsystem: 10026 10027Added the 2009 copyright to all module headers and signons. This affects 10028virtually every file in the ACPICA core subsystem, the iASL compiler, and 10029the tools/utilities. 10030 10031Implemented a change to allow the host to override any ACPI table, 10032including 10033dynamically loaded tables. Previously, only the DSDT could be replaced by 10034the 10035host. With this change, the AcpiOsTableOverride interface is called for 10036each 10037table found in the RSDT/XSDT during ACPICA initialization, and also 10038whenever 10039a table is dynamically loaded via the AML Load operator. 10040 10041Updated FADT flag definitions, especially the Boot Architecture flags. 10042 10043Debugger: For the Find command, automatically pad the input ACPI name 10044with 10045underscores if the name is shorter than 4 characters. This enables a 10046match 10047with the actual namespace entry which is itself padded with underscores. 10048 10049Example Code and Data Size: These are the sizes for the OS-independent 10050acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10051debug version of the code includes the debug output trace mechanism and 10052has a 10053much larger code and data size. 10054 10055 Previous Release: 10056 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 10057 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 10058 Current Release: 10059 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 10060 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 10061 100622) iASL Compiler/Disassembler and Tools: 10063 10064Fix build error under Bison-2.4. 10065 10066Disassembler: Enhanced FADT support. Added decoding of the Boot 10067Architecture 10068flags. Now decode all flags, regardless of the FADT version. Flag output 10069includes the FADT version which first defined each flag. 10070 10071The iASL -g option now dumps the RSDT to a file (in addition to the FADT 10072and 10073DSDT). Windows only. 10074 10075---------------------------------------- 1007604 December 2008. Summary of changes for version 20081204: 10077 100781) ACPI CA Core Subsystem: 10079 10080The ACPICA Programmer Reference has been completely updated and revamped 10081for 10082this release. This includes updates to the external interfaces, OSL 10083interfaces, the overview sections, and the debugger reference. 10084 10085Several new ACPICA interfaces have been implemented and documented in the 10086programmer reference: 10087AcpiReset - Writes the reset value to the FADT-defined reset register. 10088AcpiDisableAllGpes - Disable all available GPEs. 10089AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 10090AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 10091AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 10092AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 10093AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 10094 10095Most of the public ACPI hardware-related interfaces have been moved to a 10096new 10097file, components/hardware/hwxface.c 10098 10099Enhanced the FADT parsing and low-level ACPI register access: The ACPI 10100register lengths within the FADT are now used, and the low level ACPI 10101register access no longer hardcodes the ACPI register lengths. Given that 10102there may be some risk in actually trusting the FADT register lengths, a 10103run- 10104time option was added to fall back to the default hardcoded lengths if 10105the 10106FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 10107option is set to true for now, and a warning is issued if a suspicious 10108FADT 10109register length is overridden with the default value. 10110 10111Fixed a reference count issue in NsRepairObject. This problem was 10112introduced 10113in version 20081031 as part of a fix to repair Buffer objects within 10114Packages. Lin Ming. 10115 10116Added semaphore support to the Linux/Unix application OS-services layer 10117(OSL). ACPICA BZ 448. Lin Ming. 10118 10119Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 10120will 10121be implemented in the OSL, or will binary semaphores be used instead. 10122 10123Example Code and Data Size: These are the sizes for the OS-independent 10124acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10125debug version of the code includes the debug output trace mechanism and 10126has a 10127much larger code and data size. 10128 10129 Previous Release: 10130 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10131 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10132 Current Release: 10133 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 10134 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 10135 101362) iASL Compiler/Disassembler and Tools: 10137 10138iASL: Completed the '-e' option to include additional ACPI tables in 10139order 10140to 10141aid with disassembly and External statement generation. ACPICA BZ 742. 10142Lin 10143Ming. 10144 10145iASL: Removed the "named object in while loop" error. The compiler cannot 10146determine how many times a loop will execute. ACPICA BZ 730. 10147 10148Disassembler: Implemented support for FADT revision 2 (MS extension). 10149ACPICA 10150BZ 743. 10151 10152Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 10153MCFG). 10154 10155---------------------------------------- 1015631 October 2008. Summary of changes for version 20081031: 10157 101581) ACPI CA Core Subsystem: 10159 10160Restructured the ACPICA header files into public/private. acpi.h now 10161includes 10162only the "public" acpica headers. All other acpica headers are "private" 10163and 10164should not be included by acpica users. One new file, accommon.h is used 10165to 10166include the commonly used private headers for acpica code generation. 10167Future 10168plans include moving all private headers to a new subdirectory. 10169 10170Implemented an automatic Buffer->String return value conversion for 10171predefined ACPI methods. For these methods (such as _BIF), added 10172automatic 10173conversion for return objects that are required to be a String, but a 10174Buffer 10175was found instead. This can happen when reading string battery data from 10176an 10177operation region, because it used to be difficult to convert the data 10178from 10179buffer to string from within the ASL. Ensures that the host OS is 10180provided 10181with a valid null-terminated string. Linux BZ 11822. 10182 10183Updated the FACS waking vector interfaces. Split 10184AcpiSetFirmwareWakingVector 10185into two: one for the 32-bit vector, another for the 64-bit vector. This 10186is 10187required because the host OS must setup the wake much differently for 10188each 10189vector (real vs. protected mode, etc.) and the interface itself should 10190not 10191be 10192deciding which vector to use. Also, eliminated the 10193GetFirmwareWakingVector 10194interface, as it served no purpose (only the firmware reads the vector, 10195OS 10196only writes the vector.) ACPICA BZ 731. 10197 10198Implemented a mechanism to escape infinite AML While() loops. Added a 10199loop 10200counter to force exit from AML While loops if the count becomes too 10201large. 10202This can occur in poorly written AML when the hardware does not respond 10203within a while loop and the loop does not implement a timeout. The 10204maximum 10205loop count is configurable. A new exception code is returned when a loop 10206is 10207broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 10208 10209Optimized the execution of AML While loops. Previously, a control state 10210object was allocated and freed for each execution of the loop. The 10211optimization is to simply reuse the control state for each iteration. 10212This 10213speeds up the raw loop execution time by about 5%. 10214 10215Enhanced the implicit return mechanism. For Windows compatibility, return 10216an 10217implicit integer of value zero for methods that contain no executable 10218code. 10219Such methods are seen in the field as stubs (presumably), and can cause 10220drivers to fail if they expect a return value. Lin Ming. 10221 10222Allow multiple backslashes as root prefixes in namepaths. In a fully 10223qualified namepath, allow multiple backslash prefixes. This can happen 10224(and 10225is seen in the field) because of the use of a double-backslash in strings 10226(since backslash is the escape character) causing confusion. ACPICA BZ 10227739 10228Lin Ming. 10229 10230Emit a warning if two different FACS or DSDT tables are discovered in the 10231FADT. Checks if there are two valid but different addresses for the FACS 10232and 10233DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 10234 10235Consolidated the method argument count validation code. Merged the code 10236that 10237validates control method argument counts into the predefined validation 10238module. Eliminates possible multiple warnings for incorrect argument 10239counts. 10240 10241Implemented ACPICA example code. Includes code for ACPICA initialization, 10242handler installation, and calling a control method. Available at 10243source/tools/examples. 10244 10245Added a global pointer for FACS table to simplify internal FACS access. 10246Use 10247the global pointer instead of using AcpiGetTableByIndex for each FACS 10248access. 10249This simplifies the code for the Global Lock and the Firmware Waking 10250Vector(s). 10251 10252Example Code and Data Size: These are the sizes for the OS-independent 10253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10254debug version of the code includes the debug output trace mechanism and 10255has a 10256much larger code and data size. 10257 10258 Previous Release: 10259 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10260 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10261 Current Release: 10262 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10263 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10264 102652) iASL Compiler/Disassembler and Tools: 10266 10267iASL: Improved disassembly of external method calls. Added the -e option 10268to 10269allow the inclusion of additional ACPI tables to help with the 10270disassembly 10271of 10272method invocations and the generation of external declarations during the 10273disassembly. Certain external method invocations cannot be disassembled 10274properly without the actual declaration of the method. Use the -e option 10275to 10276include the table where the external method(s) are actually declared. 10277Most 10278useful for disassembling SSDTs that make method calls back to the master 10279DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 10280-d 10281-e dsdt.aml ssdt1.aml 10282 10283iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 10284problem where the use of an alias within a namepath would result in a not 10285found error or cause the compiler to fault. Also now allows forward 10286references from the Alias operator itself. ACPICA BZ 738. 10287 10288---------------------------------------- 1028926 September 2008. Summary of changes for version 20080926: 10290 102911) ACPI CA Core Subsystem: 10292 10293Designed and implemented a mechanism to validate predefined ACPI methods 10294and 10295objects. This code validates the predefined ACPI objects (objects whose 10296names 10297start with underscore) that appear in the namespace, at the time they are 10298evaluated. The argument count and the type of the returned object are 10299validated against the ACPI specification. The purpose of this validation 10300is 10301to detect problems with the BIOS-implemented predefined ACPI objects 10302before 10303the results are returned to the ACPI-related drivers. Future enhancements 10304may 10305include actual repair of incorrect return objects where possible. Two new 10306files are nspredef.c and acpredef.h. 10307 10308Fixed a fault in the AML parser if a memory allocation fails during the 10309Op 10310completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 10311 10312Fixed an issue with implicit return compatibility. This change improves 10313the 10314implicit return mechanism to be more compatible with the MS interpreter. 10315Lin 10316Ming, ACPICA BZ 349. 10317 10318Implemented support for zero-length buffer-to-string conversions. Allow 10319zero 10320length strings during interpreter buffer-to-string conversions. For 10321example, 10322during the ToDecimalString and ToHexString operators, as well as implicit 10323conversions. Fiodor Suietov, ACPICA BZ 585. 10324 10325Fixed two possible memory leaks in the error exit paths of 10326AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 10327are 10328similar in that they use a stack of state objects in order to eliminate 10329recursion. The stack must be fully unwound and deallocated if an error 10330occurs. Lin Ming. ACPICA BZ 383. 10331 10332Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 10333global 10334ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 10335Moore ACPICA BZ 442. 10336 10337Removed the obsolete version number in module headers. Removed the 10338"$Revision" number that appeared in each module header. This version 10339number 10340was useful under SourceSafe and CVS, but has no meaning under git. It is 10341not 10342only incorrect, it could also be misleading. 10343 10344Example Code and Data Size: These are the sizes for the OS-independent 10345acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10346debug version of the code includes the debug output trace mechanism and 10347has a 10348much larger code and data size. 10349 10350 Previous Release: 10351 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10352 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10353 Current Release: 10354 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10355 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10356 10357---------------------------------------- 1035829 August 2008. Summary of changes for version 20080829: 10359 103601) ACPI CA Core Subsystem: 10361 10362Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 10363Reference. Changes include the elimination of cheating on the Object 10364field 10365for the DdbHandle subtype, addition of a reference class field to 10366differentiate the various reference types (instead of an AML opcode), and 10367the 10368cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 10369 10370Reduce an error to a warning for an incorrect method argument count. 10371Previously aborted with an error if too few arguments were passed to a 10372control method via the external ACPICA interface. Now issue a warning 10373instead 10374and continue. Handles the case where the method inadvertently declares 10375too 10376many arguments, but does not actually use the extra ones. Applies mainly 10377to 10378the predefined methods. Lin Ming. Linux BZ 11032. 10379 10380Disallow the evaluation of named object types with no intrinsic value. 10381Return 10382AE_TYPE for objects that have no value and therefore evaluation is 10383undefined: 10384Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 10385of 10386these types were allowed, but an exception would be generated at some 10387point 10388during the evaluation. Now, the error is generated up front. 10389 10390Fixed a possible memory leak in the AcpiNsGetExternalPathname function 10391(nsnames.c). Fixes a leak in the error exit path. 10392 10393Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 10394debug 10395levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 10396ACPI_EXCEPTION 10397interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 10398ACPI_LV_EVENTS. 10399 10400Removed obsolete and/or unused exception codes from the acexcep.h header. 10401There is the possibility that certain device drivers may be affected if 10402they 10403use any of these exceptions. 10404 10405The ACPICA documentation has been added to the public git source tree, 10406under 10407acpica/documents. Included are the ACPICA programmer reference, the iASL 10408compiler reference, and the changes.txt release logfile. 10409 10410Example Code and Data Size: These are the sizes for the OS-independent 10411acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10412debug version of the code includes the debug output trace mechanism and 10413has a 10414much larger code and data size. 10415 10416 Previous Release: 10417 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10418 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10419 Current Release: 10420 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10421 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10422 104232) iASL Compiler/Disassembler and Tools: 10424 10425Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 10426defines _SCP with 3 arguments. Previous versions defined it with only 1 10427argument. iASL now allows both definitions. 10428 10429iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 10430zero- 10431length subtables when disassembling ACPI tables. Also fixed a couple of 10432errors where a full 16-bit table type field was not extracted from the 10433input 10434properly. 10435 10436acpisrc: Improve comment counting mechanism for generating source code 10437statistics. Count first and last lines of multi-line comments as 10438whitespace, 10439not comment lines. Handle Linux legal header in addition to standard 10440acpica 10441header. 10442 10443---------------------------------------- 10444 1044529 July 2008. Summary of changes for version 20080729: 10446 104471) ACPI CA Core Subsystem: 10448 10449Fix a possible deadlock in the GPE dispatch. Remove call to 10450AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 10451attempt 10452to acquire the GPE lock but can deadlock since the GPE lock is already 10453held 10454at dispatch time. This code was introduced in version 20060831 as a 10455response 10456to Linux BZ 6881 and has since been removed from Linux. 10457 10458Add a function to dereference returned reference objects. Examines the 10459return 10460object from a call to AcpiEvaluateObject. Any Index or RefOf references 10461are 10462automatically dereferenced in an attempt to return something useful 10463(these 10464reference types cannot be converted into an external ACPI_OBJECT.) 10465Provides 10466MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 10467 10468x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 10469subtables for the MADT and one new subtable for the SRAT. Includes 10470disassembler and AcpiSrc support. Data from the Intel 64 Architecture 10471x2APIC 10472Specification, June 2008. 10473 10474Additional error checking for pathname utilities. Add error check after 10475all 10476calls to AcpiNsGetPathnameLength. Add status return from 10477AcpiNsBuildExternalPath and check after all calls. Add parameter 10478validation 10479to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 10480 10481Return status from the global init function AcpiUtGlobalInitialize. This 10482is 10483used by both the kernel subsystem and the utilities such as iASL 10484compiler. 10485The function could possibly fail when the caches are initialized. Yang 10486Yi. 10487 10488Add a function to decode reference object types to strings. Created for 10489improved error messages. 10490 10491Improve object conversion error messages. Better error messages during 10492object 10493conversion from internal to the external ACPI_OBJECT. Used for external 10494calls 10495to AcpiEvaluateObject. 10496 10497Example Code and Data Size: These are the sizes for the OS-independent 10498acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10499debug version of the code includes the debug output trace mechanism and 10500has a 10501much larger code and data size. 10502 10503 Previous Release: 10504 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10505 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10506 Current Release: 10507 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10508 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10509 105102) iASL Compiler/Disassembler and Tools: 10511 10512Debugger: fix a possible hang when evaluating non-methods. Fixes a 10513problem 10514introduced in version 20080701. If the object being evaluated (via 10515execute 10516command) is not a method, the debugger can hang while trying to obtain 10517non- 10518existent parameters. 10519 10520iASL: relax error for using reserved "_T_x" identifiers. These names can 10521appear in a disassembled ASL file if they were emitted by the original 10522compiler. Instead of issuing an error or warning and forcing the user to 10523manually change these names, issue a remark instead. 10524 10525iASL: error if named object created in while loop. Emit an error if any 10526named 10527object is created within a While loop. If allowed, this code will 10528generate 10529a 10530run-time error on the second iteration of the loop when an attempt is 10531made 10532to 10533create the same named object twice. ACPICA bugzilla 730. 10534 10535iASL: Support absolute pathnames for include files. Add support for 10536absolute 10537pathnames within the Include operator. previously, only relative 10538pathnames 10539were supported. 10540 10541iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 10542Descriptor. 10543The ACPI spec requires one interrupt minimum. BZ 423 10544 10545iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 10546Handles the case for the Interrupt Resource Descriptor where 10547the ResourceSource argument is omitted but ResourceSourceIndex 10548is present. Now leave room for the Index. BZ 426 10549 10550iASL: Prevent error message if CondRefOf target does not exist. Fixes 10551cases 10552where an error message is emitted if the target does not exist. BZ 516 10553 10554iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 10555(get ACPI tables on Windows). This was apparently broken in version 1055620070919. 10557 10558AcpiXtract: Handle EOF while extracting data. Correctly handle the case 10559where 10560the EOF happens immediately after the last table in the input file. Print 10561completion message. Previously, no message was displayed in this case. 10562 10563---------------------------------------- 1056401 July 2008. Summary of changes for version 20080701: 10565 105660) Git source tree / acpica.org 10567 10568Fixed a problem where a git-clone from http would not transfer the entire 10569source tree. 10570 105711) ACPI CA Core Subsystem: 10572 10573Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 10574enable bit. Now performs a read-change-write of the enable register 10575instead 10576of simply writing out the cached enable mask. This will prevent 10577inadvertent 10578enabling of GPEs if a rogue GPE is received during initialization (before 10579GPE 10580handlers are installed.) 10581 10582Implemented a copy for dynamically loaded tables. Previously, dynamically 10583loaded tables were simply mapped - but on some machines this memory is 10584corrupted after suspend. Now copy the table to a local buffer. For the 10585OpRegion case, added checksum verify. Use the table length from the table 10586header, not the region length. For the Buffer case, use the table length 10587also. Dennis Noordsij, Bob Moore. BZ 10734 10588 10589Fixed a problem where the same ACPI table could not be dynamically loaded 10590and 10591unloaded more than once. Without this change, a table cannot be loaded 10592again 10593once it has been loaded/unloaded one time. The current mechanism does not 10594unregister a table upon an unload. During a load, if the same table is 10595found, 10596this no longer returns an exception. BZ 722 10597 10598Fixed a problem where the wrong descriptor length was calculated for the 10599EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 10600EndTag 10601are calculated as 12 bytes long, but the actual length in the internal 10602descriptor is 16 because of the round-up to 8 on the 64-bit build. 10603Reported 10604by Linn Crosetto. BZ 728 10605 10606Fixed a possible memory leak in the Unload operator. The DdbHandle 10607returned 10608by Load() did not have its reference count decremented during unload, 10609leading 10610to a memory leak. Lin Ming. BZ 727 10611 10612Fixed a possible memory leak when deleting thermal/processor objects. Any 10613associated notify handlers (and objects) were not being deleted. Fiodor 10614Suietov. BZ 506 10615 10616Fixed the ordering of the ASCII names in the global mutex table to match 10617the 10618actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10619only. 10620Vegard Nossum. BZ 726 10621 10622Enhanced the AcpiGetObjectInfo interface to return the number of required 10623arguments if the object is a control method. Added this call to the 10624debugger 10625so the proper number of default arguments are passed to a method. This 10626prevents a warning when executing methods from AcpiExec. 10627 10628Added a check for an invalid handle in AcpiGetObjectInfo. Return 10629AE_BAD_PARAMETER if input handle is invalid. BZ 474 10630 10631Fixed an extraneous warning from exconfig.c on the 64-bit build. 10632 10633Example Code and Data Size: These are the sizes for the OS-independent 10634acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10635debug version of the code includes the debug output trace mechanism and 10636has a 10637much larger code and data size. 10638 10639 Previous Release: 10640 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10641 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10642 Current Release: 10643 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10644 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10645 106462) iASL Compiler/Disassembler and Tools: 10647 10648iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10649resource descriptor names. 10650 10651iASL: Detect invalid ASCII characters in input (windows version). Removed 10652the 10653"-CF" flag from the flex compile, enables correct detection of non-ASCII 10654characters in the input. BZ 441 10655 10656iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10657the 10658"result of operation not used" warning when the DDB handle returned from 10659LoadTable is not used. The warning is not needed. BZ 590 10660 10661AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10662method 10663to 10664pass address of table to the AML. Added option to disable OpRegion 10665simulation 10666to allow creation of an OpRegion with a real address that was passed to 10667_CFG. 10668All of this allows testing of the Load and Unload operators from 10669AcpiExec. 10670 10671Debugger: update tables command for unloaded tables. Handle unloaded 10672tables 10673and use the standard table header output routine. 10674 10675---------------------------------------- 1067609 June 2008. Summary of changes for version 20080609: 10677 106781) ACPI CA Core Subsystem: 10679 10680Implemented a workaround for reversed _PRT entries. A significant number 10681of 10682BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10683change dynamically detects and repairs this problem. Provides 10684compatibility 10685with MS ACPI. BZ 6859 10686 10687Simplified the internal ACPI hardware interfaces to eliminate the locking 10688flag parameter from Register Read/Write. Added a new external interface, 10689AcpiGetRegisterUnlocked. 10690 10691Fixed a problem where the invocation of a GPE control method could hang. 10692This 10693was a regression introduced in 20080514. The new method argument count 10694validation mechanism can enter an infinite loop when a GPE method is 10695dispatched. Problem fixed by removing the obsolete code that passed GPE 10696block 10697information to the notify handler via the control method parameter 10698pointer. 10699 10700Fixed a problem where the _SST execution status was incorrectly returned 10701to 10702the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10703in 1070420080514. _SST is optional and a NOT_FOUND exception should never be 10705returned. BZ 716 10706 10707Fixed a problem where a deleted object could be accessed from within the 10708AML 10709parser. This was a regression introduced in version 20080123 as a fix for 10710the 10711Unload operator. Lin Ming. BZ 10669 10712 10713Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10714operands 10715and eliminated the use of a negative index in a loop. Operands are now 10716displayed in the correct order, not backwards. This also fixes a 10717regression 10718introduced in 20080514 on 64-bit systems where the elimination of 10719ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10720715 10721 10722Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10723exit 10724path did not delete a locally allocated structure. 10725 10726Updated definitions for the DMAR and SRAT tables to synchronize with the 10727current specifications. Includes disassembler support. 10728 10729Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10730loop termination value was used. Loop terminated on iteration early, 10731missing 10732one mutex. Linn Crosetto 10733 10734Example Code and Data Size: These are the sizes for the OS-independent 10735acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10736debug version of the code includes the debug output trace mechanism and 10737has a 10738much larger code and data size. 10739 10740 Previous Release: 10741 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10742 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10743 Current Release: 10744 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10745 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10746 107472) iASL Compiler/Disassembler and Tools: 10748 10749Disassembler: Implemented support for EisaId() within _CID objects. Now 10750disassemble integer _CID objects back to EisaId invocations, including 10751multiple integers within _CID packages. Includes single-step support for 10752debugger also. 10753 10754Disassembler: Added support for DMAR and SRAT table definition changes. 10755 10756---------------------------------------- 1075714 May 2008. Summary of changes for version 20080514: 10758 107591) ACPI CA Core Subsystem: 10760 10761Fixed a problem where GPEs were enabled too early during the ACPICA 10762initialization. This could lead to "handler not installed" errors on some 10763machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10764This 10765ensures that all operation regions and devices throughout the namespace 10766have 10767been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10768 10769Implemented a change to the enter sleep code. Moved execution of the _GTS 10770method to just before setting sleep enable bit. The execution was moved 10771from 10772AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10773immediately before the SLP_EN bit is set, as per the ACPI specification. 10774Luming Yu, BZ 1653. 10775 10776Implemented a fix to disable unknown GPEs (2nd version). Now always 10777disable 10778the GPE, even if ACPICA thinks that that it is already disabled. It is 10779possible that the AML or some other code has enabled the GPE unbeknownst 10780to 10781the ACPICA code. 10782 10783Fixed a problem with the Field operator where zero-length fields would 10784return 10785an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10786ASL 10787field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10788 10789Implemented a fix for the Load operator, now load the table at the 10790namespace 10791root. This reverts a change introduced in version 20071019. The table is 10792now 10793loaded at the namespace root even though this goes against the ACPI 10794specification. This provides compatibility with other ACPI 10795implementations. 10796The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10797Ming. 10798 10799Fixed a problem where ACPICA would not Load() tables with unusual 10800signatures. 10801Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10802acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10803Therefore, signature validation is worthless. Apparently MS ACPI accepts 10804such 10805signatures, ACPICA must be compatible. BZ 10454. 10806 10807Fixed a possible negative array index in AcpiUtValidateException. Added 10808NULL 10809fields to the exception string arrays to eliminate a -1 subtraction on 10810the 10811SubStatus field. 10812 10813Updated the debug tracking macros to reduce overall code and data size. 10814Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10815instead of pointers to static strings. Jan Beulich and Bob Moore. 10816 10817Implemented argument count checking in control method invocation via 10818AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10819too 10820many. This applies only to extern programmatic control method execution, 10821not 10822method-to-method calls within the AML. Lin Ming. 10823 10824Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10825no 10826longer needed, especially with the removal of 16-bit support. It was 10827replaced 10828mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10829bit 10830on 1083132/64-bit platforms is required. 10832 10833Added the C const qualifier for appropriate string constants -- mostly 10834MODULE_NAME and printf format strings. Jan Beulich. 10835 10836Example Code and Data Size: These are the sizes for the OS-independent 10837acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10838debug version of the code includes the debug output trace mechanism and 10839has a 10840much larger code and data size. 10841 10842 Previous Release: 10843 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10844 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10845 Current Release: 10846 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10847 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10848 108492) iASL Compiler/Disassembler and Tools: 10850 10851Implemented ACPI table revision ID validation in the disassembler. Zero 10852is 10853always invalid. For DSDTs, the ID controls the interpreter integer width. 108541 10855means 32-bit and this is unusual. 2 or greater is 64-bit. 10856 10857---------------------------------------- 1085821 March 2008. Summary of changes for version 20080321: 10859 108601) ACPI CA Core Subsystem: 10861 10862Implemented an additional change to the GPE support in order to suppress 10863spurious or stray GPEs. The AcpiEvDisableGpe function will now 10864permanently 10865disable incoming GPEs that are neither enabled nor disabled -- meaning 10866that 10867the GPE is unknown to the system. This should prevent future interrupt 10868floods 10869from that GPE. BZ 6217 (Zhang Rui) 10870 10871Fixed a problem where NULL package elements were not returned to the 10872AcpiEvaluateObject interface correctly. The element was simply ignored 10873instead of returning a NULL ACPI_OBJECT package element, potentially 10874causing 10875a buffer overflow and/or confusing the caller who expected a fixed number 10876of 10877elements. BZ 10132 (Lin Ming, Bob Moore) 10878 10879Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10880Dword, 10881Qword), Field, BankField, and IndexField operators when invoked from 10882inside 10883an executing control method. In this case, these operators created 10884namespace 10885nodes that were incorrectly left marked as permanent nodes instead of 10886temporary nodes. This could cause a problem if there is race condition 10887between an exiting control method and a running namespace walk. (Reported 10888by 10889Linn Crosetto) 10890 10891Fixed a problem where the CreateField and CreateXXXField operators would 10892incorrectly allow duplicate names (the name of the field) with no 10893exception 10894generated. 10895 10896Implemented several changes for Notify handling. Added support for new 10897Notify 10898values (ACPI 2.0+) and improved the Notify debug output. Notify on 10899PowerResource objects is no longer allowed, as per the ACPI 10900specification. 10901(Bob Moore, Zhang Rui) 10902 10903All Reference Objects returned via the AcpiEvaluateObject interface are 10904now 10905marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10906for 10907NULL objects - either NULL package elements or unresolved named 10908references. 10909 10910Fixed a problem where an extraneous debug message was produced for 10911package 10912objects (when debugging enabled). The message "Package List length larger 10913than NumElements count" is now produced in the correct case, and is now 10914an 10915error message rather than a debug message. Added a debug message for the 10916opposite case, where NumElements is larger than the Package List (the 10917package 10918will be padded out with NULL elements as per the ACPI spec.) 10919 10920Implemented several improvements for the output of the ASL "Debug" object 10921to 10922clarify and keep all data for a given object on one output line. 10923 10924Fixed two size calculation issues with the variable-length Start 10925Dependent 10926resource descriptor. 10927 10928Example Code and Data Size: These are the sizes for the OS-independent 10929acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10930debug version of the code includes the debug output trace mechanism and 10931has 10932a much larger code and data size. 10933 10934 Previous Release: 10935 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10936 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10937 Current Release: 10938 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10939 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10940 109412) iASL Compiler/Disassembler and Tools: 10942 10943Fixed a problem with the use of the Switch operator where execution of 10944the 10945containing method by multiple concurrent threads could cause an 10946AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10947actual Switch opcode, it must be simulated with local named temporary 10948variables and if/else pairs. The solution chosen was to mark any method 10949that 10950uses Switch as Serialized, thus preventing multiple thread entries. BZ 10951469. 10952 10953---------------------------------------- 1095413 February 2008. Summary of changes for version 20080213: 10955 109561) ACPI CA Core Subsystem: 10957 10958Implemented another MS compatibility design change for GPE/Notify 10959handling. 10960GPEs are now cleared/enabled asynchronously to allow all pending notifies 10961to 10962complete first. It is expected that the OSL will queue the enable request 10963behind all pending notify requests (may require changes to the local host 10964OSL 10965in AcpiOsExecute). Alexey Starikovskiy. 10966 10967Fixed a problem where buffer and package objects passed as arguments to a 10968control method via the external AcpiEvaluateObject interface could cause 10969an 10970AE_AML_INTERNAL exception depending on the order and type of operators 10971executed by the target control method. 10972 10973Fixed a problem where resource descriptor size optimization could cause a 10974problem when a _CRS resource template is passed to a _SRS method. The 10975_SRS 10976resource template must use the same descriptors (with the same size) as 10977returned from _CRS. This change affects the following resource 10978descriptors: 10979IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 109809487) 10981 10982Fixed a problem where a CopyObject to RegionField, BankField, and 10983IndexField 10984objects did not perform an implicit conversion as it should. These types 10985must 10986retain their initial type permanently as per the ACPI specification. 10987However, 10988a CopyObject to all other object types should not perform an implicit 10989conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10990 10991Fixed a problem with the AcpiGetDevices interface where the mechanism to 10992match device CIDs did not examine the entire list of available CIDs, but 10993instead aborted on the first non-matching CID. Andrew Patterson. 10994 10995Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10996was 10997inadvertently changed to return a 16-bit value instead of a 32-bit value, 10998truncating the upper dword of a 64-bit value. This macro is only used to 10999display debug output, so no incorrect calculations were made. Also, 11000reimplemented the macro so that a 64-bit shift is not performed by 11001inefficient compilers. 11002 11003Added missing va_end statements that should correspond with each va_start 11004statement. 11005 11006Example Code and Data Size: These are the sizes for the OS-independent 11007acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11008debug version of the code includes the debug output trace mechanism and 11009has 11010a much larger code and data size. 11011 11012 Previous Release: 11013 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 11014 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 11015 Current Release: 11016 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 11017 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 11018 110192) iASL Compiler/Disassembler and Tools: 11020 11021Implemented full disassembler support for the following new ACPI tables: 11022BERT, EINJ, and ERST. Implemented partial disassembler support for the 11023complicated HEST table. These tables support the Windows Hardware Error 11024Architecture (WHEA). 11025 11026---------------------------------------- 1102723 January 2008. Summary of changes for version 20080123: 11028 110291) ACPI CA Core Subsystem: 11030 11031Added the 2008 copyright to all module headers and signons. This affects 11032virtually every file in the ACPICA core subsystem, the iASL compiler, and 11033the tools/utilities. 11034 11035Fixed a problem with the SizeOf operator when used with Package and 11036Buffer 11037objects. These objects have deferred execution for some arguments, and 11038the 11039execution is now completed before the SizeOf is executed. This problem 11040caused 11041unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 11042BZ 110439558 11044 11045Implemented an enhancement to the interpreter "slack mode". In the 11046absence 11047of 11048an explicit return or an implicitly returned object from the last 11049executed 11050opcode, a control method will now implicitly return an integer of value 0 11051for 11052Microsoft compatibility. (Lin Ming) BZ 392 11053 11054Fixed a problem with the Load operator where an exception was not 11055returned 11056in 11057the case where the table is already loaded. (Lin Ming) BZ 463 11058 11059Implemented support for the use of DDBHandles as an Indexed Reference, as 11060per 11061the ACPI spec. (Lin Ming) BZ 486 11062 11063Implemented support for UserTerm (Method invocation) for the Unload 11064operator 11065as per the ACPI spec. (Lin Ming) BZ 580 11066 11067Fixed a problem with the LoadTable operator where the OemId and 11068OemTableId 11069input strings could cause unexpected failures if they were shorter than 11070the 11071maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 11072 11073Implemented support for UserTerm (Method invocation) for the Unload 11074operator 11075as per the ACPI spec. (Lin Ming) BZ 580 11076 11077Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 11078HEST, 11079IBFT, UEFI, WDAT. Disassembler support is forthcoming. 11080 11081Example Code and Data Size: These are the sizes for the OS-independent 11082acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11083debug version of the code includes the debug output trace mechanism and 11084has 11085a much larger code and data size. 11086 11087 Previous Release: 11088 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 11089 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 11090 Current Release: 11091 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 11092 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 11093 110942) iASL Compiler/Disassembler and Tools: 11095 11096Implemented support in the disassembler for checksum validation on 11097incoming 11098binary DSDTs and SSDTs. If incorrect, a message is displayed within the 11099table 11100header dump at the start of the disassembly. 11101 11102Implemented additional debugging information in the namespace listing 11103file 11104created during compilation. In addition to the namespace hierarchy, the 11105full 11106pathname to each namespace object is displayed. 11107 11108Fixed a problem with the disassembler where invalid ACPI tables could 11109cause 11110faults or infinite loops. 11111 11112Fixed an unexpected parse error when using the optional "parameter types" 11113list in a control method declaration. (Lin Ming) BZ 397 11114 11115Fixed a problem where two External declarations with the same name did 11116not 11117cause an error (Lin Ming) BZ 509 11118 11119Implemented support for full TermArgs (adding Argx, Localx and method 11120invocation) for the ParameterData parameter to the LoadTable operator. 11121(Lin 11122Ming) BZ 583,587 11123 11124---------------------------------------- 1112519 December 2007. Summary of changes for version 20071219: 11126 111271) ACPI CA Core Subsystem: 11128 11129Implemented full support for deferred execution for the TermArg string 11130arguments for DataTableRegion. This enables forward references and full 11131operand resolution for the three string arguments. Similar to 11132OperationRegion 11133deferred argument execution.) Lin Ming. BZ 430 11134 11135Implemented full argument resolution support for the BankValue argument 11136to 11137BankField. Previously, only constants were supported, now any TermArg may 11138be 11139used. Lin Ming BZ 387, 393 11140 11141Fixed a problem with AcpiGetDevices where the search of a branch of the 11142device tree could be terminated prematurely. In accordance with the ACPI 11143specification, the search down the current branch is terminated if a 11144device 11145is both not present and not functional (instead of just not present.) 11146Yakui 11147Zhao. 11148 11149Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 11150if 11151the underlying AML code changed the GPE enable registers. Now, any 11152unknown 11153incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 11154disabled 11155instead of simply ignored. Rui Zhang. 11156 11157Fixed a problem with Index Fields where the Index register was 11158incorrectly 11159limited to a maximum of 32 bits. Now any size may be used. 11160 11161Fixed a couple memory leaks associated with "implicit return" objects 11162when 11163the AML Interpreter slack mode is enabled. Lin Ming BZ 349 11164 11165Example Code and Data Size: These are the sizes for the OS-independent 11166acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11167debug version of the code includes the debug output trace mechanism and 11168has 11169a much larger code and data size. 11170 11171 Previous Release: 11172 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11173 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11174 Current Release: 11175 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 11176 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 11177 11178---------------------------------------- 1117914 November 2007. Summary of changes for version 20071114: 11180 111811) ACPI CA Core Subsystem: 11182 11183Implemented event counters for each of the Fixed Events, the ACPI SCI 11184(interrupt) itself, and control methods executed. Named 11185AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 11186These 11187should be useful for debugging and statistics. 11188 11189Implemented a new external interface, AcpiGetStatistics, to retrieve the 11190contents of the various event counters. Returns the current values for 11191AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 11192AcpiMethodCount. The interface can be expanded in the future if new 11193counters 11194are added. Device drivers should use this interface rather than access 11195the 11196counters directly. 11197 11198Fixed a problem with the FromBCD and ToBCD operators. With some 11199compilers, 11200the ShortDivide function worked incorrectly, causing problems with the 11201BCD 11202functions with large input values. A truncation from 64-bit to 32-bit 11203inadvertently occurred. Internal BZ 435. Lin Ming 11204 11205Fixed a problem with Index references passed as method arguments. 11206References 11207passed as arguments to control methods were dereferenced immediately 11208(before 11209control was passed to the called method). The references are now 11210correctly 11211passed directly to the called method. BZ 5389. Lin Ming 11212 11213Fixed a problem with CopyObject used in conjunction with the Index 11214operator. 11215The reference was incorrectly dereferenced before the copy. The reference 11216is 11217now correctly copied. BZ 5391. Lin Ming 11218 11219Fixed a problem with Control Method references within Package objects. 11220These 11221references are now correctly generated. This completes the package 11222construction overhaul that began in version 20071019. 11223 11224Example Code and Data Size: These are the sizes for the OS-independent 11225acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11226debug version of the code includes the debug output trace mechanism and 11227has 11228a much larger code and data size. 11229 11230 Previous Release: 11231 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11232 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11233 Current Release: 11234 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11235 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11236 11237 112382) iASL Compiler/Disassembler and Tools: 11239 11240The AcpiExec utility now installs handlers for all of the predefined 11241Operation Region types. New types supported are: PCI_Config, CMOS, and 11242PCIBARTarget. 11243 11244Fixed a problem with the 64-bit version of AcpiExec where the extended 11245(64- 11246bit) address fields for the DSDT and FACS within the FADT were not being 11247used, causing truncation of the upper 32-bits of these addresses. Lin 11248Ming 11249and Bob Moore 11250 11251---------------------------------------- 1125219 October 2007. Summary of changes for version 20071019: 11253 112541) ACPI CA Core Subsystem: 11255 11256Fixed a problem with the Alias operator when the target of the alias is a 11257named ASL operator that opens a new scope -- Scope, Device, 11258PowerResource, 11259Processor, and ThermalZone. In these cases, any children of the original 11260operator could not be accessed via the alias, potentially causing 11261unexpected 11262AE_NOT_FOUND exceptions. (BZ 9067) 11263 11264Fixed a problem with the Package operator where all named references were 11265created as object references and left otherwise unresolved. According to 11266the 11267ACPI specification, a Package can only contain Data Objects or references 11268to 11269control methods. The implication is that named references to Data Objects 11270(Integer, Buffer, String, Package, BufferField, Field) should be resolved 11271immediately upon package creation. This is the approach taken with this 11272change. References to all other named objects (Methods, Devices, Scopes, 11273etc.) are all now properly created as reference objects. (BZ 5328) 11274 11275Reverted a change to Notify handling that was introduced in version 1127620070508. This version changed the Notify handling from asynchronous to 11277fully synchronous (Device driver Notify handling with respect to the 11278Notify 11279ASL operator). It was found that this change caused more problems than it 11280solved and was removed by most users. 11281 11282Fixed a problem with the Increment and Decrement operators where the type 11283of 11284the target object could be unexpectedly and incorrectly changed. (BZ 353) 11285Lin Ming. 11286 11287Fixed a problem with the Load and LoadTable operators where the table 11288location within the namespace was ignored. Instead, the table was always 11289loaded into the root or current scope. Lin Ming. 11290 11291Fixed a problem with the Load operator when loading a table from a buffer 11292object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 11293 11294Fixed a problem with the Debug object where a store of a DdbHandle 11295reference 11296object to the Debug object could cause a fault. 11297 11298Added a table checksum verification for the Load operator, in the case 11299where 11300the load is from a buffer. (BZ 578). 11301 11302Implemented additional parameter validation for the LoadTable operator. 11303The 11304length of the input strings SignatureString, OemIdString, and OemTableId 11305are 11306now checked for maximum lengths. (BZ 582) Lin Ming. 11307 11308Example Code and Data Size: These are the sizes for the OS-independent 11309acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11310debug version of the code includes the debug output trace mechanism and 11311has 11312a much larger code and data size. 11313 11314 Previous Release: 11315 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11316 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11317 Current Release: 11318 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11319 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11320 11321 113222) iASL Compiler/Disassembler: 11323 11324Fixed a problem where if a single file was specified and the file did not 11325exist, no error message was emitted. (Introduced with wildcard support in 11326version 20070917.) 11327 11328---------------------------------------- 1132919 September 2007. Summary of changes for version 20070919: 11330 113311) ACPI CA Core Subsystem: 11332 11333Designed and implemented new external interfaces to install and remove 11334handlers for ACPI table-related events. Current events that are defined 11335are 11336LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 11337they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 11338AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 11339 11340Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 11341(acpi_serialized option on Linux) could cause some systems to hang during 11342initialization. (Bob Moore) BZ 8171 11343 11344Fixed a problem where objects of certain types (Device, ThermalZone, 11345Processor, PowerResource) can be not found if they are declared and 11346referenced from within the same control method (Lin Ming) BZ 341 11347 11348Example Code and Data Size: These are the sizes for the OS-independent 11349acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11350debug version of the code includes the debug output trace mechanism and 11351has 11352a much larger code and data size. 11353 11354 Previous Release: 11355 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11356 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11357 Current Release: 11358 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11359 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11360 11361 113622) iASL Compiler/Disassembler: 11363 11364Implemented support to allow multiple files to be compiled/disassembled 11365in 11366a 11367single invocation. This includes command line wildcard support for both 11368the 11369Windows and Unix versions of the compiler. This feature simplifies the 11370disassembly and compilation of multiple ACPI tables in a single 11371directory. 11372 11373---------------------------------------- 1137408 May 2007. Summary of changes for version 20070508: 11375 113761) ACPI CA Core Subsystem: 11377 11378Implemented a Microsoft compatibility design change for the handling of 11379the 11380Notify AML operator. Previously, notify handlers were dispatched and 11381executed completely asynchronously in a deferred thread. The new design 11382still executes the notify handlers in a different thread, but the 11383original 11384thread that executed the Notify() now waits at a synchronization point 11385for 11386the notify handler to complete. Some machines depend on a synchronous 11387Notify 11388operator in order to operate correctly. 11389 11390Implemented support to allow Package objects to be passed as method 11391arguments to the external AcpiEvaluateObject interface. Previously, this 11392would return the AE_NOT_IMPLEMENTED exception. This feature had not been 11393implemented since there were no reserved control methods that required it 11394until recently. 11395 11396Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 11397that 11398contained invalid non-zero values in reserved fields could cause later 11399failures because these fields have meaning in later revisions of the 11400FADT. 11401For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 11402fields 11403are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 11404 11405Fixed a problem where the Global Lock handle was not properly updated if 11406a 11407thread that acquired the Global Lock via executing AML code then 11408attempted 11409to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 11410Joe 11411Liu. 11412 11413Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 11414could be corrupted if the interrupt being removed was at the head of the 11415list. Reported by Linn Crosetto. 11416 11417Example Code and Data Size: These are the sizes for the OS-independent 11418acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11419debug version of the code includes the debug output trace mechanism and 11420has 11421a much larger code and data size. 11422 11423 Previous Release: 11424 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11425 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11426 Current Release: 11427 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11428 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11429 11430---------------------------------------- 1143120 March 2007. Summary of changes for version 20070320: 11432 114331) ACPI CA Core Subsystem: 11434 11435Implemented a change to the order of interpretation and evaluation of AML 11436operand objects within the AML interpreter. The interpreter now evaluates 11437operands in the order that they appear in the AML stream (and the 11438corresponding ASL code), instead of in the reverse order (after the 11439entire 11440operand list has been parsed). The previous behavior caused several 11441subtle 11442incompatibilities with the Microsoft AML interpreter as well as being 11443somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 11444 11445Implemented a change to the ACPI Global Lock support. All interfaces to 11446the 11447global lock now allow the same thread to acquire the lock multiple times. 11448This affects the AcpiAcquireGlobalLock external interface to the global 11449lock 11450as well as the internal use of the global lock to support AML fields -- a 11451control method that is holding the global lock can now simultaneously 11452access 11453AML fields that require global lock protection. Previously, in both 11454cases, 11455this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 11456to 11457AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 11458Controller. There is no change to the behavior of the AML Acquire 11459operator, 11460as this can already be used to acquire a mutex multiple times by the same 11461thread. BZ 8066. With assistance from Alexey Starikovskiy. 11462 11463Fixed a problem where invalid objects could be referenced in the AML 11464Interpreter after error conditions. During operand evaluation, ensure 11465that 11466the internal "Return Object" field is cleared on error and only valid 11467pointers are stored there. Caused occasional access to deleted objects 11468that 11469resulted in "large reference count" warning messages. Valery Podrezov. 11470 11471Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 11472on 11473deeply nested control method invocations. BZ 7873, local BZ 487. Valery 11474Podrezov. 11475 11476Fixed an internal problem with the handling of result objects on the 11477interpreter result stack. BZ 7872. Valery Podrezov. 11478 11479Removed obsolete code that handled the case where AML_NAME_OP is the 11480target 11481of a reference (Reference.Opcode). This code was no longer necessary. BZ 114827874. Valery Podrezov. 11483 11484Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 11485was 11486a 11487remnant from the previously discontinued 16-bit support. 11488 11489Example Code and Data Size: These are the sizes for the OS-independent 11490acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11491debug version of the code includes the debug output trace mechanism and 11492has 11493a much larger code and data size. 11494 11495 Previous Release: 11496 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11497 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11498 Current Release: 11499 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11500 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11501 11502---------------------------------------- 1150326 January 2007. Summary of changes for version 20070126: 11504 115051) ACPI CA Core Subsystem: 11506 11507Added the 2007 copyright to all module headers and signons. This affects 11508virtually every file in the ACPICA core subsystem, the iASL compiler, and 11509the utilities. 11510 11511Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 11512during a table load. A bad pointer was passed in the case where the DSDT 11513is 11514overridden, causing a fault in this case. 11515 11516Example Code and Data Size: These are the sizes for the OS-independent 11517acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11518debug version of the code includes the debug output trace mechanism and 11519has 11520a much larger code and data size. 11521 11522 Previous Release: 11523 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11524 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11525 Current Release: 11526 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11527 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11528 11529---------------------------------------- 1153015 December 2006. Summary of changes for version 20061215: 11531 115321) ACPI CA Core Subsystem: 11533 11534Support for 16-bit ACPICA has been completely removed since it is no 11535longer 11536necessary and it clutters the code. All 16-bit macros, types, and 11537conditional compiles have been removed, cleaning up and simplifying the 11538code 11539across the entire subsystem. DOS support is no longer needed since the 11540bootable Linux firmware kit is now available. 11541 11542The handler for the Global Lock is now removed during AcpiTerminate to 11543enable a clean subsystem restart, via the implementation of the 11544AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 11545HP) 11546 11547Implemented enhancements to the multithreading support within the 11548debugger 11549to enable improved multithreading debugging and evaluation of the 11550subsystem. 11551(Valery Podrezov) 11552 11553Debugger: Enhanced the Statistics/Memory command to emit the total 11554(maximum) 11555memory used during the execution, as well as the maximum memory consumed 11556by 11557each of the various object types. (Valery Podrezov) 11558 11559Example Code and Data Size: These are the sizes for the OS-independent 11560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11561debug version of the code includes the debug output trace mechanism and 11562has 11563a much larger code and data size. 11564 11565 Previous Release: 11566 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11567 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11568 Current Release: 11569 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11570 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11571 11572 115732) iASL Compiler/Disassembler and Tools: 11574 11575AcpiExec: Implemented a new option (-m) to display full memory use 11576statistics upon subsystem/program termination. (Valery Podrezov) 11577 11578---------------------------------------- 1157909 November 2006. Summary of changes for version 20061109: 11580 115811) ACPI CA Core Subsystem: 11582 11583Optimized the Load ASL operator in the case where the source operand is 11584an 11585operation region. Simply map the operation region memory, instead of 11586performing a bytewise read. (Region must be of type SystemMemory, see 11587below.) 11588 11589Fixed the Load ASL operator for the case where the source operand is a 11590region field. A buffer object is also allowed as the source operand. BZ 11591480 11592 11593Fixed a problem where the Load ASL operator allowed the source operand to 11594be 11595an operation region of any type. It is now restricted to regions of type 11596SystemMemory, as per the ACPI specification. BZ 481 11597 11598Additional cleanup and optimizations for the new Table Manager code. 11599 11600AcpiEnable will now fail if all of the required ACPI tables are not 11601loaded 11602(FADT, FACS, DSDT). BZ 477 11603 11604Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11605this 11606header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11607manually optimized to be aligned and will not work if it is byte-packed. 11608 11609Example Code and Data Size: These are the sizes for the OS-independent 11610acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11611debug version of the code includes the debug output trace mechanism and 11612has 11613a much larger code and data size. 11614 11615 Previous Release: 11616 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11617 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11618 Current Release: 11619 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11620 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11621 11622 116232) iASL Compiler/Disassembler and Tools: 11624 11625Fixed a problem where the presence of the _OSI predefined control method 11626within complex expressions could cause an internal compiler error. 11627 11628AcpiExec: Implemented full region support for multiple address spaces. 11629SpaceId is now part of the REGION object. BZ 429 11630 11631---------------------------------------- 1163211 October 2006. Summary of changes for version 20061011: 11633 116341) ACPI CA Core Subsystem: 11635 11636Completed an AML interpreter performance enhancement for control method 11637execution. Previously a 2-pass parse/execution, control methods are now 11638completely parsed and executed in a single pass. This improves overall 11639interpreter performance by ~25%, reduces code size, and reduces CPU stack 11640use. (Valery Podrezov + interpreter changes in version 20051202 that 11641eliminated namespace loading during the pass one parse.) 11642 11643Implemented _CID support for PCI Root Bridge detection. If the _HID does 11644not 11645match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11646now 11647obtained and also checked for an ID match. 11648 11649Implemented additional support for the PCI _ADR execution: upsearch until 11650a 11651device scope is found before executing _ADR. This allows PCI_Config 11652operation regions to be declared locally within control methods 11653underneath 11654PCI device objects. 11655 11656Fixed a problem with a possible race condition between threads executing 11657AcpiWalkNamespace and the AML interpreter. This condition was removed by 11658modifying AcpiWalkNamespace to (by default) ignore all temporary 11659namespace 11660entries created during any concurrent control method execution. An 11661additional namespace race condition is known to exist between 11662AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11663investigation. 11664 11665Restructured the AML ParseLoop function, breaking it into several 11666subfunctions in order to reduce CPU stack use and improve 11667maintainability. 11668(Mikhail Kouzmich) 11669 11670AcpiGetHandle: Fix for parameter validation to detect invalid 11671combinations 11672of prefix handle and pathname. BZ 478 11673 11674Example Code and Data Size: These are the sizes for the OS-independent 11675acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11676debug version of the code includes the debug output trace mechanism and 11677has 11678a much larger code and data size. 11679 11680 Previous Release: 11681 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11682 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11683 Current Release: 11684 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11685 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11686 116872) iASL Compiler/Disassembler and Tools: 11688 11689Ported the -g option (get local ACPI tables) to the new ACPICA Table 11690Manager 11691to restore original behavior. 11692 11693---------------------------------------- 1169427 September 2006. Summary of changes for version 20060927: 11695 116961) ACPI CA Core Subsystem: 11697 11698Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11699These functions now use a spinlock for mutual exclusion and the interrupt 11700level indication flag is not needed. 11701 11702Fixed a problem with the Global Lock where the lock could appear to be 11703obtained before it is actually obtained. The global lock semaphore was 11704inadvertently created with one unit instead of zero units. (BZ 464) 11705Fiodor 11706Suietov. 11707 11708Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11709during 11710a read from a buffer or region field. (BZ 458) Fiodor Suietov. 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: 77.9K Code, 17.1K Data, 95.0K Total 11720 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11721 Current Release: 11722 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11723 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11724 11725 117262) iASL Compiler/Disassembler and Tools: 11727 11728Fixed a compilation problem with the pre-defined Resource Descriptor 11729field 11730names where an "object does not exist" error could be incorrectly 11731generated 11732if the parent ResourceTemplate pathname places the template within a 11733different namespace scope than the current scope. (BZ 7212) 11734 11735Fixed a problem where the compiler could hang after syntax errors 11736detected 11737in an ElseIf construct. (BZ 453) 11738 11739Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11740operator. An incorrect output filename was produced when this parameter 11741was 11742a null string (""). Now, the original input filename is used as the AML 11743output filename, with an ".aml" extension. 11744 11745Implemented a generic batch command mode for the AcpiExec utility 11746(execute 11747any AML debugger command) (Valery Podrezov). 11748 11749---------------------------------------- 1175012 September 2006. Summary of changes for version 20060912: 11751 117521) ACPI CA Core Subsystem: 11753 11754Enhanced the implementation of the "serialized mode" of the interpreter 11755(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11756specified, instead of creating a serialization semaphore per control 11757method, 11758the interpreter lock is simply no longer released before a blocking 11759operation during control method execution. This effectively makes the AML 11760Interpreter single-threaded. The overhead of a semaphore per-method is 11761eliminated. 11762 11763Fixed a regression where an error was no longer emitted if a control 11764method 11765attempts to create 2 objects of the same name. This once again returns 11766AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11767that 11768will dynamically serialize the control method to possible prevent future 11769errors. (BZ 440) 11770 11771Integrated a fix for a problem with PCI Express HID detection in the PCI 11772Config Space setup procedure. (BZ 7145) 11773 11774Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11775AcpiHwInitialize function - the FADT registers are now validated when the 11776table is loaded. 11777 11778Added two new warnings during FADT verification - 1) if the FADT is 11779larger 11780than the largest known FADT version, and 2) if there is a mismatch 11781between 11782a 1178332-bit block address and the 64-bit X counterpart (when both are non- 11784zero.) 11785 11786Example Code and Data Size: These are the sizes for the OS-independent 11787acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11788debug version of the code includes the debug output trace mechanism and 11789has 11790a much larger code and data size. 11791 11792 Previous Release: 11793 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11794 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11795 Current Release: 11796 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11797 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11798 11799 118002) iASL Compiler/Disassembler and Tools: 11801 11802Fixed a problem with the implementation of the Switch() operator where 11803the 11804temporary variable was declared too close to the actual Switch, instead 11805of 11806at method level. This could cause a problem if the Switch() operator is 11807within a while loop, causing an error on the second iteration. (BZ 460) 11808 11809Disassembler - fix for error emitted for unknown type for target of scope 11810operator. Now, ignore it and continue. 11811 11812Disassembly of an FADT now verifies the input FADT and reports any errors 11813found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11814 11815Disassembly of raw data buffers with byte initialization data now 11816prefixes 11817each output line with the current buffer offset. 11818 11819Disassembly of ASF! table now includes all variable-length data fields at 11820the end of some of the subtables. 11821 11822The disassembler now emits a comment if a buffer appears to be a 11823ResourceTemplate, but cannot be disassembled as such because the EndTag 11824does 11825not appear at the very end of the buffer. 11826 11827AcpiExec - Added the "-t" command line option to enable the serialized 11828mode 11829of the AML interpreter. 11830 11831---------------------------------------- 1183231 August 2006. Summary of changes for version 20060831: 11833 118341) ACPI CA Core Subsystem: 11835 11836Miscellaneous fixes for the Table Manager: 11837- Correctly initialize internal common FADT for all 64-bit "X" fields 11838- Fixed a couple table mapping issues during table load 11839- Fixed a couple alignment issues for IA64 11840- Initialize input array to zero in AcpiInitializeTables 11841- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11842AcpiGetTableByIndex 11843 11844Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11845now 11846immediately disabled to prevent the waking GPE from firing again and to 11847prevent other wake GPEs from interrupting the wake process. 11848 11849Added the AcpiGpeCount global that tracks the number of processed GPEs, 11850to 11851be used for debugging systems with a large number of ACPI interrupts. 11852 11853Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11854both the ACPICA headers and the disassembler. 11855 11856Example Code and Data Size: These are the sizes for the OS-independent 11857acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11858debug version of the code includes the debug output trace mechanism and 11859has 11860a much larger code and data size. 11861 11862 Previous Release: 11863 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11864 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11865 Current Release: 11866 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11867 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11868 11869 118702) iASL Compiler/Disassembler and Tools: 11871 11872Disassembler support for the DMAR ACPI table. 11873 11874---------------------------------------- 1187523 August 2006. Summary of changes for version 20060823: 11876 118771) ACPI CA Core Subsystem: 11878 11879The Table Manager component has been completely redesigned and 11880reimplemented. The new design is much simpler, and reduces the overall 11881code 11882and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11883is 11884now possible to obtain the ACPI tables very early during kernel 11885initialization, even before dynamic memory management is initialized. 11886(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11887 11888Obsolete ACPICA interfaces: 11889 11890- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11891init 11892time). 11893- AcpiLoadTable: Not needed. 11894- AcpiUnloadTable: Not needed. 11895 11896New ACPICA interfaces: 11897 11898- AcpiInitializeTables: Must be called before the table manager can be 11899used. 11900- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11901allocated memory after it becomes available. 11902- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11903tables 11904in the RSDT/XSDT. 11905 11906Other ACPICA changes: 11907 11908- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11909Use 11910AcpiOsUnmapMemory to free this mapping. 11911- AcpiGetTable returns the actual mapped table. The mapping is managed 11912internally and must not be deleted by the caller. Use of this interface 11913causes no additional dynamic memory allocation. 11914- AcpiFindRootPointer: Support for physical addressing has been 11915eliminated, 11916it appeared to be unused. 11917- The interface to AcpiOsMapMemory has changed to be consistent with the 11918other allocation interfaces. 11919- The interface to AcpiOsGetRootPointer has changed to eliminate 11920unnecessary 11921parameters. 11922- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1192364- 11924bit platforms. Was previously 64 bits on all platforms. 11925- The interface to the ACPI Global Lock acquire/release macros have 11926changed 11927slightly since ACPICA no longer keeps a local copy of the FACS with a 11928constructed pointer to the actual global lock. 11929 11930Porting to the new table manager: 11931 11932- AcpiInitializeTables: Must be called once, and can be called anytime 11933during the OS initialization process. It allows the host to specify an 11934area 11935of memory to be used to store the internal version of the RSDT/XSDT (root 11936table). This allows the host to access ACPI tables before memory 11937management 11938is initialized and running. 11939- AcpiReallocateRootTable: Can be called after memory management is 11940running 11941to copy the root table to a dynamically allocated array, freeing up the 11942scratch memory specified in the call to AcpiInitializeTables. 11943- AcpiSubsystemInitialize: This existing interface is independent of the 11944Table Manager, and does not have to be called before the Table Manager 11945can 11946be used, it only must be called before the rest of ACPICA can be used. 11947- ACPI Tables: Some changes have been made to the names and structure of 11948the 11949actbl.h and actbl1.h header files and may require changes to existing 11950code. 11951For example, bitfields have been completely removed because of their lack 11952of 11953portability across C compilers. 11954- Update interfaces to the Global Lock acquire/release macros if local 11955versions are used. (see acwin.h) 11956 11957Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11958 11959New files: tbfind.c 11960 11961Example Code and Data Size: These are the sizes for the OS-independent 11962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11963debug version of the code includes the debug output trace mechanism and 11964has 11965a much larger code and data size. 11966 11967 Previous Release: 11968 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11969 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11970 Current Release: 11971 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11972 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11973 11974 119752) iASL Compiler/Disassembler and Tools: 11976 11977No changes for this release. 11978 11979---------------------------------------- 1198021 July 2006. Summary of changes for version 20060721: 11981 119821) ACPI CA Core Subsystem: 11983 11984The full source code for the ASL test suite used to validate the iASL 11985compiler and the ACPICA core subsystem is being released with the ACPICA 11986source for the first time. The source is contained in a separate package 11987and 11988consists of over 1100 files that exercise all ASL/AML operators. The 11989package 11990should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11991Fiodor 11992Suietov) 11993 11994Completed a new design and implementation for support of the ACPI Global 11995Lock. On the OS side, the global lock is now treated as a standard AML 11996mutex. Previously, multiple OS threads could "acquire" the global lock 11997simultaneously. However, this could cause the BIOS to be starved out of 11998the 11999lock - especially in cases such as the Embedded Controller driver where 12000there is a tight coupling between the OS and the BIOS. 12001 12002Implemented an optimization for the ACPI Global Lock interrupt mechanism. 12003The Global Lock interrupt handler no longer queues the execution of a 12004separate thread to signal the global lock semaphore. Instead, the 12005semaphore 12006is signaled directly from the interrupt handler. 12007 12008Implemented support within the AML interpreter for package objects that 12009contain a larger AML length (package list length) than the package 12010element 12011count. In this case, the length of the package is truncated to match the 12012package element count. Some BIOS code apparently modifies the package 12013length 12014on the fly, and this change supports this behavior. Provides 12015compatibility 12016with the MS AML interpreter. (With assistance from Fiodor Suietov) 12017 12018Implemented a temporary fix for the BankValue parameter of a Bank Field 12019to 12020support all constant values, now including the Zero and One opcodes. 12021Evaluation of this parameter must eventually be converted to a full 12022TermArg 12023evaluation. A not-implemented error is now returned (temporarily) for 12024non- 12025constant values for this parameter. 12026 12027Fixed problem reports (Fiodor Suietov) integrated: 12028- Fix for premature object deletion after CopyObject on Operation Region 12029(BZ 12030350) 12031 12032Example Code and Data Size: These are the sizes for the OS-independent 12033acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12034debug version of the code includes the debug output trace mechanism and 12035has 12036a much larger code and data size. 12037 12038 Previous Release: 12039 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 12040 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 12041 Current Release: 12042 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 12043 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 12044 12045 120462) iASL Compiler/Disassembler and Tools: 12047 12048No changes for this release. 12049 12050---------------------------------------- 1205107 July 2006. Summary of changes for version 20060707: 12052 120531) ACPI CA Core Subsystem: 12054 12055Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 12056that do not allow the initialization of address pointers within packed 12057structures - even though the hardware itself may support misaligned 12058transfers. Some of the debug data structures are packed by default to 12059minimize size. 12060 12061Added an error message for the case where AcpiOsGetThreadId() returns 12062zero. 12063A non-zero value is required by the core ACPICA code to ensure the proper 12064operation of AML mutexes and recursive control methods. 12065 12066The DSDT is now the only ACPI table that determines whether the AML 12067interpreter is in 32-bit or 64-bit mode. Not really a functional change, 12068but 12069the hooks for per-table 32/64 switching have been removed from the code. 12070A 12071clarification to the ACPI specification is forthcoming in ACPI 3.0B. 12072 12073Fixed a possible leak of an OwnerID in the error path of 12074AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 12075deletion to a single place in AcpiTbUninstallTable to correct possible 12076leaks 12077when using the AcpiTbDeleteTablesByType interface (with assistance from 12078Lance Ortiz.) 12079 12080Fixed a problem with Serialized control methods where the semaphore 12081associated with the method could be over-signaled after multiple method 12082invocations. 12083 12084Fixed two issues with the locking of the internal namespace data 12085structure. 12086Both the Unload() operator and AcpiUnloadTable interface now lock the 12087namespace during the namespace deletion associated with the table unload 12088(with assistance from Linn Crosetto.) 12089 12090Fixed problem reports (Valery Podrezov) integrated: 12091- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 12092 12093Fixed problem reports (Fiodor Suietov) integrated: 12094- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 12095- On Address Space handler deletion, needless deactivation call (BZ 374) 12096- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 12097375) 12098- Possible memory leak, Notify sub-objects of Processor, Power, 12099ThermalZone 12100(BZ 376) 12101- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 12102- Minimum Length of RSDT should be validated (BZ 379) 12103- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 12104Handler (BZ (380) 12105- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 12106loaded 12107(BZ 381) 12108 12109Example Code and Data Size: These are the sizes for the OS-independent 12110acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12111debug version of the code includes the debug output trace mechanism and 12112has 12113a much larger code and data size. 12114 12115 Previous Release: 12116 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12117 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12118 Current Release: 12119 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 12120 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 12121 12122 121232) iASL Compiler/Disassembler and Tools: 12124 12125Fixed problem reports: 12126Compiler segfault when ASL contains a long (>1024) String declaration (BZ 12127436) 12128 12129---------------------------------------- 1213023 June 2006. Summary of changes for version 20060623: 12131 121321) ACPI CA Core Subsystem: 12133 12134Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 12135allows the type to be customized to the host OS for improved efficiency 12136(since a spinlock is usually a very small object.) 12137 12138Implemented support for "ignored" bits in the ACPI registers. According 12139to 12140the ACPI specification, these bits should be preserved when writing the 12141registers via a read/modify/write cycle. There are 3 bits preserved in 12142this 12143manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 12144 12145Implemented the initial deployment of new OSL mutex interfaces. Since 12146some 12147host operating systems have separate mutex and semaphore objects, this 12148feature was requested. The base code now uses mutexes (and the new mutex 12149interfaces) wherever a binary semaphore was used previously. However, for 12150the current release, the mutex interfaces are defined as macros to map 12151them 12152to the existing semaphore interfaces. Therefore, no OSL changes are 12153required 12154at this time. (See acpiosxf.h) 12155 12156Fixed several problems with the support for the control method SyncLevel 12157parameter. The SyncLevel now works according to the ACPI specification 12158and 12159in concert with the Mutex SyncLevel parameter, since the current 12160SyncLevel 12161is a property of the executing thread. Mutual exclusion for control 12162methods 12163is now implemented with a mutex instead of a semaphore. 12164 12165Fixed three instances of the use of the C shift operator in the bitfield 12166support code (exfldio.c) to avoid the use of a shift value larger than 12167the 12168target data width. The behavior of C compilers is undefined in this case 12169and 12170can cause unpredictable results, and therefore the case must be detected 12171and 12172avoided. (Fiodor Suietov) 12173 12174Added an info message whenever an SSDT or OEM table is loaded dynamically 12175via the Load() or LoadTable() ASL operators. This should improve 12176debugging 12177capability since it will show exactly what tables have been loaded 12178(beyond 12179the tables present in the RSDT/XSDT.) 12180 12181Example Code and Data Size: These are the sizes for the OS-independent 12182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12183debug version of the code includes the debug output trace mechanism and 12184has 12185a much larger code and data size. 12186 12187 Previous Release: 12188 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12189 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12190 Current Release: 12191 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12192 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12193 12194 121952) iASL Compiler/Disassembler and Tools: 12196 12197No changes for this release. 12198 12199---------------------------------------- 1220008 June 2006. Summary of changes for version 20060608: 12201 122021) ACPI CA Core Subsystem: 12203 12204Converted the locking mutex used for the ACPI hardware to a spinlock. 12205This 12206change should eliminate all problems caused by attempting to acquire a 12207semaphore at interrupt level, and it means that all ACPICA external 12208interfaces that directly access the ACPI hardware can be safely called 12209from 12210interrupt level. OSL code that implements the semaphore interfaces should 12211be 12212able to eliminate any workarounds for being called at interrupt level. 12213 12214Fixed a regression introduced in 20060526 where the ACPI device 12215initialization could be prematurely aborted with an AE_NOT_FOUND if a 12216device 12217did not have an optional _INI method. 12218 12219Fixed an IndexField issue where a write to the Data Register should be 12220limited in size to the AccessSize (width) of the IndexField itself. (BZ 12221433, 12222Fiodor Suietov) 12223 12224Fixed problem reports (Valery Podrezov) integrated: 12225- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 12226 12227Fixed problem reports (Fiodor Suietov) integrated: 12228- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 12229 12230Removed four global mutexes that were obsolete and were no longer being 12231used. 12232 12233Example Code and Data Size: These are the sizes for the OS-independent 12234acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12235debug version of the code includes the debug output trace mechanism and 12236has 12237a much larger code and data size. 12238 12239 Previous Release: 12240 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12241 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12242 Current Release: 12243 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12244 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12245 12246 122472) iASL Compiler/Disassembler and Tools: 12248 12249Fixed a fault when using -g option (get tables from registry) on Windows 12250machines. 12251 12252Fixed problem reports integrated: 12253- Generate error if CreateField NumBits parameter is zero. (BZ 405) 12254- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 12255Suietov) 12256- Global table revision override (-r) is ignored (BZ 413) 12257 12258---------------------------------------- 1225926 May 2006. Summary of changes for version 20060526: 12260 122611) ACPI CA Core Subsystem: 12262 12263Restructured, flattened, and simplified the internal interfaces for 12264namespace object evaluation - resulting in smaller code, less CPU stack 12265use, 12266and fewer interfaces. (With assistance from Mikhail Kouzmich) 12267 12268Fixed a problem with the CopyObject operator where the first parameter 12269was 12270not typed correctly for the parser, interpreter, compiler, and 12271disassembler. 12272Caused various errors and unexpected behavior. 12273 12274Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 12275produced incorrect results with some C compilers. Since the behavior of C 12276compilers when the shift value is larger than the datatype width is 12277apparently not well defined, the interpreter now detects this condition 12278and 12279simply returns zero as expected in all such cases. (BZ 395) 12280 12281Fixed problem reports (Valery Podrezov) integrated: 12282- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 12283- Allow interpreter to handle nested method declarations (BZ 5361) 12284 12285Fixed problem reports (Fiodor Suietov) integrated: 12286- AcpiTerminate doesn't free debug memory allocation list objects (BZ 12287355) 12288- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 12289356) 12290- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 12291- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 12292- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 12293- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 12294- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 12295- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 12296- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 12297365) 12298- Status of the Global Initialization Handler call not used (BZ 366) 12299- Incorrect object parameter to Global Initialization Handler (BZ 367) 12300 12301Example Code and Data Size: These are the sizes for the OS-independent 12302acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12303debug version of the code includes the debug output trace mechanism and 12304has 12305a much larger code and data size. 12306 12307 Previous Release: 12308 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12309 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12310 Current Release: 12311 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12312 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12313 12314 123152) iASL Compiler/Disassembler and Tools: 12316 12317Modified the parser to allow the names IO, DMA, and IRQ to be used as 12318namespace identifiers with no collision with existing resource descriptor 12319macro names. This provides compatibility with other ASL compilers and is 12320most useful for disassembly/recompilation of existing tables without 12321parse 12322errors. (With assistance from Thomas Renninger) 12323 12324Disassembler: fixed an incorrect disassembly problem with the 12325DataTableRegion and CopyObject operators. Fixed a possible fault during 12326disassembly of some Alias operators. 12327 12328---------------------------------------- 1232912 May 2006. Summary of changes for version 20060512: 12330 123311) ACPI CA Core Subsystem: 12332 12333Replaced the AcpiOsQueueForExecution interface with a new interface named 12334AcpiOsExecute. The major difference is that the new interface does not 12335have 12336a Priority parameter, this appeared to be useless and has been replaced 12337by 12338a 12339Type parameter. The Type tells the host what type of execution is being 12340requested, such as global lock handler, notify handler, GPE handler, etc. 12341This allows the host to queue and execute the request as appropriate for 12342the 12343request type, possibly using different work queues and different 12344priorities 12345for the various request types. This enables fixes for multithreading 12346deadlock problems such as BZ #5534, and will require changes to all 12347existing 12348OS interface layers. (Alexey Starikovskiy and Bob Moore) 12349 12350Fixed a possible memory leak associated with the support for the so- 12351called 12352"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 12353Suietov) 12354 12355Fixed a problem with the Load() operator where a table load from an 12356operation region could overwrite an internal table buffer by up to 7 12357bytes 12358and cause alignment faults on IPF systems. (With assistance from Luming 12359Yu) 12360 12361Example Code and Data Size: These are the sizes for the OS-independent 12362acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12363debug version of the code includes the debug output trace mechanism and 12364has 12365a much larger code and data size. 12366 12367 Previous Release: 12368 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12369 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12370 Current Release: 12371 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12372 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12373 12374 12375 123762) iASL Compiler/Disassembler and Tools: 12377 12378Disassembler: Implemented support to cross reference the internal 12379namespace 12380and automatically generate ASL External() statements for symbols not 12381defined 12382within the current table being disassembled. This will simplify the 12383disassembly and recompilation of interdependent tables such as SSDTs 12384since 12385these statements will no longer have to be added manually. 12386 12387Disassembler: Implemented experimental support to automatically detect 12388invocations of external control methods and generate appropriate 12389External() 12390statements. This is problematic because the AML cannot be correctly 12391parsed 12392until the number of arguments for each control method is known. 12393Currently, 12394standalone method invocations and invocations as the source operand of a 12395Store() statement are supported. 12396 12397Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 12398LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 12399LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 12400more readable and likely closer to the original ASL source. 12401 12402---------------------------------------- 1240321 April 2006. Summary of changes for version 20060421: 12404 124051) ACPI CA Core Subsystem: 12406 12407Removed a device initialization optimization introduced in 20051216 where 12408the _STA method was not run unless an _INI was also present for the same 12409device. This optimization could cause problems because it could allow 12410_INI 12411methods to be run within a not-present device subtree. (If a not-present 12412device had no _INI, _STA would not be run, the not-present status would 12413not 12414be discovered, and the children of the device would be incorrectly 12415traversed.) 12416 12417Implemented a new _STA optimization where namespace subtrees that do not 12418contain _INI are identified and ignored during device initialization. 12419Selectively running _STA can significantly improve boot time on large 12420machines (with assistance from Len Brown.) 12421 12422Implemented support for the device initialization case where the returned 12423_STA flags indicate a device not-present but functioning. In this case, 12424_INI 12425is not run, but the device children are examined for presence, as per the 12426ACPI specification. 12427 12428Implemented an additional change to the IndexField support in order to 12429conform to MS behavior. The value written to the Index Register is not 12430simply a byte offset, it is a byte offset in units of the access width of 12431the parent Index Field. (Fiodor Suietov) 12432 12433Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 12434interface is called during the creation of all AML operation regions, and 12435allows the host OS to exert control over what addresses it will allow the 12436AML code to access. Operation Regions whose addresses are disallowed will 12437cause a runtime exception when they are actually accessed (will not 12438affect 12439or abort table loading.) See oswinxf or osunixxf for an example 12440implementation. 12441 12442Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 12443interface allows the host OS to match the various "optional" 12444interface/behavior strings for the _OSI predefined control method as 12445appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 12446for an example implementation. 12447 12448Restructured and corrected various problems in the exception handling 12449code 12450paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 12451(with assistance from Takayoshi Kochi.) 12452 12453Modified the Linux source converter to ignore quoted string literals 12454while 12455converting identifiers from mixed to lower case. This will correct 12456problems 12457with the disassembler and other areas where such strings must not be 12458modified. 12459 12460The ACPI_FUNCTION_* macros no longer require quotes around the function 12461name. This allows the Linux source converter to convert the names, now 12462that 12463the converter ignores quoted strings. 12464 12465Example Code and Data Size: These are the sizes for the OS-independent 12466acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12467debug version of the code includes the debug output trace mechanism and 12468has 12469a much larger code and data size. 12470 12471 Previous Release: 12472 12473 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12474 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12475 Current Release: 12476 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12477 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12478 12479 124802) iASL Compiler/Disassembler and Tools: 12481 12482Implemented 3 new warnings for iASL, and implemented multiple warning 12483levels 12484(w2 flag). 12485 124861) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 12487not 12488WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 12489check for the possible timeout, a warning is issued. 12490 124912) Useless operators: If an ASL operator does not specify an optional 12492target 12493operand and it also does not use the function return value from the 12494operator, a warning is issued since the operator effectively does 12495nothing. 12496 124973) Unreferenced objects: If a namespace object is created, but never 12498referenced, a warning is issued. This is a warning level 2 since there 12499are 12500cases where this is ok, such as when a secondary table is loaded that 12501uses 12502the unreferenced objects. Even so, care is taken to only flag objects 12503that 12504don't look like they will ever be used. For example, the reserved methods 12505(starting with an underscore) are usually not referenced because it is 12506expected that the OS will invoke them. 12507 12508---------------------------------------- 1250931 March 2006. Summary of changes for version 20060331: 12510 125111) ACPI CA Core Subsystem: 12512 12513Implemented header file support for the following additional ACPI tables: 12514ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 12515support, 12516all current and known ACPI tables are now defined in the ACPICA headers 12517and 12518are available for use by device drivers and other software. 12519 12520Implemented support to allow tables that contain ACPI names with invalid 12521characters to be loaded. Previously, this would cause the table load to 12522fail, but since there are several known cases of such tables on existing 12523machines, this change was made to enable ACPI support for them. Also, 12524this 12525matches the behavior of the Microsoft ACPI implementation. 12526 12527Fixed a couple regressions introduced during the memory optimization in 12528the 1252920060317 release. The namespace node definition required additional 12530reorganization and an internal datatype that had been changed to 8-bit 12531was 12532restored to 32-bit. (Valery Podrezov) 12533 12534Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 12535could be passed through to AcpiOsReleaseObject which is unexpected. Such 12536null pointers are now trapped and ignored, matching the behavior of the 12537previous implementation before the deployment of AcpiOsReleaseObject. 12538(Valery Podrezov, Fiodor Suietov) 12539 12540Fixed a memory mapping leak during the deletion of a SystemMemory 12541operation 12542region where a cached memory mapping was not deleted. This became a 12543noticeable problem for operation regions that are defined within 12544frequently 12545used control methods. (Dana Meyers) 12546 12547Reorganized the ACPI table header files into two main files: one for the 12548ACPI tables consumed by the ACPICA core, and another for the 12549miscellaneous 12550ACPI tables that are consumed by the drivers and other software. The 12551various 12552FADT definitions were merged into one common section and three different 12553tables (ACPI 1.0, 1.0+, and 2.0) 12554 12555Example Code and Data Size: These are the sizes for the OS-independent 12556acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12557debug version of the code includes the debug output trace mechanism and 12558has 12559a much larger code and data size. 12560 12561 Previous Release: 12562 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12563 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12564 Current Release: 12565 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12566 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12567 12568 125692) iASL Compiler/Disassembler and Tools: 12570 12571Disassembler: Implemented support to decode and format all non-AML ACPI 12572tables (tables other than DSDTs and SSDTs.) This includes the new tables 12573added to the ACPICA headers, therefore all current and known ACPI tables 12574are 12575supported. 12576 12577Disassembler: The change to allow ACPI names with invalid characters also 12578enables the disassembly of such tables. Invalid characters within names 12579are 12580changed to '*' to make the name printable; the iASL compiler will still 12581generate an error for such names, however, since this is an invalid ACPI 12582character. 12583 12584Implemented an option for AcpiXtract (-a) to extract all tables found in 12585the 12586input file. The default invocation extracts only the DSDTs and SSDTs. 12587 12588Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 12589makefile for the AcpiXtract utility. 12590 12591---------------------------------------- 1259217 March 2006. Summary of changes for version 20060317: 12593 125941) ACPI CA Core Subsystem: 12595 12596Implemented the use of a cache object for all internal namespace nodes. 12597Since there are about 1000 static nodes in a typical system, this will 12598decrease memory use for cache implementations that minimize per- 12599allocation 12600overhead (such as a slab allocator.) 12601 12602Removed the reference count mechanism for internal namespace nodes, since 12603it 12604was deemed unnecessary. This reduces the size of each namespace node by 12605about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12606case, 12607and 32 bytes for the 64-bit case. 12608 12609Optimized several internal data structures to reduce object size on 64- 12610bit 12611platforms by packing data within the 64-bit alignment. This includes the 12612frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12613instances corresponding to the namespace objects. 12614 12615Added two new strings for the predefined _OSI method: "Windows 2001.1 12616SP1" 12617and "Windows 2006". 12618 12619Split the allocation tracking mechanism out to a separate file, from 12620utalloc.c to uttrack.c. This mechanism appears to be only useful for 12621application-level code. Kernels may wish to not include uttrack.c in 12622distributions. 12623 12624Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12625associated 12626code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12627macros.) 12628 12629Code and Data Size: These are the sizes for the acpica.lib produced by 12630the 12631Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12632ACPI 12633driver or OSPM code. The debug version of the code includes the debug 12634output 12635trace mechanism and has a much larger code and data size. Note that these 12636values will vary depending on the efficiency of the compiler and the 12637compiler options used during generation. 12638 12639 Previous Release: 12640 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12641 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12642 Current Release: 12643 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12644 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12645 12646 126472) iASL Compiler/Disassembler and Tools: 12648 12649Implemented an ANSI C version of the acpixtract utility. This version 12650will 12651automatically extract the DSDT and all SSDTs from the input acpidump text 12652file and dump the binary output to separate files. It can also display a 12653summary of the input file including the headers for each table found and 12654will extract any single ACPI table, with any signature. (See 12655source/tools/acpixtract) 12656 12657---------------------------------------- 1265810 March 2006. Summary of changes for version 20060310: 12659 126601) ACPI CA Core Subsystem: 12661 12662Tagged all external interfaces to the subsystem with the new 12663ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12664assist 12665kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12666macro. The default definition is NULL. 12667 12668Added the ACPI_THREAD_ID type for the return value from 12669AcpiOsGetThreadId. 12670This allows the host to define this as necessary to simplify kernel 12671integration. The default definition is ACPI_NATIVE_UINT. 12672 12673Fixed two interpreter problems related to error processing, the deletion 12674of 12675objects, and placing invalid pointers onto the internal operator result 12676stack. BZ 6028, 6151 (Valery Podrezov) 12677 12678Increased the reference count threshold where a warning is emitted for 12679large 12680reference counts in order to eliminate unnecessary warnings on systems 12681with 12682large namespaces (especially 64-bit.) Increased the value from 0x400 to 126830x800. 12684 12685Due to universal disagreement as to the meaning of the 'c' in the 12686calloc() 12687function, the ACPI_MEM_CALLOCATE macro has been renamed to 12688ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12689ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12690ACPI_FREE. 12691 12692Code and Data Size: These are the sizes for the acpica.lib produced by 12693the 12694Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12695ACPI 12696driver or OSPM code. The debug version of the code includes the debug 12697output 12698trace mechanism and has a much larger code and data size. Note that these 12699values will vary depending on the efficiency of the compiler and the 12700compiler options used during generation. 12701 12702 Previous Release: 12703 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12704 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12705 Current Release: 12706 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12707 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12708 12709 127102) iASL Compiler/Disassembler: 12711 12712Disassembler: implemented support for symbolic resource descriptor 12713references. If a CreateXxxxField operator references a fixed offset 12714within 12715a 12716resource descriptor, a name is assigned to the descriptor and the offset 12717is 12718translated to the appropriate resource tag and pathname. The addition of 12719this support brings the disassembled code very close to the original ASL 12720source code and helps eliminate run-time errors when the disassembled 12721code 12722is modified (and recompiled) in such a way as to invalidate the original 12723fixed offsets. 12724 12725Implemented support for a Descriptor Name as the last parameter to the 12726ASL 12727Register() macro. This parameter was inadvertently left out of the ACPI 12728specification, and will be added for ACPI 3.0b. 12729 12730Fixed a problem where the use of the "_OSI" string (versus the full path 12731"\_OSI") caused an internal compiler error. ("No back ptr to op") 12732 12733Fixed a problem with the error message that occurs when an invalid string 12734is 12735used for a _HID object (such as one with an embedded asterisk: 12736"*PNP010A".) 12737The correct message is now displayed. 12738 12739---------------------------------------- 1274017 February 2006. Summary of changes for version 20060217: 12741 127421) ACPI CA Core Subsystem: 12743 12744Implemented a change to the IndexField support to match the behavior of 12745the 12746Microsoft AML interpreter. The value written to the Index register is now 12747a 12748byte offset, no longer an index based upon the width of the Data 12749register. 12750This should fix IndexField problems seen on some machines where the Data 12751register is not exactly one byte wide. The ACPI specification will be 12752clarified on this point. 12753 12754Fixed a problem where several resource descriptor types could overrun the 12755internal descriptor buffer due to size miscalculation: VendorShort, 12756VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12757affect all platforms. 12758 12759Fixed a problem where individual resource descriptors were misaligned 12760within 12761the internal buffer, causing alignment faults on IA64 platforms. 12762 12763Code and Data Size: These are the sizes for the acpica.lib produced by 12764the 12765Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12766ACPI 12767driver or OSPM code. The debug version of the code includes the debug 12768output 12769trace mechanism and has a much larger code and data size. Note that these 12770values will vary depending on the efficiency of the compiler and the 12771compiler options used during generation. 12772 12773 Previous Release: 12774 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12775 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12776 Current Release: 12777 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12778 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12779 12780 127812) iASL Compiler/Disassembler: 12782 12783Implemented support for new reserved names: _WDG and _WED are Microsoft 12784extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12785defined method (Throttling Depth Limit.) 12786 12787Fixed a problem where a zero-length VendorShort or VendorLong resource 12788descriptor was incorrectly emitted as a descriptor of length one. 12789 12790---------------------------------------- 1279110 February 2006. Summary of changes for version 20060210: 12792 127931) ACPI CA Core Subsystem: 12794 12795Removed a couple of extraneous ACPI_ERROR messages that appeared during 12796normal execution. These became apparent after the conversion from 12797ACPI_DEBUG_PRINT. 12798 12799Fixed a problem where the CreateField operator could hang if the BitIndex 12800or 12801NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12802 12803Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12804failed with an exception. This also fixes a couple of related RefOf and 12805DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12806 12807Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12808of 12809AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12810BZ 128115480) 12812 12813Implemented a memory cleanup at the end of the execution of each 12814iteration 12815of an AML While() loop, preventing the accumulation of outstanding 12816objects. 12817(Valery Podrezov, BZ 5427) 12818 12819Eliminated a chunk of duplicate code in the object resolution code. 12820(Valery 12821Podrezov, BZ 5336) 12822 12823Fixed several warnings during the 64-bit code generation. 12824 12825The AcpiSrc source code conversion tool now inserts one line of 12826whitespace 12827after an if() statement that is followed immediately by a comment, 12828improving 12829readability of the Linux code. 12830 12831Code and Data Size: The current and previous library sizes for the core 12832subsystem are shown below. These are the code and data sizes for the 12833acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12834These 12835values do not include any ACPI driver or OSPM code. The debug version of 12836the 12837code includes the debug output trace mechanism and has a much larger code 12838and data size. Note that these values will vary depending on the 12839efficiency 12840of the compiler and the compiler options used during generation. 12841 12842 Previous Release: 12843 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12844 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12845 Current Release: 12846 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12847 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12848 12849 128502) iASL Compiler/Disassembler: 12851 12852Fixed a problem with the disassembly of a BankField operator with a 12853complex 12854expression for the BankValue parameter. 12855 12856---------------------------------------- 1285727 January 2006. Summary of changes for version 20060127: 12858 128591) ACPI CA Core Subsystem: 12860 12861Implemented support in the Resource Manager to allow unresolved 12862namestring 12863references within resource package objects for the _PRT method. This 12864support 12865is in addition to the previously implemented unresolved reference support 12866within the AML parser. If the interpreter slack mode is enabled, these 12867unresolved references will be passed through to the caller as a NULL 12868package 12869entry. 12870 12871Implemented and deployed new macros and functions for error and warning 12872messages across the subsystem. These macros are simpler and generate less 12873code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12874ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12875macros remain defined to allow ACPI drivers time to migrate to the new 12876macros. 12877 12878Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12879the 12880Acquire/Release Lock OSL interfaces. 12881 12882Fixed a problem where Alias ASL operators are sometimes not correctly 12883resolved, in both the interpreter and the iASL compiler. 12884 12885Fixed several problems with the implementation of the 12886ConcatenateResTemplate 12887ASL operator. As per the ACPI specification, zero length buffers are now 12888treated as a single EndTag. One-length buffers always cause a fatal 12889exception. Non-zero length buffers that do not end with a full 2-byte 12890EndTag 12891cause a fatal exception. 12892 12893Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12894interface. (With assistance from Thomas Renninger) 12895 12896Code and Data Size: The current and previous library sizes for the core 12897subsystem are shown below. These are the code and data sizes for the 12898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12899These 12900values do not include any ACPI driver or OSPM code. The debug version of 12901the 12902code includes the debug output trace mechanism and has a much larger code 12903and data size. Note that these values will vary depending on the 12904efficiency 12905of the compiler and the compiler options used during generation. 12906 12907 Previous Release: 12908 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12909 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12910 Current Release: 12911 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12912 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12913 12914 129152) iASL Compiler/Disassembler: 12916 12917Fixed an internal error that was generated for any forward references to 12918ASL 12919Alias objects. 12920 12921---------------------------------------- 1292213 January 2006. Summary of changes for version 20060113: 12923 129241) ACPI CA Core Subsystem: 12925 12926Added 2006 copyright to all module headers and signons. This affects 12927virtually every file in the ACPICA core subsystem, iASL compiler, and the 12928utilities. 12929 12930Enhanced the ACPICA error reporting in order to simplify user migration 12931to 12932the non-debug version of ACPICA. Replaced all instances of the 12933ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12934debug 12935levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12936respectively. This preserves all error and warning messages in the non- 12937debug 12938version of the ACPICA code (this has been referred to as the "debug lite" 12939option.) Over 200 cases were converted to create a total of over 380 12940error/warning messages across the ACPICA code. This increases the code 12941and 12942data size of the default non-debug version of the code somewhat (about 1294313K), 12944but all error/warning reporting may be disabled if desired (and code 12945eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12946configuration option. The size of the debug version of ACPICA remains 12947about 12948the same. 12949 12950Fixed a memory leak within the AML Debugger "Set" command. One object was 12951not properly deleted for every successful invocation of the command. 12952 12953Code and Data Size: The current and previous library sizes for the core 12954subsystem are shown below. These are the code and data sizes for the 12955acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12956These 12957values do not include any ACPI driver or OSPM code. The debug version of 12958the 12959code includes the debug output trace mechanism and has a much larger code 12960and data size. Note that these values will vary depending on the 12961efficiency 12962of the compiler and the compiler options used during generation. 12963 12964 Previous Release: 12965 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12966 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12967 Current Release: 12968 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12969 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12970 12971 129722) iASL Compiler/Disassembler: 12973 12974The compiler now officially supports the ACPI 3.0a specification that was 12975released on December 30, 2005. (Specification is available at 12976www.acpi.info) 12977 12978---------------------------------------- 1297916 December 2005. Summary of changes for version 20051216: 12980 129811) ACPI CA Core Subsystem: 12982 12983Implemented optional support to allow unresolved names within ASL Package 12984objects. A null object is inserted in the package when a named reference 12985cannot be located in the current namespace. Enabled via the interpreter 12986slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12987machines 12988that contain such code. 12989 12990Implemented an optimization to the initialization sequence that can 12991improve 12992boot time. During ACPI device initialization, the _STA method is now run 12993if 12994and only if the _INI method exists. The _STA method is used to determine 12995if 12996the device is present; An _INI can only be run if _STA returns present, 12997but 12998it is a waste of time to run the _STA method if the _INI does not exist. 12999(Prototype and assistance from Dong Wei) 13000 13001Implemented use of the C99 uintptr_t for the pointer casting macros if it 13002is 13003available in the current compiler. Otherwise, the default (void *) cast 13004is 13005used as before. 13006 13007Fixed some possible memory leaks found within the execution path of the 13008Break, Continue, If, and CreateField operators. (Valery Podrezov) 13009 13010Fixed a problem introduced in the 20051202 release where an exception is 13011generated during method execution if a control method attempts to declare 13012another method. 13013 13014Moved resource descriptor string constants that are used by both the AML 13015disassembler and AML debugger to the common utilities directory so that 13016these components are independent. 13017 13018Implemented support in the AcpiExec utility (-e switch) to globally 13019ignore 13020exceptions during control method execution (method is not aborted.) 13021 13022Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 13023generation. 13024 13025Code and Data Size: The current and previous library sizes for the core 13026subsystem are shown below. These are the code and data sizes for the 13027acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13028These 13029values do not include any ACPI driver or OSPM code. The debug version of 13030the 13031code includes the debug output trace mechanism and has a much larger code 13032and data size. Note that these values will vary depending on the 13033efficiency 13034of the compiler and the compiler options used during generation. 13035 13036 Previous Release: 13037 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13038 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 13039 Current Release: 13040 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 13041 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 13042 13043 130442) iASL Compiler/Disassembler: 13045 13046Fixed a problem where a CPU stack overflow fault could occur if a 13047recursive 13048method call was made from within a Return statement. 13049 13050---------------------------------------- 1305102 December 2005. Summary of changes for version 20051202: 13052 130531) ACPI CA Core Subsystem: 13054 13055Modified the parsing of control methods to no longer create namespace 13056objects during the first pass of the parse. Objects are now created only 13057during the execute phase, at the moment the namespace creation operator 13058is 13059encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 13060This 13061should eliminate ALREADY_EXISTS exceptions seen on some machines where 13062reentrant control methods are protected by an AML mutex. The mutex will 13063now 13064correctly block multiple threads from attempting to create the same 13065object 13066more than once. 13067 13068Increased the number of available Owner Ids for namespace object tracking 13069from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 13070on 13071some machines with a large number of ACPI tables (either static or 13072dynamic). 13073 13074Fixed a problem with the AcpiExec utility where a fault could occur when 13075the 13076-b switch (batch mode) is used. 13077 13078Enhanced the namespace dump routine to output the owner ID for each 13079namespace object. 13080 13081Code and Data Size: The current and previous library sizes for the core 13082subsystem are shown below. These are the code and data sizes for the 13083acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13084These 13085values do not include any ACPI driver or OSPM code. The debug version of 13086the 13087code includes the debug output trace mechanism and has a much larger code 13088and data size. Note that these values will vary depending on the 13089efficiency 13090of the compiler and the compiler options used during generation. 13091 13092 Previous Release: 13093 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13094 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13095 Current Release: 13096 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13097 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 13098 13099 131002) iASL Compiler/Disassembler: 13101 13102Fixed a parse error during compilation of certain Switch/Case constructs. 13103To 13104simplify the parse, the grammar now allows for multiple Default 13105statements 13106and this error is now detected and flagged during the analysis phase. 13107 13108Disassembler: The disassembly now includes the contents of the original 13109table header within a comment at the start of the file. This includes the 13110name and version of the original ASL compiler. 13111 13112---------------------------------------- 1311317 November 2005. Summary of changes for version 20051117: 13114 131151) ACPI CA Core Subsystem: 13116 13117Fixed a problem in the AML parser where the method thread count could be 13118decremented below zero if any errors occurred during the method parse 13119phase. 13120This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 13121machines. 13122This also fixed a related regression with the mechanism that detects and 13123corrects methods that cannot properly handle reentrancy (related to the 13124deployment of the new OwnerId mechanism.) 13125 13126Eliminated the pre-parsing of control methods (to detect errors) during 13127table load. Related to the problem above, this was causing unwind issues 13128if 13129any errors occurred during the parse, and it seemed to be overkill. A 13130table 13131load should not be aborted if there are problems with any single control 13132method, thus rendering this feature rather pointless. 13133 13134Fixed a problem with the new table-driven resource manager where an 13135internal 13136buffer overflow could occur for small resource templates. 13137 13138Implemented a new external interface, AcpiGetVendorResource. This 13139interface 13140will find and return a vendor-defined resource descriptor within a _CRS 13141or 13142_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 13143Helgaas. 13144 13145Removed the length limit (200) on string objects as per the upcoming ACPI 131463.0A specification. This affects the following areas of the interpreter: 131471) 13148any implicit conversion of a Buffer to a String, 2) a String object 13149result 13150of the ASL Concatenate operator, 3) the String object result of the ASL 13151ToString operator. 13152 13153Fixed a problem in the Windows OS interface layer (OSL) where a 13154WAIT_FOREVER 13155on a semaphore object would incorrectly timeout. This allows the 13156multithreading features of the AcpiExec utility to work properly under 13157Windows. 13158 13159Updated the Linux makefiles for the iASL compiler and AcpiExec to include 13160the recently added file named "utresrc.c". 13161 13162Code and Data Size: The current and previous library sizes for the core 13163subsystem are shown below. These are the code and data sizes for the 13164acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13165These 13166values do not include any ACPI driver or OSPM code. The debug version of 13167the 13168code includes the debug output trace mechanism and has a much larger code 13169and data size. Note that these values will vary depending on the 13170efficiency 13171of the compiler and the compiler options used during generation. 13172 13173 Previous Release: 13174 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13175 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13176 Current Release: 13177 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13178 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13179 13180 131812) iASL Compiler/Disassembler: 13182 13183Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 13184specification. For the iASL compiler, this means that string literals 13185within 13186the source ASL can be of any length. 13187 13188Enhanced the listing output to dump the AML code for resource descriptors 13189immediately after the ASL code for each descriptor, instead of in a block 13190at 13191the end of the entire resource template. 13192 13193Enhanced the compiler debug output to dump the entire original parse tree 13194constructed during the parse phase, before any transforms are applied to 13195the 13196tree. The transformed tree is dumped also. 13197 13198---------------------------------------- 1319902 November 2005. Summary of changes for version 20051102: 13200 132011) ACPI CA Core Subsystem: 13202 13203Modified the subsystem initialization sequence to improve GPE support. 13204The 13205GPE initialization has been split into two parts in order to defer 13206execution 13207of the _PRW methods (Power Resources for Wake) until after the hardware 13208is 13209fully initialized and the SCI handler is installed. This allows the _PRW 13210methods to access fields protected by the Global Lock. This will fix 13211systems 13212where a NO_GLOBAL_LOCK exception has been seen during initialization. 13213 13214Converted the ACPI internal object disassemble and display code within 13215the 13216AML debugger to fully table-driven operation, reducing code size and 13217increasing maintainability. 13218 13219Fixed a regression with the ConcatenateResTemplate() ASL operator 13220introduced 13221in the 20051021 release. 13222 13223Implemented support for "local" internal ACPI object types within the 13224debugger "Object" command and the AcpiWalkNamespace external interfaces. 13225These local types include RegionFields, BankFields, IndexFields, Alias, 13226and 13227reference objects. 13228 13229Moved common AML resource handling code into a new file, "utresrc.c". 13230This 13231code is shared by both the Resource Manager and the AML Debugger. 13232 13233Code and Data Size: The current and previous library sizes for the core 13234subsystem are shown below. These are the code and data sizes for the 13235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13236These 13237values do not include any ACPI driver or OSPM code. The debug version of 13238the 13239code includes the debug output trace mechanism and has a much larger code 13240and data size. Note that these values will vary depending on the 13241efficiency 13242of the compiler and the compiler options used during generation. 13243 13244 Previous Release: 13245 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13246 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13247 Current Release: 13248 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13249 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13250 13251 132522) iASL Compiler/Disassembler: 13253 13254Fixed a problem with very large initializer lists (more than 4000 13255elements) 13256for both Buffer and Package objects where the parse stack could overflow. 13257 13258Enhanced the pre-compile source code scan for non-ASCII characters to 13259ignore 13260characters within comment fields. The scan is now always performed and is 13261no 13262longer optional, detecting invalid characters within a source file 13263immediately rather than during the parse phase or later. 13264 13265Enhanced the ASL grammar definition to force early reductions on all 13266list- 13267style grammar elements so that the overall parse stack usage is greatly 13268reduced. This should improve performance and reduce the possibility of 13269parse 13270stack overflow. 13271 13272Eliminated all reduce/reduce conflicts in the iASL parser generation. 13273Also, 13274with the addition of a %expected statement, the compiler generates from 13275source with no warnings. 13276 13277Fixed a possible segment fault in the disassembler if the input filename 13278does not contain a "dot" extension (Thomas Renninger). 13279 13280---------------------------------------- 1328121 October 2005. Summary of changes for version 20051021: 13282 132831) ACPI CA Core Subsystem: 13284 13285Implemented support for the EM64T and other x86-64 processors. This 13286essentially entails recognizing that these processors support non-aligned 13287memory transfers. Previously, all 64-bit processors were assumed to lack 13288hardware support for non-aligned transfers. 13289 13290Completed conversion of the Resource Manager to nearly full table-driven 13291operation. Specifically, the resource conversion code (convert AML to 13292internal format and the reverse) and the debug code to dump internal 13293resource descriptors are fully table-driven, reducing code and data size 13294and 13295improving maintainability. 13296 13297The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 13298word 13299on 64-bit processors instead of a fixed 32-bit word. (With assistance 13300from 13301Alexey Starikovskiy) 13302 13303Implemented support within the resource conversion code for the Type- 13304Specific byte within the various ACPI 3.0 *WordSpace macros. 13305 13306Fixed some issues within the resource conversion code for the type- 13307specific 13308flags for both Memory and I/O address resource descriptors. For Memory, 13309implemented support for the MTP and TTP flags. For I/O, split the TRS and 13310TTP flags into two separate fields. 13311 13312Code and Data Size: The current and previous library sizes for the core 13313subsystem are shown below. These are the code and data sizes for the 13314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13315These 13316values do not include any ACPI driver or OSPM code. The debug version of 13317the 13318code includes the debug output trace mechanism and has a much larger code 13319and data size. Note that these values will vary depending on the 13320efficiency 13321of the compiler and the compiler options used during generation. 13322 13323 Previous Release: 13324 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13325 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13326 Current Release: 13327 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13328 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13329 13330 13331 133322) iASL Compiler/Disassembler: 13333 13334Relaxed a compiler restriction that disallowed a ResourceIndex byte if 13335the 13336corresponding ResourceSource string was not also present in a resource 13337descriptor declaration. This restriction caused problems with existing 13338AML/ASL code that includes the Index byte without the string. When such 13339AML 13340was disassembled, it could not be compiled without modification. Further, 13341the modified code created a resource template with a different size than 13342the 13343original, breaking code that used fixed offsets into the resource 13344template 13345buffer. 13346 13347Removed a recent feature of the disassembler to ignore a lone 13348ResourceIndex 13349byte. This byte is now emitted if present so that the exact AML can be 13350reproduced when the disassembled code is recompiled. 13351 13352Improved comments and text alignment for the resource descriptor code 13353emitted by the disassembler. 13354 13355Implemented disassembler support for the ACPI 3.0 AccessSize field within 13356a 13357Register() resource descriptor. 13358 13359---------------------------------------- 1336030 September 2005. Summary of changes for version 20050930: 13361 133621) ACPI CA Core Subsystem: 13363 13364Completed a major overhaul of the Resource Manager code - specifically, 13365optimizations in the area of the AML/internal resource conversion code. 13366The 13367code has been optimized to simplify and eliminate duplicated code, CPU 13368stack 13369use has been decreased by optimizing function parameters and local 13370variables, and naming conventions across the manager have been 13371standardized 13372for clarity and ease of maintenance (this includes function, parameter, 13373variable, and struct/typedef names.) The update may force changes in some 13374driver code, depending on how resources are handled by the host OS. 13375 13376All Resource Manager dispatch and information tables have been moved to a 13377single location for clarity and ease of maintenance. One new file was 13378created, named "rsinfo.c". 13379 13380The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 13381guarantee that the argument is not evaluated twice, making them less 13382prone 13383to macro side-effects. However, since there exists the possibility of 13384additional stack use if a particular compiler cannot optimize them (such 13385as 13386in the debug generation case), the original macros are optionally 13387available. 13388Note that some invocations of the return_VALUE macro may now cause size 13389mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 13390to 13391eliminate these. (From Randy Dunlap) 13392 13393Implemented a new mechanism to enable debug tracing for individual 13394control 13395methods. A new external interface, AcpiDebugTrace, is provided to enable 13396this mechanism. The intent is to allow the host OS to easily enable and 13397disable tracing for problematic control methods. This interface can be 13398easily exposed to a user or debugger interface if desired. See the file 13399psxface.c for details. 13400 13401AcpiUtCallocate will now return a valid pointer if a length of zero is 13402specified - a length of one is used and a warning is issued. This matches 13403the behavior of AcpiUtAllocate. 13404 13405Code and Data Size: The current and previous library sizes for the core 13406subsystem are shown below. These are the code and data sizes for the 13407acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13408These 13409values do not include any ACPI driver or OSPM code. The debug version of 13410the 13411code includes the debug output trace mechanism and has a much larger code 13412and data size. Note that these values will vary depending on the 13413efficiency 13414of the compiler and the compiler options used during generation. 13415 13416 Previous Release: 13417 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13418 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13419 Current Release: 13420 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13421 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13422 13423 134242) iASL Compiler/Disassembler: 13425 13426A remark is issued if the effective compile-time length of a package or 13427buffer is zero. Previously, this was a warning. 13428 13429---------------------------------------- 1343016 September 2005. Summary of changes for version 20050916: 13431 134321) ACPI CA Core Subsystem: 13433 13434Fixed a problem within the Resource Manager where support for the Generic 13435Register descriptor was not fully implemented. This descriptor is now 13436fully 13437recognized, parsed, disassembled, and displayed. 13438 13439Completely restructured the Resource Manager code to utilize table-driven 13440dispatch and lookup, eliminating many of the large switch() statements. 13441This 13442reduces overall subsystem code size and code complexity. Affects the 13443resource parsing and construction, disassembly, and debug dump output. 13444 13445Cleaned up and restructured the debug dump output for all resource 13446descriptors. Improved readability of the output and reduced code size. 13447 13448Fixed a problem where changes to internal data structures caused the 13449optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 13450 13451Code and Data Size: The current and previous library sizes for the core 13452subsystem are shown below. These are the code and data sizes for the 13453acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13454These 13455values do not include any ACPI driver or OSPM code. The debug version of 13456the 13457code includes the debug output trace mechanism and has a much larger code 13458and data size. Note that these values will vary depending on the 13459efficiency 13460of the compiler and the compiler options used during generation. 13461 13462 Previous Release: 13463 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13464 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13465 Current Release: 13466 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13467 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13468 13469 134702) iASL Compiler/Disassembler: 13471 13472Updated the disassembler to automatically insert an EndDependentFn() 13473macro 13474into the ASL stream if this macro is missing in the original AML code, 13475simplifying compilation of the resulting ASL module. 13476 13477Fixed a problem in the disassembler where a disassembled ResourceSource 13478string (within a large resource descriptor) was not surrounded by quotes 13479and 13480not followed by a comma, causing errors when the resulting ASL module was 13481compiled. Also, escape sequences within a ResourceSource string are now 13482handled correctly (especially "\\") 13483 13484---------------------------------------- 1348502 September 2005. Summary of changes for version 20050902: 13486 134871) ACPI CA Core Subsystem: 13488 13489Fixed a problem with the internal Owner ID allocation and deallocation 13490mechanisms for control method execution and recursive method invocation. 13491This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 13492messages seen on some systems. Recursive method invocation depth is 13493currently limited to 255. (Alexey Starikovskiy) 13494 13495Completely eliminated all vestiges of support for the "module-level 13496executable code" until this support is fully implemented and debugged. 13497This 13498should eliminate the NO_RETURN_VALUE exceptions seen during table load on 13499some systems that invoke this support. 13500 13501Fixed a problem within the resource manager code where the transaction 13502flags 13503for a 64-bit address descriptor were handled incorrectly in the type- 13504specific flag byte. 13505 13506Consolidated duplicate code within the address descriptor resource 13507manager 13508code, reducing overall subsystem code size. 13509 13510Fixed a fault when using the AML debugger "disassemble" command to 13511disassemble individual control methods. 13512 13513Removed references to the "release_current" directory within the Unix 13514release package. 13515 13516Code and Data Size: The current and previous core subsystem library sizes 13517are shown below. These are the code and data sizes for the acpica.lib 13518produced by the Microsoft Visual C++ 6.0 compiler. These values do not 13519include any ACPI driver or OSPM code. The debug version of the code 13520includes 13521the debug output trace mechanism and has a much larger code and data 13522size. 13523Note that these values will vary depending on the efficiency of the 13524compiler 13525and the compiler options used during generation. 13526 13527 Previous Release: 13528 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13529 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13530 Current Release: 13531 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13532 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13533 13534 135352) iASL Compiler/Disassembler: 13536 13537Implemented an error check for illegal duplicate values in the interrupt 13538and 13539dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 13540Interrupt(). 13541 13542Implemented error checking for the Irq() and IrqNoFlags() macros to 13543detect 13544too many values in the interrupt list (16 max) and invalid values in the 13545list (range 0 - 15) 13546 13547The maximum length string literal within an ASL file is now restricted to 13548200 characters as per the ACPI specification. 13549 13550Fixed a fault when using the -ln option (generate namespace listing). 13551 13552Implemented an error check to determine if a DescriptorName within a 13553resource descriptor has already been used within the current scope. 13554 13555---------------------------------------- 1355615 August 2005. Summary of changes for version 20050815: 13557 135581) ACPI CA Core Subsystem: 13559 13560Implemented a full bytewise compare to determine if a table load request 13561is 13562attempting to load a duplicate table. The compare is performed if the 13563table 13564signatures and table lengths match. This will allow different tables with 13565the same OEM Table ID and revision to be loaded - probably against the 13566ACPI 13567specification, but discovered in the field nonetheless. 13568 13569Added the changes.txt logfile to each of the zipped release packages. 13570 13571Code and Data Size: Current and previous core subsystem library sizes are 13572shown below. These are the code and data sizes for the acpica.lib 13573produced 13574by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13575any ACPI driver or OSPM code. The debug version of the code includes the 13576debug output trace mechanism and has a much larger code and data size. 13577Note 13578that these values will vary depending on the efficiency of the compiler 13579and 13580the compiler options used during generation. 13581 13582 Previous Release: 13583 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13584 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13585 Current Release: 13586 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13587 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13588 13589 135902) iASL Compiler/Disassembler: 13591 13592Fixed a problem where incorrect AML code could be generated for Package 13593objects if optimization is disabled (via the -oa switch). 13594 13595Fixed a problem with where incorrect AML code is generated for variable- 13596length packages when the package length is not specified and the number 13597of 13598initializer values is greater than 255. 13599 13600 13601---------------------------------------- 1360229 July 2005. Summary of changes for version 20050729: 13603 136041) ACPI CA Core Subsystem: 13605 13606Implemented support to ignore an attempt to install/load a particular 13607ACPI 13608table more than once. Apparently there exists BIOS code that repeatedly 13609attempts to load the same SSDT upon certain events. With assistance from 13610Venkatesh Pallipadi. 13611 13612Restructured the main interface to the AML parser in order to correctly 13613handle all exceptional conditions. This will prevent leakage of the 13614OwnerId 13615resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13616some 13617machines. With assistance from Alexey Starikovskiy. 13618 13619Support for "module level code" has been disabled in this version due to 13620a 13621number of issues that have appeared on various machines. The support can 13622be 13623enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13624compilation. When the issues are fully resolved, the code will be enabled 13625by 13626default again. 13627 13628Modified the internal functions for debug print support to define the 13629FunctionName parameter as a (const char *) for compatibility with 13630compiler 13631built-in macros such as __FUNCTION__, etc. 13632 13633Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13634 13635Implemented support to display an object count summary for the AML 13636Debugger 13637commands Object and Methods. 13638 13639Code and Data Size: Current and previous core subsystem library sizes are 13640shown below. These are the code and data sizes for the acpica.lib 13641produced 13642by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13643any ACPI driver or OSPM code. The debug version of the code includes the 13644debug output trace mechanism and has a much larger code and data size. 13645Note 13646that these values will vary depending on the efficiency of the compiler 13647and 13648the compiler options used during generation. 13649 13650 Previous Release: 13651 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13652 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13653 Current Release: 13654 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13655 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13656 13657 136582) iASL Compiler/Disassembler: 13659 13660Fixed a regression that appeared in the 20050708 version of the compiler 13661where an error message was inadvertently emitted for invocations of the 13662_OSI 13663reserved control method. 13664 13665---------------------------------------- 1366608 July 2005. Summary of changes for version 20050708: 13667 136681) ACPI CA Core Subsystem: 13669 13670The use of the CPU stack in the debug version of the subsystem has been 13671considerably reduced. Previously, a debug structure was declared in every 13672function that used the debug macros. This structure has been removed in 13673favor of declaring the individual elements as parameters to the debug 13674functions. This reduces the cumulative stack use during nested execution 13675of 13676ACPI function calls at the cost of a small increase in the code size of 13677the 13678debug version of the subsystem. With assistance from Alexey Starikovskiy 13679and 13680Len Brown. 13681 13682Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13683headers to define a macro that will return the current function name at 13684runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13685by 13686the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13687compiler-dependent header, the function name is saved on the CPU stack 13688(one 13689pointer per function.) This mechanism is used because apparently there 13690exists no standard ANSI-C defined macro that that returns the function 13691name. 13692 13693Redesigned and reimplemented the "Owner ID" mechanism used to track 13694namespace objects created/deleted by ACPI tables and control method 13695execution. A bitmap is now used to allocate and free the IDs, thus 13696solving 13697the wraparound problem present in the previous implementation. The size 13698of 13699the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13700Starikovskiy). 13701 13702Removed the UINT32_BIT and UINT16_BIT types that were used for the 13703bitfield 13704flag definitions within the headers for the predefined ACPI tables. These 13705have been replaced by UINT8_BIT in order to increase the code portability 13706of 13707the subsystem. If the use of UINT8 remains a problem, we may be forced to 13708eliminate bitfields entirely because of a lack of portability. 13709 13710Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13711This 13712is a frequently used function and this improvement increases the 13713performance 13714of the entire subsystem (Alexey Starikovskiy). 13715 13716Fixed several possible memory leaks and the inverse - premature object 13717deletion (Alexey Starikovskiy). 13718 13719Code and Data Size: Current and previous core subsystem library sizes are 13720shown below. These are the code and data sizes for the acpica.lib 13721produced 13722by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13723any ACPI driver or OSPM code. The debug version of the code includes the 13724debug output trace mechanism and has a much larger code and data size. 13725Note 13726that these values will vary depending on the efficiency of the compiler 13727and 13728the compiler options used during generation. 13729 13730 Previous Release: 13731 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13732 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13733 Current Release: 13734 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13735 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13736 13737---------------------------------------- 1373824 June 2005. Summary of changes for version 20050624: 13739 137401) ACPI CA Core Subsystem: 13741 13742Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13743the host-defined cache object. This allows the OSL implementation to 13744define 13745and type this object in any manner desired, simplifying the OSL 13746implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13747Linux, and should be defined in the OS-specific header file for other 13748operating systems as required. 13749 13750Changed the interface to AcpiOsAcquireObject to directly return the 13751requested object as the function return (instead of ACPI_STATUS.) This 13752change was made for performance reasons, since this is the purpose of the 13753interface in the first place. AcpiOsAcquireObject is now similar to the 13754AcpiOsAllocate interface. 13755 13756Implemented a new AML debugger command named Businfo. This command 13757displays 13758information about all devices that have an associate _PRT object. The 13759_ADR, 13760_HID, _UID, and _CID are displayed for these devices. 13761 13762Modified the initialization sequence in AcpiInitializeSubsystem to call 13763the 13764OSL interface AcpiOslInitialize first, before any local initialization. 13765This 13766change was required because the global initialization now calls OSL 13767interfaces. 13768 13769Enhanced the Dump command to display the entire contents of Package 13770objects 13771(including all sub-objects and their values.) 13772 13773Restructured the code base to split some files because of size and/or 13774because the code logically belonged in a separate file. New files are 13775listed 13776below. All makefiles and project files included in the ACPI CA release 13777have 13778been updated. 13779 utilities/utcache.c /* Local cache interfaces */ 13780 utilities/utmutex.c /* Local mutex support */ 13781 utilities/utstate.c /* State object support */ 13782 interpreter/parser/psloop.c /* Main AML parse loop */ 13783 13784Code and Data Size: Current and previous core subsystem library sizes are 13785shown below. These are the code and data sizes for the acpica.lib 13786produced 13787by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13788any ACPI driver or OSPM code. The debug version of the code includes the 13789debug output trace mechanism and has a much larger code and data size. 13790Note 13791that these values will vary depending on the efficiency of the compiler 13792and 13793the compiler options used during generation. 13794 13795 Previous Release: 13796 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13797 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13798 Current Release: 13799 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13800 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13801 13802 138032) iASL Compiler/Disassembler: 13804 13805Fixed a regression introduced in version 20050513 where the use of a 13806Package 13807object within a Case() statement caused a compile time exception. The 13808original behavior has been restored (a Match() operator is emitted.) 13809 13810---------------------------------------- 1381117 June 2005. Summary of changes for version 20050617: 13812 138131) ACPI CA Core Subsystem: 13814 13815Moved the object cache operations into the OS interface layer (OSL) to 13816allow 13817the host OS to handle these operations if desired (for example, the Linux 13818OSL will invoke the slab allocator). This support is optional; the 13819compile 13820time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13821cache 13822code in the ACPI CA core. The new OSL interfaces are shown below. See 13823utalloc.c for an example implementation, and acpiosxf.h for the exact 13824interface definitions. With assistance from Alexey Starikovskiy. 13825 AcpiOsCreateCache 13826 AcpiOsDeleteCache 13827 AcpiOsPurgeCache 13828 AcpiOsAcquireObject 13829 AcpiOsReleaseObject 13830 13831Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13832return 13833and restore a flags parameter. This fits better with many OS lock models. 13834Note: the current execution state (interrupt handler or not) is no longer 13835passed to these interfaces. If necessary, the OSL must determine this 13836state 13837by itself, a simple and fast operation. With assistance from Alexey 13838Starikovskiy. 13839 13840Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13841present if the revision of the RSDP was 2 or greater. According to the 13842ACPI 13843specification, the XSDT is optional in all cases, and the table manager 13844therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13845Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13846contain 13847only the RSDT. 13848 13849Fixed an interpreter problem with the Mid() operator in the case of an 13850input 13851string where the resulting output string is of zero length. It now 13852correctly 13853returns a valid, null terminated string object instead of a string object 13854with a null pointer. 13855 13856Fixed a problem with the control method argument handling to allow a 13857store 13858to an Arg object that already contains an object of type Device. The 13859Device 13860object is now correctly overwritten. Previously, an error was returned. 13861 13862 13863Enhanced the debugger Find command to emit object values in addition to 13864the 13865found object pathnames. The output format is the same as the dump 13866namespace 13867command. 13868 13869Enhanced the debugger Set command. It now has the ability to set the 13870value 13871of any Named integer object in the namespace (Previously, only method 13872locals 13873and args could be set.) 13874 13875Code and Data Size: Current and previous core subsystem library sizes are 13876shown below. These are the code and data sizes for the acpica.lib 13877produced 13878by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13879any ACPI driver or OSPM code. The debug version of the code includes the 13880debug output trace mechanism and has a much larger code and data size. 13881Note 13882that these values will vary depending on the efficiency of the compiler 13883and 13884the compiler options used during generation. 13885 13886 Previous Release: 13887 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13888 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13889 Current Release: 13890 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13891 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13892 13893 138942) iASL Compiler/Disassembler: 13895 13896Fixed a regression in the disassembler where if/else/while constructs 13897were 13898output incorrectly. This problem was introduced in the previous release 13899(20050526). This problem also affected the single-step disassembly in the 13900debugger. 13901 13902Fixed a problem where compiling the reserved _OSI method would randomly 13903(but 13904rarely) produce compile errors. 13905 13906Enhanced the disassembler to emit compilable code in the face of 13907incorrect 13908AML resource descriptors. If the optional ResourceSourceIndex is present, 13909but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13910disassembly. Otherwise, the resulting code cannot be compiled without 13911errors. 13912 13913---------------------------------------- 1391426 May 2005. Summary of changes for version 20050526: 13915 139161) ACPI CA Core Subsystem: 13917 13918Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13919the module level (not within a control method.) These opcodes are 13920executed 13921exactly once at the time the table is loaded. This type of code was legal 13922up 13923until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13924in 13925order to provide backwards compatibility with earlier BIOS 13926implementations. 13927This eliminates the "Encountered executable code at module level" warning 13928that was previously generated upon detection of such code. 13929 13930Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13931inadvertently be generated during the lookup of namespace objects in the 13932second pass parse of ACPI tables and control methods. It appears that 13933this 13934problem could occur during the resolution of forward references to 13935namespace 13936objects. 13937 13938Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13939corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13940allows the deadlock detection debug code to be compiled out in the normal 13941case, improving mutex performance (and overall subsystem performance) 13942considerably. 13943 13944Implemented a handful of miscellaneous fixes for possible memory leaks on 13945error conditions and error handling control paths. These fixes were 13946suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13947 13948Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13949(tbxfroot.c) 13950to prevent a fault in this error case. 13951 13952Code and Data Size: Current and previous core subsystem library sizes are 13953shown below. These are the code and data sizes for the acpica.lib 13954produced 13955by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13956any ACPI driver or OSPM code. The debug version of the code includes the 13957debug output trace mechanism and has a much larger code and data size. 13958Note 13959that these values will vary depending on the efficiency of the compiler 13960and 13961the compiler options used during generation. 13962 13963 Previous Release: 13964 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13965 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13966 Current Release: 13967 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13968 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13969 13970 139712) iASL Compiler/Disassembler: 13972 13973Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13974the module level (not within a control method.) These operators will be 13975executed once at the time the table is loaded. This type of code was 13976legal 13977up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13978compiler in order to provide backwards compatibility with earlier BIOS 13979ASL 13980code. 13981 13982The ACPI integer width (specified via the table revision ID or the -r 13983override, 32 or 64 bits) is now used internally during compile-time 13984constant 13985folding to ensure that constants are truncated to 32 bits if necessary. 13986Previously, the revision ID value was only emitted in the AML table 13987header. 13988 13989An error message is now generated for the Mutex and Method operators if 13990the 13991SyncLevel parameter is outside the legal range of 0 through 15. 13992 13993Fixed a problem with the Method operator ParameterTypes list handling 13994(ACPI 139953.0). Previously, more than 2 types or 2 arguments generated a syntax 13996error. 13997The actual underlying implementation of method argument typechecking is 13998still under development, however. 13999 14000---------------------------------------- 1400113 May 2005. Summary of changes for version 20050513: 14002 140031) ACPI CA Core Subsystem: 14004 14005Implemented support for PCI Express root bridges -- added support for 14006device 14007PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 14008 14009The interpreter now automatically truncates incoming 64-bit constants to 1401032 14011bits if currently executing out of a 32-bit ACPI table (Revision < 2). 14012This 14013also affects the iASL compiler constant folding. (Note: as per below, the 14014iASL compiler no longer allows 64-bit constants within 32-bit tables.) 14015 14016Fixed a problem where string and buffer objects with "static" pointers 14017(pointers to initialization data within an ACPI table) were not handled 14018consistently. The internal object copy operation now always copies the 14019data 14020to a newly allocated buffer, regardless of whether the source object is 14021static or not. 14022 14023Fixed a problem with the FromBCD operator where an implicit result 14024conversion was improperly performed while storing the result to the 14025target 14026operand. Since this is an "explicit conversion" operator, the implicit 14027conversion should never be performed on the output. 14028 14029Fixed a problem with the CopyObject operator where a copy to an existing 14030named object did not always completely overwrite the existing object 14031stored 14032at name. Specifically, a buffer-to-buffer copy did not delete the 14033existing 14034buffer. 14035 14036Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 14037and 14038structs for consistency. 14039 14040Code and Data Size: Current and previous core subsystem library sizes are 14041shown below. These are the code and data sizes for the acpica.lib 14042produced 14043by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14044any ACPI driver or OSPM code. The debug version of the code includes the 14045debug output trace mechanism and has a much larger code and data size. 14046Note 14047that these values will vary depending on the efficiency of the compiler 14048and 14049the compiler options used during generation. 14050 14051 Previous Release: 14052 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14053 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14054 Current Release: (Same sizes) 14055 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14056 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14057 14058 140592) iASL Compiler/Disassembler: 14060 14061The compiler now emits a warning if an attempt is made to generate a 64- 14062bit 14063integer constant from within a 32-bit ACPI table (Revision < 2). The 14064integer 14065is truncated to 32 bits. 14066 14067Fixed a problem with large package objects: if the static length of the 14068package is greater than 255, the "variable length package" opcode is 14069emitted. Previously, this caused an error. This requires an update to the 14070ACPI spec, since it currently (incorrectly) states that packages larger 14071than 14072255 elements are not allowed. 14073 14074The disassembler now correctly handles variable length packages and 14075packages 14076larger than 255 elements. 14077 14078---------------------------------------- 1407908 April 2005. Summary of changes for version 20050408: 14080 140811) ACPI CA Core Subsystem: 14082 14083Fixed three cases in the interpreter where an "index" argument to an ASL 14084function was still (internally) 32 bits instead of the required 64 bits. 14085This was the Index argument to the Index, Mid, and Match operators. 14086 14087The "strupr" function is now permanently local (AcpiUtStrupr), since this 14088is 14089not a POSIX-defined function and not present in most kernel-level C 14090libraries. All references to the C library strupr function have been 14091removed 14092from the headers. 14093 14094Completed the deployment of static functions/prototypes. All prototypes 14095with 14096the static attribute have been moved from the headers to the owning C 14097file. 14098 14099Implemented an extract option (-e) for the AcpiBin utility (AML binary 14100utility). This option allows the utility to extract individual ACPI 14101tables 14102from the output of AcpiDmp. It provides the same functionality of the 14103acpixtract.pl perl script without the worry of setting the correct perl 14104options. AcpiBin runs on Windows and has not yet been generated/validated 14105in 14106the Linux/Unix environment (but should be soon). 14107 14108Updated and fixed the table dump option for AcpiBin (-d). This option 14109converts a single ACPI table to a hex/ascii file, similar to the output 14110of 14111AcpiDmp. 14112 14113Code and Data Size: Current and previous core subsystem library sizes are 14114shown below. These are the code and data sizes for the acpica.lib 14115produced 14116by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14117any ACPI driver or OSPM code. The debug version of the code includes the 14118debug output trace mechanism and has a much larger code and data size. 14119Note 14120that these values will vary depending on the efficiency of the compiler 14121and 14122the compiler options used during generation. 14123 14124 Previous Release: 14125 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14126 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14127 Current Release: 14128 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14129 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14130 14131 141322) iASL Compiler/Disassembler: 14133 14134Disassembler fix: Added a check to ensure that the table length found in 14135the 14136ACPI table header within the input file is not longer than the actual 14137input 14138file size. This indicates some kind of file or table corruption. 14139 14140---------------------------------------- 1414129 March 2005. Summary of changes for version 20050329: 14142 141431) ACPI CA Core Subsystem: 14144 14145An error is now generated if an attempt is made to create a Buffer Field 14146of 14147length zero (A CreateField with a length operand of zero.) 14148 14149The interpreter now issues a warning whenever executable code at the 14150module 14151level is detected during ACPI table load. This will give some idea of the 14152prevalence of this type of code. 14153 14154Implemented support for references to named objects (other than control 14155methods) within package objects. 14156 14157Enhanced package object output for the debug object. Package objects are 14158now 14159completely dumped, showing all elements. 14160 14161Enhanced miscellaneous object output for the debug object. Any object can 14162now be written to the debug object (for example, a device object can be 14163written, and the type of the object will be displayed.) 14164 14165The "static" qualifier has been added to all local functions across both 14166the 14167core subsystem and the iASL compiler. 14168 14169The number of "long" lines (> 80 chars) within the source has been 14170significantly reduced, by about 1/3. 14171 14172Cleaned up all header files to ensure that all CA/iASL functions are 14173prototyped (even static functions) and the formatting is consistent. 14174 14175Two new header files have been added, acopcode.h and acnames.h. 14176 14177Removed several obsolete functions that were no longer used. 14178 14179Code and Data Size: Current and previous core subsystem library sizes are 14180shown below. These are the code and data sizes for the acpica.lib 14181produced 14182by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14183any ACPI driver or OSPM code. The debug version of the code includes the 14184debug output trace mechanism and has a much larger code and data size. 14185Note 14186that these values will vary depending on the efficiency of the compiler 14187and 14188the compiler options used during generation. 14189 14190 Previous Release: 14191 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14192 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14193 Current Release: 14194 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14195 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14196 14197 14198 141992) iASL Compiler/Disassembler: 14200 14201Fixed a problem with the resource descriptor generation/support. For the 14202ResourceSourceIndex and the ResourceSource fields, both must be present, 14203or 14204both must be not present - can't have one without the other. 14205 14206The compiler now returns non-zero from the main procedure if any errors 14207have 14208occurred during the compilation. 14209 14210 14211---------------------------------------- 1421209 March 2005. Summary of changes for version 20050309: 14213 142141) ACPI CA Core Subsystem: 14215 14216The string-to-buffer implicit conversion code has been modified again 14217after 14218a change to the ACPI specification. In order to match the behavior of 14219the 14220other major ACPI implementation, the target buffer is no longer truncated 14221if 14222the source string is smaller than an existing target buffer. This change 14223requires an update to the ACPI spec, and should eliminate the recent 14224AE_AML_BUFFER_LIMIT issues. 14225 14226The "implicit return" support was rewritten to a new algorithm that 14227solves 14228the general case. Rather than attempt to determine when a method is about 14229to 14230exit, the result of every ASL operator is saved momentarily until the 14231very 14232next ASL operator is executed. Therefore, no matter how the method exits, 14233there will always be a saved implicit return value. This feature is only 14234enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 14235eliminate 14236AE_AML_NO_RETURN_VALUE errors when enabled. 14237 14238Implemented implicit conversion support for the predicate (operand) of 14239the 14240If, Else, and While operators. String and Buffer arguments are 14241automatically 14242converted to Integers. 14243 14244Changed the string-to-integer conversion behavior to match the new ACPI 14245errata: "If no integer object exists, a new integer is created. The ASCII 14246string is interpreted as a hexadecimal constant. Each string character is 14247interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 14248with the first character as the most significant digit, and ending with 14249the 14250first non-hexadecimal character or end-of-string." This means that the 14251first 14252non-hex character terminates the conversion and this is the code that was 14253changed. 14254 14255Fixed a problem where the ObjectType operator would fail (fault) when 14256used 14257on an Index of a Package which pointed to a null package element. The 14258operator now properly returns zero (Uninitialized) in this case. 14259 14260Fixed a problem where the While operator used excessive memory by not 14261properly popping the result stack during execution. There was no memory 14262leak 14263after execution, however. (Code provided by Valery Podrezov.) 14264 14265Fixed a problem where references to control methods within Package 14266objects 14267caused the method to be invoked, instead of producing a reference object 14268pointing to the method. 14269 14270Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 14271to 14272improve performance and reduce code size. (Code provided by Alexey 14273Starikovskiy.) 14274 14275Code and Data Size: Current and previous core subsystem library sizes are 14276shown below. These are the code and data sizes for the acpica.lib 14277produced 14278by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14279any ACPI driver or OSPM code. The debug version of the code includes the 14280debug output trace mechanism and has a much larger code and data size. 14281Note 14282that these values will vary depending on the efficiency of the compiler 14283and 14284the compiler options used during generation. 14285 14286 Previous Release: 14287 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14288 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14289 Current Release: 14290 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14291 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14292 14293 142942) iASL Compiler/Disassembler: 14295 14296Fixed a problem with the Return operator with no arguments. Since the AML 14297grammar for the byte encoding requires an operand for the Return opcode, 14298the 14299compiler now emits a Return(Zero) for this case. An ACPI specification 14300update has been written for this case. 14301 14302For tables other than the DSDT, namepath optimization is automatically 14303disabled. This is because SSDTs can be loaded anywhere in the namespace, 14304the 14305compiler has no knowledge of where, and thus cannot optimize namepaths. 14306 14307Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 14308inadvertently omitted from the ACPI specification, and will require an 14309update to the spec. 14310 14311The source file scan for ASCII characters is now optional (-a). This 14312change 14313was made because some vendors place non-ascii characters within comments. 14314However, the scan is simply a brute-force byte compare to ensure all 14315characters in the file are in the range 0x00 to 0x7F. 14316 14317Fixed a problem with the CondRefOf operator where the compiler was 14318inappropriately checking for the existence of the target. Since the point 14319of 14320the operator is to check for the existence of the target at run-time, the 14321compiler no longer checks for the target existence. 14322 14323Fixed a problem where errors generated from the internal AML interpreter 14324during constant folding were not handled properly, causing a fault. 14325 14326Fixed a problem with overly aggressive range checking for the Stall 14327operator. The valid range (max 255) is now only checked if the operand is 14328of 14329type Integer. All other operand types cannot be statically checked. 14330 14331Fixed a problem where control method references within the RefOf, 14332DeRefOf, 14333and ObjectType operators were not treated properly. They are now treated 14334as 14335actual references, not method invocations. 14336 14337Fixed and enhanced the "list namespace" option (-ln). This option was 14338broken 14339a number of releases ago. 14340 14341Improved error handling for the Field, IndexField, and BankField 14342operators. 14343The compiler now cleanly reports and recovers from errors in the field 14344component (FieldUnit) list. 14345 14346Fixed a disassembler problem where the optional ResourceDescriptor fields 14347TRS and TTP were not always handled correctly. 14348 14349Disassembler - Comments in output now use "//" instead of "/*" 14350 14351---------------------------------------- 1435228 February 2005. Summary of changes for version 20050228: 14353 143541) ACPI CA Core Subsystem: 14355 14356Fixed a problem where the result of an Index() operator (an object 14357reference) must increment the reference count on the target object for 14358the 14359life of the object reference. 14360 14361Implemented AML Interpreter and Debugger support for the new ACPI 3.0 14362Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 14363WordSpace 14364resource descriptors. 14365 14366Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 14367Space Descriptor" string, indicating interpreter support for the 14368descriptors 14369above. 14370 14371Implemented header support for the new ACPI 3.0 FADT flag bits. 14372 14373Implemented header support for the new ACPI 3.0 PCI Express bits for the 14374PM1 14375status/enable registers. 14376 14377Updated header support for the MADT processor local Apic struct and MADT 14378platform interrupt source struct for new ACPI 3.0 fields. 14379 14380Implemented header support for the SRAT and SLIT ACPI tables. 14381 14382Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 14383flag 14384at runtime. 14385 14386Code and Data Size: Current and previous core subsystem library sizes are 14387shown below. These are the code and data sizes for the acpica.lib 14388produced 14389by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14390any ACPI driver or OSPM code. The debug version of the code includes the 14391debug output trace mechanism and has a much larger code and data size. 14392Note 14393that these values will vary depending on the efficiency of the compiler 14394and 14395the compiler options used during generation. 14396 14397 Previous Release: 14398 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14399 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14400 Current Release: 14401 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14402 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14403 14404 144052) iASL Compiler/Disassembler: 14406 14407Fixed a problem with the internal 64-bit String-to-integer conversion 14408with 14409strings less than two characters long. 14410 14411Fixed a problem with constant folding where the result of the Index() 14412operator can not be considered a constant. This means that Index() cannot 14413be 14414a type3 opcode and this will require an update to the ACPI specification. 14415 14416Disassembler: Implemented support for the TTP, MTP, and TRS resource 14417descriptor fields. These fields were inadvertently ignored and not output 14418in 14419the disassembly of the resource descriptor. 14420 14421 14422 ---------------------------------------- 1442311 February 2005. Summary of changes for version 20050211: 14424 144251) ACPI CA Core Subsystem: 14426 14427Implemented ACPI 3.0 support for implicit conversion within the Match() 14428operator. MatchObjects can now be of type integer, buffer, or string 14429instead 14430of just type integer. Package elements are implicitly converted to the 14431type 14432of the MatchObject. This change aligns the behavior of Match() with the 14433behavior of the other logical operators (LLess(), etc.) It also requires 14434an 14435errata change to the ACPI specification as this support was intended for 14436ACPI 3.0, but was inadvertently omitted. 14437 14438Fixed a problem with the internal implicit "to buffer" conversion. 14439Strings 14440that are converted to buffers will cause buffer truncation if the string 14441is 14442smaller than the target buffer. Integers that are converted to buffers 14443will 14444not cause buffer truncation, only zero extension (both as per the ACPI 14445spec.) The problem was introduced when code was added to truncate the 14446buffer, but this should not be performed in all cases, only the string 14447case. 14448 14449Fixed a problem with the Buffer and Package operators where the 14450interpreter 14451would get confused if two such operators were used as operands to an ASL 14452operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 14453stack was not being popped after the execution of these operators, 14454resulting 14455in an AE_NO_RETURN_VALUE exception. 14456 14457Fixed a problem with constructs of the form Store(Index(...),...). The 14458reference object returned from Index was inadvertently resolved to an 14459actual 14460value. This problem was introduced in version 20050114 when the behavior 14461of 14462Store() was modified to restrict the object types that can be used as the 14463source operand (to match the ACPI specification.) 14464 14465Reduced excessive stack use within the AcpiGetObjectInfo procedure. 14466 14467Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 14468 14469Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 14470 14471Code and Data Size: Current and previous core subsystem library sizes are 14472shown below. These are the code and data sizes for the acpica.lib 14473produced 14474by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14475any ACPI driver or OSPM code. The debug version of the code includes the 14476debug output trace mechanism and has a much larger code and data size. 14477Note 14478that these values will vary depending on the efficiency of the compiler 14479and 14480the compiler options used during generation. 14481 14482 Previous Release: 14483 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14484 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14485 Current Release: 14486 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14487 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14488 14489 144902) iASL Compiler/Disassembler: 14491 14492Fixed a code generation problem in the constant folding optimization code 14493where incorrect code was generated if a constant was reduced to a buffer 14494object (i.e., a reduced type 5 opcode.) 14495 14496Fixed a typechecking problem for the ToBuffer operator. Caused by an 14497incorrect return type in the internal opcode information table. 14498 14499---------------------------------------- 1450025 January 2005. Summary of changes for version 20050125: 14501 145021) ACPI CA Core Subsystem: 14503 14504Fixed a recently introduced problem with the Global Lock where the 14505underlying semaphore was not created. This problem was introduced in 14506version 20050114, and caused an AE_AML_NO_OPERAND exception during an 14507Acquire() operation on _GL. 14508 14509The local object cache is now optional, and is disabled by default. Both 14510AcpiExec and the iASL compiler enable the cache because they run in user 14511mode and this enhances their performance. #define 14512ACPI_ENABLE_OBJECT_CACHE 14513to enable the local cache. 14514 14515Fixed an issue in the internal function AcpiUtEvaluateObject concerning 14516the 14517optional "implicit return" support where an error was returned if no 14518return 14519object was expected, but one was implicitly returned. AE_OK is now 14520returned 14521in this case and the implicitly returned object is deleted. 14522AcpiUtEvaluateObject is only occasionally used, and only to execute 14523reserved 14524methods such as _STA and _INI where the return type is known up front. 14525 14526Fixed a few issues with the internal convert-to-integer code. It now 14527returns 14528an error if an attempt is made to convert a null string, a string of only 14529blanks/tabs, or a zero-length buffer. This affects both implicit 14530conversion 14531and explicit conversion via the ToInteger() operator. 14532 14533The internal debug code in AcpiUtAcquireMutex has been commented out. It 14534is 14535not needed for normal operation and should increase the performance of 14536the 14537entire subsystem. The code remains in case it is needed for debug 14538purposes 14539again. 14540 14541The AcpiExec source and makefile are included in the Unix/Linux package 14542for 14543the first time. 14544 14545Code and Data Size: Current and previous core subsystem library sizes are 14546shown below. These are the code and data sizes for the acpica.lib 14547produced 14548by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14549any ACPI driver or OSPM code. The debug version of the code includes the 14550debug output trace mechanism and has a much larger code and data size. 14551Note 14552that these values will vary depending on the efficiency of the compiler 14553and 14554the compiler options used during generation. 14555 14556 Previous Release: 14557 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14558 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14559 Current Release: 14560 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14561 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14562 145632) iASL Compiler/Disassembler: 14564 14565Switch/Case support: A warning is now issued if the type of the Switch 14566value 14567cannot be determined at compile time. For example, Switch(Arg0) will 14568generate the warning, and the type is assumed to be an integer. As per 14569the 14570ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 14571the 14572warning. 14573 14574Switch/Case support: Implemented support for buffer and string objects as 14575the switch value. This is an ACPI 3.0 feature, now that LEqual supports 14576buffers and strings. 14577 14578Switch/Case support: The emitted code for the LEqual() comparisons now 14579uses 14580the switch value as the first operand, not the second. The case value is 14581now 14582the second operand, and this allows the case value to be implicitly 14583converted to the type of the switch value, not the other way around. 14584 14585Switch/Case support: Temporary variables are now emitted immediately 14586within 14587the control method, not at the global level. This means that there are 14588now 1458936 temps available per-method, not 36 temps per-module as was the case 14590with 14591the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 14592 14593---------------------------------------- 1459414 January 2005. Summary of changes for version 20050114: 14595 14596Added 2005 copyright to all module headers. This affects every module in 14597the core subsystem, iASL compiler, and the utilities. 14598 145991) ACPI CA Core Subsystem: 14600 14601Fixed an issue with the String-to-Buffer conversion code where the string 14602null terminator was not included in the buffer after conversion, but 14603there 14604is existing ASL that assumes the string null terminator is included. This 14605is 14606the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14607introduced in the previous version when the code was updated to correctly 14608set the converted buffer size as per the ACPI specification. The ACPI 14609spec 14610is ambiguous and will be updated to specify that the null terminator must 14611be 14612included in the converted buffer. This also affects the ToBuffer() ASL 14613operator. 14614 14615Fixed a problem with the Mid() ASL/AML operator where it did not work 14616correctly on Buffer objects. Newly created sub-buffers were not being 14617marked 14618as initialized. 14619 14620 14621Fixed a problem in AcpiTbFindTable where incorrect string compares were 14622performed on the OemId and OemTableId table header fields. These fields 14623are 14624not null terminated, so strncmp is now used instead of strcmp. 14625 14626Implemented a restriction on the Store() ASL/AML operator to align the 14627behavior with the ACPI specification. Previously, any object could be 14628used 14629as the source operand. Now, the only objects that may be used are 14630Integers, 14631Buffers, Strings, Packages, Object References, and DDB Handles. If 14632necessary, the original behavior can be restored by enabling the 14633EnableInterpreterSlack flag. 14634 14635Enhanced the optional "implicit return" support to allow an implicit 14636return 14637value from methods that are invoked externally via the AcpiEvaluateObject 14638interface. This enables implicit returns from the _STA and _INI methods, 14639for example. 14640 14641Changed the Revision() ASL/AML operator to return the current version of 14642the 14643AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14644returned 14645the supported ACPI version (This is the function of the _REV method). 14646 14647Updated the _REV predefined method to return the currently supported 14648version 14649of ACPI, now 3. 14650 14651Implemented batch mode option for the AcpiExec utility (-b). 14652 14653Code and Data Size: Current and previous core subsystem library sizes are 14654shown below. These are the code and data sizes for the acpica.lib 14655produced 14656by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14657any ACPI driver or OSPM code. The debug version of the code includes the 14658debug output trace mechanism and has a much larger code and data size. 14659Note 14660that these values will vary depending on the efficiency of the compiler 14661and 14662the compiler options used during generation. 14663 14664 Previous Release: 14665 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14666 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14667 Current Release: 14668 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14669 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14670 14671---------------------------------------- 1467210 December 2004. Summary of changes for version 20041210: 14673 14674ACPI 3.0 support is nearing completion in both the iASL compiler and the 14675ACPI CA core subsystem. 14676 146771) ACPI CA Core Subsystem: 14678 14679Fixed a problem in the ToDecimalString operator where the resulting 14680string 14681length was incorrectly calculated. The length is now calculated exactly, 14682eliminating incorrect AE_STRING_LIMIT exceptions. 14683 14684Fixed a problem in the ToHexString operator to allow a maximum 200 14685character 14686string to be produced. 14687 14688Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14689copy 14690routine where the length of the resulting buffer was not truncated to the 14691new size (if the target buffer already existed). 14692 14693Code and Data Size: Current and previous core subsystem library sizes are 14694shown below. These are the code and data sizes for the acpica.lib 14695produced 14696by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14697any ACPI driver or OSPM code. The debug version of the code includes the 14698debug output trace mechanism and has a much larger code and data size. 14699Note 14700that these values will vary depending on the efficiency of the compiler 14701and 14702the compiler options used during generation. 14703 14704 Previous Release: 14705 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14706 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14707 Current Release: 14708 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14709 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14710 14711 147122) iASL Compiler/Disassembler: 14713 14714Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14715ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14716Includes support in the disassembler. 14717 14718Implemented support for the new (ACPI 3.0) parameter to the Register 14719macro, 14720AccessSize. 14721 14722Fixed a problem where the _HE resource name for the Interrupt macro was 14723referencing bit 0 instead of bit 1. 14724 14725Implemented check for maximum 255 interrupts in the Interrupt macro. 14726 14727Fixed a problem with the predefined resource descriptor names where 14728incorrect AML code was generated if the offset within the resource buffer 14729was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14730but did not update the surrounding package lengths. 14731 14732Changes to the Dma macro: All channels within the channel list must be 14733in 14734the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14735optional (default is BusMaster). 14736 14737Implemented check for maximum 7 data bytes for the VendorShort macro. 14738 14739The ReadWrite parameter is now optional for the Memory32 and similar 14740macros. 14741 14742---------------------------------------- 1474303 December 2004. Summary of changes for version 20041203: 14744 147451) ACPI CA Core Subsystem: 14746 14747The low-level field insertion/extraction code (exfldio) has been 14748completely 14749rewritten to eliminate unnecessary complexity, bugs, and boundary 14750conditions. 14751 14752Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14753ToDecimalString 14754operators where the input operand could be inadvertently deleted if no 14755conversion was necessary (e.g., if the input to ToInteger was an Integer 14756object.) 14757 14758Fixed a problem with the ToDecimalString and ToHexString where an 14759incorrect 14760exception code was returned if the resulting string would be > 200 chars. 14761AE_STRING_LIMIT is now returned. 14762 14763Fixed a problem with the Concatenate operator where AE_OK was always 14764returned, even if the operation failed. 14765 14766Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14767semaphores to be allocated. 14768 14769Code and Data Size: Current and previous core subsystem library sizes are 14770shown below. These are the code and data sizes for the acpica.lib 14771produced 14772by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14773any ACPI driver or OSPM code. The debug version of the code includes the 14774debug output trace mechanism and has a much larger code and data size. 14775Note 14776that these values will vary depending on the efficiency of the compiler 14777and 14778the compiler options used during generation. 14779 14780 Previous Release: 14781 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14782 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14783 Current Release: 14784 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14785 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14786 14787 147882) iASL Compiler/Disassembler: 14789 14790Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14791recently introduced in 20041119. 14792 14793Fixed a problem with the ToUUID macro where the upper nybble of each 14794buffer 14795byte was inadvertently set to zero. 14796 14797---------------------------------------- 1479819 November 2004. Summary of changes for version 20041119: 14799 148001) ACPI CA Core Subsystem: 14801 14802Fixed a problem in the internal ConvertToInteger routine where new 14803integers 14804were not truncated to 32 bits for 32-bit ACPI tables. This routine 14805converts 14806buffers and strings to integers. 14807 14808Implemented support to store a value to an Index() on a String object. 14809This 14810is an ACPI 2.0 feature that had not yet been implemented. 14811 14812Implemented new behavior for storing objects to individual package 14813elements 14814(via the Index() operator). The previous behavior was to invoke the 14815implicit 14816conversion rules if an object was already present at the index. The new 14817behavior is to simply delete any existing object and directly store the 14818new 14819object. Although the ACPI specification seems unclear on this subject, 14820other 14821ACPI implementations behave in this manner. (This is the root of the 14822AE_BAD_HEX_CONSTANT issue.) 14823 14824Modified the RSDP memory scan mechanism to support the extended checksum 14825for 14826ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14827RSDP signature is found with a valid checksum. 14828 14829Code and Data Size: Current and previous core subsystem library sizes are 14830shown below. These are the code and data sizes for the acpica.lib 14831produced 14832by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14833any ACPI driver or OSPM code. The debug version of the code includes the 14834debug output trace mechanism and has a much larger code and data size. 14835Note 14836that these values will vary depending on the efficiency of the compiler 14837and 14838the compiler options used during generation. 14839 14840 Previous Release: 14841 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14842 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14843 Current Release: 14844 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14845 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14846 14847 148482) iASL Compiler/Disassembler: 14849 14850Fixed a missing semicolon in the aslcompiler.y file. 14851 14852---------------------------------------- 1485305 November 2004. Summary of changes for version 20041105: 14854 148551) ACPI CA Core Subsystem: 14856 14857Implemented support for FADT revision 2. This was an interim table 14858(between 14859ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14860 14861Implemented optional support to allow uninitialized LocalX and ArgX 14862variables in a control method. The variables are initialized to an 14863Integer 14864object with a value of zero. This support is enabled by setting the 14865AcpiGbl_EnableInterpreterSlack flag to TRUE. 14866 14867Implemented support for Integer objects for the SizeOf operator. Either 148684 14869or 8 is returned, depending on the current integer size (32-bit or 64- 14870bit, 14871depending on the parent table revision). 14872 14873Fixed a problem in the implementation of the SizeOf and ObjectType 14874operators 14875where the operand was resolved to a value too early, causing incorrect 14876return values for some objects. 14877 14878Fixed some possible memory leaks during exceptional conditions. 14879 14880Code and Data Size: Current and previous core subsystem library sizes are 14881shown below. These are the code and data sizes for the acpica.lib 14882produced 14883by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14884any ACPI driver or OSPM code. The debug version of the code includes the 14885debug output trace mechanism and has a much larger code and data size. 14886Note 14887that these values will vary depending on the efficiency of the compiler 14888and 14889the compiler options used during generation. 14890 14891 Previous Release: 14892 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14893 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14894 Current Release: 14895 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14896 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14897 14898 148992) iASL Compiler/Disassembler: 14900 14901Implemented support for all ACPI 3.0 reserved names and methods. 14902 14903Implemented all ACPI 3.0 grammar elements in the front-end, including 14904support for semicolons. 14905 14906Implemented the ACPI 3.0 Function() and ToUUID() macros 14907 14908Fixed a problem in the disassembler where a Scope() operator would not be 14909emitted properly if the target of the scope was in another table. 14910 14911---------------------------------------- 1491215 October 2004. Summary of changes for version 20041015: 14913 14914Note: ACPI CA is currently undergoing an in-depth and complete formal 14915evaluation to test/verify the following areas. Other suggestions are 14916welcome. This will result in an increase in the frequency of releases and 14917the number of bug fixes in the next few months. 14918 - Functional tests for all ASL/AML operators 14919 - All implicit/explicit type conversions 14920 - Bit fields and operation regions 14921 - 64-bit math support and 32-bit-only "truncated" math support 14922 - Exceptional conditions, both compiler and interpreter 14923 - Dynamic object deletion and memory leaks 14924 - ACPI 3.0 support when implemented 14925 - External interfaces to the ACPI subsystem 14926 14927 149281) ACPI CA Core Subsystem: 14929 14930Fixed two alignment issues on 64-bit platforms - within debug statements 14931in 14932AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14933Address 14934field within the non-aligned ACPI generic address structure. 14935 14936Fixed a problem in the Increment and Decrement operators where incorrect 14937operand resolution could result in the inadvertent modification of the 14938original integer when the integer is passed into another method as an 14939argument and the arg is then incremented/decremented. 14940 14941Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14942bit 14943BCD number were truncated during conversion. 14944 14945Fixed a problem in the ToDecimal operator where the length of the 14946resulting 14947string could be set incorrectly too long if the input operand was a 14948Buffer 14949object. 14950 14951Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14952(0) 14953within a buffer would prematurely terminate a compare between buffer 14954objects. 14955 14956Added a check for string overflow (>200 characters as per the ACPI 14957specification) during the Concatenate operator with two string operands. 14958 14959Code and Data Size: Current and previous core subsystem library sizes are 14960shown below. These are the code and data sizes for the acpica.lib 14961produced 14962by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14963any ACPI driver or OSPM code. The debug version of the code includes the 14964debug output trace mechanism and has a much larger code and data size. 14965Note 14966that these values will vary depending on the efficiency of the compiler 14967and 14968the compiler options used during generation. 14969 14970 Previous Release: 14971 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14972 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14973 Current Release: 14974 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14975 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14976 14977 14978 149792) iASL Compiler/Disassembler: 14980 14981Allow the use of the ObjectType operator on uninitialized Locals and Args 14982(returns 0 as per the ACPI specification). 14983 14984Fixed a problem where the compiler would fault if there was a syntax 14985error 14986in the FieldName of all of the various CreateXXXField operators. 14987 14988Disallow the use of lower case letters within the EISAID macro, as per 14989the 14990ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14991Where 14992U is an uppercase letter and N is a hex digit. 14993 14994 14995---------------------------------------- 1499606 October 2004. Summary of changes for version 20041006: 14997 149981) ACPI CA Core Subsystem: 14999 15000Implemented support for the ACPI 3.0 Timer operator. This ASL function 15001implements a 64-bit timer with 100 nanosecond granularity. 15002 15003Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 15004implement the ACPI 3.0 Timer operator. This allows the host OS to 15005implement 15006the timer with the best clock available. Also, it keeps the core 15007subsystem 15008out of the clock handling business, since the host OS (usually) performs 15009this function. 15010 15011Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 15012functions use a 64-bit address which is part of the packed ACPI Generic 15013Address Structure. Since the structure is non-aligned, the alignment 15014macros 15015are now used to extract the address to a local variable before use. 15016 15017Fixed a problem where the ToInteger operator assumed all input strings 15018were 15019hexadecimal. The operator now handles both decimal strings and hex 15020strings 15021(prefixed with "0x"). 15022 15023Fixed a problem where the string length in the string object created as a 15024result of the internal ConvertToString procedure could be incorrect. This 15025potentially affected all implicit conversions and also the 15026ToDecimalString 15027and ToHexString operators. 15028 15029Fixed two problems in the ToString operator. If the length parameter was 15030zero, an incorrect string object was created and the value of the input 15031length parameter was inadvertently changed from zero to Ones. 15032 15033Fixed a problem where the optional ResourceSource string in the 15034ExtendedIRQ 15035resource macro was ignored. 15036 15037Simplified the interfaces to the internal division functions, reducing 15038code 15039size and complexity. 15040 15041Code and Data Size: Current and previous core subsystem library sizes are 15042shown below. These are the code and data sizes for the acpica.lib 15043produced 15044by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15045any ACPI driver or OSPM code. The debug version of the code includes the 15046debug output trace mechanism and has a much larger code and data size. 15047Note 15048that these values will vary depending on the efficiency of the compiler 15049and 15050the compiler options used during generation. 15051 15052 Previous Release: 15053 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 15054 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 15055 Current Release: 15056 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15057 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 15058 15059 150602) iASL Compiler/Disassembler: 15061 15062Implemented support for the ACPI 3.0 Timer operator. 15063 15064Fixed a problem where the Default() operator was inadvertently ignored in 15065a 15066Switch/Case block. This was a problem in the translation of the Switch 15067statement to If...Else pairs. 15068 15069Added support to allow a standalone Return operator, with no parentheses 15070(or 15071operands). 15072 15073Fixed a problem with code generation for the ElseIf operator where the 15074translated Else...If parse tree was improperly constructed leading to the 15075loss of some code. 15076 15077---------------------------------------- 1507822 September 2004. Summary of changes for version 20040922: 15079 150801) ACPI CA Core Subsystem: 15081 15082Fixed a problem with the implementation of the LNot() operator where 15083"Ones" 15084was not returned for the TRUE case. Changed the code to return Ones 15085instead 15086of (!Arg) which was usually 1. This change affects iASL constant folding 15087for 15088this operator also. 15089 15090Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 15091not 15092initialized properly -- Now zero the entire buffer in this case where the 15093buffer already exists. 15094 15095Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 15096Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 15097related code considerably. This will require changes/updates to all OS 15098interface layers (OSLs.) 15099 15100Implemented a new external interface, AcpiInstallExceptionHandler, to 15101allow 15102a system exception handler to be installed. This handler is invoked upon 15103any 15104run-time exception that occurs during control method execution. 15105 15106Added support for the DSDT in AcpiTbFindTable. This allows the 15107DataTableRegion() operator to access the local copy of the DSDT. 15108 15109Code and Data Size: Current and previous core subsystem library sizes are 15110shown below. These are the code and data sizes for the acpica.lib 15111produced 15112by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15113any ACPI driver or OSPM code. The debug version of the code includes the 15114debug output trace mechanism and has a much larger code and data size. 15115Note 15116that these values will vary depending on the efficiency of the compiler 15117and 15118the compiler options used during generation. 15119 15120 Previous Release: 15121 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15122 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15123 Current Release: 15124 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 15125 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 15126 15127 151282) iASL Compiler/Disassembler: 15129 15130Fixed a problem with constant folding and the LNot operator. LNot was 15131returning 1 in the TRUE case, not Ones as per the ACPI specification. 15132This 15133could result in the generation of an incorrect folded/reduced constant. 15134 15135End-Of-File is now allowed within a "//"-style comment. A parse error no 15136longer occurs if such a comment is at the very end of the input ASL 15137source 15138file. 15139 15140Implemented the "-r" option to override the Revision in the table header. 15141The initial use of this option will be to simplify the evaluation of the 15142AML 15143interpreter by allowing a single ASL source module to be compiled for 15144either 1514532-bit or 64-bit integers. 15146 15147 15148---------------------------------------- 1514927 August 2004. Summary of changes for version 20040827: 15150 151511) ACPI CA Core Subsystem: 15152 15153- Implemented support for implicit object conversion in the non-numeric 15154logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 15155and 15156LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 15157the second operand is implicitly converted on the fly to match the type 15158of 15159the first operand. For example: 15160 15161 LEqual (Source1, Source2) 15162 15163Source1 and Source2 must each evaluate to an integer, a string, or a 15164buffer. 15165The data type of Source1 dictates the required type of Source2. Source2 15166is 15167implicitly converted if necessary to match the type of Source1. 15168 15169- Updated and corrected the behavior of the string conversion support. 15170The 15171rules concerning conversion of buffers to strings (according to the ACPI 15172specification) are as follows: 15173 15174ToDecimalString - explicit byte-wise conversion of buffer to string of 15175decimal values (0-255) separated by commas. ToHexString - explicit byte- 15176wise 15177conversion of buffer to string of hex values (0-FF) separated by commas. 15178ToString - explicit byte-wise conversion of buffer to string. Byte-by- 15179byte 15180copy with no transform except NULL terminated. Any other implicit buffer- 15181to- 15182string conversion - byte-wise conversion of buffer to string of hex 15183values 15184(0-FF) separated by spaces. 15185 15186- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 15187 15188- Fixed a problem in AcpiNsGetPathnameLength where the returned length 15189was 15190one byte too short in the case of a node in the root scope. This could 15191cause a fault during debug output. 15192 15193- Code and Data Size: Current and previous core subsystem library sizes 15194are 15195shown below. These are the code and data sizes for the acpica.lib 15196produced 15197by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15198any ACPI driver or OSPM code. The debug version of the code includes the 15199debug output trace mechanism and has a much larger code and data size. 15200Note 15201that these values will vary depending on the efficiency of the compiler 15202and 15203the compiler options used during generation. 15204 15205 Previous Release: 15206 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15207 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15208 Current Release: 15209 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15210 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15211 15212 152132) iASL Compiler/Disassembler: 15214 15215- Fixed a Linux generation error. 15216 15217 15218---------------------------------------- 1521916 August 2004. Summary of changes for version 20040816: 15220 152211) ACPI CA Core Subsystem: 15222 15223Designed and implemented support within the AML interpreter for the so- 15224called "implicit return". This support returns the result of the last 15225ASL 15226operation within a control method, in the absence of an explicit Return() 15227operator. A few machines depend on this behavior, even though it is not 15228explicitly supported by the ASL language. It is optional support that 15229can 15230be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 15231 15232Removed support for the PCI_Config address space from the internal low 15233level 15234hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 15235support was not used internally, and would not work correctly anyway 15236because 15237the PCI bus number and segment number were not supported. There are 15238separate interfaces for PCI configuration space access because of the 15239unique 15240interface. 15241 15242Code and Data Size: Current and previous core subsystem library sizes are 15243shown below. These are the code and data sizes for the acpica.lib 15244produced 15245by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15246any ACPI driver or OSPM code. The debug version of the code includes the 15247debug output trace mechanism and has a much larger code and data size. 15248Note 15249that these values will vary depending on the efficiency of the compiler 15250and 15251the compiler options used during generation. 15252 15253 Previous Release: 15254 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15255 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15256 Current Release: 15257 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15258 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15259 15260 152612) iASL Compiler/Disassembler: 15262 15263Fixed a problem where constants in ASL expressions at the root level (not 15264within a control method) could be inadvertently truncated during code 15265generation. This problem was introduced in the 20040715 release. 15266 15267 15268---------------------------------------- 1526915 July 2004. Summary of changes for version 20040715: 15270 152711) ACPI CA Core Subsystem: 15272 15273Restructured the internal HW GPE interfaces to pass/track the current 15274state 15275of interrupts (enabled/disabled) in order to avoid possible deadlock and 15276increase flexibility of the interfaces. 15277 15278Implemented a "lexicographical compare" for String and Buffer objects 15279within 15280the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 15281- 15282as per further clarification to the ACPI specification. Behavior is 15283similar 15284to C library "strcmp". 15285 15286Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 15287external function. In the 32-bit non-debug case, the stack use has been 15288reduced from 168 bytes to 32 bytes. 15289 15290Deployed a new run-time configuration flag, 15291AcpiGbl_EnableInterpreterSlack, 15292whose purpose is to allow the AML interpreter to forgive certain bad AML 15293constructs. Default setting is FALSE. 15294 15295Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 15296IO 15297support code. If enabled, it allows field access to go beyond the end of 15298a 15299region definition if the field is within the region length rounded up to 15300the 15301next access width boundary (a common coding error.) 15302 15303Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 15304ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 15305these 15306symbols are lowercase by the latest version of the AcpiSrc tool. 15307 15308The prototypes for the PCI interfaces in acpiosxf.h have been updated to 15309rename "Register" to simply "Reg" to prevent certain compilers from 15310complaining. 15311 15312Code and Data Size: Current and previous core subsystem library sizes are 15313shown below. These are the code and data sizes for the acpica.lib 15314produced 15315by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15316any ACPI driver or OSPM code. The debug version of the code includes the 15317debug output trace mechanism and has a much larger code and data size. 15318Note 15319that these values will vary depending on the efficiency of the compiler 15320and 15321the compiler options used during generation. 15322 15323 Previous Release: 15324 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15325 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15326 Current Release: 15327 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15328 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15329 15330 153312) iASL Compiler/Disassembler: 15332 15333Implemented full support for Package objects within the Case() operator. 15334Note: The Break() operator is currently not supported within Case blocks 15335(TermLists) as there is some question about backward compatibility with 15336ACPI 153371.0 interpreters. 15338 15339 15340Fixed a problem where complex terms were not supported properly within 15341the 15342Switch() operator. 15343 15344Eliminated extraneous warning for compiler-emitted reserved names of the 15345form "_T_x". (Used in Switch/Case operators.) 15346 15347Eliminated optimization messages for "_T_x" objects and small constants 15348within the DefinitionBlock operator. 15349 15350 15351---------------------------------------- 1535215 June 2004. Summary of changes for version 20040615: 15353 153541) ACPI CA Core Subsystem: 15355 15356Implemented support for Buffer and String objects (as per ACPI 2.0) for 15357the 15358following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15359LLessEqual. 15360 15361All directory names in the entire source package are lower case, as they 15362were in earlier releases. 15363 15364Implemented "Disassemble" command in the AML debugger that will 15365disassemble 15366a single control method. 15367 15368Code and Data Size: Current and previous core subsystem library sizes are 15369shown below. These are the code and data sizes for the acpica.lib 15370produced 15371by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15372any ACPI driver or OSPM code. The debug version of the code includes the 15373debug output trace mechanism and has a much larger code and data size. 15374Note 15375that these values will vary depending on the efficiency of the compiler 15376and 15377the compiler options used during generation. 15378 15379 Previous Release: 15380 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15381 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15382 15383 Current Release: 15384 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15385 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15386 15387 153882) iASL Compiler/Disassembler: 15389 15390Implemented support for Buffer and String objects (as per ACPI 2.0) for 15391the 15392following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15393LLessEqual. 15394 15395All directory names in the entire source package are lower case, as they 15396were in earlier releases. 15397 15398Fixed a fault when using the -g or -d<nofilename> options if the FADT was 15399not found. 15400 15401Fixed an issue with the Windows version of the compiler where later 15402versions 15403of Windows place the FADT in the registry under the name "FADT" and not 15404"FACP" as earlier versions did. This applies when using the -g or - 15405d<nofilename> options. The compiler now looks for both strings as 15406necessary. 15407 15408Fixed a problem with compiler namepath optimization where a namepath 15409within 15410the Scope() operator could not be optimized if the namepath was a subpath 15411of 15412the current scope path. 15413 15414---------------------------------------- 1541527 May 2004. Summary of changes for version 20040527: 15416 154171) ACPI CA Core Subsystem: 15418 15419Completed a new design and implementation for EBDA (Extended BIOS Data 15420Area) 15421support in the RSDP scan code. The original code improperly scanned for 15422the 15423EBDA by simply scanning from memory location 0 to 0x400. The correct 15424method 15425is to first obtain the EBDA pointer from within the BIOS data area, then 15426scan 1K of memory starting at the EBDA pointer. There appear to be few 15427if 15428any machines that place the RSDP in the EBDA, however. 15429 15430Integrated a fix for a possible fault during evaluation of BufferField 15431arguments. Obsolete code that was causing the problem was removed. 15432 15433Found and fixed a problem in the Field Support Code where data could be 15434corrupted on a bit field read that starts on an aligned boundary but does 15435not end on an aligned boundary. Merged the read/write "datum length" 15436calculation code into a common procedure. 15437 15438Rolled in a couple of changes to the FreeBSD-specific header. 15439 15440 15441Code and Data Size: Current and previous core subsystem library sizes are 15442shown below. These are the code and data sizes for the acpica.lib 15443produced 15444by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15445any ACPI driver or OSPM code. The debug version of the code includes the 15446debug output trace mechanism and has a much larger code and data size. 15447Note 15448that these values will vary depending on the efficiency of the compiler 15449and 15450the compiler options used during generation. 15451 15452 Previous Release: 15453 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15454 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15455 Current Release: 15456 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15457 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15458 15459 154602) iASL Compiler/Disassembler: 15461 15462Fixed a generation warning produced by some overly-verbose compilers for 15463a 1546464-bit constant. 15465 15466---------------------------------------- 1546714 May 2004. Summary of changes for version 20040514: 15468 154691) ACPI CA Core Subsystem: 15470 15471Fixed a problem where hardware GPE enable bits sometimes not set properly 15472during and after GPE method execution. Result of 04/27 changes. 15473 15474Removed extra "clear all GPEs" when sleeping/waking. 15475 15476Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 15477AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 15478to 15479the new AcpiEv* calls as appropriate. 15480 15481ACPI_OS_NAME was removed from the OS-specific headers. The default name 15482is 15483now "Microsoft Windows NT" for maximum compatibility. However this can 15484be 15485changed by modifying the acconfig.h file. 15486 15487Allow a single invocation of AcpiInstallNotifyHandler for a handler that 15488traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 15489 15490Run _INI methods on ThermalZone objects. This is against the ACPI 15491specification, but there is apparently ASL code in the field that has 15492these 15493_INI methods, and apparently "other" AML interpreters execute them. 15494 15495Performed a full 16/32/64 bit lint that resulted in some small changes. 15496 15497Added a sleep simulation command to the AML debugger to test sleep code. 15498 15499Code and Data Size: Current and previous core subsystem library sizes are 15500shown below. These are the code and data sizes for the acpica.lib 15501produced 15502by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15503any ACPI driver or OSPM code. The debug version of the code includes the 15504debug output trace mechanism and has a much larger code and data size. 15505Note 15506that these values will vary depending on the efficiency of the compiler 15507and 15508the compiler options used during generation. 15509 15510 Previous Release: 15511 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15512 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15513 Current Release: 15514 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15515 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15516 15517---------------------------------------- 1551827 April 2004. Summary of changes for version 20040427: 15519 155201) ACPI CA Core Subsystem: 15521 15522Completed a major overhaul of the GPE handling within ACPI CA. There are 15523now three types of GPEs: wake-only, runtime-only, and combination 15524wake/run. 15525The only GPEs allowed to be combination wake/run are for button-style 15526devices such as a control-method power button, control-method sleep 15527button, 15528or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 15529not 15530referenced by any _PRW methods are marked for "runtime" and hardware 15531enabled. Any GPE that is referenced by a _PRW method is marked for 15532"wake" 15533(and disabled at runtime). However, at sleep time, only those GPEs that 15534have been specifically enabled for wake via the AcpiEnableGpe interface 15535will 15536actually be hardware enabled. 15537 15538A new external interface has been added, AcpiSetGpeType(), that is meant 15539to 15540be used by device drivers to force a GPE to a particular type. It will 15541be 15542especially useful for the drivers for the button devices mentioned above. 15543 15544Completed restructuring of the ACPI CA initialization sequence so that 15545default operation region handlers are installed before GPEs are 15546initialized 15547and the _PRW methods are executed. This will prevent errors when the 15548_PRW 15549methods attempt to access system memory or I/O space. 15550 15551GPE enable/disable no longer reads the GPE enable register. We now keep 15552the 15553enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 15554thus no longer depend on the hardware to maintain these bits. 15555 15556Always clear the wake status and fixed/GPE status bits before sleep, even 15557for state S5. 15558 15559Improved the AML debugger output for displaying the GPE blocks and their 15560current status. 15561 15562Added new strings for the _OSI method, of the form "Windows 2001 SPx" 15563where 15564x = 0,1,2,3,4. 15565 15566Fixed a problem where the physical address was incorrectly calculated 15567when 15568the Load() operator was used to directly load from an Operation Region 15569(vs. 15570loading from a Field object.) Also added check for minimum table length 15571for 15572this case. 15573 15574Fix for multiple mutex acquisition. Restore original thread SyncLevel on 15575mutex release. 15576 15577Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 15578consistency with the other fields returned. 15579 15580Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 15581structure for each GPE in the system, so the size of this structure is 15582important. 15583 15584CPU stack requirement reduction: Cleaned up the method execution and 15585object 15586evaluation paths so that now a parameter structure is passed, instead of 15587copying the various method parameters over and over again. 15588 15589In evregion.c: Correctly exit and reenter the interpreter region if and 15590only if dispatching an operation region request to a user-installed 15591handler. 15592Do not exit/reenter when dispatching to a default handler (e.g., default 15593system memory or I/O handlers) 15594 15595 15596Notes for updating drivers for the new GPE support. The following 15597changes 15598must be made to ACPI-related device drivers that are attached to one or 15599more 15600GPEs: (This information will be added to the ACPI CA Programmer 15601Reference.) 15602 156031) AcpiInstallGpeHandler no longer automatically enables the GPE, you 15604must 15605explicitly call AcpiEnableGpe. 156062) There is a new interface called AcpiSetGpeType. This should be called 15607before enabling the GPE. Also, this interface will automatically disable 15608the GPE if it is currently enabled. 156093) AcpiEnableGpe no longer supports a GPE type flag. 15610 15611Specific drivers that must be changed: 156121) EC driver: 15613 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15614AeGpeHandler, NULL); 15615 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15616 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15617 156182) Button Drivers (Power, Lid, Sleep): 15619Run _PRW method under parent device 15620If _PRW exists: /* This is a control-method button */ 15621 Extract GPE number and possibly GpeDevice 15622 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15623 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15624 15625For all other devices that have _PRWs, we automatically set the GPE type 15626to 15627ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15628This 15629must be done on a selective basis, usually requiring some kind of user 15630app 15631to allow the user to pick the wake devices. 15632 15633 15634Code and Data Size: Current and previous core subsystem library sizes are 15635shown below. These are the code and data sizes for the acpica.lib 15636produced 15637by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15638any ACPI driver or OSPM code. The debug version of the code includes the 15639debug output trace mechanism and has a much larger code and data size. 15640Note 15641that these values will vary depending on the efficiency of the compiler 15642and 15643the compiler options used during generation. 15644 15645 Previous Release: 15646 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15647 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15648 Current Release: 15649 15650 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15651 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15652 15653 15654 15655---------------------------------------- 1565602 April 2004. Summary of changes for version 20040402: 15657 156581) ACPI CA Core Subsystem: 15659 15660Fixed an interpreter problem where an indirect store through an ArgX 15661parameter was incorrectly applying the "implicit conversion rules" during 15662the store. From the ACPI specification: "If the target is a method local 15663or 15664argument (LocalX or ArgX), no conversion is performed and the result is 15665stored directly to the target". The new behavior is to disable implicit 15666conversion during ALL stores to an ArgX. 15667 15668Changed the behavior of the _PRW method scan to ignore any and all errors 15669returned by a given _PRW. This prevents the scan from aborting from the 15670failure of any single _PRW. 15671 15672Moved the runtime configuration parameters from the global init procedure 15673to 15674static variables in acglobal.h. This will allow the host to override the 15675default values easily. 15676 15677Code and Data Size: Current and previous core subsystem library sizes are 15678shown below. These are the code and data sizes for the acpica.lib 15679produced 15680by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15681any ACPI driver or OSPM code. The debug version of the code includes the 15682debug output trace mechanism and has a much larger code and data size. 15683Note 15684that these values will vary depending on the efficiency of the compiler 15685and 15686the compiler options used during generation. 15687 15688 Previous Release: 15689 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15690 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15691 Current Release: 15692 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15693 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15694 15695 156962) iASL Compiler/Disassembler: 15697 15698iASL now fully disassembles SSDTs. However, External() statements are 15699not 15700generated automatically for unresolved symbols at this time. This is a 15701planned feature for future implementation. 15702 15703Fixed a scoping problem in the disassembler that occurs when the type of 15704the 15705target of a Scope() operator is overridden. This problem caused an 15706incorrectly nested internal namespace to be constructed. 15707 15708Any warnings or errors that are emitted during disassembly are now 15709commented 15710out automatically so that the resulting file can be recompiled without 15711any 15712hand editing. 15713 15714---------------------------------------- 1571526 March 2004. Summary of changes for version 20040326: 15716 157171) ACPI CA Core Subsystem: 15718 15719Implemented support for "wake" GPEs via interaction between GPEs and the 15720_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15721identified as a WAKE GPE and by default will no longer be enabled at 15722runtime. Previously, we were blindly enabling all GPEs with a 15723corresponding 15724_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15725We 15726believe this has been the cause of thousands of "spurious" GPEs on some 15727systems. 15728 15729This new GPE behavior is can be reverted to the original behavior (enable 15730ALL GPEs at runtime) via a runtime flag. 15731 15732Fixed a problem where aliased control methods could not access objects 15733properly. The proper scope within the namespace was not initialized 15734(transferred to the target of the aliased method) before executing the 15735target method. 15736 15737Fixed a potential race condition on internal object deletion on the 15738return 15739object in AcpiEvaluateObject. 15740 15741Integrated a fix for resource descriptors where both _MEM and _MTP were 15742being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15743wide, 0x0F instead of 0x03.) 15744 15745Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15746preventing 15747a 15748fault in some cases. 15749 15750Updated Notify() values for debug statements in evmisc.c 15751 15752Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15753 15754Code and Data Size: Current and previous core subsystem library sizes are 15755shown below. These are the code and data sizes for the acpica.lib 15756produced 15757by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15758any ACPI driver or OSPM code. The debug version of the code includes the 15759debug output trace mechanism and has a much larger code and data size. 15760Note 15761that these values will vary depending on the efficiency of the compiler 15762and 15763the compiler options used during generation. 15764 15765 Previous Release: 15766 15767 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15768 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15769 Current Release: 15770 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15771 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15772 15773---------------------------------------- 1577411 March 2004. Summary of changes for version 20040311: 15775 157761) ACPI CA Core Subsystem: 15777 15778Fixed a problem where errors occurring during the parse phase of control 15779method execution did not abort cleanly. For example, objects created and 15780installed in the namespace were not deleted. This caused all subsequent 15781invocations of the method to return the AE_ALREADY_EXISTS exception. 15782 15783Implemented a mechanism to force a control method to "Serialized" 15784execution 15785if the method attempts to create namespace objects. (The root of the 15786AE_ALREADY_EXISTS problem.) 15787 15788Implemented support for the predefined _OSI "internal" control method. 15789Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15790and 15791"Windows 2001.1", and can be easily upgraded for new strings as 15792necessary. 15793This feature will allow "other" operating systems to execute the fully 15794tested, "Windows" code path through the ASL code 15795 15796Global Lock Support: Now allows multiple acquires and releases with any 15797internal thread. Removed concept of "owning thread" for this special 15798mutex. 15799 15800Fixed two functions that were inappropriately declaring large objects on 15801the 15802CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15803during 15804method execution considerably. 15805 15806Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15807S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15808 15809Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15810defined on the machine. 15811 15812Implemented two runtime options: One to force all control method 15813execution 15814to "Serialized" to mimic Windows behavior, another to disable _OSI 15815support 15816if it causes problems on a given machine. 15817 15818Code and Data Size: Current and previous core subsystem library sizes are 15819shown below. These are the code and data sizes for the acpica.lib 15820produced 15821by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15822any ACPI driver or OSPM code. The debug version of the code includes the 15823debug output trace mechanism and has a much larger code and data size. 15824Note 15825that these values will vary depending on the efficiency of the compiler 15826and 15827the compiler options used during generation. 15828 15829 Previous Release: 15830 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15831 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15832 Current Release: 15833 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15834 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15835 158362) iASL Compiler/Disassembler: 15837 15838Fixed an array size problem for FreeBSD that would cause the compiler to 15839fault. 15840 15841---------------------------------------- 1584220 February 2004. Summary of changes for version 20040220: 15843 15844 158451) ACPI CA Core Subsystem: 15846 15847Implemented execution of _SxD methods for Device objects in the 15848GetObjectInfo interface. 15849 15850Fixed calls to _SST method to pass the correct arguments. 15851 15852Added a call to _SST on wake to restore to "working" state. 15853 15854Check for End-Of-Buffer failure case in the WalkResources interface. 15855 15856Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15857structures to the beginning of the file. 15858 15859After wake, clear GPE status register(s) before enabling GPEs. 15860 15861After wake, clear/enable power button. (Perhaps we should clear/enable 15862all 15863fixed events upon wake.) 15864 15865Fixed a couple of possible memory leaks in the Namespace manager. 15866 15867Integrated latest acnetbsd.h file. 15868 15869---------------------------------------- 1587011 February 2004. Summary of changes for version 20040211: 15871 15872 158731) ACPI CA Core Subsystem: 15874 15875Completed investigation and implementation of the call-by-reference 15876mechanism for control method arguments. 15877 15878Fixed a problem where a store of an object into an indexed package could 15879fail if the store occurs within a different method than the method that 15880created the package. 15881 15882Fixed a problem where the ToDecimal operator could return incorrect 15883results. 15884 15885Fixed a problem where the CopyObject operator could fail on some of the 15886more 15887obscure objects (e.g., Reference objects.) 15888 15889Improved the output of the Debug object to display buffer, package, and 15890index objects. 15891 15892Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15893return 15894the expected result. 15895 15896Added permanent ACPI_REPORT_ERROR macros for all instances of the 15897ACPI_AML_INTERNAL exception. 15898 15899Integrated latest version of acfreebsd.h 15900 15901---------------------------------------- 1590216 January 2004. Summary of changes for version 20040116: 15903 15904The purpose of this release is primarily to update the copyright years in 15905each module, thus causing a huge number of diffs. There are a few small 15906functional changes, however. 15907 159081) ACPI CA Core Subsystem: 15909 15910Improved error messages when there is a problem finding one or more of 15911the 15912required base ACPI tables 15913 15914Reintroduced the definition of APIC_HEADER in actbl.h 15915 15916Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15917 15918Removed extraneous reference to NewObj in dsmthdat.c 15919 159202) iASL compiler 15921 15922Fixed a problem introduced in December that disabled the correct 15923disassembly 15924of Resource Templates 15925 15926 15927---------------------------------------- 1592803 December 2003. Summary of changes for version 20031203: 15929 159301) ACPI CA Core Subsystem: 15931 15932Changed the initialization of Operation Regions during subsystem 15933init to perform two entire walks of the ACPI namespace; The first 15934to initialize the regions themselves, the second to execute the 15935_REG methods. This fixed some interdependencies across _REG 15936methods found on some machines. 15937 15938Fixed a problem where a Store(Local0, Local1) could simply update 15939the object reference count, and not create a new copy of the 15940object if the Local1 is uninitialized. 15941 15942Implemented support for the _SST reserved method during sleep 15943transitions. 15944 15945Implemented support to clear the SLP_TYP and SLP_EN bits when 15946waking up, this is apparently required by some machines. 15947 15948When sleeping, clear the wake status only if SleepState is not S5. 15949 15950Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15951pointer arithmetic advanced a string pointer too far. 15952 15953Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15954could be returned if the requested table has not been loaded. 15955 15956Within the support for IRQ resources, restructured the handling of 15957the active and edge/level bits. 15958 15959Fixed a few problems in AcpiPsxExecute() where memory could be 15960leaked under certain error conditions. 15961 15962Improved error messages for the cases where the ACPI mode could 15963not be entered. 15964 15965Code and Data Size: Current and previous core subsystem library 15966sizes are shown below. These are the code and data sizes for the 15967acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15968these values do not include any ACPI driver or OSPM code. The 15969debug version of the code includes the debug output trace 15970mechanism and has a much larger code and data size. Note that 15971these values will vary depending on the efficiency of the compiler 15972and the compiler options used during generation. 15973 15974 Previous Release (20031029): 15975 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15976 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15977 Current Release: 15978 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15979 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15980 159812) iASL Compiler/Disassembler: 15982 15983Implemented a fix for the iASL disassembler where a bad index was 15984generated. This was most noticeable on 64-bit platforms 15985 15986 15987---------------------------------------- 1598829 October 2003. Summary of changes for version 20031029: 15989 159901) ACPI CA Core Subsystem: 15991 15992 15993Fixed a problem where a level-triggered GPE with an associated 15994_Lxx control method was incorrectly cleared twice. 15995 15996Fixed a problem with the Field support code where an access can 15997occur beyond the end-of-region if the field is non-aligned but 15998extends to the very end of the parent region (resulted in an 15999AE_AML_REGION_LIMIT exception.) 16000 16001Fixed a problem with ACPI Fixed Events where an RT Clock handler 16002would not get invoked on an RTC event. The RTC event bitmasks for 16003the PM1 registers were not being initialized properly. 16004 16005Implemented support for executing _STA and _INI methods for 16006Processor objects. Although this is currently not part of the 16007ACPI specification, there is existing ASL code that depends on the 16008init-time execution of these methods. 16009 16010Implemented and deployed a GetDescriptorName function to decode 16011the various types of internal descriptors. Guards against null 16012descriptors during debug output also. 16013 16014Implemented and deployed a GetNodeName function to extract the 4- 16015character namespace node name. This function simplifies the debug 16016and error output, as well as guarding against null pointers during 16017output. 16018 16019Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 16020simplify the debug and error output of 64-bit integers. This 16021macro replaces the HIDWORD and LODWORD macros for dumping these 16022integers. 16023 16024Updated the implementation of the Stall() operator to only call 16025AcpiOsStall(), and also return an error if the operand is larger 16026than 255. This preserves the required behavior of not 16027relinquishing the processor, as would happen if AcpiOsSleep() was 16028called for "long stalls". 16029 16030Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 16031initialized are now treated as NOOPs. 16032 16033Cleaned up a handful of warnings during 64-bit generation. 16034 16035Fixed a reported error where and incorrect GPE number was passed 16036to the GPE dispatch handler. This value is only used for error 16037output, however. Used this opportunity to clean up and streamline 16038the GPE dispatch code. 16039 16040Code and Data Size: Current and previous core subsystem library 16041sizes are shown below. These are the code and data sizes for the 16042acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16043these values do not include any ACPI driver or OSPM code. The 16044 16045debug version of the code includes the debug output trace 16046mechanism and has a much larger code and data size. Note that 16047these values will vary depending on the efficiency of the compiler 16048and the compiler options used during generation. 16049 16050 Previous Release (20031002): 16051 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 16052 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 16053 Current Release: 16054 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 16055 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 16056 16057 160582) iASL Compiler/Disassembler: 16059 16060Updated the iASL compiler to return an error if the operand to the 16061Stall() operator is larger than 255. 16062 16063 16064---------------------------------------- 1606502 October 2003. Summary of changes for version 20031002: 16066 16067 160681) ACPI CA Core Subsystem: 16069 16070Fixed a problem with Index Fields where the index was not 16071incremented for fields that require multiple writes to the 16072index/data registers (Fields that are wider than the data 16073register.) 16074 16075Fixed a problem with all Field objects where a write could go 16076beyond the end-of-field if the field was larger than the access 16077granularity and therefore required multiple writes to complete the 16078request. An extra write beyond the end of the field could happen 16079inadvertently. 16080 16081Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 16082would incorrectly be returned if the width of the Data Register 16083was larger than the specified field access width. 16084 16085Completed fixes for LoadTable() and Unload() and verified their 16086operation. Implemented full support for the "DdbHandle" object 16087throughout the ACPI CA subsystem. 16088 16089Implemented full support for the MADT and ECDT tables in the ACPI 16090CA header files. Even though these tables are not directly 16091consumed by ACPI CA, the header definitions are useful for ACPI 16092device drivers. 16093 16094Integrated resource descriptor fixes posted to the Linux ACPI 16095list. This included checks for minimum descriptor length, and 16096support for trailing NULL strings within descriptors that have 16097optional string elements. 16098 16099Code and Data Size: Current and previous core subsystem library 16100sizes are shown below. These are the code and data sizes for the 16101acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16102these values do not include any ACPI driver or OSPM code. The 16103debug version of the code includes the debug output trace 16104mechanism and has a much larger code and data size. Note that 16105these values will vary depending on the efficiency of the compiler 16106and the compiler options used during generation. 16107 16108 Previous Release (20030918): 16109 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16110 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16111 Current Release: 16112 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 16113 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 16114 16115 161162) iASL Compiler: 16117 16118Implemented detection of non-ASCII characters within the input 16119source ASL file. This catches attempts to compile binary (AML) 16120files early in the compile, with an informative error message. 16121 16122Fixed a problem where the disassembler would fault if the output 16123filename could not be generated or if the output file could not be 16124opened. 16125 16126---------------------------------------- 1612718 September 2003. Summary of changes for version 20030918: 16128 16129 161301) ACPI CA Core Subsystem: 16131 16132Found and fixed a longstanding problem with the late execution of 16133the various deferred AML opcodes (such as Operation Regions, 16134Buffer Fields, Buffers, and Packages). If the name string 16135specified for the name of the new object placed the object in a 16136scope other than the current scope, the initialization/execution 16137of the opcode failed. The solution to this problem was to 16138implement a mechanism where the late execution of such opcodes 16139does not attempt to lookup/create the name a second time in an 16140incorrect scope. This fixes the "region size computed 16141incorrectly" problem. 16142 16143Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 16144Global Lock AE_BAD_PARAMETER error. 16145 16146Fixed several 64-bit issues with prototypes, casting and data 16147types. 16148 16149Removed duplicate prototype from acdisasm.h 16150 16151Fixed an issue involving EC Operation Region Detach (Shaohua Li) 16152 16153Code and Data Size: Current and previous core subsystem library 16154sizes are shown below. These are the code and data sizes for the 16155acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16156these values do not include any ACPI driver or OSPM code. The 16157debug version of the code includes the debug output trace 16158mechanism and has a much larger code and data size. Note that 16159these values will vary depending on the efficiency of the compiler 16160and the compiler options used during generation. 16161 16162 Previous Release: 16163 16164 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16165 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16166 Current Release: 16167 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16168 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16169 16170 161712) Linux: 16172 16173Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 16174correct sleep time in seconds. 16175 16176---------------------------------------- 1617714 July 2003. Summary of changes for version 20030619: 16178 161791) ACPI CA Core Subsystem: 16180 16181Parse SSDTs in order discovered, as opposed to reverse order 16182(Hrvoje Habjanic) 16183 16184Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 16185Klausner, 16186 Nate Lawson) 16187 16188 161892) Linux: 16190 16191Dynamically allocate SDT list (suggested by Andi Kleen) 16192 16193proc function return value cleanups (Andi Kleen) 16194 16195Correctly handle NMI watchdog during long stalls (Andrew Morton) 16196 16197Make it so acpismp=force works (reported by Andrew Morton) 16198 16199 16200---------------------------------------- 1620119 June 2003. Summary of changes for version 20030619: 16202 162031) ACPI CA Core Subsystem: 16204 16205Fix To/FromBCD, eliminating the need for an arch-specific #define. 16206 16207Do not acquire a semaphore in the S5 shutdown path. 16208 16209Fix ex_digits_needed for 0. (Takayoshi Kochi) 16210 16211Fix sleep/stall code reversal. (Andi Kleen) 16212 16213Revert a change having to do with control method calling 16214semantics. 16215 162162) Linux: 16217 16218acpiphp update (Takayoshi Kochi) 16219 16220Export acpi_disabled for sonypi (Stelian Pop) 16221 16222Mention acpismp=force in config help 16223 16224Re-add acpitable.c and acpismp=force. This improves backwards 16225 16226compatibility and also cleans up the code to a significant degree. 16227 16228Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 16229 16230---------------------------------------- 1623122 May 2003. Summary of changes for version 20030522: 16232 162331) ACPI CA Core Subsystem: 16234 16235Found and fixed a reported problem where an AE_NOT_FOUND error 16236occurred occasionally during _BST evaluation. This turned out to 16237be an Owner ID allocation issue where a called method did not get 16238a new ID assigned to it. Eventually, (after 64k calls), the Owner 16239ID UINT16 would wraparound so that the ID would be the same as the 16240caller's and the called method would delete the caller's 16241namespace. 16242 16243Implemented extended error reporting for control methods that are 16244aborted due to a run-time exception. Output includes the exact 16245AML instruction that caused the method abort, a dump of the method 16246locals and arguments at the time of the abort, and a trace of all 16247nested control method calls. 16248 16249Modified the interpreter to allow the creation of buffers of zero 16250length from the AML code. Implemented new code to ensure that no 16251attempt is made to actually allocate a memory buffer (of length 16252zero) - instead, a simple buffer object with a NULL buffer pointer 16253and length zero is created. A warning is no longer issued when 16254the AML attempts to create a zero-length buffer. 16255 16256Implemented a workaround for the "leading asterisk issue" in 16257_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 16258asterisk is automatically removed if present in any HID, UID, or 16259CID strings. The iASL compiler will still flag this asterisk as 16260an error, however. 16261 16262Implemented full support for _CID methods that return a package of 16263multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 16264now additionally returns a device _CID list if present. This 16265required a change to the external interface in order to pass an 16266ACPI_BUFFER object as a parameter since the _CID list is of 16267variable length. 16268 16269Fixed a problem with the new AE_SAME_HANDLER exception where 16270handler initialization code did not know about this exception. 16271 16272Code and Data Size: Current and previous core subsystem library 16273sizes are shown below. These are the code and data sizes for the 16274acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16275these values do not include any ACPI driver or OSPM code. The 16276debug version of the code includes the debug output trace 16277mechanism and has a much larger code and data size. Note that 16278these values will vary depending on the efficiency of the compiler 16279and the compiler options used during generation. 16280 16281 Previous Release (20030509): 16282 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16283 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16284 Current Release: 16285 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16286 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16287 16288 162892) Linux: 16290 16291Fixed a bug in which we would reinitialize the ACPI interrupt 16292after it was already working, thus disabling all ACPI and the IRQs 16293for any other device sharing the interrupt. (Thanks to Stian 16294Jordet) 16295 16296Toshiba driver update (John Belmonte) 16297 16298Return only 0 or 1 for our interrupt handler status (Andrew 16299Morton) 16300 16301 163023) iASL Compiler: 16303 16304Fixed a reported problem where multiple (nested) ElseIf() 16305statements were not handled correctly by the compiler, resulting 16306in incorrect warnings and incorrect AML code. This was a problem 16307in both the ASL parser and the code generator. 16308 16309 163104) Documentation: 16311 16312Added changes to existing interfaces, new exception codes, and new 16313text concerning reference count object management versus garbage 16314collection. 16315 16316---------------------------------------- 1631709 May 2003. Summary of changes for version 20030509. 16318 16319 163201) ACPI CA Core Subsystem: 16321 16322Changed the subsystem initialization sequence to hold off 16323installation of address space handlers until the hardware has been 16324initialized and the system has entered ACPI mode. This is because 16325the installation of space handlers can cause _REG methods to be 16326run. Previously, the _REG methods could potentially be run before 16327ACPI mode was enabled. 16328 16329Fixed some memory leak issues related to address space handler and 16330notify handler installation. There were some problems with the 16331reference count mechanism caused by the fact that the handler 16332objects are shared across several namespace objects. 16333 16334Fixed a reported problem where reference counts within the 16335namespace were not properly updated when named objects created by 16336method execution were deleted. 16337 16338Fixed a reported problem where multiple SSDTs caused a deletion 16339issue during subsystem termination. Restructured the table data 16340structures to simplify the linked lists and the related code. 16341 16342Fixed a problem where the table ID associated with secondary 16343tables (SSDTs) was not being propagated into the namespace objects 16344created by those tables. This would only present a problem for 16345tables that are unloaded at run-time, however. 16346 16347Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 16348type as the length parameter (instead of UINT32). 16349 16350Solved a long-standing problem where an ALREADY_EXISTS error 16351appears on various systems. This problem could happen when there 16352are multiple PCI_Config operation regions under a single PCI root 16353bus. This doesn't happen very frequently, but there are some 16354systems that do this in the ASL. 16355 16356Fixed a reported problem where the internal DeleteNode function 16357was incorrectly handling the case where a namespace node was the 16358first in the parent's child list, and had additional peers (not 16359the only child, but first in the list of children.) 16360 16361Code and Data Size: Current core subsystem library sizes are shown 16362below. These are the code and data sizes for the acpica.lib 16363produced by the Microsoft Visual C++ 6.0 compiler, and these 16364values do not include any ACPI driver or OSPM code. The debug 16365version of the code includes the debug output trace mechanism and 16366has a much larger code and data size. Note that these values will 16367vary depending on the efficiency of the compiler and the compiler 16368options used during generation. 16369 16370 Previous Release 16371 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16372 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16373 Current Release: 16374 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16375 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16376 16377 163782) Linux: 16379 16380Allow ":" in OS override string (Ducrot Bruno) 16381 16382Kobject fix (Greg KH) 16383 16384 163853 iASL Compiler/Disassembler: 16386 16387Fixed a problem in the generation of the C source code files (AML 16388is emitted in C source statements for BIOS inclusion) where the 16389Ascii dump that appears within a C comment at the end of each line 16390could cause a compile time error if the AML sequence happens to 16391have an open comment or close comment sequence embedded. 16392 16393 16394---------------------------------------- 1639524 April 2003. Summary of changes for version 20030424. 16396 16397 163981) ACPI CA Core Subsystem: 16399 16400Support for big-endian systems has been implemented. Most of the 16401support has been invisibly added behind big-endian versions of the 16402ACPI_MOVE_* macros. 16403 16404Fixed a problem in AcpiHwDisableGpeBlock() and 16405AcpiHwClearGpeBlock() where an incorrect offset was passed to the 16406low level hardware write routine. The offset parameter was 16407actually eliminated from the low level read/write routines because 16408they had become obsolete. 16409 16410Fixed a problem where a handler object was deleted twice during 16411the removal of a fixed event handler. 16412 16413 164142) Linux: 16415 16416A fix for SMP systems with link devices was contributed by 16417 16418Compaq's Dan Zink. 16419 16420(2.5) Return whether we handled the interrupt in our IRQ handler. 16421(Linux ISRs no longer return void, so we can propagate the handler 16422return value from the ACPI CA core back to the OS.) 16423 16424 16425 164263) Documentation: 16427 16428The ACPI CA Programmer Reference has been updated to reflect new 16429interfaces and changes to existing interfaces. 16430 16431---------------------------------------- 1643228 March 2003. Summary of changes for version 20030328. 16433 164341) ACPI CA Core Subsystem: 16435 16436The GPE Block Device support has been completed. New interfaces 16437are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 16438interfaces (enable, disable, clear, getstatus) have been split 16439into separate interfaces for Fixed Events and General Purpose 16440Events (GPEs) in order to support GPE Block Devices properly. 16441 16442Fixed a problem where the error message "Failed to acquire 16443semaphore" would appear during operations on the embedded 16444controller (EC). 16445 16446Code and Data Size: Current core subsystem library sizes are shown 16447below. These are the code and data sizes for the acpica.lib 16448produced by the Microsoft Visual C++ 6.0 compiler, and these 16449values do not include any ACPI driver or OSPM code. The debug 16450version of the code includes the debug output trace mechanism and 16451has a much larger code and data size. Note that these values will 16452vary depending on the efficiency of the compiler and the compiler 16453options used during generation. 16454 16455 Previous Release 16456 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16457 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16458 Current Release: 16459 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16460 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16461 16462 16463---------------------------------------- 1646428 February 2003. Summary of changes for version 20030228. 16465 16466 164671) ACPI CA Core Subsystem: 16468 16469The GPE handling and dispatch code has been completely overhauled 16470in preparation for support of GPE Block Devices (ID ACPI0006). 16471This affects internal data structures and code only; there should 16472be no differences visible externally. One new file has been 16473added, evgpeblk.c 16474 16475The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 16476fields that are used to determine the GPE block lengths. The 16477REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 16478structures are ignored. This is per the ACPI specification but it 16479isn't very clear. The full 256 Block 0/1 GPEs are now supported 16480(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 16481 16482In the SCI interrupt handler, removed the read of the PM1_CONTROL 16483register to look at the SCI_EN bit. On some machines, this read 16484causes an SMI event and greatly slows down SCI events. (This may 16485in fact be the cause of slow battery status response on some 16486systems.) 16487 16488Fixed a problem where a store of a NULL string to a package object 16489could cause the premature deletion of the object. This was seen 16490during execution of the battery _BIF method on some systems, 16491resulting in no battery data being returned. 16492 16493Added AcpiWalkResources interface to simplify parsing of resource 16494lists. 16495 16496Code and Data Size: Current core subsystem library sizes are shown 16497below. These are the code and data sizes for the acpica.lib 16498produced by the Microsoft Visual C++ 6.0 compiler, and these 16499values do not include any ACPI driver or OSPM code. The debug 16500version of the code includes the debug output trace mechanism and 16501has a much larger code and data size. Note that these values will 16502vary depending on the efficiency of the compiler and the compiler 16503options used during generation. 16504 16505 Previous Release 16506 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16507 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16508 Current Release: 16509 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16510 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16511 16512 165132) Linux 16514 16515S3 fixes (Ole Rohne) 16516 16517Update ACPI PHP driver with to use new acpi_walk_resource API 16518(Bjorn Helgaas) 16519 16520Add S4BIOS support (Pavel Machek) 16521 16522Map in entire table before performing checksum (John Stultz) 16523 16524Expand the mem= cmdline to allow the specification of reserved and 16525ACPI DATA blocks (Pavel Machek) 16526 16527Never use ACPI on VISWS 16528 16529Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 16530 16531Revert a change that allowed P_BLK lengths to be 4 or 5. This is 16532causing us to think that some systems support C2 when they really 16533don't. 16534 16535Do not count processor objects for non-present CPUs (Thanks to 16536Dominik Brodowski) 16537 16538 165393) iASL Compiler: 16540 16541Fixed a problem where ASL include files could not be found and 16542opened. 16543 16544Added support for the _PDC reserved name. 16545 16546 16547---------------------------------------- 1654822 January 2003. Summary of changes for version 20030122. 16549 16550 165511) ACPI CA Core Subsystem: 16552 16553Added a check for constructs of the form: Store (Local0, Local0) 16554where Local0 is not initialized. Apparently, some BIOS 16555programmers believe that this is a NOOP. Since this store doesn't 16556do anything anyway, the new prototype behavior will ignore this 16557error. This is a case where we can relax the strict checking in 16558the interpreter in the name of compatibility. 16559 16560 165612) Linux 16562 16563The AcpiSrc Source Conversion Utility has been released with the 16564Linux package for the first time. This is the utility that is 16565used to convert the ACPI CA base source code to the Linux version. 16566 16567(Both) Handle P_BLK lengths shorter than 6 more gracefully 16568 16569(Both) Move more headers to include/acpi, and delete an unused 16570header. 16571 16572(Both) Move drivers/acpi/include directory to include/acpi 16573 16574(Both) Boot functions don't use cmdline, so don't pass it around 16575 16576(Both) Remove include of unused header (Adrian Bunk) 16577 16578(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 16579the 16580former now also includes the latter, acpiphp.h only needs the one, 16581now. 16582 16583(2.5) Make it possible to select method of bios restoring after S3 16584resume. [=> no more ugly ifdefs] (Pavel Machek) 16585 16586(2.5) Make proc write interfaces work (Pavel Machek) 16587 16588(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 16589 16590(2.5) Break out ACPI Perf code into its own module, under cpufreq 16591(Dominik Brodowski) 16592 16593(2.4) S4BIOS support (Ducrot Bruno) 16594 16595(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 16596Visinoni) 16597 16598 165993) iASL Compiler: 16600 16601Added support to disassemble SSDT and PSDTs. 16602 16603Implemented support to obtain SSDTs from the Windows registry if 16604available. 16605 16606 16607---------------------------------------- 1660809 January 2003. Summary of changes for version 20030109. 16609 166101) ACPI CA Core Subsystem: 16611 16612Changed the behavior of the internal Buffer-to-String conversion 16613function. The current ACPI specification states that the contents 16614of the buffer are "converted to a string of two-character 16615hexadecimal numbers, each separated by a space". Unfortunately, 16616this definition is not backwards compatible with existing ACPI 1.0 16617implementations (although the behavior was not defined in the ACPI 166181.0 specification). The new behavior simply copies data from the 16619buffer to the string until a null character is found or the end of 16620the buffer is reached. The new String object is always null 16621terminated. This problem was seen during the generation of _BIF 16622battery data where incorrect strings were returned for battery 16623type, etc. This will also require an errata to the ACPI 16624specification. 16625 16626Renamed all instances of NATIVE_UINT and NATIVE_INT to 16627ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16628 16629Copyright in all module headers (both Linux and non-Linux) has be 16630updated to 2003. 16631 16632Code and Data Size: Current core subsystem library sizes are shown 16633below. These are the code and data sizes for the acpica.lib 16634produced by the Microsoft Visual C++ 6.0 compiler, and these 16635values do not include any ACPI driver or OSPM code. The debug 16636version of the code includes the debug output trace mechanism and 16637has a much larger code and data size. Note that these values will 16638vary depending on the efficiency of the compiler and the compiler 16639options used during generation. 16640 16641 Previous Release 16642 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16643 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16644 Current Release: 16645 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16646 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16647 16648 166492) Linux 16650 16651Fixed an oops on module insertion/removal (Matthew Tippett) 16652 16653(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16654 16655(2.5) Replace pr_debug (Randy Dunlap) 16656 16657(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16658 16659(Both) Eliminate spawning of thread from timer callback, in favor 16660of schedule_work() 16661 16662(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16663 16664(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16665 16666(Both) Add missing statics to button.c (Pavel Machek) 16667 16668Several changes have been made to the source code translation 16669utility that generates the Linux Code in order to make the code 16670more "Linux-like": 16671 16672All typedefs on structs and unions have been removed in keeping 16673with the Linux coding style. 16674 16675Removed the non-Linux SourceSafe module revision number from each 16676module header. 16677 16678Completed major overhaul of symbols to be lowercase for linux. 16679Doubled the number of symbols that are lowercase. 16680 16681Fixed a problem where identifiers within procedure headers and 16682within quotes were not fully lower cased (they were left with a 16683starting capital.) 16684 16685Some C macros whose only purpose is to allow the generation of 16- 16686bit code are now completely removed in the Linux code, increasing 16687readability and maintainability. 16688 16689---------------------------------------- 16690 1669112 December 2002. Summary of changes for version 20021212. 16692 16693 166941) ACPI CA Core Subsystem: 16695 16696Fixed a problem where the creation of a zero-length AML Buffer 16697would cause a fault. 16698 16699Fixed a problem where a Buffer object that pointed to a static AML 16700buffer (in an ACPI table) could inadvertently be deleted, causing 16701memory corruption. 16702 16703Fixed a problem where a user buffer (passed in to the external 16704ACPI CA interfaces) could be overwritten if the buffer was too 16705small to complete the operation, causing memory corruption. 16706 16707Fixed a problem in the Buffer-to-String conversion code where a 16708string of length one was always returned, regardless of the size 16709of the input Buffer object. 16710 16711Removed the NATIVE_CHAR data type across the entire source due to 16712lack of need and lack of consistent use. 16713 16714Code and Data Size: Current core subsystem library sizes are shown 16715below. These are the code and data sizes for the acpica.lib 16716produced by the Microsoft Visual C++ 6.0 compiler, and these 16717values do not include any ACPI driver or OSPM code. The debug 16718version of the code includes the debug output trace mechanism and 16719has a much larger code and data size. Note that these values will 16720vary depending on the efficiency of the compiler and the compiler 16721options used during generation. 16722 16723 Previous Release 16724 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16725 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16726 Current Release: 16727 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16728 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16729 16730 16731---------------------------------------- 1673205 December 2002. Summary of changes for version 20021205. 16733 167341) ACPI CA Core Subsystem: 16735 16736Fixed a problem where a store to a String or Buffer object could 16737cause corruption of the DSDT if the object type being stored was 16738the same as the target object type and the length of the object 16739being stored was equal to or smaller than the original (existing) 16740target object. This was seen to cause corruption of battery _BIF 16741buffers if the _BIF method modified the buffer on the fly. 16742 16743Fixed a problem where an internal error was generated if a control 16744method invocation was used in an OperationRegion, Buffer, or 16745Package declaration. This was caused by the deferred parsing of 16746the control method and thus the deferred creation of the internal 16747method object. The solution to this problem was to create the 16748internal method object at the moment the method is encountered in 16749the first pass - so that subsequent references to the method will 16750able to obtain the required parameter count and thus properly 16751parse the method invocation. This problem presented itself as an 16752AE_AML_INTERNAL during the pass 1 parse phase during table load. 16753 16754Fixed a problem where the internal String object copy routine did 16755not always allocate sufficient memory for the target String object 16756and caused memory corruption. This problem was seen to cause 16757"Allocation already present in list!" errors as memory allocation 16758became corrupted. 16759 16760Implemented a new function for the evaluation of namespace objects 16761that allows the specification of the allowable return object 16762types. This simplifies a lot of code that checks for a return 16763object of one or more specific objects returned from the 16764evaluation (such as _STA, etc.) This may become and external 16765function if it would be useful to ACPI-related drivers. 16766 16767Completed another round of prefixing #defines with "ACPI_" for 16768clarity. 16769 16770Completed additional code restructuring to allow more modular 16771linking for iASL compiler and AcpiExec. Several files were split 16772creating new files. New files: nsparse.c dsinit.c evgpe.c 16773 16774Implemented an abort mechanism to terminate an executing control 16775method via the AML debugger. This feature is useful for debugging 16776control methods that depend (wait) for specific hardware 16777responses. 16778 16779Code and Data Size: Current core subsystem library sizes are shown 16780below. These are the code and data sizes for the acpica.lib 16781produced by the Microsoft Visual C++ 6.0 compiler, and these 16782values do not include any ACPI driver or OSPM code. The debug 16783version of the code includes the debug output trace mechanism and 16784has a much larger code and data size. Note that these values will 16785vary depending on the efficiency of the compiler and the compiler 16786options used during generation. 16787 16788 Previous Release 16789 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16790 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16791 Current Release: 16792 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16793 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16794 16795 167962) iASL Compiler/Disassembler 16797 16798Fixed a compiler code generation problem for "Interrupt" Resource 16799Descriptors. If specified in the ASL, the optional "Resource 16800Source Index" and "Resource Source" fields were not inserted into 16801the correct location within the AML resource descriptor, creating 16802an invalid descriptor. 16803 16804Fixed a disassembler problem for "Interrupt" resource descriptors. 16805The optional "Resource Source Index" and "Resource Source" fields 16806were ignored. 16807 16808 16809---------------------------------------- 1681022 November 2002. Summary of changes for version 20021122. 16811 16812 168131) ACPI CA Core Subsystem: 16814 16815Fixed a reported problem where an object stored to a Method Local 16816or Arg was not copied to a new object during the store - the 16817object pointer was simply copied to the Local/Arg. This caused 16818all subsequent operations on the Local/Arg to also affect the 16819original source of the store operation. 16820 16821Fixed a problem where a store operation to a Method Local or Arg 16822was not completed properly if the Local/Arg contained a reference 16823(from RefOf) to a named field. The general-purpose store-to- 16824namespace-node code is now used so that this case is handled 16825automatically. 16826 16827Fixed a problem where the internal object copy routine would cause 16828a protection fault if the object being copied was a Package and 16829contained either 1) a NULL package element or 2) a nested sub- 16830package. 16831 16832Fixed a problem with the GPE initialization that resulted from an 16833ambiguity in the ACPI specification. One section of the 16834specification states that both the address and length of the GPE 16835block must be zero if the block is not supported. Another section 16836implies that only the address need be zero if the block is not 16837supported. The code has been changed so that both the address and 16838the length must be non-zero to indicate a valid GPE block (i.e., 16839if either the address or the length is zero, the GPE block is 16840invalid.) 16841 16842Code and Data Size: Current core subsystem library sizes are shown 16843below. These are the code and data sizes for the acpica.lib 16844produced by the Microsoft Visual C++ 6.0 compiler, and these 16845values do not include any ACPI driver or OSPM code. The debug 16846version of the code includes the debug output trace mechanism and 16847has a much larger code and data size. Note that these values will 16848vary depending on the efficiency of the compiler and the compiler 16849options used during generation. 16850 16851 Previous Release 16852 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16853 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16854 Current Release: 16855 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16856 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16857 16858 168592) Linux 16860 16861Cleaned up EC driver. Exported an external EC read/write 16862interface. By going through this, other drivers (most notably 16863sonypi) will be able to serialize access to the EC. 16864 16865 168663) iASL Compiler/Disassembler 16867 16868Implemented support to optionally generate include files for both 16869ASM and C (the -i switch). This simplifies BIOS development by 16870automatically creating include files that contain external 16871declarations for the symbols that are created within the 16872 16873(optionally generated) ASM and C AML source files. 16874 16875 16876---------------------------------------- 1687715 November 2002. Summary of changes for version 20021115. 16878 168791) ACPI CA Core Subsystem: 16880 16881Fixed a memory leak problem where an error during resolution of 16882 16883method arguments during a method invocation from another method 16884failed to cleanup properly by deleting all successfully resolved 16885argument objects. 16886 16887Fixed a problem where the target of the Index() operator was not 16888correctly constructed if the source object was a package. This 16889problem has not been detected because the use of a target operand 16890with Index() is very rare. 16891 16892Fixed a problem with the Index() operator where an attempt was 16893made to delete the operand objects twice. 16894 16895Fixed a problem where an attempt was made to delete an operand 16896twice during execution of the CondRefOf() operator if the target 16897did not exist. 16898 16899Implemented the first of perhaps several internal create object 16900functions that create and initialize a specific object type. This 16901consolidates duplicated code wherever the object is created, thus 16902shrinking the size of the subsystem. 16903 16904Implemented improved debug/error messages for errors that occur 16905during nested method invocations. All executing method pathnames 16906are displayed (with the error) as the call stack is unwound - thus 16907simplifying debug. 16908 16909Fixed a problem introduced in the 10/02 release that caused 16910premature deletion of a buffer object if a buffer was used as an 16911ASL operand where an integer operand is required (Thus causing an 16912implicit object conversion from Buffer to Integer.) The change in 16913the 10/02 release was attempting to fix a memory leak (albeit 16914incorrectly.) 16915 16916Code and Data Size: Current core subsystem library sizes are shown 16917below. These are the code and data sizes for the acpica.lib 16918produced by the Microsoft Visual C++ 6.0 compiler, and these 16919values do not include any ACPI driver or OSPM code. The debug 16920version of the code includes the debug output trace mechanism and 16921has a much larger code and data size. Note that these values will 16922vary depending on the efficiency of the compiler and the compiler 16923options used during generation. 16924 16925 Previous Release 16926 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16927 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16928 Current Release: 16929 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16930 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16931 16932 169332) Linux 16934 16935Changed the implementation of the ACPI semaphores to use down() 16936instead of down_interruptable(). It is important that the 16937execution of ACPI control methods not be interrupted by signals. 16938Methods must run to completion, or the system may be left in an 16939unknown/unstable state. 16940 16941Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16942(Shawn Starr) 16943 16944 169453) iASL Compiler/Disassembler 16946 16947 16948Changed the default location of output files. All output files 16949are now placed in the current directory by default instead of in 16950the directory of the source file. This change may affect some 16951existing makefiles, but it brings the behavior of the compiler in 16952line with other similar tools. The location of the output files 16953can be overridden with the -p command line switch. 16954 16955 16956---------------------------------------- 1695711 November 2002. Summary of changes for version 20021111. 16958 16959 169600) ACPI Specification 2.0B is released and is now available at: 16961http://www.acpi.info/index.html 16962 16963 169641) ACPI CA Core Subsystem: 16965 16966Implemented support for the ACPI 2.0 SMBus Operation Regions. 16967This includes the early detection and handoff of the request to 16968the SMBus region handler (avoiding all of the complex field 16969support code), and support for the bidirectional return packet 16970from an SMBus write operation. This paves the way for the 16971development of SMBus drivers in each host operating system. 16972 16973Fixed a problem where the semaphore WAIT_FOREVER constant was 16974defined as 32 bits, but must be 16 bits according to the ACPI 16975specification. This had the side effect of causing ASL 16976Mutex/Event timeouts even though the ASL code requested a wait 16977forever. Changed all internal references to the ACPI timeout 16978parameter to 16 bits to prevent future problems. Changed the name 16979of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16980 16981Code and Data Size: Current core subsystem library sizes are shown 16982below. These are the code and data sizes for the acpica.lib 16983produced by the Microsoft Visual C++ 6.0 compiler, and these 16984values do not include any ACPI driver or OSPM code. The debug 16985version of the code includes the debug output trace mechanism and 16986has a much larger code and data size. Note that these values will 16987vary depending on the efficiency of the compiler and the compiler 16988options used during generation. 16989 16990 Previous Release 16991 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16992 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16993 Current Release: 16994 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16995 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16996 16997 169982) Linux 16999 17000Module loading/unloading fixes (John Cagle) 17001 17002 170033) iASL Compiler/Disassembler 17004 17005Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 17006 17007Implemented support for the disassembly of all SMBus protocol 17008keywords (SMBQuick, SMBWord, etc.) 17009 17010---------------------------------------- 1701101 November 2002. Summary of changes for version 20021101. 17012 17013 170141) ACPI CA Core Subsystem: 17015 17016Fixed a problem where platforms that have a GPE1 block but no GPE0 17017block were not handled correctly. This resulted in a "GPE 17018overlap" error message. GPE0 is no longer required. 17019 17020Removed code added in the previous release that inserted nodes 17021into the namespace in alphabetical order. This caused some side- 17022effects on various machines. The root cause of the problem is 17023still under investigation since in theory, the internal ordering 17024of the namespace nodes should not matter. 17025 17026 17027Enhanced error reporting for the case where a named object is not 17028found during control method execution. The full ACPI namepath 17029(name reference) of the object that was not found is displayed in 17030this case. 17031 17032Note: as a result of the overhaul of the namespace object types in 17033the previous release, the namespace nodes for the predefined 17034scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 17035instead of ACPI_TYPE_ANY. This simplifies the namespace 17036management code but may affect code that walks the namespace tree 17037looking for specific object types. 17038 17039Code and Data Size: Current core subsystem library sizes are shown 17040below. These are the code and data sizes for the acpica.lib 17041produced by the Microsoft Visual C++ 6.0 compiler, and these 17042values do not include any ACPI driver or OSPM code. The debug 17043version of the code includes the debug output trace mechanism and 17044has a much larger code and data size. Note that these values will 17045vary depending on the efficiency of the compiler and the compiler 17046options used during generation. 17047 17048 Previous Release 17049 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 17050 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 17051 Current Release: 17052 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 17053 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 17054 17055 170562) Linux 17057 17058Fixed a problem introduced in the previous release where the 17059Processor and Thermal objects were not recognized and installed in 17060/proc. This was related to the scope type change described above. 17061 17062 170633) iASL Compiler/Disassembler 17064 17065Implemented the -g option to get all of the required ACPI tables 17066from the registry and save them to files (Windows version of the 17067compiler only.) The required tables are the FADT, FACS, and DSDT. 17068 17069Added ACPI table checksum validation during table disassembly in 17070order to catch corrupted tables. 17071 17072 17073---------------------------------------- 1707422 October 2002. Summary of changes for version 20021022. 17075 170761) ACPI CA Core Subsystem: 17077 17078Implemented a restriction on the Scope operator that the target 17079must already exist in the namespace at the time the operator is 17080encountered (during table load or method execution). In other 17081words, forward references are not allowed and Scope() cannot 17082create a new object. This changes the previous behavior where the 17083interpreter would create the name if not found. This new behavior 17084correctly enables the search-to-root algorithm during namespace 17085lookup of the target name. Because of this upsearch, this fixes 17086the known Compaq _SB_.OKEC problem and makes both the AML 17087interpreter and iASL compiler compatible with other ACPI 17088implementations. 17089 17090Completed a major overhaul of the internal ACPI object types for 17091the ACPI Namespace and the associated operand objects. Many of 17092these types had become obsolete with the introduction of the two- 17093pass namespace load. This cleanup simplifies the code and makes 17094the entire namespace load mechanism much clearer and easier to 17095understand. 17096 17097Improved debug output for tracking scope opening/closing to help 17098diagnose scoping issues. The old scope name as well as the new 17099scope name are displayed. Also improved error messages for 17100problems with ASL Mutex objects and error messages for GPE 17101problems. 17102 17103Cleaned up the namespace dump code, removed obsolete code. 17104 17105All string output (for all namespace/object dumps) now uses the 17106common ACPI string output procedure which handles escapes properly 17107and does not emit non-printable characters. 17108 17109Fixed some issues with constants in the 64-bit version of the 17110local C library (utclib.c) 17111 17112 171132) Linux 17114 17115EC Driver: No longer attempts to acquire the Global Lock at 17116interrupt level. 17117 17118 171193) iASL Compiler/Disassembler 17120 17121Implemented ACPI 2.0B grammar change that disallows all Type 1 and 171222 opcodes outside of a control method. This means that the 17123"executable" operators (versus the "namespace" operators) cannot 17124be used at the table level; they can only be used within a control 17125method. 17126 17127Implemented the restriction on the Scope() operator where the 17128target must already exist in the namespace at the time the 17129operator is encountered (during ASL compilation). In other words, 17130forward references are not allowed and Scope() cannot create a new 17131object. This makes the iASL compiler compatible with other ACPI 17132implementations and makes the Scope() implementation adhere to the 17133ACPI specification. 17134 17135Fixed a problem where namepath optimization for the Alias operator 17136was optimizing the wrong path (of the two namepaths.) This caused 17137a "Missing alias link" error message. 17138 17139Fixed a problem where an "unknown reserved name" warning could be 17140incorrectly generated for names like "_SB" when the trailing 17141underscore is not used in the original ASL. 17142 17143Fixed a problem where the reserved name check did not handle 17144NamePaths with multiple NameSegs correctly. The first nameseg of 17145the NamePath was examined instead of the last NameSeg. 17146 17147 17148---------------------------------------- 17149 1715002 October 2002. Summary of changes for this release. 17151 17152 171531) ACPI CA Core Subsystem version 20021002: 17154 17155Fixed a problem where a store/copy of a string to an existing 17156string did not always set the string length properly in the String 17157object. 17158 17159Fixed a reported problem with the ToString operator where the 17160behavior was identical to the ToHexString operator instead of just 17161simply converting a raw buffer to a string data type. 17162 17163Fixed a problem where CopyObject and the other "explicit" 17164conversion operators were not updating the internal namespace node 17165type as part of the store operation. 17166 17167Fixed a memory leak during implicit source operand conversion 17168where the original object was not deleted if it was converted to a 17169new object of a different type. 17170 17171Enhanced error messages for all problems associated with namespace 17172lookups. Common procedure generates and prints the lookup name as 17173well as the formatted status. 17174 17175Completed implementation of a new design for the Alias support 17176within the namespace. The existing design did not handle the case 17177where a new object was assigned to one of the two names due to the 17178use of an explicit conversion operator, resulting in the two names 17179pointing to two different objects. The new design simply points 17180the Alias name to the original name node - not to the object. 17181This results in a level of indirection that must be handled in the 17182name resolution mechanism. 17183 17184Code and Data Size: Current core subsystem library sizes are shown 17185below. These are the code and data sizes for the acpica.lib 17186produced by the Microsoft Visual C++ 6.0 compiler, and these 17187values do not include any ACPI driver or OSPM code. The debug 17188version of the code includes the debug output trace mechanism and 17189has a larger code and data size. Note that these values will vary 17190depending on the efficiency of the compiler and the compiler 17191options used during generation. 17192 17193 Previous Release 17194 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17195 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17196 Current Release: 17197 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 17198 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 17199 17200 172012) Linux 17202 17203Initialize thermal driver's timer before it is used. (Knut 17204Neumann) 17205 17206Allow handling negative celsius values. (Kochi Takayoshi) 17207 17208Fix thermal management and make trip points. R/W (Pavel Machek) 17209 17210Fix /proc/acpi/sleep. (P. Christeas) 17211 17212IA64 fixes. (David Mosberger) 17213 17214Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 17215 17216Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 17217Brodowski) 17218 17219 172203) iASL Compiler/Disassembler 17221 17222Clarified some warning/error messages. 17223 17224 17225---------------------------------------- 1722618 September 2002. Summary of changes for this release. 17227 17228 172291) ACPI CA Core Subsystem version 20020918: 17230 17231Fixed a reported problem with reference chaining (via the Index() 17232and RefOf() operators) in the ObjectType() and SizeOf() operators. 17233The definition of these operators includes the dereferencing of 17234all chained references to return information on the base object. 17235 17236Fixed a problem with stores to indexed package elements - the 17237existing code would not complete the store if an "implicit 17238conversion" was not performed. In other words, if the existing 17239object (package element) was to be replaced completely, the code 17240didn't handle this case. 17241 17242Relaxed typechecking on the ASL "Scope" operator to allow the 17243target name to refer to an object of type Integer, String, or 17244Buffer, in addition to the scoping object types (Device, 17245predefined Scopes, Processor, PowerResource, and ThermalZone.) 17246This allows existing AML code that has workarounds for a bug in 17247Windows to function properly. A warning is issued, however. This 17248affects both the AML interpreter and the iASL compiler. Below is 17249an example of this type of ASL code: 17250 17251 Name(DEB,0x00) 17252 Scope(DEB) 17253 { 17254 17255Fixed some reported problems with 64-bit integer support in the 17256local implementation of C library functions (clib.c) 17257 17258 172592) Linux 17260 17261Use ACPI fix map region instead of IOAPIC region, since it is 17262undefined in non-SMP. 17263 17264Ensure that the SCI has the proper polarity and trigger, even on 17265systems that do not have an interrupt override entry in the MADT. 17266 172672.5 big driver reorganization (Pat Mochel) 17268 17269Use early table mapping code from acpitable.c (Andi Kleen) 17270 17271New blacklist entries (Andi Kleen) 17272 17273Blacklist improvements. Split blacklist code out into a separate 17274file. Move checking the blacklist to very early. Previously, we 17275would use ACPI tables, and then halfway through init, check the 17276blacklist -- too late. Now, it's early enough to completely fall- 17277back to non-ACPI. 17278 17279 172803) iASL Compiler/Disassembler version 20020918: 17281 17282Fixed a problem where the typechecking code didn't know that an 17283alias could point to a method. In other words, aliases were not 17284being dereferenced during typechecking. 17285 17286 17287---------------------------------------- 1728829 August 2002. Summary of changes for this release. 17289 172901) ACPI CA Core Subsystem Version 20020829: 17291 17292If the target of a Scope() operator already exists, it must be an 17293object type that actually opens a scope -- such as a Device, 17294Method, Scope, etc. This is a fatal runtime error. Similar error 17295check has been added to the iASL compiler also. 17296 17297Tightened up the namespace load to disallow multiple names in the 17298same scope. This previously was allowed if both objects were of 17299the same type. (i.e., a lookup was the same as entering a new 17300name). 17301 17302 173032) Linux 17304 17305Ensure that the ACPI interrupt has the proper trigger and 17306polarity. 17307 17308local_irq_disable is extraneous. (Matthew Wilcox) 17309 17310Make "acpi=off" actually do what it says, and not use the ACPI 17311interpreter *or* the tables. 17312 17313Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 17314Takayoshi) 17315 17316 173173) iASL Compiler/Disassembler Version 20020829: 17318 17319Implemented namepath optimization for name declarations. For 17320example, a declaration like "Method (\_SB_.ABCD)" would get 17321optimized to "Method (ABCD)" if the declaration is within the 17322\_SB_ scope. This optimization is in addition to the named 17323reference path optimization first released in the previous 17324version. This would seem to complete all possible optimizations 17325for namepaths within the ASL/AML. 17326 17327If the target of a Scope() operator already exists, it must be an 17328object type that actually opens a scope -- such as a Device, 17329Method, Scope, etc. 17330 17331Implemented a check and warning for unreachable code in the same 17332block below a Return() statement. 17333 17334Fixed a problem where the listing file was not generated if the 17335compiler aborted if the maximum error count was exceeded (200). 17336 17337Fixed a problem where the typechecking of method return values was 17338broken. This includes the check for a return value when the 17339method is invoked as a TermArg (a return value is expected.) 17340 17341Fixed a reported problem where EOF conditions during a quoted 17342string or comment caused a fault. 17343 17344 17345---------------------------------------- 1734615 August 2002. Summary of changes for this release. 17347 173481) ACPI CA Core Subsystem Version 20020815: 17349 17350Fixed a reported problem where a Store to a method argument that 17351contains a reference did not perform the indirect store correctly. 17352This problem was created during the conversion to the new 17353reference object model - the indirect store to a method argument 17354code was not updated to reflect the new model. 17355 17356Reworked the ACPI mode change code to better conform to ACPI 2.0, 17357handle corner cases, and improve code legibility (Kochi Takayoshi) 17358 17359Fixed a problem with the pathname parsing for the carat (^) 17360prefix. The heavy use of the carat operator by the new namepath 17361optimization in the iASL compiler uncovered a problem with the AML 17362interpreter handling of this prefix. In the case where one or 17363more carats precede a single nameseg, the nameseg was treated as 17364standalone and the search rule (to root) was inadvertently 17365applied. This could cause both the iASL compiler and the 17366interpreter to find the wrong object or to miss the error that 17367should occur if the object does not exist at that exact pathname. 17368 17369Found and fixed the problem where the HP Pavilion DSDT would not 17370load. This was a relatively minor tweak to the table loading code 17371(a problem caused by the unexpected encounter with a method 17372invocation not within a control method), but it does not solve the 17373overall issue of the execution of AML code at the table level. 17374This investigation is still ongoing. 17375 17376Code and Data Size: Current core subsystem library sizes are shown 17377below. These are the code and data sizes for the acpica.lib 17378produced by the Microsoft Visual C++ 6.0 compiler, and these 17379values do not include any ACPI driver or OSPM code. The debug 17380version of the code includes the debug output trace mechanism and 17381has a larger code and data size. Note that these values will vary 17382depending on the efficiency of the compiler and the compiler 17383options used during generation. 17384 17385 Previous Release 17386 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17387 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17388 Current Release: 17389 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17390 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17391 17392 173932) Linux 17394 17395Remove redundant slab.h include (Brad Hards) 17396 17397Fix several bugs in thermal.c (Herbert Nachtnebel) 17398 17399Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 17400 17401Change acpi_system_suspend to use updated irq functions (Pavel 17402Machek) 17403 17404Export acpi_get_firmware_table (Matthew Wilcox) 17405 17406Use proper root proc entry for ACPI (Kochi Takayoshi) 17407 17408Fix early-boot table parsing (Bjorn Helgaas) 17409 17410 174113) iASL Compiler/Disassembler 17412 17413Reworked the compiler options to make them more consistent and to 17414use two-letter options where appropriate. We were running out of 17415sensible letters. This may break some makefiles, so check the 17416current options list by invoking the compiler with no parameters. 17417 17418Completed the design and implementation of the ASL namepath 17419optimization option for the compiler. This option optimizes all 17420references to named objects to the shortest possible path. The 17421first attempt tries to utilize a single nameseg (4 characters) and 17422the "search-to-root" algorithm used by the interpreter. If that 17423cannot be used (because either the name is not in the search path 17424or there is a conflict with another object with the same name), 17425the pathname is optimized using the carat prefix (usually a 17426shorter string than specifying the entire path from the root.) 17427 17428Implemented support to obtain the DSDT from the Windows registry 17429(when the disassembly option is specified with no input file). 17430Added this code as the implementation for AcpiOsTableOverride in 17431the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 17432utility) to scan memory for the DSDT to the AcpiOsTableOverride 17433function in the DOS OSL to make the disassembler truly OS 17434independent. 17435 17436Implemented a new option to disassemble and compile in one step. 17437When used without an input filename, this option will grab the 17438DSDT from the local machine, disassemble it, and compile it in one 17439step. 17440 17441Added a warning message for invalid escapes (a backslash followed 17442by any character other than the allowable escapes). This catches 17443the quoted string error "\_SB_" (which should be "\\_SB_" ). 17444 17445Also, there are numerous instances in the ACPI specification where 17446this error occurs. 17447 17448Added a compiler option to disable all optimizations. This is 17449basically the "compatibility mode" because by using this option, 17450the AML code will come out exactly the same as other ASL 17451compilers. 17452 17453Added error messages for incorrectly ordered dependent resource 17454functions. This includes: missing EndDependentFn macro at end of 17455dependent resource list, nested dependent function macros (both 17456start and end), and missing StartDependentFn macro. These are 17457common errors that should be caught at compile time. 17458 17459Implemented _OSI support for the disassembler and compiler. _OSI 17460must be included in the namespace for proper disassembly (because 17461the disassembler must know the number of arguments.) 17462 17463Added an "optimization" message type that is optional (off by 17464default). This message is used for all optimizations - including 17465constant folding, integer optimization, and namepath optimization. 17466 17467---------------------------------------- 1746825 July 2002. Summary of changes for this release. 17469 17470 174711) ACPI CA Core Subsystem Version 20020725: 17472 17473The AML Disassembler has been enhanced to produce compilable ASL 17474code and has been integrated into the iASL compiler (see below) as 17475well as the single-step disassembly for the AML debugger and the 17476disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 17477resource templates and macros are fully supported. The 17478disassembler has been tested on over 30 different AML files, 17479producing identical AML when the resulting disassembled ASL file 17480is recompiled with the same ASL compiler. 17481 17482Modified the Resource Manager to allow zero interrupts and zero 17483dma channels during the GetCurrentResources call. This was 17484causing problems on some platforms. 17485 17486Added the AcpiOsRedirectOutput interface to the OSL to simplify 17487output redirection for the AcpiOsPrintf and AcpiOsVprintf 17488interfaces. 17489 17490Code and Data Size: Current core subsystem library sizes are shown 17491below. These are the code and data sizes for the acpica.lib 17492produced by the Microsoft Visual C++ 6.0 compiler, and these 17493values do not include any ACPI driver or OSPM code. The debug 17494version of the code includes the debug output trace mechanism and 17495has a larger code and data size. Note that these values will vary 17496depending on the efficiency of the compiler and the compiler 17497options used during generation. 17498 17499 Previous Release 17500 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17501 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17502 Current Release: 17503 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17504 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17505 17506 175072) Linux 17508 17509Fixed a panic in the EC driver (Dominik Brodowski) 17510 17511Implemented checksum of the R/XSDT itself during Linux table scan 17512(Richard Schaal) 17513 17514 175153) iASL compiler 17516 17517The AML disassembler is integrated into the compiler. The "-d" 17518option invokes the disassembler to completely disassemble an 17519input AML file, producing as output a text ASL file with the 17520extension ".dsl" (to avoid name collisions with existing .asl 17521source files.) A future enhancement will allow the disassembler 17522to obtain the BIOS DSDT from the registry under Windows. 17523 17524Fixed a problem with the VendorShort and VendorLong resource 17525descriptors where an invalid AML sequence was created. 17526 17527Implemented a fix for BufferData term in the ASL parser. It was 17528inadvertently defined twice, allowing invalid syntax to pass and 17529causing reduction conflicts. 17530 17531Fixed a problem where the Ones opcode could get converted to a 17532value of zero if "Ones" was used where a byte, word or dword value 17533was expected. The 64-bit value is now truncated to the correct 17534size with the correct value. 17535 17536 17537 17538---------------------------------------- 1753902 July 2002. Summary of changes for this release. 17540 17541 175421) ACPI CA Core Subsystem Version 20020702: 17543 17544The Table Manager code has been restructured to add several new 17545features. Tables that are not required by the core subsystem 17546(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 17547validated in any way and are returned from AcpiGetFirmwareTable if 17548requested. The AcpiOsTableOverride interface is now called for 17549each table that is loaded by the subsystem in order to allow the 17550host to override any table it chooses. Previously, only the DSDT 17551could be overridden. Added one new files, tbrsdt.c and 17552tbgetall.c. 17553 17554Fixed a problem with the conversion of internal package objects to 17555external objects (when a package is returned from a control 17556method.) The return buffer length was set to zero instead of the 17557proper length of the package object. 17558 17559Fixed a reported problem with the use of the RefOf and DeRefOf 17560operators when passing reference arguments to control methods. A 17561new type of Reference object is used internally for references 17562produced by the RefOf operator. 17563 17564Added additional error messages in the Resource Manager to explain 17565AE_BAD_DATA errors when they occur during resource parsing. 17566 17567Split the AcpiEnableSubsystem into two primitives to enable a 17568finer granularity initialization sequence. These two calls should 17569be called in this order: AcpiEnableSubsystem (flags), 17570AcpiInitializeObjects (flags). The flags parameter remains the 17571same. 17572 17573 175742) Linux 17575 17576Updated the ACPI utilities module to understand the new style of 17577fully resolved package objects that are now returned from the core 17578subsystem. This eliminates errors of the form: 17579 17580 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 17581 acpi_utils-0430 [145] acpi_evaluate_reference: 17582 Invalid element in package (not a device reference) 17583 17584The method evaluation utility uses the new buffer allocation 17585scheme instead of calling AcpiEvaluate Object twice. 17586 17587Added support for ECDT. This allows the use of the Embedded 17588 17589Controller before the namespace has been fully initialized, which 17590is necessary for ACPI 2.0 support, and for some laptops to 17591initialize properly. (Laptops using ECDT are still rare, so only 17592limited testing was performed of the added functionality.) 17593 17594Fixed memory leaks in the EC driver. 17595 17596Eliminated a brittle code structure in acpi_bus_init(). 17597 17598Eliminated the acpi_evaluate() helper function in utils.c. It is 17599no longer needed since acpi_evaluate_object can optionally 17600allocate memory for the return object. 17601 17602Implemented fix for keyboard hang when getting battery readings on 17603some systems (Stephen White) 17604 17605PCI IRQ routing update (Dominik Brodowski) 17606 17607Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17608support 17609 17610---------------------------------------- 1761111 June 2002. Summary of changes for this release. 17612 17613 176141) ACPI CA Core Subsystem Version 20020611: 17615 17616Fixed a reported problem where constants such as Zero and One 17617appearing within _PRT packages were not handled correctly within 17618the resource manager code. Originally reported against the ASL 17619compiler because the code generator now optimizes integers to 17620their minimal AML representation (i.e. AML constants if possible.) 17621The _PRT code now handles all AML constant opcodes correctly 17622(Zero, One, Ones, Revision). 17623 17624Fixed a problem with the Concatenate operator in the AML 17625interpreter where a buffer result object was incorrectly marked as 17626not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17627 17628All package sub-objects are now fully resolved before they are 17629returned from the external ACPI interfaces. This means that name 17630strings are resolved to object handles, and constant operators 17631(Zero, One, Ones, Revision) are resolved to Integers. 17632 17633Implemented immediate resolution of the AML Constant opcodes 17634(Zero, One, Ones, Revision) to Integer objects upon detection 17635within the AML stream. This has simplified and reduced the 17636generated code size of the subsystem by eliminating about 10 17637switch statements for these constants (which previously were 17638contained in Reference objects.) The complicating issues are that 17639the Zero opcode is used as a "placeholder" for unspecified 17640optional target operands and stores to constants are defined to be 17641no-ops. 17642 17643Code and Data Size: Current core subsystem library sizes are shown 17644below. These are the code and data sizes for the acpica.lib 17645produced by the Microsoft Visual C++ 6.0 compiler, and these 17646values do not include any ACPI driver or OSPM code. The debug 17647version of the code includes the debug output trace mechanism and 17648has a larger code and data size. Note that these values will vary 17649depending on the efficiency of the compiler and the compiler 17650options used during generation. 17651 17652 Previous Release 17653 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17654 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17655 Current Release: 17656 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17657 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17658 17659 176602) Linux 17661 17662 17663Added preliminary support for obtaining _TRA data for PCI root 17664bridges (Bjorn Helgaas). 17665 17666 176673) iASL Compiler Version X2046: 17668 17669Fixed a problem where the "_DDN" reserved name was defined to be a 17670control method with one argument. There are no arguments, and 17671_DDN does not have to be a control method. 17672 17673Fixed a problem with the Linux version of the compiler where the 17674source lines printed with error messages were the wrong lines. 17675This turned out to be the "LF versus CR/LF" difference between 17676Windows and Unix. This appears to be the longstanding issue 17677concerning listing output and error messages. 17678 17679Fixed a problem with the Linux version of compiler where opcode 17680names within error messages were wrong. This was caused by a 17681slight difference in the output of the Flex tool on Linux versus 17682Windows. 17683 17684Fixed a problem with the Linux compiler where the hex output files 17685contained some garbage data caused by an internal buffer overrun. 17686 17687 17688---------------------------------------- 1768917 May 2002. Summary of changes for this release. 17690 17691 176921) ACPI CA Core Subsystem Version 20020517: 17693 17694Implemented a workaround to an BIOS bug discovered on the HP 17695OmniBook where the FADT revision number and the table size are 17696inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17697behavior is to fallback to using only the ACPI 1.0 fields of the 17698FADT if the table is too small to be a ACPI 2.0 table as claimed 17699by the revision number. Although this is a BIOS bug, this is a 17700case where the workaround is simple enough and with no side 17701effects, so it seemed prudent to add it. A warning message is 17702issued, however. 17703 17704Implemented minimum size checks for the fixed-length ACPI tables - 17705- the FADT and FACS, as well as consistency checks between the 17706revision number and the table size. 17707 17708Fixed a reported problem in the table override support where the 17709new table pointer was incorrectly treated as a physical address 17710instead of a logical address. 17711 17712Eliminated the use of the AE_AML_ERROR exception and replaced it 17713with more descriptive codes. 17714 17715Fixed a problem where an exception would occur if an ASL Field was 17716defined with no named Field Units underneath it (used by some 17717index fields). 17718 17719Code and Data Size: Current core subsystem library sizes are shown 17720below. These are the code and data sizes for the acpica.lib 17721produced by the Microsoft Visual C++ 6.0 compiler, and these 17722values do not include any ACPI driver or OSPM code. The debug 17723version of the code includes the debug output trace mechanism and 17724has a larger code and data size. Note that these values will vary 17725depending on the efficiency of the compiler and the compiler 17726options used during generation. 17727 17728 Previous Release 17729 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17730 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17731 Current Release: 17732 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17733 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17734 17735 17736 177372) Linux 17738 17739Much work done on ACPI init (MADT and PCI IRQ routing support). 17740(Paul D. and Dominik Brodowski) 17741 17742Fix PCI IRQ-related panic on boot (Sam Revitch) 17743 17744Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17745 17746Fix "MHz" typo (Dominik Brodowski) 17747 17748Fix RTC year 2000 issue (Dominik Brodowski) 17749 17750Preclude multiple button proc entries (Eric Brunet) 17751 17752Moved arch-specific code out of include/platform/aclinux.h 17753 177543) iASL Compiler Version X2044: 17755 17756Implemented error checking for the string used in the EISAID macro 17757(Usually used in the definition of the _HID object.) The code now 17758strictly enforces the PnP format - exactly 7 characters, 3 17759uppercase letters and 4 hex digits. 17760 17761If a raw string is used in the definition of the _HID object 17762(instead of the EISAID macro), the string must contain all 17763alphanumeric characters (e.g., "*PNP0011" is not allowed because 17764of the asterisk.) 17765 17766Implemented checking for invalid use of ACPI reserved names for 17767most of the name creation operators (Name, Device, Event, Mutex, 17768OperationRegion, PowerResource, Processor, and ThermalZone.) 17769Previously, this check was only performed for control methods. 17770 17771Implemented an additional check on the Name operator to emit an 17772error if a reserved name that must be implemented in ASL as a 17773control method is used. We know that a reserved name must be a 17774method if it is defined with input arguments. 17775 17776The warning emitted when a namespace object reference is not found 17777during the cross reference phase has been changed into an error. 17778The "External" directive should be used for names defined in other 17779modules. 17780 17781 177824) Tools and Utilities 17783 17784The 16-bit tools (adump16 and aexec16) have been regenerated and 17785tested. 17786 17787Fixed a problem with the output of both acpidump and adump16 where 17788the indentation of closing parentheses and brackets was not 17789 17790aligned properly with the parent block. 17791 17792 17793---------------------------------------- 1779403 May 2002. Summary of changes for this release. 17795 17796 177971) ACPI CA Core Subsystem Version 20020503: 17798 17799Added support a new OSL interface that allows the host operating 17800 17801system software to override the DSDT found in the firmware - 17802AcpiOsTableOverride. With this interface, the OSL can examine the 17803version of the firmware DSDT and replace it with a different one 17804if desired. 17805 17806Added new external interfaces for accessing ACPI registers from 17807device drivers and other system software - AcpiGetRegister and 17808AcpiSetRegister. This was simply an externalization of the 17809existing AcpiHwBitRegister interfaces. 17810 17811Fixed a regression introduced in the previous build where the 17812ASL/AML CreateField operator always returned an error, 17813"destination must be a NS Node". 17814 17815Extended the maximum time (before failure) to successfully enable 17816ACPI mode to 3 seconds. 17817 17818Code and Data Size: Current core subsystem library sizes are shown 17819below. These are the code and data sizes for the acpica.lib 17820produced by the Microsoft Visual C++ 6.0 compiler, and these 17821values do not include any ACPI driver or OSPM code. The debug 17822version of the code includes the debug output trace mechanism and 17823has a larger code and data size. Note that these values will vary 17824depending on the efficiency of the compiler and the compiler 17825options used during generation. 17826 17827 Previous Release 17828 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17829 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17830 Current Release: 17831 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17832 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17833 17834 178352) Linux 17836 17837Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17838free. While 3 out of 4 of our in-house systems work fine, the last 17839one still hangs when testing the LAPIC timer. 17840 17841Renamed many files in 2.5 kernel release to omit "acpi_" from the 17842name. 17843 17844Added warning on boot for Presario 711FR. 17845 17846Sleep improvements (Pavel Machek) 17847 17848ACPI can now be built without CONFIG_PCI enabled. 17849 17850IA64: Fixed memory map functions (JI Lee) 17851 17852 178533) iASL Compiler Version X2043: 17854 17855Added support to allow the compiler to be integrated into the MS 17856VC++ development environment for one-button compilation of single 17857files or entire projects -- with error-to-source-line mapping. 17858 17859Implemented support for compile-time constant folding for the 17860Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17861specification. This allows the ASL writer to use expressions 17862instead of Integer/Buffer/String constants in terms that must 17863evaluate to constants at compile time and will also simplify the 17864emitted AML in any such sub-expressions that can be folded 17865(evaluated at compile-time.) This increases the size of the 17866compiler significantly because a portion of the ACPI CA AML 17867interpreter is included within the compiler in order to pre- 17868evaluate constant expressions. 17869 17870 17871Fixed a problem with the "Unicode" ASL macro that caused the 17872compiler to fault. (This macro is used in conjunction with the 17873_STR reserved name.) 17874 17875Implemented an AML opcode optimization to use the Zero, One, and 17876Ones opcodes where possible to further reduce the size of integer 17877constants and thus reduce the overall size of the generated AML 17878code. 17879 17880Implemented error checking for new reserved terms for ACPI version 178812.0A. 17882 17883Implemented the -qr option to display the current list of ACPI 17884reserved names known to the compiler. 17885 17886Implemented the -qc option to display the current list of ASL 17887operators that are allowed within constant expressions and can 17888therefore be folded at compile time if the operands are constants. 17889 17890 178914) Documentation 17892 17893Updated the Programmer's Reference for new interfaces, data types, 17894and memory allocation model options. 17895 17896Updated the iASL Compiler User Reference to apply new format and 17897add information about new features and options. 17898 17899---------------------------------------- 1790019 April 2002. Summary of changes for this release. 17901 179021) ACPI CA Core Subsystem Version 20020419: 17903 17904The source code base for the Core Subsystem has been completely 17905cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17906versions. The Lint option files used are included in the 17907/acpi/generate/lint directory. 17908 17909Implemented enhanced status/error checking across the entire 17910Hardware manager subsystem. Any hardware errors (reported from 17911the OSL) are now bubbled up and will abort a running control 17912method. 17913 17914 17915Fixed a problem where the per-ACPI-table integer width (32 or 64) 17916was stored only with control method nodes, causing a fault when 17917non-control method code was executed during table loading. The 17918solution implemented uses a global variable to indicate table 17919width across the entire ACPI subsystem. Therefore, ACPI CA does 17920not support mixed integer widths across different ACPI tables 17921(DSDT, SSDT). 17922 17923Fixed a problem where NULL extended fields (X fields) in an ACPI 179242.0 ACPI FADT caused the table load to fail. Although the 17925existing ACPI specification is a bit fuzzy on this topic, the new 17926behavior is to fall back on a ACPI 1.0 field if the corresponding 17927ACPI 2.0 X field is zero (even though the table revision indicates 17928a full ACPI 2.0 table.) The ACPI specification will be updated to 17929clarify this issue. 17930 17931Fixed a problem with the SystemMemory operation region handler 17932where memory was always accessed byte-wise even if the AML- 17933specified access width was larger than a byte. This caused 17934problems on systems with memory-mapped I/O. Memory is now 17935accessed with the width specified. On systems that do not support 17936non-aligned transfers, a check is made to guarantee proper address 17937alignment before proceeding in order to avoid an AML-caused 17938alignment fault within the kernel. 17939 17940 17941Fixed a problem with the ExtendedIrq resource where only one byte 17942of the 4-byte Irq field was extracted. 17943 17944Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17945function was out of date and required a rewrite. 17946 17947Code and Data Size: Current core subsystem library sizes are shown 17948below. These are the code and data sizes for the acpica.lib 17949produced by the Microsoft Visual C++ 6.0 compiler, and these 17950values do not include any ACPI driver or OSPM code. The debug 17951version of the code includes the debug output trace mechanism and 17952has a larger code and data size. Note that these values will vary 17953depending on the efficiency of the compiler and the compiler 17954options used during generation. 17955 17956 Previous Release 17957 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17958 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17959 Current Release: 17960 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17961 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17962 17963 179642) Linux 17965 17966PCI IRQ routing fixes (Dominik Brodowski) 17967 17968 179693) iASL Compiler Version X2042: 17970 17971Implemented an additional compile-time error check for a field 17972unit whose size + minimum access width would cause a run-time 17973access beyond the end-of-region. Previously, only the field size 17974itself was checked. 17975 17976The Core subsystem and iASL compiler now share a common parse 17977object in preparation for compile-time evaluation of the type 179783/4/5 ASL operators. 17979 17980 17981---------------------------------------- 17982Summary of changes for this release: 03_29_02 17983 179841) ACPI CA Core Subsystem Version 20020329: 17985 17986Implemented support for late evaluation of TermArg operands to 17987Buffer and Package objects. This allows complex expressions to be 17988used in the declarations of these object types. 17989 17990Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 179911.0, if the field was larger than 32 bits, it was returned as a 17992buffer - otherwise it was returned as an integer. In ACPI 2.0, 17993the field is returned as a buffer only if the field is larger than 1799464 bits. The TableRevision is now considered when making this 17995conversion to avoid incompatibility with existing ASL code. 17996 17997Implemented logical addressing for AcpiOsGetRootPointer. This 17998allows an RSDP with either a logical or physical address. With 17999this support, the host OS can now override all ACPI tables with 18000one logical RSDP. Includes implementation of "typed" pointer 18001support to allow a common data type for both physical and logical 18002pointers internally. This required a change to the 18003AcpiOsGetRootPointer interface. 18004 18005Implemented the use of ACPI 2.0 Generic Address Structures for all 18006GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 18007mapped I/O for these ACPI features. 18008 18009Initialization now ignores not only non-required tables (All 18010tables other than the FADT, FACS, DSDT, and SSDTs), but also does 18011not validate the table headers of unrecognized tables. 18012 18013Fixed a problem where a notify handler could only be 18014installed/removed on an object of type Device. All "notify" 18015 18016objects are now supported -- Devices, Processor, Power, and 18017Thermal. 18018 18019Removed most verbosity from the ACPI_DB_INFO debug level. Only 18020critical information is returned when this debug level is enabled. 18021 18022Code and Data Size: Current core subsystem library sizes are shown 18023below. These are the code and data sizes for the acpica.lib 18024produced by the Microsoft Visual C++ 6.0 compiler, and these 18025values do not include any ACPI driver or OSPM code. The debug 18026version of the code includes the debug output trace mechanism and 18027has a larger code and data size. Note that these values will vary 18028depending on the efficiency of the compiler and the compiler 18029options used during generation. 18030 18031 Previous Release 18032 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18033 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18034 Current Release: 18035 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 18036 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 18037 18038 180392) Linux: 18040 18041The processor driver (acpi_processor.c) now fully supports ACPI 180422.0-based processor performance control (e.g. Intel(R) 18043SpeedStep(TM) technology) Note that older laptops that only have 18044the Intel "applet" interface are not supported through this. The 18045'limit' and 'performance' interface (/proc) are fully functional. 18046[Note that basic policy for controlling performance state 18047transitions will be included in the next version of ospmd.] The 18048idle handler was modified to more aggressively use C2, and PIIX4 18049errata handling underwent a complete overhaul (big thanks to 18050Dominik Brodowski). 18051 18052Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 18053based devices in the ACPI namespace are now dynamically bound 18054(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 18055This allows, among other things, ACPI to resolve bus numbers for 18056subordinate PCI bridges. 18057 18058Enhanced PCI IRQ routing to get the proper bus number for _PRT 18059entries defined underneath PCI bridges. 18060 18061Added IBM 600E to bad bios list due to invalid _ADR value for 18062PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 18063 18064In the process of adding full MADT support (e.g. IOAPIC) for IA32 18065(acpi.c, mpparse.c) -- stay tuned. 18066 18067Added back visual differentiation between fixed-feature and 18068control-method buttons in dmesg. Buttons are also subtyped (e.g. 18069button/power/PWRF) to simplify button identification. 18070 18071We no longer use -Wno-unused when compiling debug. Please ignore 18072any "_THIS_MODULE defined but not used" messages. 18073 18074Can now shut down the system using "magic sysrq" key. 18075 18076 180773) iASL Compiler version 2041: 18078 18079Fixed a problem where conversion errors for hex/octal/decimal 18080constants were not reported. 18081 18082Implemented a fix for the General Register template Address field. 18083This field was 8 bits when it should be 64. 18084 18085Fixed a problem where errors/warnings were no longer being emitted 18086within the listing output file. 18087 18088Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 18089exactly 4 characters, alphanumeric only. 18090 18091 18092 18093 18094---------------------------------------- 18095Summary of changes for this release: 03_08_02 18096 18097 180981) ACPI CA Core Subsystem Version 20020308: 18099 18100Fixed a problem with AML Fields where the use of the "AccessAny" 18101keyword could cause an interpreter error due to attempting to read 18102or write beyond the end of the parent Operation Region. 18103 18104Fixed a problem in the SystemMemory Operation Region handler where 18105an attempt was made to map memory beyond the end of the region. 18106This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 18107errors on some Linux systems. 18108 18109Fixed a problem where the interpreter/namespace "search to root" 18110algorithm was not functioning for some object types. Relaxed the 18111internal restriction on the search to allow upsearches for all 18112external object types as well as most internal types. 18113 18114 181152) Linux: 18116 18117We now use safe_halt() macro versus individual calls to sti | hlt. 18118 18119Writing to the processor limit interface should now work. "echo 1" 18120will increase the limit, 2 will decrease, and 0 will reset to the 18121 18122default. 18123 18124 181253) ASL compiler: 18126 18127Fixed segfault on Linux version. 18128 18129 18130---------------------------------------- 18131Summary of changes for this release: 02_25_02 18132 181331) ACPI CA Core Subsystem: 18134 18135 18136Fixed a problem where the GPE bit masks were not initialized 18137properly, causing erratic GPE behavior. 18138 18139Implemented limited support for multiple calling conventions. The 18140code can be generated with either the VPL (variable parameter 18141list, or "C") convention, or the FPL (fixed parameter list, or 18142"Pascal") convention. The core subsystem is about 3.4% smaller 18143when generated with FPL. 18144 18145 181462) Linux 18147 18148Re-add some /proc/acpi/event functionality that was lost during 18149the rewrite 18150 18151Resolved issue with /proc events for fixed-feature buttons showing 18152up as the system device. 18153 18154Fixed checks on C2/C3 latencies to be inclusive of maximum values. 18155 18156Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 18157 18158Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 18159 18160Fixed limit interface & usage to fix bugs with passive cooling 18161hysterisis. 18162 18163Restructured PRT support. 18164 18165 18166---------------------------------------- 18167Summary of changes for this label: 02_14_02 18168 18169 181701) ACPI CA Core Subsystem: 18171 18172Implemented support in AcpiLoadTable to allow loading of FACS and 18173FADT tables. 18174 18175Support for the now-obsolete interim 0.71 64-bit ACPI tables has 18176been removed. All 64-bit platforms should be migrated to the ACPI 181772.0 tables. The actbl71.h header has been removed from the source 18178tree. 18179 18180All C macros defined within the subsystem have been prefixed with 18181"ACPI_" to avoid collision with other system include files. 18182 18183Removed the return value for the two AcpiOsPrint interfaces, since 18184it is never used and causes lint warnings for ignoring the return 18185value. 18186 18187Added error checking to all internal mutex acquire and release 18188calls. Although a failure from one of these interfaces is 18189probably a fatal system error, these checks will cause the 18190immediate abort of the currently executing method or interface. 18191 18192Fixed a problem where the AcpiSetCurrentResources interface could 18193fault. This was a side effect of the deployment of the new memory 18194allocation model. 18195 18196Fixed a couple of problems with the Global Lock support introduced 18197in the last major build. The "common" (1.0/2.0) internal FACS was 18198being overwritten with the FACS signature and clobbering the 18199Global Lock pointer. Also, the actual firmware FACS was being 18200unmapped after construction of the "common" FACS, preventing 18201access to the actual Global Lock field within it. The "common" 18202internal FACS is no longer installed as an actual ACPI table; it 18203is used simply as a global. 18204 18205Code and Data Size: Current core subsystem library sizes are shown 18206below. These are the code and data sizes for the acpica.lib 18207produced by the Microsoft Visual C++ 6.0 compiler, and these 18208values do not include any ACPI driver or OSPM code. The debug 18209version of the code includes the debug output trace mechanism and 18210has a larger code and data size. Note that these values will vary 18211depending on the efficiency of the compiler and the compiler 18212options used during generation. 18213 18214 Previous Release (02_07_01) 18215 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18216 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18217 Current Release: 18218 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18219 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18220 18221 182222) Linux 18223 18224Updated Linux-specific code for core macro and OSL interface 18225changes described above. 18226 18227Improved /proc/acpi/event. It now can be opened only once and has 18228proper poll functionality. 18229 18230Fixed and restructured power management (acpi_bus). 18231 18232Only create /proc "view by type" when devices of that class exist. 18233 18234Fixed "charging/discharging" bug (and others) in acpi_battery. 18235 18236Improved thermal zone code. 18237 18238 182393) ASL Compiler, version X2039: 18240 18241 18242Implemented the new compiler restriction on ASL String hex/octal 18243escapes to non-null, ASCII values. An error results if an invalid 18244value is used. (This will require an ACPI 2.0 specification 18245change.) 18246 18247AML object labels that are output to the optional C and ASM source 18248are now prefixed with both the ACPI table signature and table ID 18249to help guarantee uniqueness within a large BIOS project. 18250 18251 18252---------------------------------------- 18253Summary of changes for this label: 02_01_02 18254 182551) ACPI CA Core Subsystem: 18256 18257ACPI 2.0 support is complete in the entire Core Subsystem and the 18258ASL compiler. All new ACPI 2.0 operators are implemented and all 18259other changes for ACPI 2.0 support are complete. With 18260simultaneous code and data optimizations throughout the subsystem, 18261ACPI 2.0 support has been implemented with almost no additional 18262cost in terms of code and data size. 18263 18264Implemented a new mechanism for allocation of return buffers. If 18265the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 18266be allocated on behalf of the caller. Consolidated all return 18267buffer validation and allocation to a common procedure. Return 18268buffers will be allocated via the primary OSL allocation interface 18269since it appears that a separate pool is not needed by most users. 18270If a separate pool is required for these buffers, the caller can 18271still use the original mechanism and pre-allocate the buffer(s). 18272 18273Implemented support for string operands within the DerefOf 18274operator. 18275 18276Restructured the Hardware and Event managers to be table driven, 18277simplifying the source code and reducing the amount of generated 18278code. 18279 18280Split the common read/write low-level ACPI register bitfield 18281procedure into a separate read and write, simplifying the code 18282considerably. 18283 18284Obsoleted the AcpiOsCallocate OSL interface. This interface was 18285used only a handful of times and didn't have enough critical mass 18286for a separate interface. Replaced with a common calloc procedure 18287in the core. 18288 18289Fixed a reported problem with the GPE number mapping mechanism 18290that allows GPE1 numbers to be non-contiguous with GPE0. 18291Reorganized the GPE information and shrunk a large array that was 18292originally large enough to hold info for all possible GPEs (256) 18293to simply large enough to hold all GPEs up to the largest GPE 18294number on the machine. 18295 18296Fixed a reported problem with resource structure alignment on 64- 18297bit platforms. 18298 18299Changed the AcpiEnableEvent and AcpiDisableEvent external 18300interfaces to not require any flags for the common case of 18301enabling/disabling a GPE. 18302 18303Implemented support to allow a "Notify" on a Processor object. 18304 18305Most TBDs in comments within the source code have been resolved 18306and eliminated. 18307 18308 18309Fixed a problem in the interpreter where a standalone parent 18310prefix (^) was not handled correctly in the interpreter and 18311debugger. 18312 18313Removed obsolete and unnecessary GPE save/restore code. 18314 18315Implemented Field support in the ASL Load operator. This allows a 18316table to be loaded from a named field, in addition to loading a 18317table directly from an Operation Region. 18318 18319Implemented timeout and handle support in the external Global Lock 18320interfaces. 18321 18322Fixed a problem in the AcpiDump utility where pathnames were no 18323longer being generated correctly during the dump of named objects. 18324 18325Modified the AML debugger to give a full display of if/while 18326predicates instead of just one AML opcode at a time. (The 18327predicate can have several nested ASL statements.) The old method 18328was confusing during single stepping. 18329 18330Code and Data Size: Current core subsystem library sizes are shown 18331below. These are the code and data sizes for the acpica.lib 18332produced by the Microsoft Visual C++ 6.0 compiler, and these 18333values do not include any ACPI driver or OSPM code. The debug 18334version of the code includes the debug output trace mechanism and 18335has a larger code and data size. Note that these values will vary 18336depending on the efficiency of the compiler and the compiler 18337options used during generation. 18338 18339 Previous Release (12_18_01) 18340 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18341 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18342 Current Release: 18343 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18344 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18345 183462) Linux 18347 18348 Implemented fix for PIIX reverse throttling errata (Processor 18349driver) 18350 18351Added new Limit interface (Processor and Thermal drivers) 18352 18353New thermal policy (Thermal driver) 18354 18355Many updates to /proc 18356 18357Battery "low" event support (Battery driver) 18358 18359Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 18360 18361IA32 - IA64 initialization unification, no longer experimental 18362 18363Menuconfig options redesigned 18364 183653) ASL Compiler, version X2037: 18366 18367Implemented several new output features to simplify integration of 18368AML code into firmware: 1) Output the AML in C source code with 18369labels for each named ASL object. The original ASL source code 18370is interleaved as C comments. 2) Output the AML in ASM source code 18371with labels and interleaved ASL source. 3) Output the AML in 18372raw hex table form, in either C or ASM. 18373 18374Implemented support for optional string parameters to the 18375LoadTable operator. 18376 18377Completed support for embedded escape sequences within string 18378literals. The compiler now supports all single character escapes 18379as well as the Octal and Hex escapes. Note: the insertion of a 18380null byte into a string literal (via the hex/octal escape) causes 18381the string to be immediately terminated. A warning is issued. 18382 18383Fixed a problem where incorrect AML was generated for the case 18384where an ASL namepath consists of a single parent prefix ( 18385 18386) with no trailing name segments. 18387 18388The compiler has been successfully generated with a 64-bit C 18389compiler. 18390 18391 18392 18393 18394---------------------------------------- 18395Summary of changes for this label: 12_18_01 18396 183971) Linux 18398 18399Enhanced blacklist with reason and severity fields. Any table's 18400signature may now be used to identify a blacklisted system. 18401 18402Call _PIC control method to inform the firmware which interrupt 18403model the OS is using. Turn on any disabled link devices. 18404 18405Cleaned up busmgr /proc error handling (Andreas Dilger) 18406 18407 2) ACPI CA Core Subsystem: 18408 18409Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 18410while loop) 18411 18412Completed implementation of the ACPI 2.0 "Continue", 18413"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 18414operators. All new ACPI 2.0 operators are now implemented in both 18415the ASL compiler and the AML interpreter. The only remaining ACPI 184162.0 task is support for the String data type in the DerefOf 18417operator. Fixed a problem with AcquireMutex where the status code 18418was lost if the caller had to actually wait for the mutex. 18419 18420Increased the maximum ASL Field size from 64K bits to 4G bits. 18421 18422Completed implementation of the external Global Lock interfaces -- 18423AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 18424Handler parameters were added. 18425 18426Completed another pass at removing warnings and issues when 18427compiling with 64-bit compilers. The code now compiles cleanly 18428with the Intel 64-bit C/C++ compiler. Most notably, the pointer 18429add and subtract (diff) macros have changed considerably. 18430 18431 18432Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1843364-bit platforms, 32-bits on all others. This type is used 18434wherever memory allocation and/or the C sizeof() operator is used, 18435and affects the OSL memory allocation interfaces AcpiOsAllocate 18436and AcpiOsCallocate. 18437 18438Implemented sticky user breakpoints in the AML debugger. 18439 18440Code and Data Size: Current core subsystem library sizes are shown 18441below. These are the code and data sizes for the acpica.lib 18442produced by the Microsoft Visual C++ 6.0 compiler, and these 18443values do not include any ACPI driver or OSPM code. The debug 18444version of the code includes the debug output trace mechanism and 18445has a larger code and data size. Note that these values will vary 18446depending on the efficiency of the compiler and the compiler 18447options used during generation. 18448 18449 Previous Release (12_05_01) 18450 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18451 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18452 Current Release: 18453 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18454 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18455 18456 3) ASL Compiler, version X2034: 18457 18458Now checks for (and generates an error if detected) the use of a 18459Break or Continue statement without an enclosing While statement. 18460 18461 18462Successfully generated the compiler with the Intel 64-bit C 18463compiler. 18464 18465 ---------------------------------------- 18466Summary of changes for this label: 12_05_01 18467 18468 1) ACPI CA Core Subsystem: 18469 18470The ACPI 2.0 CopyObject operator is fully implemented. This 18471operator creates a new copy of an object (and is also used to 18472bypass the "implicit conversion" mechanism of the Store operator.) 18473 18474The ACPI 2.0 semantics for the SizeOf operator are fully 18475implemented. The change is that performing a SizeOf on a 18476reference object causes an automatic dereference of the object to 18477the actual value before the size is evaluated. This behavior was 18478undefined in ACPI 1.0. 18479 18480The ACPI 2.0 semantics for the Extended IRQ resource descriptor 18481have been implemented. The interrupt polarity and mode are now 18482independently set. 18483 18484Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 18485appearing in Package objects were not properly converted to 18486integers when the internal Package was converted to an external 18487object (via the AcpiEvaluateObject interface.) 18488 18489Fixed a problem with the namespace object deletion mechanism for 18490objects created by control methods. There were two parts to this 18491problem: 1) Objects created during the initialization phase method 18492parse were not being deleted, and 2) The object owner ID mechanism 18493to track objects was broken. 18494 18495Fixed a problem where the use of the ASL Scope operator within a 18496control method would result in an invalid opcode exception. 18497 18498Fixed a problem introduced in the previous label where the buffer 18499length required for the _PRT structure was not being returned 18500correctly. 18501 18502Code and Data Size: Current core subsystem library sizes are shown 18503below. These are the code and data sizes for the acpica.lib 18504produced by the Microsoft Visual C++ 6.0 compiler, and these 18505values do not include any ACPI driver or OSPM code. The debug 18506version of the code includes the debug output trace mechanism and 18507has a larger code and data size. Note that these values will vary 18508depending on the efficiency of the compiler and the compiler 18509options used during generation. 18510 18511 Previous Release (11_20_01) 18512 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18513 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18514 18515 Current Release: 18516 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18517 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18518 18519 2) Linux: 18520 18521Updated all files to apply cleanly against 2.4.16. 18522 18523Added basic PCI Interrupt Routing Table (PRT) support for IA32 18524(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 18525version supports both static and dynamic PRT entries, but dynamic 18526entries are treated as if they were static (not yet 18527reconfigurable). Architecture- specific code to use this data is 18528absent on IA32 but should be available shortly. 18529 18530Changed the initialization sequence to start the ACPI interpreter 18531(acpi_init) prior to initialization of the PCI driver (pci_init) 18532in init/main.c. This ordering is required to support PRT and 18533facilitate other (future) enhancement. A side effect is that the 18534ACPI bus driver and certain device drivers can no longer be loaded 18535as modules. 18536 18537Modified the 'make menuconfig' options to allow PCI Interrupt 18538Routing support to be included without the ACPI Bus and other 18539device drivers. 18540 18541 3) ASL Compiler, version X2033: 18542 18543Fixed some issues with the use of the new CopyObject and 18544DataTableRegion operators. Both are fully functional. 18545 18546 ---------------------------------------- 18547Summary of changes for this label: 11_20_01 18548 18549 20 November 2001. Summary of changes for this release. 18550 18551 1) ACPI CA Core Subsystem: 18552 18553Updated Index support to match ACPI 2.0 semantics. Storing a 18554Integer, String, or Buffer to an Index of a Buffer will store only 18555the least-significant byte of the source to the Indexed buffer 18556byte. Multiple writes are not performed. 18557 18558Fixed a problem where the access type used in an AccessAs ASL 18559operator was not recorded correctly into the field object. 18560 18561Fixed a problem where ASL Event objects were created in a 18562signalled state. Events are now created in an unsignalled state. 18563 18564The internal object cache is now purged after table loading and 18565initialization to reduce the use of dynamic kernel memory -- on 18566the assumption that object use is greatest during the parse phase 18567of the entire table (versus the run-time use of individual control 18568methods.) 18569 18570ACPI 2.0 variable-length packages are now fully operational. 18571 18572Code and Data Size: Code and Data optimizations have permitted new 18573feature development with an actual reduction in the library size. 18574Current core subsystem library sizes are shown below. These are 18575the code and data sizes for the acpica.lib produced by the 18576Microsoft Visual C++ 6.0 compiler, and these values do not include 18577any ACPI driver or OSPM code. The debug version of the code 18578includes the debug output trace mechanism and has a larger code 18579and data size. Note that these values will vary depending on the 18580efficiency of the compiler and the compiler options used during 18581generation. 18582 18583 Previous Release (11_09_01): 18584 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18585 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18586 18587 Current Release: 18588 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18589 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18590 18591 2) Linux: 18592 18593Enhanced the ACPI boot-time initialization code to allow the use 18594of Local APIC tables for processor enumeration on IA-32, and to 18595pave the way for a fully MPS-free boot (on SMP systems) in the 18596near future. This functionality replaces 18597arch/i386/kernel/acpitables.c, which was introduced in an earlier 185982.4.15-preX release. To enable this feature you must add 18599"acpi_boot=on" to the kernel command line -- see the help entry 18600for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 18601the works... 18602 18603Restructured the configuration options to allow boot-time table 18604parsing support without inclusion of the ACPI Interpreter (and 18605other) code. 18606 18607NOTE: This release does not include fixes for the reported events, 18608power-down, and thermal passive cooling issues (coming soon). 18609 18610 3) ASL Compiler: 18611 18612Added additional typechecking for Fields within restricted access 18613Operation Regions. All fields within EC and CMOS regions must be 18614declared with ByteAcc. All fields within SMBus regions must be 18615declared with the BufferAcc access type. 18616 18617Fixed a problem where the listing file output of control methods 18618no longer interleaved the actual AML code with the ASL source 18619code. 18620 18621 18622 18623 18624---------------------------------------- 18625Summary of changes for this label: 11_09_01 18626 186271) ACPI CA Core Subsystem: 18628 18629Implemented ACPI 2.0-defined support for writes to fields with a 18630Buffer, String, or Integer source operand that is smaller than the 18631target field. In these cases, the source operand is zero-extended 18632to fill the target field. 18633 18634Fixed a problem where a Field starting bit offset (within the 18635parent operation region) was calculated incorrectly if the 18636 18637alignment of the field differed from the access width. This 18638affected CreateWordField, CreateDwordField, CreateQwordField, and 18639possibly other fields that use the "AccessAny" keyword. 18640 18641Fixed a problem introduced in the 11_02_01 release where indirect 18642stores through method arguments did not operate correctly. 18643 186442) Linux: 18645 18646Implemented boot-time ACPI table parsing support 18647(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18648facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18649legacy BIOS interfaces (e.g. MPS) for the configuration of system 18650processors, memory, and interrupts during setup_arch(). Note that 18651this patch does not include the required architecture-specific 18652changes required to apply this information -- subsequent patches 18653will be posted for both IA32 and IA64 to achieve this. 18654 18655Added low-level sleep support for IA32 platforms, courtesy of Pat 18656Mochel. This allows IA32 systems to transition to/from various 18657sleeping states (e.g. S1, S3), although the lack of a centralized 18658driver model and power-manageable drivers will prevent its 18659(successful) use on most systems. 18660 18661Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18662submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18663tables" option, etc. 18664 18665Increased the default timeout for the EC driver from 1ms to 10ms 18666(1000 cycles of 10us) to try to address AE_TIME errors during EC 18667transactions. 18668 18669 ---------------------------------------- 18670Summary of changes for this label: 11_02_01 18671 186721) ACPI CA Core Subsystem: 18673 18674ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18675(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18676implemented. 18677 18678OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18679changes to support ACPI 2.0 Qword field access. Read/Write 18680PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18681accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18682the value parameter for the address space handler interface is now 18683an ACPI_INTEGER. OSL implementations of these interfaces must now 18684handle the case where the Width parameter is 64. 18685 18686Index Fields: Fixed a problem where unaligned bit assembly and 18687disassembly for IndexFields was not supported correctly. 18688 18689Index and Bank Fields: Nested Index and Bank Fields are now 18690supported. During field access, a check is performed to ensure 18691that the value written to an Index or Bank register is not out of 18692the range of the register. The Index (or Bank) register is 18693written before each access to the field data. Future support will 18694include allowing individual IndexFields to be wider than the 18695DataRegister width. 18696 18697Fields: Fixed a problem where the AML interpreter was incorrectly 18698attempting to write beyond the end of a Field/OpRegion. This was 18699a boundary case that occurred when a DWORD field was written to a 18700BYTE access OpRegion, forcing multiple writes and causing the 18701interpreter to write one datum too many. 18702 18703Fields: Fixed a problem with Field/OpRegion access where the 18704starting bit address of a field was incorrectly calculated if the 18705current access type was wider than a byte (WordAcc, DwordAcc, or 18706QwordAcc). 18707 18708Fields: Fixed a problem where forward references to individual 18709FieldUnits (individual Field names within a Field definition) were 18710not resolved during the AML table load. 18711 18712Fields: Fixed a problem where forward references from a Field 18713definition to the parent Operation Region definition were not 18714resolved during the AML table load. 18715 18716Fields: Duplicate FieldUnit names within a scope are now detected 18717during AML table load. 18718 18719Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18720returned an incorrect name for the root node. 18721 18722Code and Data Size: Code and Data optimizations have permitted new 18723feature development with an actual reduction in the library size. 18724Current core subsystem library sizes are shown below. These are 18725the code and data sizes for the acpica.lib produced by the 18726Microsoft Visual C++ 6.0 compiler, and these values do not include 18727any ACPI driver or OSPM code. The debug version of the code 18728includes the debug output trace mechanism and has a larger code 18729and data size. Note that these values will vary depending on the 18730efficiency of the compiler and the compiler options used during 18731generation. 18732 18733 Previous Release (10_18_01): 18734 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18735 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18736 18737 Current Release: 18738 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18739 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18740 18741 2) Linux: 18742 18743Improved /proc processor output (Pavel Machek) Re-added 18744MODULE_LICENSE("GPL") to all modules. 18745 18746 3) ASL Compiler version X2030: 18747 18748Duplicate FieldUnit names within a scope are now detected and 18749flagged as errors. 18750 18751 4) Documentation: 18752 18753Programmer Reference updated to reflect OSL and address space 18754handler interface changes described above. 18755 18756---------------------------------------- 18757Summary of changes for this label: 10_18_01 18758 18759ACPI CA Core Subsystem: 18760 18761Fixed a problem with the internal object reference count mechanism 18762that occasionally caused premature object deletion. This resolves 18763all of the outstanding problem reports where an object is deleted 18764in the middle of an interpreter evaluation. Although this problem 18765only showed up in rather obscure cases, the solution to the 18766problem involved an adjustment of all reference counts involving 18767objects attached to namespace nodes. 18768 18769Fixed a problem with Field support in the interpreter where 18770writing to an aligned field whose length is an exact multiple (2 18771or greater) of the field access granularity would cause an attempt 18772to write beyond the end of the field. 18773 18774The top level AML opcode execution functions within the 18775interpreter have been renamed with a more meaningful and 18776consistent naming convention. The modules exmonad.c and 18777exdyadic.c were eliminated. New modules are exoparg1.c, 18778exoparg2.c, exoparg3.c, and exoparg6.c. 18779 18780Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18781 18782Fixed a problem where the AML debugger was causing some internal 18783objects to not be deleted during subsystem termination. 18784 18785Fixed a problem with the external AcpiEvaluateObject interface 18786where the subsystem would fault if the named object to be 18787evaluated referred to a constant such as Zero, Ones, etc. 18788 18789Fixed a problem with IndexFields and BankFields where the 18790subsystem would fault if the index, data, or bank registers were 18791not defined in the same scope as the field itself. 18792 18793Added printf format string checking for compilers that support 18794this feature. Corrected more than 50 instances of issues with 18795format specifiers within invocations of ACPI_DEBUG_PRINT 18796throughout the core subsystem code. 18797 18798The ASL "Revision" operator now returns the ACPI support level 18799implemented in the core - the value "2" since the ACPI 2.0 support 18800is more than 50% implemented. 18801 18802Enhanced the output of the AML debugger "dump namespace" command 18803to output in a more human-readable form. 18804 18805Current core subsystem library code sizes are shown below. These 18806 18807are the code and data sizes for the acpica.lib produced by the 18808Microsoft Visual C++ 6.0 compiler, and these values do not include 18809any ACPI driver or OSPM code. The debug version of the code 18810includes the full debug trace mechanism -- leading to a much 18811 18812larger code and data size. Note that these values will vary 18813depending on the efficiency of the compiler and the compiler 18814options used during generation. 18815 18816 Previous Label (09_20_01): 18817 Non-Debug Version: 65K Code, 5K Data, 70K Total 18818 Debug Version: 138K Code, 58K Data, 196K Total 18819 18820 This Label: 18821 18822 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18823 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18824 18825Linux: 18826 18827Implemented a "Bad BIOS Blacklist" to track machines that have 18828known ASL/AML problems. 18829 18830Enhanced the /proc interface for the thermal zone driver and added 18831support for _HOT (the critical suspend trip point). The 'info' 18832file now includes threshold/policy information, and allows setting 18833of _SCP (cooling preference) and _TZP (polling frequency) values 18834to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18835frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18836preference to the passive/quiet mode (if supported by the ASL). 18837 18838Implemented a workaround for a gcc bug that resuted in an OOPs 18839when loading the control method battery driver. 18840 18841 ---------------------------------------- 18842Summary of changes for this label: 09_20_01 18843 18844 ACPI CA Core Subsystem: 18845 18846The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18847modified to allow individual GPE levels to be flagged as wake- 18848enabled (i.e., these GPEs are to remain enabled when the platform 18849sleeps.) 18850 18851The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18852support wake-enabled GPEs. This means that upon entering the 18853sleep state, all GPEs that are not wake-enabled are disabled. 18854When leaving the sleep state, these GPEs are re-enabled. 18855 18856A local double-precision divide/modulo module has been added to 18857enhance portability to OS kernels where a 64-bit math library is 18858not available. The new module is "utmath.c". 18859 18860Several optimizations have been made to reduce the use of CPU 18861stack. Originally over 2K, the maximum stack usage is now below 188622K at 1860 bytes (1.82k) 18863 18864Fixed a problem with the AcpiGetFirmwareTable interface where the 18865root table pointer was not mapped into a logical address properly. 18866 18867Fixed a problem where a NULL pointer was being dereferenced in the 18868interpreter code for the ASL Notify operator. 18869 18870Fixed a problem where the use of the ASL Revision operator 18871returned an error. This operator now returns the current version 18872of the ACPI CA core subsystem. 18873 18874Fixed a problem where objects passed as control method parameters 18875to AcpiEvaluateObject were always deleted at method termination. 18876However, these objects may end up being stored into the namespace 18877by the called method. The object reference count mechanism was 18878applied to these objects instead of a force delete. 18879 18880Fixed a problem where static strings or buffers (contained in the 18881AML code) that are declared as package elements within the ASL 18882code could cause a fault because the interpreter would attempt to 18883delete them. These objects are now marked with the "static 18884object" flag to prevent any attempt to delete them. 18885 18886Implemented an interpreter optimization to use operands directly 18887from the state object instead of extracting the operands to local 18888variables. This reduces stack use and code size, and improves 18889performance. 18890 18891The module exxface.c was eliminated as it was an unnecessary extra 18892layer of code. 18893 18894Current core subsystem library code sizes are shown below. These 18895are the code and data sizes for the acpica.lib produced by the 18896Microsoft Visual C++ 6.0 compiler, and these values do not include 18897any ACPI driver or OSPM code. The debug version of the code 18898includes the full debug trace mechanism -- leading to a much 18899larger code and data size. Note that these values will vary 18900depending on the efficiency of the compiler and the compiler 18901options used during generation. 18902 18903 Non-Debug Version: 65K Code, 5K Data, 70K Total 18904(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18905Total (Previously 195K) 18906 18907Linux: 18908 18909Support for ACPI 2.0 64-bit integers has been added. All ACPI 18910Integer objects are now 64 bits wide 18911 18912All Acpi data types and structures are now in lower case. Only 18913Acpi macros are upper case for differentiation. 18914 18915 Documentation: 18916 18917Changes to the external interfaces as described above. 18918 18919 ---------------------------------------- 18920Summary of changes for this label: 08_31_01 18921 18922 ACPI CA Core Subsystem: 18923 18924A bug with interpreter implementation of the ASL Divide operator 18925was found and fixed. The implicit function return value (not the 18926explicit store operands) was returning the remainder instead of 18927the quotient. This was a longstanding bug and it fixes several 18928known outstanding issues on various platforms. 18929 18930The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18931been further optimized for size. There are 700 invocations of the 18932DEBUG_PRINT macro alone, so each optimization reduces the size of 18933the debug version of the subsystem significantly. 18934 18935A stack trace mechanism has been implemented. The maximum stack 18936usage is about 2K on 32-bit platforms. The debugger command "stat 18937stack" will display the current maximum stack usage. 18938 18939All public symbols and global variables within the subsystem are 18940now prefixed with the string "Acpi". This keeps all of the 18941symbols grouped together in a kernel map, and avoids conflicts 18942with other kernel subsystems. 18943 18944Most of the internal fixed lookup tables have been moved into the 18945code segment via the const operator. 18946 18947Several enhancements have been made to the interpreter to both 18948reduce the code size and improve performance. 18949 18950Current core subsystem library code sizes are shown below. These 18951are the code and data sizes for the acpica.lib produced by the 18952Microsoft Visual C++ 6.0 compiler, and these values do not include 18953any ACPI driver or OSPM code. The debug version of the code 18954includes the full debug trace mechanism which contains over 700 18955invocations of the DEBUG_PRINT macro, 500 function entry macro 18956invocations, and over 900 function exit macro invocations -- 18957leading to a much larger code and data size. Note that these 18958values will vary depending on the efficiency of the compiler and 18959the compiler options used during generation. 18960 18961 Non-Debug Version: 64K Code, 5K Data, 69K Total 18962Debug Version: 137K Code, 58K Data, 195K Total 18963 18964 Linux: 18965 18966Implemented wbinvd() macro, pending a kernel-wide definition. 18967 18968Fixed /proc/acpi/event to handle poll() and short reads. 18969 18970 ASL Compiler, version X2026: 18971 18972Fixed a problem introduced in the previous label where the AML 18973 18974code emitted for package objects produced packages with zero 18975length. 18976 18977 ---------------------------------------- 18978Summary of changes for this label: 08_16_01 18979 18980ACPI CA Core Subsystem: 18981 18982The following ACPI 2.0 ASL operators have been implemented in the 18983AML interpreter (These are already supported by the Intel ASL 18984compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18985ToBuffer. Support for 64-bit AML constants is implemented in the 18986AML parser, debugger, and disassembler. 18987 18988The internal memory tracking mechanism (leak detection code) has 18989been upgraded to reduce the memory overhead (a separate tracking 18990block is no longer allocated for each memory allocation), and now 18991supports all of the internal object caches. 18992 18993The data structures and code for the internal object caches have 18994been coelesced and optimized so that there is a single cache and 18995memory list data structure and a single group of functions that 18996implement generic cache management. This has reduced the code 18997size in both the debug and release versions of the subsystem. 18998 18999The DEBUG_PRINT macro(s) have been optimized for size and replaced 19000by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 19001different, because it generates a single call to an internal 19002function. This results in a savings of about 90 bytes per 19003invocation, resulting in an overall code and data savings of about 1900416% in the debug version of the subsystem. 19005 19006 Linux: 19007 19008Fixed C3 disk corruption problems and re-enabled C3 on supporting 19009machines. 19010 19011Integrated low-level sleep code by Patrick Mochel. 19012 19013Further tweaked source code Linuxization. 19014 19015Other minor fixes. 19016 19017 ASL Compiler: 19018 19019Support for ACPI 2.0 variable length packages is fixed/completed. 19020 19021Fixed a problem where the optional length parameter for the ACPI 190222.0 ToString operator. 19023 19024Fixed multiple extraneous error messages when a syntax error is 19025detected within the declaration line of a control method. 19026 19027 ---------------------------------------- 19028Summary of changes for this label: 07_17_01 19029 19030ACPI CA Core Subsystem: 19031 19032Added a new interface named AcpiGetFirmwareTable to obtain any 19033ACPI table via the ACPI signature. The interface can be called at 19034any time during kernel initialization, even before the kernel 19035virtual memory manager is initialized and paging is enabled. This 19036allows kernel subsystems to obtain ACPI tables very early, even 19037before the ACPI CA subsystem is initialized. 19038 19039Fixed a problem where Fields defined with the AnyAcc attribute 19040could be resolved to the incorrect address under the following 19041conditions: 1) the field width is larger than 8 bits and 2) the 19042parent operation region is not defined on a DWORD boundary. 19043 19044Fixed a problem where the interpreter is not being locked during 19045namespace initialization (during execution of the _INI control 19046methods), causing an error when an attempt is made to release it 19047later. 19048 19049ACPI 2.0 support in the AML Interpreter has begun and will be 19050ongoing throughout the rest of this year. In this label, The Mod 19051operator is implemented. 19052 19053Added a new data type to contain full PCI addresses named 19054ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 19055and Function values. 19056 19057 Linux: 19058 19059Enhanced the Linux version of the source code to change most 19060capitalized ACPI type names to lowercase. For example, all 19061instances of ACPI_STATUS are changed to acpi_status. This will 19062result in a large diff, but the change is strictly cosmetic and 19063aligns the CA code closer to the Linux coding standard. 19064 19065OSL Interfaces: 19066 19067The interfaces to the PCI configuration space have been changed to 19068add the PCI Segment number and to split the single 32-bit combined 19069DeviceFunction field into two 16-bit fields. This was 19070accomplished by moving the four values that define an address in 19071PCI configuration space (segment, bus, device, and function) to 19072the new ACPI_PCI_ID structure. 19073 19074The changes to the PCI configuration space interfaces led to a 19075reexamination of the complete set of address space access 19076interfaces for PCI, I/O, and Memory. The previously existing 18 19077interfaces have proven difficult to maintain (any small change 19078must be propagated across at least 6 interfaces) and do not easily 19079allow for future expansion to 64 bits if necessary. Also, on some 19080systems, it would not be appropriate to demultiplex the access 19081width (8, 16, 32,or 64) before calling the OSL if the 19082corresponding native OS interfaces contain a similar access width 19083parameter. For these reasons, the 18 address space interfaces 19084have been replaced by these 6 new ones: 19085 19086AcpiOsReadPciConfiguration 19087AcpiOsWritePciConfiguration 19088AcpiOsReadMemory 19089AcpiOsWriteMemory 19090AcpiOsReadPort 19091AcpiOsWritePort 19092 19093Added a new interface named AcpiOsGetRootPointer to allow the OSL 19094to perform the platform and/or OS-specific actions necessary to 19095obtain the ACPI RSDP table pointer. On IA-32 platforms, this 19096interface will simply call down to the CA core to perform the low- 19097memory search for the table. On IA-64, the RSDP is obtained from 19098EFI. Migrating this interface to the OSL allows the CA core to 19099 19100remain OS and platform independent. 19101 19102Added a new interface named AcpiOsSignal to provide a generic 19103"function code and pointer" interface for various miscellaneous 19104signals and notifications that must be made to the host OS. The 19105first such signals are intended to support the ASL Fatal and 19106Breakpoint operators. In the latter case, the AcpiOsBreakpoint 19107interface has been obsoleted. 19108 19109The definition of the AcpiFormatException interface has been 19110changed to simplify its use. The caller no longer must supply a 19111buffer to the call; A pointer to a const string is now returned 19112directly. This allows the call to be easily used in printf 19113statements, etc. since the caller does not have to manage a local 19114buffer. 19115 19116 19117 ASL Compiler, Version X2025: 19118 19119The ACPI 2.0 Switch/Case/Default operators have been implemented 19120and are fully functional. They will work with all ACPI 1.0 19121interpreters, since the operators are simply translated to If/Else 19122pairs. 19123 19124The ACPI 2.0 ElseIf operator is implemented and will also work 19125with 1.0 interpreters, for the same reason. 19126 19127Implemented support for ACPI 2.0 variable-length packages. These 19128packages have a separate opcode, and their size is determined by 19129the interpreter at run-time. 19130 19131Documentation The ACPI CA Programmer Reference has been updated to 19132reflect the new interfaces and changes to existing interfaces. 19133 19134 ------------------------------------------ 19135Summary of changes for this label: 06_15_01 19136 19137 ACPI CA Core Subsystem: 19138 19139Fixed a problem where a DWORD-accessed field within a Buffer 19140object would get its byte address inadvertently rounded down to 19141the nearest DWORD. Buffers are always Byte-accessible. 19142 19143 ASL Compiler, version X2024: 19144 19145Fixed a problem where the Switch() operator would either fault or 19146hang the compiler. Note however, that the AML code for this ACPI 191472.0 operator is not yet implemented. 19148 19149Compiler uses the new AcpiOsGetTimer interface to obtain compile 19150timings. 19151 19152Implementation of the CreateField operator automatically converts 19153a reference to a named field within a resource descriptor from a 19154byte offset to a bit offset if required. 19155 19156Added some missing named fields from the resource descriptor 19157support. These are the names that are automatically created by the 19158compiler to reference fields within a descriptor. They are only 19159valid at compile time and are not passed through to the AML 19160interpreter. 19161 19162Resource descriptor named fields are now typed as Integers and 19163subject to compile-time typechecking when used in expressions. 19164 19165 ------------------------------------------ 19166Summary of changes for this label: 05_18_01 19167 19168 ACPI CA Core Subsystem: 19169 19170Fixed a couple of problems in the Field support code where bits 19171from adjacent fields could be returned along with the proper field 19172bits. Restructured the field support code to improve performance, 19173readability and maintainability. 19174 19175New DEBUG_PRINTP macro automatically inserts the procedure name 19176into the output, saving hundreds of copies of procedure name 19177strings within the source, shrinking the memory footprint of the 19178debug version of the core subsystem. 19179 19180 Source Code Structure: 19181 19182The source code directory tree was restructured to reflect the 19183current organization of the component architecture. Some files 19184and directories have been moved and/or renamed. 19185 19186 Linux: 19187 19188Fixed leaking kacpidpc processes. 19189 19190Fixed queueing event data even when /proc/acpi/event is not 19191opened. 19192 19193 ASL Compiler, version X2020: 19194 19195Memory allocation performance enhancement - over 24X compile time 19196improvement on large ASL files. Parse nodes and namestring 19197buffers are now allocated from a large internal compiler buffer. 19198 19199The temporary .SRC file is deleted unless the "-s" option is 19200specified 19201 19202The "-d" debug output option now sends all output to the .DBG file 19203instead of the console. 19204 19205"External" second parameter is now optional 19206 19207"ElseIf" syntax now properly allows the predicate 19208 19209Last operand to "Load" now recognized as a Target operand 19210 19211Debug object can now be used anywhere as a normal object. 19212 19213ResourceTemplate now returns an object of type BUFFER 19214 19215EISAID now returns an object of type INTEGER 19216 19217"Index" now works with a STRING operand 19218 19219"LoadTable" now accepts optional parameters 19220 19221"ToString" length parameter is now optional 19222 19223"Interrupt (ResourceType," parse error fixed. 19224 19225"Register" with a user-defined region space parse error fixed 19226 19227Escaped backslash at the end of a string ("\\") scan/parse error 19228fixed 19229 19230"Revision" is now an object of type INTEGER. 19231 19232 19233 19234------------------------------------------ 19235Summary of changes for this label: 05_02_01 19236 19237Linux: 19238 19239/proc/acpi/event now blocks properly. 19240 19241Removed /proc/sys/acpi. You can still dump your DSDT from 19242/proc/acpi/dsdt. 19243 19244 ACPI CA Core Subsystem: 19245 19246Fixed a problem introduced in the previous label where some of the 19247"small" resource descriptor types were not recognized. 19248 19249Improved error messages for the case where an ASL Field is outside 19250the range of the parent operation region. 19251 19252 ASL Compiler, version X2018: 19253 19254 19255Added error detection for ASL Fields that extend beyond the length 19256of the parent operation region (only if the length of the region 19257is known at compile time.) This includes fields that have a 19258minimum access width that is smaller than the parent region, and 19259individual field units that are partially or entirely beyond the 19260extent of the parent. 19261 19262 19263 19264------------------------------------------ 19265Summary of changes for this label: 04_27_01 19266 19267 ACPI CA Core Subsystem: 19268 19269Fixed a problem where the namespace mutex could be released at the 19270wrong time during execution of AcpiRemoveAddressSpaceHandler. 19271 19272Added optional thread ID output for debug traces, to simplify 19273debugging of multiple threads. Added context switch notification 19274when the debug code realizes that a different thread is now 19275executing ACPI code. 19276 19277Some additional external data types have been prefixed with the 19278string "ACPI_" for consistency. This may effect existing code. 19279The data types affected are the external callback typedefs - e.g., 19280 19281WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 19282 19283 Linux: 19284 19285Fixed an issue with the OSL semaphore implementation where a 19286thread was waking up with an error from receiving a SIGCHLD 19287signal. 19288 19289Linux version of ACPI CA now uses the system C library for string 19290manipulation routines instead of a local implementation. 19291 19292Cleaned up comments and removed TBDs. 19293 19294 ASL Compiler, version X2017: 19295 19296Enhanced error detection and reporting for all file I/O 19297operations. 19298 19299 Documentation: 19300 19301Programmer Reference updated to version 1.06. 19302 19303 19304 19305------------------------------------------ 19306Summary of changes for this label: 04_13_01 19307 19308 ACPI CA Core Subsystem: 19309 19310Restructured support for BufferFields and RegionFields. 19311BankFields support is now fully operational. All known 32-bit 19312limitations on field sizes have been removed. Both BufferFields 19313and (Operation) RegionFields are now supported by the same field 19314management code. 19315 19316Resource support now supports QWORD address and IO resources. The 1931716/32/64 bit address structures and the Extended IRQ structure 19318have been changed to properly handle Source Resource strings. 19319 19320A ThreadId of -1 is now used to indicate a "mutex not acquired" 19321condition internally and must never be returned by AcpiOsThreadId. 19322This reserved value was changed from 0 since Unix systems allow a 19323thread ID of 0. 19324 19325Linux: 19326 19327Driver code reorganized to enhance portability 19328 19329Added a kernel configuration option to control ACPI_DEBUG 19330 19331Fixed the EC driver to honor _GLK. 19332 19333ASL Compiler, version X2016: 19334 19335Fixed support for the "FixedHw" keyword. Previously, the FixedHw 19336address space was set to 0, not 0x7f as it should be. 19337 19338 ------------------------------------------ 19339Summary of changes for this label: 03_13_01 19340 19341 ACPI CA Core Subsystem: 19342 19343During ACPI initialization, the _SB_._INI method is now run if 19344present. 19345 19346Notify handler fix - notifies are deferred until the parent method 19347completes execution. This fixes the "mutex already acquired" 19348issue seen occasionally. 19349 19350Part of the "implicit conversion" rules in ACPI 2.0 have been 19351found to cause compatibility problems with existing ASL/AML. The 19352convert "result-to-target-type" implementation has been removed 19353for stores to method Args and Locals. Source operand conversion 19354is still fully implemented. Possible changes to ACPI 2.0 19355specification pending. 19356 19357Fix to AcpiRsCalculatePciRoutingTableLength to return correct 19358length. 19359 19360Fix for compiler warnings for 64-bit compiles. 19361 19362 Linux: 19363 19364/proc output aligned for easier parsing. 19365 19366Release-version compile problem fixed. 19367 19368New kernel configuration options documented in Configure.help. 19369 19370IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 19371context" message. 19372 19373 OSPM: 19374 19375Power resource driver integrated with bus manager. 19376 19377Fixed kernel fault during active cooling for thermal zones. 19378 19379Source Code: 19380 19381The source code tree has been restructured. 19382 19383 19384 19385------------------------------------------ 19386Summary of changes for this label: 03_02_01 19387 19388 Linux OS Services Layer (OSL): 19389 19390Major revision of all Linux-specific code. 19391 19392Modularized all ACPI-specific drivers. 19393 19394Added new thermal zone and power resource drivers. 19395 19396Revamped /proc interface (new functionality is under /proc/acpi). 19397 19398New kernel configuration options. 19399 19400 Linux known issues: 19401 19402New kernel configuration options not documented in Configure.help 19403yet. 19404 19405 19406Module dependencies not currently implemented. If used, they 19407should be loaded in this order: busmgr, power, ec, system, 19408processor, battery, ac_adapter, button, thermal. 19409 19410Modules will not load if CONFIG_MODVERSION is set. 19411 19412IBM 600E - entering S5 may reboot instead of shutting down. 19413 19414IBM 600E - Sleep button may generate "Invalid <NULL> context" 19415message. 19416 19417Some systems may fail with "execution mutex already acquired" 19418message. 19419 19420 ACPI CA Core Subsystem: 19421 19422Added a new OSL Interface, AcpiOsGetThreadId. This was required 19423for the deadlock detection code. Defined to return a non-zero, 32- 19424bit thread ID for the currently executing thread. May be a non- 19425zero constant integer on single-thread systems. 19426 19427Implemented deadlock detection for internal subsystem mutexes. We 19428may add conditional compilation for this code (debug only) later. 19429 19430ASL/AML Mutex object semantics are now fully supported. This 19431includes multiple acquires/releases by owner and support for the 19432 19433Mutex SyncLevel parameter. 19434 19435A new "Force Release" mechanism automatically frees all ASL 19436Mutexes that have been acquired but not released when a thread 19437exits the interpreter. This forces conformance to the ACPI spec 19438("All mutexes must be released when an invocation exits") and 19439prevents deadlocked ASL threads. This mechanism can be expanded 19440(later) to monitor other resource acquisitions if OEM ASL code 19441continues to misbehave (which it will). 19442 19443Several new ACPI exception codes have been added for the Mutex 19444support. 19445 19446Recursive method calls are now allowed and supported (the ACPI 19447spec does in fact allow recursive method calls.) The number of 19448recursive calls is subject to the restrictions imposed by the 19449SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 19450parameter. 19451 19452Implemented support for the SyncLevel parameter for control 19453methods (ACPI 2.0 feature) 19454 19455Fixed a deadlock problem when multiple threads attempted to use 19456the interpreter. 19457 19458Fixed a problem where the string length of a String package 19459element was not always set in a package returned from 19460AcpiEvaluateObject. 19461 19462Fixed a problem where the length of a String package element was 19463not always included in the length of the overall package returned 19464from AcpiEvaluateObject. 19465 19466Added external interfaces (Acpi*) to the ACPI debug memory 19467manager. This manager keeps a list of all outstanding 19468allocations, and can therefore detect memory leaks and attempts to 19469free memory blocks more than once. Useful for code such as the 19470power manager, etc. May not be appropriate for device drivers. 19471Performance with the debug code enabled is slow. 19472 19473The ACPI Global Lock is now an optional hardware element. 19474 19475 ASL Compiler Version X2015: 19476 19477Integrated changes to allow the compiler to be generated on 19478multiple platforms. 19479 19480Linux makefile added to generate the compiler on Linux 19481 19482 Source Code: 19483 19484All platform-specific headers have been moved to their own 19485subdirectory, Include/Platform. 19486 19487New source file added, Interpreter/ammutex.c 19488 19489New header file, Include/acstruct.h 19490 19491 Documentation: 19492 19493The programmer reference has been updated for the following new 19494interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 19495 19496 ------------------------------------------ 19497Summary of changes for this label: 02_08_01 19498 19499Core ACPI CA Subsystem: Fixed a problem where an error was 19500incorrectly returned if the return resource buffer was larger than 19501the actual data (in the resource interfaces). 19502 19503References to named objects within packages are resolved to the 19504 19505full pathname string before packages are returned directly (via 19506the AcpiEvaluateObject interface) or indirectly via the resource 19507interfaces. 19508 19509Linux OS Services Layer (OSL): 19510 19511Improved /proc battery interface. 19512 19513 19514Added C-state debugging output and other miscellaneous fixes. 19515 19516ASL Compiler Version X2014: 19517 19518All defined method arguments can now be used as local variables, 19519including the ones that are not actually passed in as parameters. 19520The compiler tracks initialization of the arguments and issues an 19521exception if they are used without prior assignment (just like 19522locals). 19523 19524The -o option now specifies a filename prefix that is used for all 19525output files, including the AML output file. Otherwise, the 19526default behavior is as follows: 1) the AML goes to the file 19527specified in the DSDT. 2) all other output files use the input 19528source filename as the base. 19529 19530 ------------------------------------------ 19531Summary of changes for this label: 01_25_01 19532 19533Core ACPI CA Subsystem: Restructured the implementation of object 19534store support within the interpreter. This includes support for 19535the Store operator as well as any ASL operators that include a 19536target operand. 19537 19538Partially implemented support for Implicit Result-to-Target 19539conversion. This is when a result object is converted on the fly 19540to the type of an existing target object. Completion of this 19541support is pending further analysis of the ACPI specification 19542concerning this matter. 19543 19544CPU-specific code has been removed from the subsystem (hardware 19545directory). 19546 19547New Power Management Timer functions added 19548 19549Linux OS Services Layer (OSL): Moved system state transition code 19550to the core, fixed it, and modified Linux OSL accordingly. 19551 19552Fixed C2 and C3 latency calculations. 19553 19554 19555We no longer use the compilation date for the version message on 19556initialization, but retrieve the version from AcpiGetSystemInfo(). 19557 19558Incorporated for fix Sony VAIO machines. 19559 19560Documentation: The Programmer Reference has been updated and 19561reformatted. 19562 19563 19564ASL Compiler: Version X2013: Fixed a problem where the line 19565numbering and error reporting could get out of sync in the 19566presence of multiple include files. 19567 19568 ------------------------------------------ 19569Summary of changes for this label: 01_15_01 19570 19571Core ACPI CA Subsystem: 19572 19573Implemented support for type conversions in the execution of the 19574ASL Concatenate operator (The second operand is converted to 19575match the type of the first operand before concatenation.) 19576 19577Support for implicit source operand conversion is partially 19578implemented. The ASL source operand types Integer, Buffer, and 19579String are freely interchangeable for most ASL operators and are 19580converted by the interpreter on the fly as required. Implicit 19581Target operand conversion (where the result is converted to the 19582target type before storing) is not yet implemented. 19583 19584Support for 32-bit and 64-bit BCD integers is implemented. 19585 19586Problem fixed where a field read on an aligned field could cause a 19587read past the end of the field. 19588 19589New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 19590does not return a value, but the caller expects one. (The ASL 19591compiler flags this as a warning.) 19592 19593ASL Compiler: 19594 19595Version X2011: 195961. Static typechecking of all operands is implemented. This 19597prevents the use of invalid objects (such as using a Package where 19598an Integer is required) at compile time instead of at interpreter 19599run-time. 196002. The ASL source line is printed with ALL errors and warnings. 196013. Bug fix for source EOF without final linefeed. 196024. Debug option is split into a parse trace and a namespace trace. 196035. Namespace output option (-n) includes initial values for 19604integers and strings. 196056. Parse-only option added for quick syntax checking. 196067. Compiler checks for duplicate ACPI name declarations 19607 19608Version X2012: 196091. Relaxed typechecking to allow interchangeability between 19610strings, integers, and buffers. These types are now converted by 19611the interpreter at runtime. 196122. Compiler reports time taken by each internal subsystem in the 19613debug output file. 19614 19615 19616 ------------------------------------------ 19617Summary of changes for this label: 12_14_00 19618 19619ASL Compiler: 19620 19621This is the first official release of the compiler. Since the 19622compiler requires elements of the Core Subsystem, this label 19623synchronizes everything. 19624 19625------------------------------------------ 19626Summary of changes for this label: 12_08_00 19627 19628 19629Fixed a problem where named references within the ASL definition 19630of both OperationRegions and CreateXXXFields did not work 19631properly. The symptom was an AE_AML_OPERAND_TYPE during 19632initialization of the region/field. This is similar (but not 19633related internally) to the problem that was fixed in the last 19634label. 19635 19636Implemented both 32-bit and 64-bit support for the BCD ASL 19637functions ToBCD and FromBCD. 19638 19639Updated all legal headers to include "2000" in the copyright 19640years. 19641 19642 ------------------------------------------ 19643Summary of changes for this label: 12_01_00 19644 19645Fixed a problem where method invocations within the ASL definition 19646of both OperationRegions and CreateXXXFields did not work 19647properly. The symptom was an AE_AML_OPERAND_TYPE during 19648initialization of the region/field: 19649 19650 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19651[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19652(0x3005) 19653 19654Fixed a problem where operators with more than one nested 19655subexpression would fail. The symptoms were varied, by mostly 19656AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19657problem that has gone unnoticed until now. 19658 19659 Subtract (Add (1,2), Multiply (3,4)) 19660 19661Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19662previous build (The prefix part of a relative path was handled 19663incorrectly). 19664 19665Fixed a problem where Operation Region initialization failed if 19666the operation region name was a "namepath" instead of a simple 19667"nameseg". Symptom was an AE_NO_OPERAND error. 19668 19669Fixed a problem where an assignment to a local variable via the 19670indirect RefOf mechanism only worked for the first such 19671assignment. Subsequent assignments were ignored. 19672 19673 ------------------------------------------ 19674Summary of changes for this label: 11_15_00 19675 19676ACPI 2.0 table support with backwards support for ACPI 1.0 and the 196770.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19678the AML interpreter does NOT have support for the new 2.0 ASL 19679grammar terms at this time. 19680 19681All ACPI hardware access is via the GAS structures in the ACPI 2.0 19682FADT. 19683 19684All physical memory addresses across all platforms are now 64 bits 19685wide. Logical address width remains dependent on the platform 19686(i.e., "void *"). 19687 19688AcpiOsMapMemory interface changed to a 64-bit physical address. 19689 19690The AML interpreter integer size is now 64 bits, as per the ACPI 196912.0 specification. 19692 19693For backwards compatibility with ACPI 1.0, ACPI tables with a 19694revision number less than 2 use 32-bit integers only. 19695 19696Fixed a problem where the evaluation of OpRegion operands did not 19697always resolve them to numbers properly. 19698 19699------------------------------------------ 19700Summary of changes for this label: 10_20_00 19701 19702Fix for CBN_._STA issue. This fix will allow correct access to 19703CBN_ OpRegions when the _STA returns 0x8. 19704 19705Support to convert ACPI constants (Ones, Zeros, One) to actual 19706values before a package object is returned 19707 19708Fix for method call as predicate to if/while construct causing 19709incorrect if/while behavior 19710 19711Fix for Else block package lengths sometimes calculated wrong (if 19712block > 63 bytes) 19713 19714Fix for Processor object length field, was always zero 19715 19716Table load abort if FACP sanity check fails 19717 19718Fix for problem with Scope(name) if name already exists 19719 19720Warning emitted if a named object referenced cannot be found 19721(resolved) during method execution. 19722 19723 19724 19725 19726 19727------------------------------------------ 19728Summary of changes for this label: 9_29_00 19729 19730New table initialization interfaces: AcpiInitializeSubsystem no 19731longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19732necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19733>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19734AcpiLoadTables 19735 19736Note: These interface changes require changes to all existing OSDs 19737 19738The PCI_Config default address space handler is always installed 19739at the root namespace object. 19740 19741------------------------------------------- 19742Summary of changes for this label: 09_15_00 19743 19744The new initialization architecture is implemented. New 19745interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19746AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19747 19748(Namespace is automatically loaded when a table is loaded) 19749 19750The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1975152 bytes to 32 bytes. There is usually one of these for every 19752namespace object, so the memory savings is significant. 19753 19754Implemented just-in-time evaluation of the CreateField operators. 19755 19756Bug fixes for IA-64 support have been integrated. 19757 19758Additional code review comments have been implemented 19759 19760The so-called "third pass parse" has been replaced by a final walk 19761through the namespace to initialize all operation regions (address 19762spaces) and fields that have not yet been initialized during the 19763execution of the various _INI and REG methods. 19764 19765New file - namespace/nsinit.c 19766 19767------------------------------------------- 19768Summary of changes for this label: 09_01_00 19769 19770Namespace manager data structures have been reworked to change the 19771primary object from a table to a single object. This has 19772resulted in dynamic memory savings of 3X within the namespace and 197732X overall in the ACPI CA subsystem. 19774 19775Fixed problem where the call to AcpiEvFindPciRootBuses was 19776inadvertently left commented out. 19777 19778Reduced the warning count when generating the source with the GCC 19779compiler. 19780 19781Revision numbers added to each module header showing the 19782SourceSafe version of the file. Please refer to this version 19783number when giving us feedback or comments on individual modules. 19784 19785The main object types within the subsystem have been renamed to 19786clarify their purpose: 19787 19788ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19789ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19790ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19791 19792NOTE: no changes to the initialization sequence are included in 19793this label. 19794 19795------------------------------------------- 19796Summary of changes for this label: 08_23_00 19797 19798Fixed problem where TerminateControlMethod was being called 19799multiple times per method 19800 19801Fixed debugger problem where single stepping caused a semaphore to 19802be oversignalled 19803 19804Improved performance through additional parse object caching - 19805added ACPI_EXTENDED_OP type 19806 19807------------------------------------------- 19808Summary of changes for this label: 08_10_00 19809 19810Parser/Interpreter integration: Eliminated the creation of 19811complete parse trees for ACPI tables and control methods. 19812Instead, parse subtrees are created and then deleted as soon as 19813they are processed (Either entered into the namespace or executed 19814by the interpreter). This reduces the use of dynamic kernel 19815memory significantly. (about 10X) 19816 19817Exception codes broken into classes and renumbered. Be sure to 19818recompile all code that includes acexcep.h. Hopefully we won't 19819have to renumber the codes again now that they are split into 19820classes (environment, programmer, AML code, ACPI table, and 19821internal). 19822 19823Fixed some additional alignment issues in the Resource Manager 19824subcomponent 19825 19826Implemented semaphore tracking in the AcpiExec utility, and fixed 19827several places where mutexes/semaphores were being unlocked 19828without a corresponding lock operation. There are no known 19829semaphore or mutex "leaks" at this time. 19830 19831Fixed the case where an ASL Return operator is used to return an 19832unnamed package. 19833 19834------------------------------------------- 19835Summary of changes for this label: 07_28_00 19836 19837Fixed a problem with the way addresses were calculated in 19838AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19839manifested itself when a Field was created with WordAccess or 19840DwordAccess, but the field unit defined within the Field was less 19841 19842than a Word or Dword. 19843 19844Fixed a problem in AmlDumpOperands() module's loop to pull 19845operands off of the operand stack to display information. The 19846problem manifested itself as a TLB error on 64-bit systems when 19847accessing an operand stack with two or more operands. 19848 19849Fixed a problem with the PCI configuration space handlers where 19850context was getting confused between accesses. This required a 19851change to the generic address space handler and address space 19852setup definitions. Handlers now get both a global handler context 19853(this is the one passed in by the user when executing 19854AcpiInstallAddressSpaceHandler() and a specific region context 19855that is unique to each region (For example, the _ADR, _SEG and 19856_BBN values associated with a specific region). The generic 19857function definitions have changed to the following: 19858 19859typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19860UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19861*HandlerContext, // This used to be void *Context void 19862*RegionContext); // This is an additional parameter 19863 19864typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19865RegionHandle, UINT32 Function, void *HandlerContext, void 19866**RegionContext); // This used to be **ReturnContext 19867 19868------------------------------------------- 19869Summary of changes for this label: 07_21_00 19870 19871Major file consolidation and rename. All files within the 19872interpreter have been renamed as well as most header files. This 19873was done to prevent collisions with existing files in the host 19874OSs -- filenames such as "config.h" and "global.h" seem to be 19875quite common. The VC project files have been updated. All 19876makefiles will require modification. 19877 19878The parser/interpreter integration continues in Phase 5 with the 19879implementation of a complete 2-pass parse (the AML is parsed 19880twice) for each table; This avoids the construction of a huge 19881parse tree and therefore reduces the amount of dynamic memory 19882required by the subsystem. Greater use of the parse object cache 19883means that performance is unaffected. 19884 19885Many comments from the two code reviews have been rolled in. 19886 19887The 64-bit alignment support is complete. 19888 19889------------------------------------------- 19890Summary of changes for this label: 06_30_00 19891 19892With a nod and a tip of the hat to the technology of yesteryear, 19893we've added support in the source code for 80 column output 19894devices. The code is now mostly constrained to 80 columns or 19895less to support environments and editors that 1) cannot display 19896or print more than 80 characters on a single line, and 2) cannot 19897disable line wrapping. 19898 19899A major restructuring of the namespace data structure has been 19900completed. The result is 1) cleaner and more 19901understandable/maintainable code, and 2) a significant reduction 19902in the dynamic memory requirement for each named ACPI object 19903(almost half). 19904 19905------------------------------------------- 19906Summary of changes for this label: 06_23_00 19907 19908Linux support has been added. In order to obtain approval to get 19909the ACPI CA subsystem into the Linux kernel, we've had to make 19910quite a few changes to the base subsystem that will affect all 19911users (all the changes are generic and OS- independent). The 19912effects of these global changes have been somewhat far reaching. 19913Files have been merged and/or renamed and interfaces have been 19914renamed. The major changes are described below. 19915 19916Osd* interfaces renamed to AcpiOs* to eliminate namespace 19917pollution/confusion within our target kernels. All OSD 19918interfaces must be modified to match the new naming convention. 19919 19920Files merged across the subsystem. A number of the smaller source 19921and header files have been merged to reduce the file count and 19922increase the density of the existing files. There are too many 19923to list here. In general, makefiles that call out individual 19924files will require rebuilding. 19925 19926Interpreter files renamed. All interpreter files now have the 19927prefix am* instead of ie* and is*. 19928 19929Header files renamed: The acapi.h file is now acpixf.h. The 19930acpiosd.h file is now acpiosxf.h. We are removing references to 19931the acronym "API" since it is somewhat windowsy. The new name is 19932"external interface" or xface or xf in the filenames.j 19933 19934 19935All manifest constants have been forced to upper case (some were 19936mixed case.) Also, the string "ACPI_" has been prepended to many 19937(not all) of the constants, typedefs, and structs. 19938 19939The globals "DebugLevel" and "DebugLayer" have been renamed 19940"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19941 19942All other globals within the subsystem are now prefixed with 19943"AcpiGbl_" Internal procedures within the subsystem are now 19944prefixed with "Acpi" (with only a few exceptions). The original 19945two-letter abbreviation for the subcomponent remains after "Acpi" 19946- for example, CmCallocate became AcpiCmCallocate. 19947 19948Added a source code translation/conversion utility. Used to 19949generate the Linux source code, it can be modified to generate 19950other types of source as well. Can also be used to cleanup 19951existing source by removing extraneous spaces and blank lines. 19952Found in tools/acpisrc/* 19953 19954OsdUnMapMemory was renamed to OsdUnmapMemory and then 19955AcpiOsUnmapMemory. (UnMap became Unmap). 19956 19957A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19958When set to one, this indicates that the caller wants to use the 19959 19960semaphore as a mutex, not a counting semaphore. ACPI CA uses 19961both types. However, implementers of this call may want to use 19962different OS primitives depending on the type of semaphore 19963requested. For example, some operating systems provide separate 19964 19965"mutex" and "semaphore" interfaces - where the mutex interface is 19966much faster because it doesn't have all the overhead of a full 19967semaphore implementation. 19968 19969Fixed a deadlock problem where a method that accesses the PCI 19970address space can block forever if it is the first access to the 19971space. 19972 19973------------------------------------------- 19974Summary of changes for this label: 06_02_00 19975 19976Support for environments that cannot handle unaligned data 19977accesses (e.g. firmware and OS environments devoid of alignment 19978handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19979been added (via configurable macros) in these three areas: - 19980Transfer of data from the raw AML byte stream is done via byte 19981moves instead of word/dword/qword moves. - External objects are 19982aligned within the user buffer, including package elements (sub- 19983objects). - Conversion of name strings to UINT32 Acpi Names is now 19984done byte-wise. 19985 19986The Store operator was modified to mimic Microsoft's 19987implementation when storing to a Buffer Field. 19988 19989Added a check of the BM_STS bit before entering C3. 19990 19991The methods subdirectory has been obsoleted and removed. A new 19992file, cmeval.c subsumes the functionality. 19993 19994A 16-bit (DOS) version of AcpiExec has been developed. The 19995makefile is under the acpiexec directory. 19996